index a15fdf2434921098505af9052691cf298d60fecd..81e017f12792a048eb4095bd7e7f32007bc5ace3 100644 (file)
if (!grid_canvasitem_type) {
GtkTypeInfo grid_canvasitem_info = {
- "GridCanvasItem",
+ (gchar *)"GridCanvasItem",
sizeof (GridCanvasItem),
sizeof (GridCanvasItemClass),
(GtkClassInitFunc) grid_canvasitem_class_init,
namelabel->set_markup(str);
vbox->pack_start(*namelabel, true, true);
- Inkscape::UI::Widget::RegisteredCheckButton * _rcb_visible = Gtk::manage(
+ Inkscape::UI::Widget::RegisteredCheckButton * _rcb_enabled = Gtk::manage(
new Inkscape::UI::Widget::RegisteredCheckButton( _("_Enabled"),
_("Determines whether to snap to this grid or not. Can be 'on' for invisible grids."),
"enabled", _wr, false, repr, doc) );
- Inkscape::UI::Widget::RegisteredCheckButton * _rcb_enabled = Gtk::manage(
+ Inkscape::UI::Widget::RegisteredCheckButton * _rcb_visible = Gtk::manage(
new Inkscape::UI::Widget::RegisteredCheckButton( _("_Visible"),
_("Determines whether the grid is displayed or not. Objects are still snapped to invisible grids."),
"visible", _wr, true, repr, doc) );
vbox->pack_start(*_rcb_enabled, true, true);
vbox->pack_start(*_rcb_visible, true, true);
- vbox->pack_start(*newSpecificWidget(), true, true);
+ Gtk::Widget * gridwdg = newSpecificWidget();
+ vbox->pack_start(*gridwdg, true, true);
+
+ std::list<Gtk::Widget*> slaves;
+ slaves.push_back(_rcb_visible);
+ slaves.push_back(gridwdg);
+ _rcb_enabled->setSlaveWidgets(slaves);
+
+ // set widget values
+ _rcb_visible->setActive(visible);
+ if (snapper != NULL) {
+ _rcb_enabled->setActive(snapper->getEnabled());
+ }
return dynamic_cast<Gtk::Widget *> (vbox);
}
@@ -416,6 +428,8 @@ CanvasXYGrid::CanvasXYGrid (SPNamedView * nv, Inkscape::XML::Node * in_repr, SPD
render_dotted = prefs_get_int_attribute ("options.grids.xy", "dotted", 0) == 1;
snapper = new CanvasXYGridSnapper(this, namedview, 0);
+
+ if (repr) readRepr();
}
CanvasXYGrid::~CanvasXYGrid ()
{
Gtk::Table * table = Gtk::manage( new Gtk::Table(1,1) );
- Inkscape::UI::Widget::RegisteredUnitMenu *_rumg = new Inkscape::UI::Widget::RegisteredUnitMenu();
- Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_ox = new Inkscape::UI::Widget::RegisteredScalarUnit();
- Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_oy = new Inkscape::UI::Widget::RegisteredScalarUnit();
- Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_sx = new Inkscape::UI::Widget::RegisteredScalarUnit();
- Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_sy = new Inkscape::UI::Widget::RegisteredScalarUnit();
- Inkscape::UI::Widget::RegisteredColorPicker *_rcp_gcol = new Inkscape::UI::Widget::RegisteredColorPicker();
- Inkscape::UI::Widget::RegisteredColorPicker *_rcp_gmcol = new Inkscape::UI::Widget::RegisteredColorPicker();
- Inkscape::UI::Widget::RegisteredSuffixedInteger *_rsi = new Inkscape::UI::Widget::RegisteredSuffixedInteger();
+ Inkscape::UI::Widget::RegisteredUnitMenu *_rumg = Gtk::manage( new Inkscape::UI::Widget::RegisteredUnitMenu(
+ _("Grid _units:"), "units", _wr, repr, doc) );
+ Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_ox = Gtk::manage( new Inkscape::UI::Widget::RegisteredScalarUnit(
+ _("_Origin X:"), _("X coordinate of grid origin"), "originx", *_rumg, _wr, repr, doc) );
+ Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_oy = Gtk::manage( new Inkscape::UI::Widget::RegisteredScalarUnit(
+ _("O_rigin Y:"), _("Y coordinate of grid origin"), "originy", *_rumg, _wr, repr, doc) );
+ Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_sx = Gtk::manage( new Inkscape::UI::Widget::RegisteredScalarUnit(
+ _("Spacing _X:"), _("Distance between vertical grid lines"), "spacingx", *_rumg, _wr, repr, doc) );
+ Inkscape::UI::Widget::RegisteredScalarUnit *_rsu_sy = Gtk::manage( new Inkscape::UI::Widget::RegisteredScalarUnit(
+ _("Spacing _Y:"), _("Distance between horizontal grid lines"), "spacingy", *_rumg, _wr, repr, doc) );
+
+ Inkscape::UI::Widget::RegisteredColorPicker *_rcp_gcol = Gtk::manage(
+ new Inkscape::UI::Widget::RegisteredColorPicker(
+ _("Grid line _color:"), _("Grid line color"), _("Color of grid lines"),
+ "color", "opacity", _wr, repr, doc));
+
+ Inkscape::UI::Widget::RegisteredColorPicker *_rcp_gmcol = Gtk::manage(
+ new Inkscape::UI::Widget::RegisteredColorPicker(
+ _("Ma_jor grid line color:"), _("Major grid line color"),
+ _("Color of the major (highlighted) grid lines"), "empcolor", "empopacity",
+ _wr, repr, doc));
+
+ Inkscape::UI::Widget::RegisteredSuffixedInteger *_rsi = Gtk::manage( new Inkscape::UI::Widget::RegisteredSuffixedInteger(
+ _("_Major grid line every:"), "", _("lines"), "empspacing", _wr, repr, doc) );
- // initialize widgets:
table->set_spacings(2);
_wr.setUpdating (true);
- Inkscape::UI::Widget::ScalarUnit * sutemp;
- _rumg->init (_("Grid _units:"), "units", _wr, repr, doc);
- _rsu_ox->init (_("_Origin X:"), _("X coordinate of grid origin"),
- "originx", *_rumg, _wr, repr, doc);
- sutemp = _rsu_ox->getSU();
- sutemp->setDigits(4);
- sutemp->setIncrements(0.1, 1.0);
- _rsu_oy->init (_("O_rigin Y:"), _("Y coordinate of grid origin"),
- "originy", *_rumg, _wr, repr, doc);
- sutemp = _rsu_oy->getSU();
- sutemp->setDigits(4);
- sutemp->setIncrements(0.1, 1.0);
- _rsu_sx->init (_("Spacing _X:"), _("Distance between vertical grid lines"),
- "spacingx", *_rumg, _wr, repr, doc);
- sutemp = _rsu_sx->getSU();
- sutemp->setDigits(4);
- sutemp->setIncrements(0.1, 1.0);
- _rsu_sy->init (_("Spacing _Y:"), _("Distance between horizontal grid lines"),
- "spacingy", *_rumg, _wr, repr, doc);
- sutemp = _rsu_sy->getSU();
- sutemp->setDigits(4);
- sutemp->setIncrements(0.1, 1.0);
- _rcp_gcol->init (_("Grid line _color:"), _("Grid line color"),
- _("Color of grid lines"), "color", "opacity", _wr, repr, doc);
- _rcp_gmcol->init (_("Ma_jor grid line color:"), _("Major grid line color"),
- _("Color of the major (highlighted) grid lines"),
- "empcolor", "empopacity", _wr, repr, doc);
- _rsi->init (_("_Major grid line every:"), _("lines"), "empspacing", _wr, repr, doc);
+
+ _rsu_ox->setDigits(4);
+ _rsu_ox->setIncrements(0.1, 1.0);
+
+ _rsu_oy->setDigits(4);
+ _rsu_oy->setIncrements(0.1, 1.0);
+
+ _rsu_sx->setDigits(4);
+ _rsu_sx->setIncrements(0.1, 1.0);
+
+ _rsu_sy->setDigits(4);
+ _rsu_sy->setIncrements(0.1, 1.0);
Inkscape::UI::Widget::RegisteredCheckButton * _rcb_dotted = Gtk::manage(
new Inkscape::UI::Widget::RegisteredCheckButton( _("_Show dots instead of lines"),
_("If set, displays dots at gridpoints instead of gridlines"),
- "dotted", _wr, false, repr, doc)
- );
+ "dotted", _wr, false, repr, doc) );
_wr.setUpdating (false);
Gtk::Widget const *const widget_array[] = {
- _rumg->_label, _rumg->_sel,
- 0, _rsu_ox->getSU(),
- 0, _rsu_oy->getSU(),
- 0, _rsu_sx->getSU(),
- 0, _rsu_sy->getSU(),
- _rcp_gcol->_label, _rcp_gcol->_cp,
+ 0, _rumg,
+ 0, _rsu_ox,
+ 0, _rsu_oy,
+ 0, _rsu_sx,
+ 0, _rsu_sy,
+ _rcp_gcol->_label, _rcp_gcol,
0, 0,
- _rcp_gmcol->_label, _rcp_gmcol->_cp,
- _rsi->_label, &_rsi->_hbox,
+ _rcp_gmcol->_label, _rcp_gmcol,
+ 0, _rsi,
0, _rcb_dotted,
};
attach_all (*table, widget_array, sizeof(widget_array));
- if (repr) readRepr();
- updateWidgets();
+ // set widget values
+ _rumg->setUnit (gridunit);
+
+ gdouble val;
+ val = origin[NR::X];
+ val = sp_pixels_get_units (val, *(gridunit));
+ _rsu_ox->setValue (val);
+ val = origin[NR::Y];
+ val = sp_pixels_get_units (val, *(gridunit));
+ _rsu_oy->setValue (val);
+ val = spacing[NR::X];
+ double gridx = sp_pixels_get_units (val, *(gridunit));
+ _rsu_sx->setValue (gridx);
+ val = spacing[NR::Y];
+ double gridy = sp_pixels_get_units (val, *(gridunit));
+ _rsu_sy->setValue (gridy);
+
+ _rcp_gcol->setRgba32 (color);
+ _rcp_gmcol->setRgba32 (empcolor);
+ _rsi->setValue (empspacing);
+
+ _rcb_dotted->setActive(render_dotted);
return table;
}
a = NR_RGBA32_A (rgba);
x0 = MAX (buf->rect.x0, xs);
x1 = MIN (buf->rect.x1, xe + 1);
- p = buf->buf + (y - buf->rect.y0) * buf->buf_rowstride + (x0 - buf->rect.x0) * 3;
+ p = buf->buf + (y - buf->rect.y0) * buf->buf_rowstride + (x0 - buf->rect.x0) * 4;
for (x = x0; x < x1; x++) {
p[0] = NR_COMPOSEN11_1111 (r, a, p[0]);
p[1] = NR_COMPOSEN11_1111 (g, a, p[1]);
p[2] = NR_COMPOSEN11_1111 (b, a, p[2]);
- p += 3;
+ p += 4;
}
}
}
a = NR_RGBA32_A (rgba);
y0 = MAX (buf->rect.y0, ys);
y1 = MIN (buf->rect.y1, ye + 1);
- p = buf->buf + (y0 - buf->rect.y0) * buf->buf_rowstride + (x - buf->rect.x0) * 3;
+ p = buf->buf + (y0 - buf->rect.y0) * buf->buf_rowstride + (x - buf->rect.x0) * 4;
for (y = y0; y < y1; y++) {
p[0] = NR_COMPOSEN11_1111 (r, a, p[0]);
p[1] = NR_COMPOSEN11_1111 (g, a, p[1]);
g = NR_RGBA32_G (rgba);
b = NR_RGBA32_B (rgba);
a = NR_RGBA32_A (rgba);
- p = buf->buf + (y - buf->rect.y0) * buf->buf_rowstride + (x - buf->rect.x0) * 3;
+ p = buf->buf + (y - buf->rect.y0) * buf->buf_rowstride + (x - buf->rect.x0) * 4;
p[0] = NR_COMPOSEN11_1111 (r, a, p[0]);
p[1] = NR_COMPOSEN11_1111 (g, a, p[1]);
p[2] = NR_COMPOSEN11_1111 (b, a, p[2]);
//set correct coloring, depending preference (when zoomed out, always major coloring or minor coloring)
guint32 _empcolor;
- bool preference = prefs_get_int_attribute ("options.grids", "no_emphasize_when_zoomedout", 0) == 1;
- if( (scaled[NR::X] || scaled[NR::Y]) && preference ) {
+ bool no_emp_when_zoomed_out = prefs_get_int_attribute ("options.grids", "no_emphasize_when_zoomedout", 0) == 1;
+ if( (scaled[NR::X] || scaled[NR::Y]) && no_emp_when_zoomed_out ) {
_empcolor = color;
} else {
_empcolor = empcolor;
gdouble x;
for (x = sxg, xlinenum = xlinestart; x < buf->rect.x1; x += sw[NR::X], xlinenum++) {
gint const ix = (gint) Inkscape::round(x);
- if ( (!scaled[NR::X] && (xlinenum % empspacing) == 0)
- || (!scaled[NR::Y] && (ylinenum % empspacing) == 0) )
+ if ( (!scaled[NR::X] && (xlinenum % empspacing) != 0)
+ || (!scaled[NR::Y] && (ylinenum % empspacing) != 0)
+ || ((scaled[NR::X] || scaled[NR::Y]) && no_emp_when_zoomed_out) )
{
- grid_dot (buf, ix, iy, _empcolor | (guint32)0x000000FF); // put alpha to max value
+ grid_dot (buf, ix, iy, color | (guint32)0x000000FF); // put alpha to max value
} else {
- grid_dot (buf, ix, iy, color | (guint32)0x000000FF); // put alpha to max value
+ gint const pitch = 1;
+ grid_dot (buf, ix-pitch, iy, _empcolor);
+ grid_dot (buf, ix+pitch, iy, _empcolor);
+
+ grid_dot (buf, ix, iy, _empcolor | (guint32)0x000000FF); // put alpha to max value
+
+ grid_dot (buf, ix, iy-pitch, _empcolor);
+ grid_dot (buf, ix, iy+pitch, _empcolor);
}
}