diff options
| author | Alvin Penner <penner@vaxxine.com> | 2014-01-15 19:22:31 +0000 |
|---|---|---|
| committer | apenner <penner@vaxxine.com> | 2014-01-15 19:22:31 +0000 |
| commit | 82f4d9a7537fdb3267bf5570cd34aef0692b0f9f (patch) | |
| tree | 1778d65fa9efb8369968e611e48cbcfad2ac79e9 | |
| parent | Revert r12544. Fixes bug 1256449 (Clipping missing on Cairo-based exports). N... (diff) | |
| download | inkscape-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.cpp | 13 | ||||
| -rw-r--r-- | src/rubberband.cpp | 1 | ||||
| -rw-r--r-- | src/selcue.cpp | 1 | ||||
| -rw-r--r-- | src/ui/tools/text-tool.cpp | 1 |
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); |
