index 5a7117db208eb08b4388964799deff8701ee250d..29b6c37dd42872bbd3b608422b92d928508fe841 100644 (file)
{
if (selection && !selection->isEmpty()) {
if (!_check_move_relative.get_active()) {
- NR::Maybe<NR::Rect> bbox = selection->bounds();
+ boost::optional<NR::Rect> bbox = selection->bounds();
if (bbox) {
- double x = bbox->min()[NR::X];
- double y = bbox->min()[NR::Y];
+ double x = bbox->min()[Geom::X];
+ double y = bbox->min()[Geom::Y];
_scalar_move_horizontal.setValue(x, "px");
_scalar_move_vertical.setValue(y, "px");
Transformation::updatePageScale(Inkscape::Selection *selection)
{
if (selection && !selection->isEmpty()) {
- NR::Maybe<NR::Rect> bbox = selection->bounds();
+ boost::optional<NR::Rect> bbox = selection->bounds();
if (bbox) {
- double w = bbox->extent(NR::X);
- double h = bbox->extent(NR::Y);
+ double w = bbox->extent(Geom::X);
+ double h = bbox->extent(Geom::Y);
_scalar_scale_horizontal.setHundredPercent(w);
_scalar_scale_vertical.setHundredPercent(h);
onScaleXValueChanged(); // to update x/y proportionality if switch is on
Transformation::updatePageSkew(Inkscape::Selection *selection)
{
if (selection && !selection->isEmpty()) {
- NR::Maybe<NR::Rect> bbox = selection->bounds();
+ boost::optional<NR::Rect> bbox = selection->bounds();
if (bbox) {
- double w = bbox->extent(NR::X);
- double h = bbox->extent(NR::Y);
+ double w = bbox->extent(Geom::X);
+ double h = bbox->extent(Geom::Y);
_scalar_skew_vertical.setHundredPercent(w);
_scalar_skew_horizontal.setHundredPercent(h);
_page_skew.set_sensitive(true);
{
if (selection && !selection->isEmpty()) {
if (_check_replace_matrix.get_active()) {
- NR::Matrix current (SP_ITEM(selection->itemList()->data)->transform); // take from the first item in selection
+ Geom::Matrix current (SP_ITEM(selection->itemList()->data)->transform); // take from the first item in selection
- NR::Matrix new_displayed = current;
+ Geom::Matrix new_displayed = current;
_scalar_transform_a.setValue(new_displayed[0]);
_scalar_transform_b.setValue(new_displayed[1]);
if (prefs_get_int_attribute_limited ("dialogs.transformation", "applyseparately", 0, 0, 1) == 0) {
// move selection as a whole
- if (_check_move_relative.get_active()) {
- sp_selection_move_relative(selection, x, y);
- } else {
- NR::Maybe<NR::Rect> bbox = selection->bounds();
- if (bbox) {
- sp_selection_move_relative(selection,
- x - bbox->min()[NR::X], y - bbox->min()[NR::Y]);
+ if (_check_move_relative.get_active()) {
+ sp_selection_move_relative(selection, x, y);
+ } else {
+ boost::optional<NR::Rect> bbox = selection->bounds();
+ if (bbox) {
+ sp_selection_move_relative(selection,
+ x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]);
+ }
}
- }
} else {
- // shift each object relatively to the previous one
-
- using Inkscape::Util::GSListConstIterator;
- std::list<SPItem *> selected;
- selected.insert<GSListConstIterator<SPItem *> >(selected.end(), selection->itemList(), NULL);
- if (selected.empty()) return;
-
- if (fabs(x) > 1e-6) {
- std::vector< BBoxSort > sorted;
- for (std::list<SPItem *>::iterator it(selected.begin());
- it != selected.end();
- ++it)
- {
- NR::Maybe<NR::Rect> bbox = sp_item_bbox_desktop(*it);
- if (bbox) {
- sorted.push_back(BBoxSort(*it, *bbox, NR::X, x > 0? 1. : 0., x > 0? 0. : 1.));
+
+ if (_check_move_relative.get_active()) {
+ // shift each object relatively to the previous one
+ using Inkscape::Util::GSListConstIterator;
+ std::list<SPItem *> selected;
+ selected.insert<GSListConstIterator<SPItem *> >(selected.end(), selection->itemList(), NULL);
+ if (selected.empty()) return;
+
+ if (fabs(x) > 1e-6) {
+ std::vector< BBoxSort > sorted;
+ for (std::list<SPItem *>::iterator it(selected.begin());
+ it != selected.end();
+ ++it)
+ {
+ boost::optional<NR::Rect> bbox = sp_item_bbox_desktop(*it);
+ if (bbox) {
+ sorted.push_back(BBoxSort(*it, to_2geom(*bbox), Geom::X, x > 0? 1. : 0., x > 0? 0. : 1.));
+ }
+ }
+ //sort bbox by anchors
+ std::sort(sorted.begin(), sorted.end());
+
+ double move = x;
+ for ( std::vector<BBoxSort> ::iterator it (sorted.begin());
+ it < sorted.end();
+ it ++ )
+ {
+ sp_item_move_rel(it->item, NR::translate(move, 0));
+ // move each next object by x relative to previous
+ move += x;
}
}
- //sort bbox by anchors
- std::sort(sorted.begin(), sorted.end());
-
- double move = x;
- for ( std::vector<BBoxSort> ::iterator it (sorted.begin());
- it < sorted.end();
- it ++ )
- {
- sp_item_move_rel(it->item, NR::translate(move, 0));
- // move each next object by x relative to previous
- move += x;
- }
- }
- if (fabs(y) > 1e-6) {
- std::vector< BBoxSort > sorted;
- for (std::list<SPItem *>::iterator it(selected.begin());
- it != selected.end();
- ++it)
- {
- NR::Maybe<NR::Rect> bbox = sp_item_bbox_desktop(*it);
- if (bbox) {
- sorted.push_back(BBoxSort(*it, *bbox, NR::Y, y > 0? 1. : 0., y > 0? 0. : 1.));
+ if (fabs(y) > 1e-6) {
+ std::vector< BBoxSort > sorted;
+ for (std::list<SPItem *>::iterator it(selected.begin());
+ it != selected.end();
+ ++it)
+ {
+ boost::optional<NR::Rect> bbox = sp_item_bbox_desktop(*it);
+ if (bbox) {
+ sorted.push_back(BBoxSort(*it, to_2geom(*bbox), Geom::Y, y > 0? 1. : 0., y > 0? 0. : 1.));
+ }
+ }
+ //sort bbox by anchors
+ std::sort(sorted.begin(), sorted.end());
+
+ double move = y;
+ for ( std::vector<BBoxSort> ::iterator it (sorted.begin());
+ it < sorted.end();
+ it ++ )
+ {
+ sp_item_move_rel(it->item, NR::translate(0, move));
+ // move each next object by x relative to previous
+ move += y;
}
}
- //sort bbox by anchors
- std::sort(sorted.begin(), sorted.end());
-
- double move = y;
- for ( std::vector<BBoxSort> ::iterator it (sorted.begin());
- it < sorted.end();
- it ++ )
- {
- sp_item_move_rel(it->item, NR::translate(0, move));
- // move each next object by x relative to previous
- move += y;
+ } else {
+ boost::optional<NR::Rect> bbox = selection->bounds();
+ if (bbox) {
+ sp_selection_move_relative(selection,
+ x - bbox->min()[Geom::X], y - bbox->min()[Geom::Y]);
}
}
-
}
sp_document_done ( sp_desktop_document (selection->desktop()) , SP_VERB_DIALOG_TRANSFORM,
NR::scale scale (0,0);
// the values are increments!
if (_units_scale.isAbsolute()) {
- NR::Maybe<NR::Rect> bbox(sp_item_bbox_desktop(item));
+ boost::optional<NR::Rect> bbox(sp_item_bbox_desktop(item));
if (bbox) {
double new_width = scaleX;
if (fabs(new_width) < 1e-6) new_width = 1e-6; // not 0, as this would result in a nasty no-bbox object
double new_height = scaleY;
if (fabs(new_height) < 1e-6) new_height = 1e-6;
- scale = NR::scale(new_width / bbox->extent(NR::X), new_height / bbox->extent(NR::Y));
+ scale = NR::scale(new_width / bbox->extent(Geom::X), new_height / bbox->extent(Geom::Y));
}
} else {
double new_width = scaleX;
sp_item_scale_rel (item, scale);
}
} else {
- NR::Maybe<NR::Rect> bbox(selection->bounds());
+ boost::optional<NR::Rect> bbox(selection->bounds());
if (bbox) {
- NR::Point center(bbox->midpoint()); // use rotation center?
+ Geom::Point center(bbox->midpoint()); // use rotation center?
NR::scale scale (0,0);
// the values are increments!
if (_units_scale.isAbsolute()) {
if (fabs(new_width) < 1e-6) new_width = 1e-6;
double new_height = scaleY;
if (fabs(new_height) < 1e-6) new_height = 1e-6;
- scale = NR::scale(new_width / bbox->extent(NR::X), new_height / bbox->extent(NR::Y));
+ scale = NR::scale(new_width / bbox->extent(Geom::X), new_height / bbox->extent(Geom::Y));
} else {
double new_width = scaleX;
if (fabs(new_width) < 1e-6) new_width = 1e-6;
sp_item_rotate_rel(item, NR::rotate (angle*M_PI/180.0));
}
} else {
- NR::Maybe<NR::Point> center = selection->center();
+ boost::optional<NR::Point> center = selection->center();
if (center) {
sp_selection_rotate_relative(selection, *center, angle);
}
} else { // absolute displacement
double skewX = _scalar_skew_horizontal.getValue("px");
double skewY = _scalar_skew_vertical.getValue("px");
- NR::Maybe<NR::Rect> bbox(sp_item_bbox_desktop(item));
+ boost::optional<NR::Rect> bbox(sp_item_bbox_desktop(item));
if (bbox) {
- double width = bbox->extent(NR::X);
- double height = bbox->extent(NR::Y);
+ double width = bbox->extent(Geom::X);
+ double height = bbox->extent(Geom::Y);
sp_item_skew_rel (item, skewX/height, skewY/width);
}
}
}
} else { // transform whole selection
- NR::Maybe<NR::Rect> bbox = selection->bounds();
- NR::Maybe<NR::Point> center = selection->center();
+ boost::optional<NR::Rect> bbox = selection->bounds();
+ boost::optional<NR::Point> center = selection->center();
if ( bbox && center ) {
- double width = bbox->extent(NR::X);
- double height = bbox->extent(NR::Y);
+ double width = bbox->extent(Geom::X);
+ double height = bbox->extent(Geom::Y);
if (!_units_skew.isAbsolute()) { // percentage
double skewX = _scalar_skew_horizontal.getValue("%");
//g_message("onMoveRelativeToggled: %f, %f px\n", x, y);
- NR::Maybe<NR::Rect> bbox = selection->bounds();
+ boost::optional<NR::Rect> bbox = selection->bounds();
if (bbox) {
if (_check_move_relative.get_active()) {
// From absolute to relative
- _scalar_move_horizontal.setValue(x - bbox->min()[NR::X], "px");
- _scalar_move_vertical.setValue( y - bbox->min()[NR::Y], "px");
+ _scalar_move_horizontal.setValue(x - bbox->min()[Geom::X], "px");
+ _scalar_move_vertical.setValue( y - bbox->min()[Geom::Y], "px");
} else {
// From relative to absolute
- _scalar_move_horizontal.setValue(bbox->min()[NR::X] + x, "px");
- _scalar_move_vertical.setValue( bbox->min()[NR::Y] + y, "px");
+ _scalar_move_horizontal.setValue(bbox->min()[Geom::X] + x, "px");
+ _scalar_move_vertical.setValue( bbox->min()[Geom::Y] + y, "px");
}
}
double e = _scalar_transform_e.getValue();
double f = _scalar_transform_f.getValue();
- NR::Matrix displayed (a, b, c, d, e, f);
- NR::Matrix current (SP_ITEM(selection->itemList()->data)->transform); // take from the first item in selection
+ Geom::Matrix displayed (a, b, c, d, e, f);
+ Geom::Matrix current = SP_ITEM(selection->itemList()->data)->transform; // take from the first item in selection
- NR::Matrix new_displayed;
+ Geom::Matrix new_displayed;
if (_check_replace_matrix.get_active()) {
new_displayed = current;
} else {
_scalar_move_horizontal.setValue(0);
_scalar_move_vertical.setValue(0);
} else {
- NR::Maybe<NR::Rect> bbox = selection->bounds();
+ boost::optional<NR::Rect> bbox = selection->bounds();
if (bbox) {
- _scalar_move_horizontal.setValue(bbox->min()[NR::X], "px");
- _scalar_move_vertical.setValue(bbox->min()[NR::Y], "px");
+ _scalar_move_horizontal.setValue(bbox->min()[Geom::X], "px");
+ _scalar_move_vertical.setValue(bbox->min()[Geom::Y], "px");
}
}
break;