X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fbase%2Fgrid.cpp;fp=src%2Fbase%2Fgrid.cpp;h=0000000000000000000000000000000000000000;hb=9f6ad3fe0b9cb30115a5d38e8af3aebed0d70c08;hp=bfb9cc8fdb1879365cc87cc7e872ba6f8fe43e50;hpb=43c13b052d069ba435277d93867380d00c04931f;p=architektonas diff --git a/src/base/grid.cpp b/src/base/grid.cpp deleted file mode 100644 index bfb9cc8..0000000 --- a/src/base/grid.cpp +++ /dev/null @@ -1,460 +0,0 @@ -// grid.cpp -// -// Part of the Architektonas Project -// Originally part of QCad Community Edition by Andrew Mustun -// Extensively rewritten and refactored by James L. Hammons -// Portions copyright (C) 2001-2003 RibbonSoft -// Copyright (C) 2010 Underground Software -// See the README and GPLv2 files for licensing and warranty information -// -// JLH = James L. Hammons -// -// Who When What -// --- ---------- ----------------------------------------------------------- -// JLH 05/21/2010 Added this text. :-) -// - -#include "grid.h" - -#include "drawing.h" -#include "graphicview.h" -#include "settings.h" -#include "units.h" -#include "vector.h" - -#warning "!!! Clean out all references to RS_GraphicView here and in header !!!" -/** - * Constructor. - */ -Grid::Grid(GraphicView * gv): graphicView(gv), pt(NULL), number(0), - metaX(NULL), numMetaX(0), metaY(NULL), numMetaY(0) -{ -} - -/** - * Destructor. - */ -Grid::~Grid() -{ - if (pt != NULL) - delete[] pt; - - if (metaX != NULL) - delete[] metaX; - - if (metaY != NULL) - delete[] metaY; -} - -/** - * Updates the grid point array. - */ -void Grid::update() -{ - DEBUG->print("Grid::update"); - - if (!graphicView->isGridOn()) - return; - - Drawing * drawing = graphicView->GetDrawing(); - - // auto scale grid? - settings.beginGroup("Appearance"); - bool scaleGrid = settings.value("ScaleGrid", true).toBool(); - int minGridSpacing = settings.value("MinGridSpacing", 10).toInt(); - settings.endGroup(); - - // get grid setting - Vector userGrid; - - if (drawing != NULL) - userGrid = drawing->getVariableVector("$GRIDUNIT", Vector(-1.0, -1.0)); - - // delete old grid: - if (pt != NULL) - { - delete[] pt; - pt = NULL; - } - - if (metaX != NULL) - { - delete[] metaX; - metaX = NULL; - } - - if (metaY != NULL) - { - delete[] metaY; - metaY = NULL; - } - - number = 0; - numMetaX = 0; - numMetaY = 0; - - DEBUG->print("Grid::update: 001"); - - // find out unit: - RS2::Unit unit = RS2::None; - RS2::LinearFormat format = RS2::Decimal; - - if (drawing != NULL) - { - unit = drawing->getUnit(); - format = drawing->getLinearFormat(); - } - - Vector gridWidth; - Vector metaGridWidth; - - DEBUG->print("Grid::update: 002"); - - // init grid spacing: - // metric grid: - if (Units::isMetric(unit) || unit == RS2::None - || format == RS2::Decimal || format == RS2::Engineering) - { - if (userGrid.x > 0.0) - gridWidth.x = userGrid.x; - else - gridWidth.x = 0.000001; - - if (userGrid.y > 0.0) - gridWidth.y = userGrid.y; - else - gridWidth.y = 0.000001; - - DEBUG->print("Grid::update: 003"); - - // auto scale grid - if (scaleGrid) - { - while (graphicView->toGuiDX(gridWidth.x) < minGridSpacing) - gridWidth.x *= 10; - - while (graphicView->toGuiDY(gridWidth.y) < minGridSpacing) - gridWidth.y *= 10; - } - - metaGridWidth.x = gridWidth.x * 10; - metaGridWidth.y = gridWidth.y * 10; - - DEBUG->print("Grid::update: 004"); - } - // imperial grid: - else - { - DEBUG->print("Grid::update: 005"); - - if (userGrid.x > 0.0) - gridWidth.x = userGrid.x; - else - gridWidth.x = 1.0 / 1024.0; - - if (userGrid.y > 0.0) - gridWidth.y = userGrid.y; - else - gridWidth.y = 1.0 / 1024.0; - - DEBUG->print("Grid::update: 006"); - - if (unit == RS2::Inch) - { - DEBUG->print("Grid::update: 007"); - - // auto scale grid - if (scaleGrid) - { - while (graphicView->toGuiDX(gridWidth.x) < minGridSpacing) - { - if (Math::round(gridWidth.x) >= 36) - { - gridWidth.x *= 2; - } - else if (Math::round(gridWidth.x) >= 12) - { - gridWidth.x *= 3; - } - else if (Math::round(gridWidth.x) >= 4) - { - gridWidth.x *= 3; - } - else if (Math::round(gridWidth.x) >= 1) - { - gridWidth.x *= 2; - } - else - { - gridWidth.x*=2; - } - } - - while (graphicView->toGuiDY(gridWidth.y) < minGridSpacing) - { - if (Math::round(gridWidth.y) >= 36) - { - gridWidth.y *= 2; - } - else if (Math::round(gridWidth.y) >= 12) - { - gridWidth.y *= 3; - } - else if (Math::round(gridWidth.y) >= 4) - { - gridWidth.y *= 3; - } - else if (Math::round(gridWidth.y) >= 1) - { - gridWidth.y *= 2; - } - else - { - gridWidth.y *= 2; - } - } - } - - DEBUG->print("Grid::update: 008"); - - // metagrid X shows inches.. - metaGridWidth.x = 1.0; - - if (graphicView->toGuiDX(metaGridWidth.x) < minGridSpacing * 2) - { - // .. or feet - metaGridWidth.x = 12.0; - - // .. or yards - if (graphicView->toGuiDX(metaGridWidth.x) < minGridSpacing * 2) - { - metaGridWidth.x = 36.0; - - // .. or miles (not really..) - //if (graphicView->toGuiDX(metaGridWidth.x)<20) { - // metaGridWidth.x = 63360.0; - //} - - // .. or nothing - if (graphicView->toGuiDX(metaGridWidth.x) < minGridSpacing * 2) - metaGridWidth.x = -1.0; - - } - } - - DEBUG->print("Grid::update: 009"); - - // metagrid Y shows inches.. - metaGridWidth.y = 1.0; - - if (graphicView->toGuiDY(metaGridWidth.y) < minGridSpacing * 2) - { - // .. or feet - metaGridWidth.y = 12.0; - - // .. or yards - if (graphicView->toGuiDY(metaGridWidth.y) < minGridSpacing * 2) - { - metaGridWidth.y = 36.0; - - // .. or miles (not really..) - //if (graphicView->toGuiDY(metaGridWidth.y)<20) { - // metaGridWidth.y = 63360.0; - //} - - // .. or nothing - if (graphicView->toGuiDY(metaGridWidth.y) < minGridSpacing * 2) - { - metaGridWidth.y = -1.0; - } - - } - } - - DEBUG->print("Grid::update: 010"); - } - else - { - DEBUG->print("Grid::update: 011"); - - if (scaleGrid) - { - while (graphicView->toGuiDX(gridWidth.x) < minGridSpacing) - { - gridWidth.x *= 2; - } - - metaGridWidth.x = -1.0; - - while (graphicView->toGuiDY(gridWidth.y) < minGridSpacing) - { - gridWidth.y *= 2; - } - - metaGridWidth.y = -1.0; - } - DEBUG->print("Grid::update: 012"); - } - //gridWidth.y = gridWidth.x; - //metaGridWidth.y = metaGridWidth.x; - } - - DEBUG->print("Grid::update: 013"); - - // for grid info: - spacing = gridWidth.x; - metaSpacing = metaGridWidth.x; - - if (gridWidth.x > 1.0e-6 && gridWidth.y > 1.0e-6 - && graphicView->toGuiDX(gridWidth.x) > 2 - && graphicView->toGuiDY(gridWidth.y) > 2) - { - // find grid boundaries - double left = (int)(graphicView->toGraphX(0) / gridWidth.x) * gridWidth.x; - double right = (int)(graphicView->toGraphX(graphicView->getWidth()) - / gridWidth.x) * gridWidth.x; - double top = (int)(graphicView->toGraphY(0) / gridWidth.y) * gridWidth.y; - double bottom = (int)(graphicView->toGraphY(graphicView->getHeight()) - / gridWidth.y) * gridWidth.y; - - left -= gridWidth.x; - right += gridWidth.x; - top += gridWidth.y; - bottom -= gridWidth.y; - - // calculate number of visible grid points - int numberX = (Math::round((right-left) / gridWidth.x) + 1); - int numberY = (Math::round((top-bottom) / gridWidth.y) + 1); - number = numberX * numberY; - - DEBUG->print("Grid::update: 014"); - - // create grid array: - if (number > 0 && number < 1000000) - { - pt = new Vector[number]; - - int i=0; - for(int y=0; yprint("Grid::update: 015"); - } - - // find meta grid boundaries - if (metaGridWidth.x > 1.0e-6 && metaGridWidth.y > 1.0e-6 - && graphicView->toGuiDX(metaGridWidth.x) > 2 - && graphicView->toGuiDY(metaGridWidth.y) > 2) - { - double mleft = (int)(graphicView->toGraphX(0) - / metaGridWidth.x) * metaGridWidth.x; - double mright = (int)(graphicView->toGraphX(graphicView->getWidth()) - / metaGridWidth.x) * metaGridWidth.x; - double mtop = (int)(graphicView->toGraphY(0) - / metaGridWidth.y) * metaGridWidth.y; - double mbottom = (int)(graphicView->toGraphY(graphicView->getHeight()) - / metaGridWidth.y) * metaGridWidth.y; - - mleft -= metaGridWidth.x; - mright += metaGridWidth.x; - mtop += metaGridWidth.y; - mbottom -= metaGridWidth.y; - - // calculate number of visible meta grid lines: - numMetaX = (Math::round((mright - mleft) / metaGridWidth.x) + 1); - numMetaY = (Math::round((mtop - mbottom) / metaGridWidth.y) + 1); - - if (numMetaX > 0 && numMetaY > 0) - { - // create meta grid arrays: - metaX = new double[numMetaX]; - metaY = new double[numMetaY]; - - int i = 0; - - for(int x=0; xprint("Grid::update: OK"); -} - -/** - * @return Array of all visible grid points. - */ -Vector * Grid::getPoints() -{ - return pt; -} - -/** - * @return Number of visible grid points. - */ -int Grid::count() -{ - return number; -} - -/** - * @return Grid info for status widget. - */ -QString Grid::getInfo() -{ - return QString("%1 / %2").arg(spacing).arg(metaSpacing); -} - -/** - * @return Meta grid positions in X. - */ -double * Grid::getMetaX() -{ - return metaX; -} - -/** - * @return Number of visible meta grid lines in X. - */ -int Grid::countMetaX() -{ - return numMetaX; -} - -/** -* @return Meta grid positions in Y. -*/ -double * Grid::getMetaY() -{ - return metaY; -} - -/** -* @return Number of visible meta grid lines in Y. -*/ -int Grid::countMetaY() -{ - return numMetaY; -}