diff --git a/Tools/BiomeVisualiser/.gitignore b/Tools/BiomeVisualiser/.gitignore index b4e15dc3c..cfbc9164c 100644 --- a/Tools/BiomeVisualiser/.gitignore +++ b/Tools/BiomeVisualiser/.gitignore @@ -1,3 +1,4 @@ Debug/ logs/ Release/ +Release profiled/ diff --git a/Tools/BiomeVisualiser/BiomeRenderer.cpp b/Tools/BiomeVisualiser/BiomeRenderer.cpp index 758eb4b48..569128a12 100644 --- a/Tools/BiomeVisualiser/BiomeRenderer.cpp +++ b/Tools/BiomeVisualiser/BiomeRenderer.cpp @@ -40,10 +40,10 @@ bool cBiomeRenderer::Render(cPixmap & a_Pixmap) int Hei = a_Pixmap.GetHeight(); // Hint the approximate view area to the biome source so that it can adjust its caches: - int MinBlockX = ( - m_OriginX) / m_Zoom; - int MaxBlockX = (Wid - m_OriginX) / m_Zoom; - int MinBlockZ = ( - m_OriginY) / m_Zoom; - int MaxBlockZ = (Hei - m_OriginY) / m_Zoom; + int MinBlockX = ( - m_OriginX) * m_Zoom; + int MaxBlockX = (Wid - m_OriginX) * m_Zoom; + int MinBlockZ = ( - m_OriginY) * m_Zoom; + int MaxBlockZ = (Hei - m_OriginY) * m_Zoom; m_Cache.HintViewArea(MinBlockX / 16 - 1, MaxBlockX / 16 + 1, MinBlockZ / 16 - 1, MaxBlockZ / 16 + 1); // Hold one current chunk of biome data: @@ -55,12 +55,12 @@ bool cBiomeRenderer::Render(cPixmap & a_Pixmap) for (int y = 0; y < Hei; y++) { - int BlockZ = (y - m_OriginY) / m_Zoom; + int BlockZ = (y - m_OriginY) * m_Zoom; int ChunkZ = (BlockZ >= 0) ? (BlockZ / 16) : ((BlockZ + 1) / 16 - 1); int RelZ = BlockZ - ChunkZ * 16; for (int x = 0; x < Wid; x++) { - int BlockX = (x - m_OriginX) / m_Zoom; + int BlockX = (x - m_OriginX) * m_Zoom; int ChunkX = (BlockX >= 0) ? (BlockX / 16) : ((BlockX + 1) / 16 - 1); int RelX = BlockX - ChunkX * 16; if ((ChunkZ != CurChunkZ) || (ChunkX != CurChunkX)) diff --git a/Tools/BiomeVisualiser/BiomeRenderer.h b/Tools/BiomeVisualiser/BiomeRenderer.h index 2590e0406..752b61811 100644 --- a/Tools/BiomeVisualiser/BiomeRenderer.h +++ b/Tools/BiomeVisualiser/BiomeRenderer.h @@ -37,6 +37,11 @@ public: void MoveViewBy(int a_OffsX, int a_OffsY); + void SetZoom(int a_NewZoom) + { + m_Zoom = a_NewZoom; + } + protected: cBiomeCache m_Cache; diff --git a/Tools/BiomeVisualiser/BiomeViewWnd.cpp b/Tools/BiomeVisualiser/BiomeViewWnd.cpp index 5c1240bc7..7fb61c062 100644 --- a/Tools/BiomeVisualiser/BiomeViewWnd.cpp +++ b/Tools/BiomeVisualiser/BiomeViewWnd.cpp @@ -67,17 +67,41 @@ void cBiomeViewWnd::InitBiomeView(void) +void cBiomeViewWnd::SetZoom(int a_NewZoom) +{ + m_Renderer.SetZoom(a_NewZoom); + Redraw(); +} + + + + + +void cBiomeViewWnd::Redraw(void) +{ + if (m_Renderer.Render(m_Pixmap)) + { + SetTimer(m_Wnd, TIMER_RERENDER, 200, NULL); + } + InvalidateRect(m_Wnd, NULL, FALSE); +} + + + + + LRESULT cBiomeViewWnd::WndProc(HWND a_Wnd, UINT a_Msg, WPARAM wParam, LPARAM lParam) { switch (a_Msg) { - case WM_CLOSE: return OnClose(); - case WM_COMMAND: return OnCommand(wParam, lParam); + case WM_CHAR: return OnChar (wParam, lParam); + case WM_CLOSE: return OnClose (); + case WM_COMMAND: return OnCommand (wParam, lParam); case WM_LBUTTONDOWN: return OnLButtonDown(wParam, lParam); case WM_LBUTTONUP: return OnLButtonUp (wParam, lParam); case WM_MOUSEMOVE: return OnMouseMove (wParam, lParam); - case WM_PAINT: return OnPaint(); - case WM_TIMER: return OnTimer(wParam); + case WM_PAINT: return OnPaint (); + case WM_TIMER: return OnTimer (wParam); } return ::DefWindowProc(a_Wnd, a_Msg, wParam, lParam); } @@ -86,6 +110,32 @@ LRESULT cBiomeViewWnd::WndProc(HWND a_Wnd, UINT a_Msg, WPARAM wParam, LPARAM lPa +LRESULT cBiomeViewWnd::OnChar(WPARAM wParam, LPARAM lParam) +{ + switch (wParam) + { + case '1': SetZoom(1); break; + case '2': SetZoom(2); break; + case '3': SetZoom(3); break; + case '4': SetZoom(4); break; + case '5': SetZoom(5); break; + case '6': SetZoom(6); break; + case '7': SetZoom(7); break; + case '8': SetZoom(8); break; + case 27: + { + // Esc pressed, exit + PostQuitMessage(0); + break; + } + } + return 0; +} + + + + + LRESULT cBiomeViewWnd::OnClose(void) { PostQuitMessage(0); @@ -126,12 +176,8 @@ LRESULT cBiomeViewWnd::OnMouseMove(WPARAM wParam, LPARAM lParam) POINT pnt; GetCursorPos(&pnt); m_Renderer.MoveViewBy(pnt.x - m_MouseDown.x, pnt.y - m_MouseDown.y); - if (m_Renderer.Render(m_Pixmap)) - { - SetTimer(m_Wnd, TIMER_RERENDER, 200, NULL); - } m_MouseDown = pnt; - InvalidateRect(m_Wnd, NULL, FALSE); + Redraw(); return 0; } diff --git a/Tools/BiomeVisualiser/BiomeViewWnd.h b/Tools/BiomeVisualiser/BiomeViewWnd.h index e3f70c7e6..70c5e38f2 100644 --- a/Tools/BiomeVisualiser/BiomeViewWnd.h +++ b/Tools/BiomeVisualiser/BiomeViewWnd.h @@ -48,9 +48,13 @@ protected: void InitBiomeView(void); + void SetZoom(int a_NewZoom); + void Redraw(void); + LRESULT WndProc(HWND a_Wnd, UINT a_Msg, WPARAM wParam, LPARAM lParam); // Message handlers: + LRESULT OnChar (WPARAM wParam, LPARAM lParam); LRESULT OnClose (void); LRESULT OnCommand (WPARAM wParam, LPARAM lParam); LRESULT OnLButtonDown(WPARAM wParam, LPARAM lParam); diff --git a/Tools/BiomeVisualiser/BiomeVisualiser.vcproj b/Tools/BiomeVisualiser/BiomeVisualiser.vcproj index e42870b13..368657938 100644 --- a/Tools/BiomeVisualiser/BiomeVisualiser.vcproj +++ b/Tools/BiomeVisualiser/BiomeVisualiser.vcproj @@ -1,7 +1,7 @@ + + @@ -501,10 +505,6 @@ - -