2 // TOOLWINDOW.CPP - Tool Palette window
\r
3 // by James L. Hammons
\r
4 // (C) 2008 Underground Software
\r
6 // JLH = James L. Hammons <jlhamm@acm.org>
\r
9 // --- ---------- -------------------------------------------------------------
\r
10 // JLH 08/28/2008 Created this file
\r
15 // STILL TO BE DONE:
\r
19 // Uncomment this for debugging...
\r
21 #define DEBUGFOO // Various tool debugging...
\r
22 #define DEBUGTP // Toolpalette debugging...
\r
24 #include "toolwindow.h"
\r
29 #include "res/toolpal1.xpm" // Docs say this is portable... Let's see!
\r
32 BEGIN_EVENT_TABLE(ToolWindow, wxFrame)
\r
33 EVT_PAINT(ToolWindow::OnPaint)
\r
37 ToolWindow::ToolWindow(wxFrame * parent, const wxString &title, const wxPoint &pos,
\r
38 const wxSize &size, long style): wxFrame(parent, -1, title, pos, size, style),
\r
39 bmp(NULL), prevTool(TOOLNone)
\r
41 bmp = new wxBitmap(toolpal1_xpm);
\r
45 sizeTPBM.x = bmp->GetWidth(), sizeTPBM.y = bmp->GetHeight();
\r
46 sizeStamp.x = sizeTPBM.x / 4, sizeStamp.y = sizeTPBM.y / 2;
\r
48 SetSize(0, 0, sizeTPBM.x, sizeTPBM.y);
\r
52 ToolWindow::~ToolWindow()
\r
58 void ToolWindow::OnPaint(wxPaintEvent &e)
\r
63 memDC.SelectObject(*bmp);
\r
64 dc.Blit(0, 0, sizeTPBM.x, sizeTPBM.y, &memDC, 0, 0, wxCOPY);
\r
68 //need ul corner of bitmap, ul corner of dest, width/height
\r
69 wxPoint pt(sizeStamp.x * (prevTool & 0x03), sizeStamp.y * (prevTool >> 2));
\r
70 dc.Blit(pt.x, pt.y, sizeStamp.x, sizeStamp.y, &memDC, pt.x, pt.y, wxSRC_INVERT);
\r
73 memDC.SelectObject(wxNullBitmap);
\r
77 // Find which tool we're pointing at
\r
79 ToolType ToolWindow::FindSelectedTool(void)
\r
81 // Get mouse coords relative to the tool palette window
\r
82 wxPoint pt = ScreenToClient(wxGetMousePosition());
\r
84 // Divide mouse coords by the bitmap stamp size to find which one is pointed to
\r
85 uint32 x = (uint32)pt.x / sizeStamp.x, y = (uint32)pt.y / sizeStamp.y;
\r
87 // Preset failure into newTool, in case no new tool is selected
\r
88 ToolType newTool = TOOLNone;
\r
90 // NOTE: This works because x and y are UNSIGNED
\r
92 newTool = (ToolType)((y * 4) + x);
\r