From 8702c11db08f78b6c91ef950ce280f2289b1a6e6 Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Sun, 15 Mar 2015 15:50:04 -0400 Subject: Added scrolling and zooming to map editor --- tools/mapedit/src/tile_widget.cpp | 46 +++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 23 deletions(-) (limited to 'tools/mapedit/src/tile_widget.cpp') diff --git a/tools/mapedit/src/tile_widget.cpp b/tools/mapedit/src/tile_widget.cpp index 423b7c0..3dccecb 100644 --- a/tools/mapedit/src/tile_widget.cpp +++ b/tools/mapedit/src/tile_widget.cpp @@ -1,9 +1,9 @@ #include "tile_widget.h" #include "map.h" -IMPLEMENT_DYNAMIC_CLASS(TileWidget,wxControl) +IMPLEMENT_DYNAMIC_CLASS(TileWidget,wxScrolledWindow) -BEGIN_EVENT_TABLE(TileWidget, wxControl) +BEGIN_EVENT_TABLE(TileWidget, wxScrolledWindow) EVT_PAINT(TileWidget::OnPaint) EVT_LEFT_DOWN(TileWidget::OnClick) END_EVENT_TABLE() @@ -13,8 +13,8 @@ TileWidget::TileWidget() Init(); } -TileWidget::TileWidget(wxWindow* parent, wxWindowID winid, int numTilesWidth, const wxPoint& pos, const wxSize& size) - : wxControl(parent, winid, pos, size), numTilesWidth(numTilesWidth) +TileWidget::TileWidget(wxWindow* parent, wxWindowID winid, int width, int scale, const wxPoint& pos, const wxSize& size) + : wxScrolledWindow(parent, winid, pos, size), numTilesWidth(width), scale(scale) { Init(); } @@ -27,7 +27,11 @@ int TileWidget::getSelected() void TileWidget::Init() { tiles = wxBitmap(wxImage("../../../res/tiles.png")); - numTiles = 50; + + this->FitInside(); + this->SetScrollRate(5, 5); + + SetVirtualSize(numTilesWidth*TILE_WIDTH*scale, (numTiles / numTilesWidth + 1) * TILE_HEIGHT*scale); } void TileWidget::OnPaint(wxPaintEvent& event) @@ -35,39 +39,35 @@ void TileWidget::OnPaint(wxPaintEvent& event) wxPaintDC dc(this); wxMemoryDC tiles_dc; tiles_dc.SelectObject(tiles); - wxRegionIterator upd(GetUpdateRegion()); - int vW = upd.GetW(); - int vH = upd.GetH(); - wxPen pen(*wxGREEN, 2); - dc.SetPen(pen); - dc.SetBrush(*wxTRANSPARENT_BRUSH); + int vX, vY, vW, vH, aW, aH; + GetViewStart(&vX, &vY); + GetVirtualSize(&vW, &vH); + GetSize(&aW, &aH); - double endWidth = (double) vW / (double) numTilesWidth; - double endHeight = TILE_HEIGHT * (endWidth / (double) TILE_WIDTH); - for (int i=0; i