From 7c929e6e1ce1f43d16d0d279af1e1261b5c566b7 Mon Sep 17 00:00:00 2001 From: neoraider Date: Tue, 15 Apr 2008 10:26:05 +0000 Subject: zoomedit: * Moved grid drawing code to TopView --- src/View/TopView.cpp | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) (limited to 'src/View/TopView.cpp') diff --git a/src/View/TopView.cpp b/src/View/TopView.cpp index 38d4824..684f4ef 100644 --- a/src/View/TopView.cpp +++ b/src/View/TopView.cpp @@ -21,11 +21,51 @@ #include #include #include +#include #include +#include namespace ZoomEdit { namespace View { +void TopView::drawGrid(Gui::RenderArea *renderArea) { + float depth = std::log10(renderArea->getScale())-0.75f; + float depth2 = std::floor(depth); + float step = std::pow(0.1f, depth2); + float x1, x2; + float y1, y2; + float width = renderArea->getViewWidth(); + float height = renderArea->getViewHeight(); + + x1 = x2 = renderArea->getXCenter(); + y1 = y2 = renderArea->getYCenter(); + x1 -= width/2; x2 += width/2; + y1 -= height/2; y2 += height/2; + + glLineWidth(1.0f); + + glBegin(GL_LINES); + + for(int i = 0; 0.4f*(depth-depth2+i-1) < 0.5f; i++) { + float f = std::min(0.4f*(depth-depth2+i), 0.5f); + glColor3f(f, f, f); + + for(f = x1 - std::fmod(x1, step); f <= x2; f+=step) { + glVertex2f(f, y1); + glVertex2f(f, y2); + } + + for(f = y1 - std::fmod(y1, step); f <= y2; f+=step) { + glVertex2f(x1, f); + glVertex2f(x2, f); + } + + step *= 10; + } + + glEnd(); +} + void TopView::renderRoom(Data::Room *room) { const std::list &floor = room->getFloorTriangles(); @@ -43,7 +83,9 @@ void TopView::renderRoom(Data::Room *room) { glEnd(); } -void TopView::render() { +void TopView::render(Gui::RenderArea *renderArea) { + drawGrid(renderArea); + if(!level) return; -- cgit v1.2.3