summaryrefslogtreecommitdiffstats
path: root/src/display
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2013-10-12 22:24:05 +0000
committerJohan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl>2013-10-12 22:24:05 +0000
commita970dc423d59ea844bdb1af48d5d9419a5e2a287 (patch)
tree8f6a51df0574fe048ae7e791f276e72716aa090c /src/display
parentFix crash with experimental lpe tool. (diff)
downloadinkscape-a970dc423d59ea844bdb1af48d5d9419a5e2a287.tar.gz
inkscape-a970dc423d59ea844bdb1af48d5d9419a5e2a287.zip
Units: stop newing Unit objects. pass around pointers to "undeletable" Unit objects in the UnitTable. I think we should move to using indexed units, and pass around the index of the unit in the unittable, or smth like that... ?
(bzr r12679)
Diffstat (limited to 'src/display')
-rw-r--r--src/display/canvas-axonomgrid.cpp19
-rw-r--r--src/display/canvas-grid.cpp28
-rw-r--r--src/display/canvas-grid.h2
3 files changed, 25 insertions, 24 deletions
diff --git a/src/display/canvas-axonomgrid.cpp b/src/display/canvas-axonomgrid.cpp
index 654144122..d66b97bbc 100644
--- a/src/display/canvas-axonomgrid.cpp
+++ b/src/display/canvas-axonomgrid.cpp
@@ -161,15 +161,16 @@ CanvasAxonomGrid::CanvasAxonomGrid (SPNamedView * nv, Inkscape::XML::Node * in_r
: CanvasGrid(nv, in_repr, in_doc, GRID_AXONOMETRIC)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- gridunit = new Inkscape::Util::Unit(unit_table.getUnit(prefs->getString("/options/grids/axonom/units")));
- if (!gridunit)
- gridunit = new Inkscape::Util::Unit(unit_table.getUnit("px"));
- origin[Geom::X] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/axonom/origin_x", 0.0), *gridunit, "px");
- origin[Geom::Y] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/axonom/origin_y", 0.0), *gridunit, "px");
+ gridunit = unit_table.getUnit(prefs->getString("/options/grids/axonom/units"));
+ if (!gridunit) {
+ gridunit = unit_table.getUnit("px");
+ }
+ origin[Geom::X] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/axonom/origin_x", 0.0), gridunit, "px");
+ origin[Geom::Y] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/axonom/origin_y", 0.0), gridunit, "px");
color = prefs->getInt("/options/grids/axonom/color", 0x0000ff20);
empcolor = prefs->getInt("/options/grids/axonom/empcolor", 0x0000ff40);
empspacing = prefs->getInt("/options/grids/axonom/empspacing", 5);
- lengthy = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/axonom/spacing_y", 1.0), *gridunit, "px");
+ lengthy = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/axonom/spacing_y", 1.0), gridunit, "px");
angle_deg[X] = prefs->getDouble("/options/grids/axonom/angle_x", 30.0);
angle_deg[Z] = prefs->getDouble("/options/grids/axonom/angle_z", 30.0);
angle_deg[Y] = 0;
@@ -370,13 +371,13 @@ _wr.setUpdating (false);
gdouble val;
val = origin[Geom::X];
- val = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ val = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_ox->setValue (val);
val = origin[Geom::Y];
- val = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ val = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_oy->setValue (val);
val = lengthy;
- double gridy = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ double gridy = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_sy->setValue (gridy);
_rsu_ax->setValue(angle_deg[X]);
diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp
index 5701b91a1..192cc4cba 100644
--- a/src/display/canvas-grid.cpp
+++ b/src/display/canvas-grid.cpp
@@ -399,10 +399,10 @@ void CanvasGrid::setOrigin(Geom::Point const &origin_px)
gdouble val;
val = origin_px[Geom::X];
- val = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ val = Inkscape::Util::Quantity::convert(val, "px", gridunit);
os_x << val << gridunit->abbr;
val = origin_px[Geom::Y];
- val = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ val = Inkscape::Util::Quantity::convert(val, "px", gridunit);
os_y << val << gridunit->abbr;
repr->setAttribute("originx", os_x.str().c_str());
repr->setAttribute("originy", os_y.str().c_str());
@@ -489,17 +489,17 @@ CanvasXYGrid::CanvasXYGrid (SPNamedView * nv, Inkscape::XML::Node * in_repr, SPD
: CanvasGrid(nv, in_repr, in_doc, GRID_RECTANGULAR)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- gridunit = new Inkscape::Util::Unit(unit_table.getUnit(prefs->getString("/options/grids/xy/units")));
+ gridunit = unit_table.getUnit(prefs->getString("/options/grids/xy/units"));
if (!gridunit) {
- gridunit = new Inkscape::Util::Unit(unit_table.getUnit("px"));
+ gridunit = unit_table.getUnit("px");
}
- origin[Geom::X] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/origin_x", 0.0), *gridunit, "px");
- origin[Geom::Y] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/origin_y", 0.0), *gridunit, "px");
+ origin[Geom::X] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/origin_x", 0.0), gridunit, "px");
+ origin[Geom::Y] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/origin_y", 0.0), gridunit, "px");
color = prefs->getInt("/options/grids/xy/color", 0x0000ff20);
empcolor = prefs->getInt("/options/grids/xy/empcolor", 0x0000ff40);
empspacing = prefs->getInt("/options/grids/xy/empspacing", 5);
- spacing[Geom::X] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/spacing_x", 0.0), *gridunit, "px");
- spacing[Geom::Y] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/spacing_y", 0.0), *gridunit, "px");
+ spacing[Geom::X] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/spacing_x", 0.0), gridunit, "px");
+ spacing[Geom::Y] = Inkscape::Util::Quantity::convert(prefs->getDouble("/options/grids/xy/spacing_y", 0.0), gridunit, "px");
render_dotted = prefs->getBool("/options/grids/xy/dotted", false);
snapper = new CanvasXYGridSnapper(this, &namedview->snap_manager, 0);
@@ -605,7 +605,7 @@ CanvasXYGrid::readRepr()
gridunit = q.unit;
spacing[Geom::X] = q.quantity;
validateScalar(oldVal, &spacing[Geom::X]);
- spacing[Geom::X] = Inkscape::Util::Quantity::convert(spacing[Geom::X], *gridunit, "px");
+ spacing[Geom::X] = Inkscape::Util::Quantity::convert(spacing[Geom::X], gridunit, "px");
}
if ( (value = repr->attribute("spacingy")) ) {
double oldVal = spacing[Geom::Y];
@@ -613,7 +613,7 @@ CanvasXYGrid::readRepr()
gridunit = q.unit;
spacing[Geom::Y] = q.quantity;
validateScalar(oldVal, &spacing[Geom::Y]);
- spacing[Geom::Y] = Inkscape::Util::Quantity::convert(spacing[Geom::Y], *gridunit, "px");
+ spacing[Geom::Y] = Inkscape::Util::Quantity::convert(spacing[Geom::Y], gridunit, "px");
}
if ( (value = repr->attribute("color")) ) {
@@ -753,16 +753,16 @@ CanvasXYGrid::newSpecificWidget()
gdouble val;
val = origin[Geom::X];
- val = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ val = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_ox->setValue (val);
val = origin[Geom::Y];
- val = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ val = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_oy->setValue (val);
val = spacing[Geom::X];
- double gridx = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ double gridx = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_sx->setValue (gridx);
val = spacing[Geom::Y];
- double gridy = Inkscape::Util::Quantity::convert(val, "px", *gridunit);
+ double gridy = Inkscape::Util::Quantity::convert(val, "px", gridunit);
_rsu_sy->setValue (gridy);
_rcp_gcol->setRgba32 (color);
diff --git a/src/display/canvas-grid.h b/src/display/canvas-grid.h
index 56ed86e94..078670da7 100644
--- a/src/display/canvas-grid.h
+++ b/src/display/canvas-grid.h
@@ -92,7 +92,7 @@ public:
guint32 empcolor; /**< Color for emphasis lines */
gint empspacing; /**< Spacing between emphasis lines */
- Inkscape::Util::Unit const* gridunit;
+ Inkscape::Util::Unit const* gridunit; /**< points to Unit object in UnitTable (so don't delete it) */
Inkscape::XML::Node * repr;
SPDocument *doc;