summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Project/ControlEditor.cpp166
-rw-r--r--Project/ControlEditor.h21
-rw-r--r--Project/Project.mk2
-rw-r--r--Project/data/images/control/sat.png (renamed from Project/data/images/control/noLinear.png)bin779 -> 779 bytes
-rw-r--r--Project/data/images/control/transferFunc2.pngbin675 -> 0 bytes
-rw-r--r--Project/data/images/control/value.png (renamed from Project/data/images/control/constant.png)bin610 -> 610 bytes
6 files changed, 120 insertions, 69 deletions
diff --git a/Project/ControlEditor.cpp b/Project/ControlEditor.cpp
index a7788f9..1058cf2 100644
--- a/Project/ControlEditor.cpp
+++ b/Project/ControlEditor.cpp
@@ -17,90 +17,87 @@ void ControlEditor::BuildControlElementPanel()
wxWrapSizer* wrapSizer = new wxWrapSizer();
m_panelControlElements->SetSizer(wrapSizer);
- /*m_tfButton = new wxButton();
- m_tfButton->SetBackgroundStyle(wxBG_STYLE_TRANSPARENT);
- m_tfButton->Create(m_panelControlElements, wxID_ANY, _("Transfer function"), wxDefaultPosition, wxDefaultSize,
- wxBORDER_NONE);
- m_tfButton->SetTransparent(wxIMAGE_ALPHA_TRANSPARENT);
- //m_tfButton = new wxButton(m_panelControlElements, wxID_ANY, _("Transfer function"), wxDefaultPosition,
- wxDefaultSize, wxBORDER_NONE);
- m_tfButton->SetBitmap(wxImage("..\\data\\images\\control\\transferFunc.png"), wxTOP);
- // m_tfButton->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- // m_tfButton->SetToolTip(_("Transfer function"));
- m_tfButton->Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(ControlEditor::LeftClickDown), NULL, this);
- wrapSizer->Add(m_tfButton, 0, wxALL, 3)*/
+ ControlElementButton* ioButton = new ControlElementButton(
+ m_panelControlElements, _("Input/output"), wxImage("..\\data\\images\\control\\io.png"));
+ wrapSizer->Add(ioButton, 0, wxALL, 5);
+
ControlElementButton* tfButton = new ControlElementButton(
m_panelControlElements, _("Transfer function"), wxImage("..\\data\\images\\control\\transferFunc.png"));
wrapSizer->Add(tfButton, 0, wxALL, 5);
- wxBitmapButton* tfButton2 =
- new wxBitmapButton(m_panelControlElements, wxID_ANY, wxImage("..\\data\\images\\control\\transferFunc.png"),
- wxDefaultPosition, wxDLG_UNIT(m_panelControlElements, wxSize(-1, -1)), wxBU_AUTODRAW | wxBORDER_NONE);
- tfButton2->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- tfButton2->SetToolTip(_("Transfer function"));
-
- wrapSizer->Add(tfButton2, 0, wxALL, 3);
-
- wxBitmapButton* tfButton3 =
- new wxBitmapButton(m_panelControlElements, wxID_ANY, wxImage("..\\data\\images\\control\\transferFunc.png"),
- wxDefaultPosition, wxDLG_UNIT(m_panelControlElements, wxSize(-1, -1)), wxBU_AUTODRAW | wxBORDER_NONE);
- tfButton3->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- tfButton3->SetToolTip(_("Transfer function"));
-
- wrapSizer->Add(tfButton3, 0, wxALL, 3);
-
- wxBitmapButton* tfButton4 =
- new wxBitmapButton(m_panelControlElements, wxID_ANY, wxImage("..\\data\\images\\control\\transferFunc.png"),
- wxDefaultPosition, wxDLG_UNIT(m_panelControlElements, wxSize(-1, -1)), wxBU_AUTODRAW | wxBORDER_NONE);
- tfButton4->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- tfButton4->SetToolTip(_("Transfer function"));
-
- wrapSizer->Add(tfButton4, 0, wxALL, 3);
-
- wxBitmapButton* tfButton5 =
- new wxBitmapButton(m_panelControlElements, wxID_ANY, wxImage("..\\data\\images\\control\\transferFunc.png"),
- wxDefaultPosition, wxDLG_UNIT(m_panelControlElements, wxSize(-1, -1)), wxBU_AUTODRAW | wxBORDER_NONE);
- tfButton5->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- tfButton5->SetToolTip(_("Transfer function"));
+ ControlElementButton* sumButton =
+ new ControlElementButton(m_panelControlElements, _("Sum"), wxImage("..\\data\\images\\control\\sum.png"));
+ wrapSizer->Add(sumButton, 0, wxALL, 5);
- wrapSizer->Add(tfButton5, 0, wxALL, 3);
+ ControlElementButton* valueButton =
+ new ControlElementButton(m_panelControlElements, _("Value"), wxImage("..\\data\\images\\control\\value.png"));
+ wrapSizer->Add(valueButton, 0, wxALL, 5);
- wxBitmapButton* tfButton6 =
- new wxBitmapButton(m_panelControlElements, wxID_ANY, wxImage("..\\data\\images\\control\\transferFunc.png"),
- wxDefaultPosition, wxDLG_UNIT(m_panelControlElements, wxSize(-1, -1)), wxBU_AUTODRAW | wxBORDER_NONE);
- tfButton6->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- tfButton6->SetToolTip(_("Transfer function"));
+ ControlElementButton* limButton = new ControlElementButton(
+ m_panelControlElements, _("Limiter"), wxImage("..\\data\\images\\control\\limiter.png"));
+ wrapSizer->Add(limButton, 0, wxALL, 5);
- wrapSizer->Add(tfButton6, 0, wxALL, 3);
+ ControlElementButton* gainButton =
+ new ControlElementButton(m_panelControlElements, _("Gain"), wxImage("..\\data\\images\\control\\gain.png"));
+ wrapSizer->Add(gainButton, 0, wxALL, 5);
- wxBitmapButton* tfButton7 =
- new wxBitmapButton(m_panelControlElements, wxID_ANY, wxImage("..\\data\\images\\control\\transferFunc.png"),
- wxDefaultPosition, wxDLG_UNIT(m_panelControlElements, wxSize(-1, -1)), wxBU_AUTODRAW | wxBORDER_NONE);
- tfButton7->SetBackgroundColour(wxColour(wxT("rgb(255,255,255)")));
- tfButton7->SetToolTip(_("Transfer function"));
+ ControlElementButton* multButton = new ControlElementButton(
+ m_panelControlElements, _("Multiplier"), wxImage("..\\data\\images\\control\\mult.png"));
+ wrapSizer->Add(multButton, 0, wxALL, 5);
- wrapSizer->Add(tfButton7, 0, wxALL, 3);
+ ControlElementButton* satButton = new ControlElementButton(
+ m_panelControlElements, _("Saturation"), wxImage("..\\data\\images\\control\\sat.png"));
+ wrapSizer->Add(satButton, 0, wxALL, 5);
- // m_auimgr->Update();
- // Layout();
+ ControlElementButton* rateLimButton = new ControlElementButton(
+ m_panelControlElements, _("Rate limiter"), wxImage("..\\data\\images\\control\\rateLimiter.png"));
+ wrapSizer->Add(rateLimButton, 0, wxALL, 5);
}
+
void ControlEditor::LeftClickDown(wxMouseEvent& event)
{
- wxBitmapButton* button = dynamic_cast<wxBitmapButton*>(event.GetEventObject());
+ /*wxBitmapButton* button = dynamic_cast<wxBitmapButton*>(event.GetEventObject());
if(button) {
button->SetOwnBackgroundColour(wxColour(wxT("rgb(0,0,255)")));
- }
+ }*/
event.Skip();
}
ControlElementButton::ControlElementButton(wxWindow* parent, wxString label, wxImage image)
: wxWindow(parent, wxID_ANY)
{
+ m_font = wxFont(9, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL);
m_label = label;
m_image = image;
- SetMinSize(wxSize(32,32));
+ m_imageSize = wxSize(image.GetWidth(), image.GetHeight());
+
+ // Calculate label size.
+ wxScreenDC dc;
+ dc.SetFont(m_font);
+ wxSize textSize = dc.GetTextExtent(label);
+
+ int buttonWidth = 0;
+ if(textSize.GetWidth() > m_imageSize.GetWidth()) {
+ buttonWidth = textSize.GetWidth();
+ m_imagePosition = wxPoint((buttonWidth - m_imageSize.GetWidth()) / 2 + m_borderSize, m_borderSize);
+ m_labelPosition = wxPoint(m_borderSize, m_imageSize.GetHeight() + m_borderSize);
+ } else {
+ buttonWidth = m_imageSize.GetWidth();
+ m_imagePosition = wxPoint(m_borderSize, m_borderSize);
+ m_labelPosition =
+ wxPoint((buttonWidth - textSize.GetWidth()) / 2 + m_borderSize, m_imageSize.GetHeight() + m_borderSize);
+ }
+ m_buttonSize =
+ wxSize(buttonWidth + 2 * m_borderSize, textSize.GetHeight() + m_imageSize.GetHeight() + 2 * m_borderSize);
+ SetMinSize(m_buttonSize);
+
+ // Conncet events.
Connect(wxEVT_PAINT, wxPaintEventHandler(ControlElementButton::OnPaint), NULL, this);
+ Connect(wxEVT_ENTER_WINDOW, wxMouseEventHandler(ControlElementButton::OnMouseEnter), NULL, this);
+ Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(ControlElementButton::OnMouseLeave), NULL, this);
+ Connect(wxEVT_LEFT_DOWN, wxMouseEventHandler(ControlElementButton::OnLeftClickDown), NULL, this);
+ Connect(wxEVT_LEFT_UP, wxMouseEventHandler(ControlElementButton::OnLeftClickUp), NULL, this);
}
ControlElementButton::~ControlElementButton() {}
@@ -108,14 +105,53 @@ ControlElementButton::~ControlElementButton() {}
void ControlElementButton::OnPaint(wxPaintEvent& event)
{
wxPaintDC dc(this);
- //dc.SetBrush(*wxGREY_BRUSH);
- //dc.DrawRectangle( 0, 0, 32, 32 );
- dc.DrawBitmap(m_image, wxPoint(0,0));
wxGraphicsContext* gc = wxGraphicsContext::Create(dc);
if(gc) {
- gc->DrawBitmap(gc->CreateBitmapFromImage(m_image), 0, 0, 32, 32);
- gc->SetBrush(wxBrush(wxColour(0,125,255,100)));
- gc->DrawRectangle(0,0,32,32);
+ gc->SetPen(*wxWHITE_PEN);
+ gc->SetBrush(*wxWHITE_BRUSH);
+ gc->DrawRectangle(0, 0, m_buttonSize.GetWidth(), m_buttonSize.GetHeight());
+ gc->DrawBitmap(gc->CreateBitmapFromImage(m_image), m_imagePosition.x, m_imagePosition.y, m_imageSize.GetWidth(),
+ m_imageSize.GetHeight());
+ if(m_mouseAbove) {
+ if(m_selected) {
+ gc->SetPen(wxPen(wxColour(0, 125, 255, 255), m_borderSize));
+ gc->SetBrush(wxBrush(wxColour(0, 125, 255, 100)));
+ } else {
+ gc->SetPen(*wxTRANSPARENT_PEN);
+ gc->SetBrush(wxBrush(wxColour(0, 125, 255, 70)));
+ }
+ gc->DrawRectangle(0, 0, m_buttonSize.GetWidth(), m_buttonSize.GetHeight());
+ }
+ gc->SetFont(m_font, *wxBLACK);
+ gc->DrawText(m_label, m_labelPosition.x, m_labelPosition.y);
delete gc;
}
}
+
+void ControlElementButton::OnMouseEnter(wxMouseEvent& event)
+{
+ m_mouseAbove = true;
+ Refresh();
+ event.Skip();
+}
+
+void ControlElementButton::OnMouseLeave(wxMouseEvent& event)
+{
+ m_mouseAbove = false;
+ Refresh();
+ event.Skip();
+}
+
+void ControlElementButton::OnLeftClickDown(wxMouseEvent& event)
+{
+ m_selected = true;
+ Refresh();
+ event.Skip();
+}
+
+void ControlElementButton::OnLeftClickUp(wxMouseEvent& event)
+{
+ m_selected = false;
+ Refresh();
+ event.Skip();
+}
diff --git a/Project/ControlEditor.h b/Project/ControlEditor.h
index fd35452..95edc07 100644
--- a/Project/ControlEditor.h
+++ b/Project/ControlEditor.h
@@ -3,8 +3,8 @@
#include "ControlEditorBase.h"
#include <wx/wrapsizer.h>
-#include <wx/bmpbuttn.h>
#include <wx/dcclient.h>
+#include <wx/dcscreen.h>
#include <wx/graphics.h>
class ControlElementButton : public wxWindow
@@ -14,10 +14,25 @@ public:
~ControlElementButton();
protected:
- void OnPaint(wxPaintEvent& event);
-
+ virtual void OnPaint(wxPaintEvent& event);
+ virtual void OnMouseEnter(wxMouseEvent& event);
+ virtual void OnMouseLeave(wxMouseEvent& event);
+ virtual void OnLeftClickDown(wxMouseEvent& event);
+ virtual void OnLeftClickUp(wxMouseEvent& event);
+
wxString m_label;
+ wxFont m_font;
+ wxPoint m_labelPosition;
+
wxImage m_image;
+ wxSize m_imageSize;
+ wxPoint m_imagePosition;
+
+ int m_borderSize = 2;
+ bool m_mouseAbove = false;
+ bool m_selected = false;
+
+ wxSize m_buttonSize;
};
class ControlEditor : public ControlEditorBase
diff --git a/Project/Project.mk b/Project/Project.mk
index 9716414..14d1890 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Thales
-Date :=19/01/2017
+Date :=20/01/2017
CodeLitePath :="C:/Program Files/CodeLite"
LinkerName :=C:/TDM-GCC-64/bin/g++.exe
SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC
diff --git a/Project/data/images/control/noLinear.png b/Project/data/images/control/sat.png
index a7c2555..a7c2555 100644
--- a/Project/data/images/control/noLinear.png
+++ b/Project/data/images/control/sat.png
Binary files differ
diff --git a/Project/data/images/control/transferFunc2.png b/Project/data/images/control/transferFunc2.png
deleted file mode 100644
index 2fe6e81..0000000
--- a/Project/data/images/control/transferFunc2.png
+++ /dev/null
Binary files differ
diff --git a/Project/data/images/control/constant.png b/Project/data/images/control/value.png
index 822908b..822908b 100644
--- a/Project/data/images/control/constant.png
+++ b/Project/data/images/control/value.png
Binary files differ