summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlvin Penner <penner@vaxxine.com>2014-01-15 19:22:31 +0000
committerapenner <penner@vaxxine.com>2014-01-15 19:22:31 +0000
commit82f4d9a7537fdb3267bf5570cd34aef0692b0f9f (patch)
tree1778d65fa9efb8369968e611e48cbcfad2ac79e9
parentRevert r12544. Fixes bug 1256449 (Clipping missing on Cairo-based exports). N... (diff)
downloadinkscape-82f4d9a7537fdb3267bf5570cd34aef0692b0f9f.tar.gz
inkscape-82f4d9a7537fdb3267bf5570cd34aef0692b0f9f.zip
for rubberband outline, add shading instead of XOR (Bug 1266308)
Fixed bugs: - https://launchpad.net/bugs/1266308 (bzr r12936)
-rw-r--r--src/display/sodipodi-ctrlrect.cpp13
-rw-r--r--src/rubberband.cpp1
-rw-r--r--src/selcue.cpp1
-rw-r--r--src/ui/tools/text-tool.cpp1
4 files changed, 15 insertions, 1 deletions
diff --git a/src/display/sodipodi-ctrlrect.cpp b/src/display/sodipodi-ctrlrect.cpp
index c350e4614..e6e427047 100644
--- a/src/display/sodipodi-ctrlrect.cpp
+++ b/src/display/sodipodi-ctrlrect.cpp
@@ -142,7 +142,18 @@ void CtrlRect::render(SPCanvasBuf *buf)
ink_cairo_set_source_rgba32(buf->ct, _border_color);
cairo_stroke(buf->ct);
- if (_shadow_size > 0) {
+ if (_shadow_size == 1) { // highlight the border by drawing it in _shadow_color
+ if (_dashed) {
+ cairo_set_dash(buf->ct, dashes, 2, 4);
+ cairo_rectangle(buf->ct, 0.5 + area[X].min(), 0.5 + area[Y].min(),
+ area[X].max() - area[X].min(), area[Y].max() - area[Y].min());
+ } else {
+ cairo_rectangle(buf->ct, -0.5 + area[X].min(), -0.5 + area[Y].min(),
+ area[X].max() - area[X].min(), area[Y].max() - area[Y].min());
+ }
+ ink_cairo_set_source_rgba32(buf->ct, _shadow_color);
+ cairo_stroke(buf->ct);
+ } else if (_shadow_size > 1) { // fill the shadow
ink_cairo_set_source_rgba32(buf->ct, _shadow_color);
cairo_rectangle(buf->ct, 1 + area[X].max(), area[Y].min() + _shadow_size,
_shadow_size, area[Y].max() - area[Y].min() + 1); // right shadow
diff --git a/src/rubberband.cpp b/src/rubberband.cpp
index 08492837a..6ec4b3e45 100644
--- a/src/rubberband.cpp
+++ b/src/rubberband.cpp
@@ -99,6 +99,7 @@ void Inkscape::Rubberband::move(Geom::Point const &p)
if (_mode == RUBBERBAND_MODE_RECT) {
if (_rect == NULL) {
_rect = static_cast<CtrlRect *>(sp_canvas_item_new(sp_desktop_controls(_desktop), SP_TYPE_CTRLRECT, NULL));
+ _rect->setShadow(1, 0xffffffff);
}
_rect->setRectangle(Geom::Rect(_start, _end));
diff --git a/src/selcue.cpp b/src/selcue.cpp
index 3f8a93e21..805629636 100644
--- a/src/selcue.cpp
+++ b/src/selcue.cpp
@@ -177,6 +177,7 @@ void Inkscape::SelCue::_newItemBboxes()
SP_CTRLRECT(box)->setRectangle(*b);
SP_CTRLRECT(box)->setColor(0x000000a0, 0, 0);
SP_CTRLRECT(box)->setDashed(true);
+ SP_CTRLRECT(box)->setShadow(1, 0xffffffff);
sp_canvas_item_move_to_z(box, 0);
}
diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp
index 2927606a7..c73164c09 100644
--- a/src/ui/tools/text-tool.cpp
+++ b/src/ui/tools/text-tool.cpp
@@ -154,6 +154,7 @@ void TextTool::setup() {
this->indicator = sp_canvas_item_new(sp_desktop_controls(desktop), SP_TYPE_CTRLRECT, NULL);
SP_CTRLRECT(this->indicator)->setRectangle(Geom::Rect(Geom::Point(0, 0), Geom::Point(100, 100)));
SP_CTRLRECT(this->indicator)->setColor(0x0000ff7f, false, 0);
+ SP_CTRLRECT(this->indicator)->setShadow(1, 0xffffff7f);
sp_canvas_item_hide(this->indicator);
this->frame = sp_canvas_item_new(sp_desktop_controls(desktop), SP_TYPE_CTRLRECT, NULL);