Merge lp:~doctormo/inkscape/image-outline-option into lp:~inkscape.dev/inkscape/trunk

Proposed by Martin Owens
Status: Merged
Merge reported by: Martin Owens
Merged at revision: not available
Proposed branch: lp:~doctormo/inkscape/image-outline-option
Merge into: lp:~inkscape.dev/inkscape/trunk
Diff against target: 163 lines (+45/-6)
5 files modified
src/desktop.cpp (+9/-3)
src/desktop.h (+25/-1)
src/display/drawing-image.cpp (+5/-2)
src/ui/dialog/inkscape-preferences.cpp (+5/-0)
src/ui/dialog/inkscape-preferences.h (+1/-0)
To merge this branch: bzr merge lp:~doctormo/inkscape/image-outline-option
Reviewer Review Type Date Requested Status
Inkscape Developers Pending
Review via email: mp+216500@code.launchpad.net

Description of the change

Adds an option to the preferences to show images while in outline mode; this is useful for tracing manually.

To post a comment you must log in.
13293. By Martin Owens

Fix remaining issue with prefs updating

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/desktop.cpp'
2--- src/desktop.cpp 2014-04-14 20:55:29 +0000
3+++ src/desktop.cpp 2014-04-19 04:52:53 +0000
4@@ -138,6 +138,8 @@
5 _w2d(),
6 _d2w(),
7 _doc2dt( Geom::Scale(1, -1) ),
8+ // This doesn't work I don't know why.
9+ _image_render_observer(this, "/options/rendering/imageinoutlinemode"),
10 grids_visible( false )
11 {
12 _d2w.setIdentity();
13@@ -499,11 +501,15 @@
14 }
15 }
16
17+void SPDesktop::redrawDesktop() {
18+ sp_canvas_item_affine_absolute (SP_CANVAS_ITEM (main), _d2w); // redraw
19+}
20+
21 void SPDesktop::_setDisplayMode(Inkscape::RenderMode mode) {
22 SP_CANVAS_ARENA (drawing)->drawing.setRenderMode(mode);
23 canvas->rendermode = mode;
24 _display_mode = mode;
25- sp_canvas_item_affine_absolute (SP_CANVAS_ITEM (main), _d2w); // redraw
26+ redrawDesktop();
27 _widget->setTitle( sp_desktop_document(this)->getName() );
28 }
29 void SPDesktop::_setDisplayColorMode(Inkscape::ColorMode mode) {
30@@ -524,7 +530,7 @@
31 SP_CANVAS_ARENA (drawing)->drawing.setColorMode(mode);
32 canvas->colorrendermode = mode;
33 _display_color_mode = mode;
34- sp_canvas_item_affine_absolute (SP_CANVAS_ITEM (main), _d2w); // redraw
35+ redrawDesktop();
36 _widget->setTitle( sp_desktop_document(this)->getName() );
37 }
38
39@@ -819,7 +825,7 @@
40 // zoom changed - set new zoom factors
41 _d2w = Geom::Scale(newscale, -newscale);
42 _w2d = Geom::Scale(1/newscale, 1/-newscale);
43- sp_canvas_item_affine_absolute(SP_CANVAS_ITEM(main), _d2w);
44+ redrawDesktop();
45 clear = TRUE;
46 zoomChanged = true;
47 }
48
49=== modified file 'src/desktop.h'
50--- src/desktop.h 2014-03-27 01:33:44 +0000
51+++ src/desktop.h 2014-04-19 04:52:53 +0000
52@@ -35,12 +35,14 @@
53 #include "display/rendermode.h"
54 #include <glibmm/ustring.h>
55
56+#include "preferences.h"
57 #include "sp-gradient.h" // TODO refactor enums out to their own .h file
58
59 class SPCSSAttr;
60 struct SPCanvas;
61 struct SPCanvasItem;
62 struct SPCanvasGroup;
63+struct DesktopPrefObserver;
64
65 namespace Inkscape {
66 namespace UI {
67@@ -206,7 +208,7 @@
68 /// Emitted when the zoom factor changes (not emitted when scrolling).
69 /// The parameter is the new zoom factor
70 sigc::signal<void, double> signal_zoom_changed;
71-
72+
73 sigc::connection connectDestroy(const sigc::slot<void, SPDesktop*> &slot)
74 {
75 return _destroy_signal.connect(slot);
76@@ -256,6 +258,8 @@
77 Inkscape::Display::TemporaryItem * add_temporary_canvasitem (SPCanvasItem *item, guint lifetime, bool move_to_bottom = true);
78 void remove_temporary_canvasitem (Inkscape::Display::TemporaryItem * tempitem);
79
80+ void redrawDesktop();
81+
82 void _setDisplayMode(Inkscape::RenderMode mode);
83 void setDisplayModeNormal() {
84 _setDisplayMode(Inkscape::RENDERMODE_NORMAL);
85@@ -426,6 +430,26 @@
86 Geom::Affine _d2w;
87 Geom::Affine _doc2dt;
88
89+ /*
90+ * Allow redrawing or refreshing if preferences change
91+ */
92+ class DesktopPrefObserver : public Inkscape::Preferences::Observer {
93+ public:
94+ DesktopPrefObserver(SPDesktop *desktop, Glib::ustring const &path)
95+ : Inkscape::Preferences::Observer(path)
96+ , _desktop(desktop) {
97+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
98+ prefs->addObserver(*this);
99+ }
100+ private:
101+ void notify(Inkscape::Preferences::Entry const &val) {
102+ _desktop->redrawDesktop();
103+ }
104+ SPDesktop *_desktop;
105+ };
106+
107+ DesktopPrefObserver _image_render_observer;
108+
109 bool grids_visible; /* don't set this variable directly, use the method below */
110 void set_grids_visible(bool visible);
111
112
113=== modified file 'src/display/drawing-image.cpp'
114--- src/display/drawing-image.cpp 2014-03-27 01:33:44 +0000
115+++ src/display/drawing-image.cpp 2014-04-19 04:52:53 +0000
116@@ -106,7 +106,10 @@
117 {
118 bool outline = _drawing.outline();
119
120- if (!outline) {
121+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
122+ bool imgoutline = prefs->getBool("/options/rendering/imageinoutlinemode", false);
123+
124+ if (!outline || imgoutline) {
125 if (!_pixbuf) return RENDER_OK;
126
127 Inkscape::DrawingContext::Save save(dc);
128@@ -141,7 +144,7 @@
129 dc.paint(_opacity);
130
131 } else { // outline; draw a rect instead
132- Inkscape::Preferences *prefs = Inkscape::Preferences::get();
133+
134 guint32 rgba = prefs->getInt("/options/wireframecolors/images", 0xff0000ff);
135
136 { Inkscape::DrawingContext::Save save(dc);
137
138=== modified file 'src/ui/dialog/inkscape-preferences.cpp'
139--- src/ui/dialog/inkscape-preferences.cpp 2014-03-30 21:43:02 +0000
140+++ src/ui/dialog/inkscape-preferences.cpp 2014-04-19 04:52:53 +0000
141@@ -1463,6 +1463,11 @@
142 _page_bitmaps.add_line( false, "", _importexport_import_res_override, "",
143 _("Use default bitmap resolution in favor of information from file"));
144
145+ _page_bitmaps.add_group_header( _("Render"));
146+ // rendering outlines for pixmap image tags
147+ _rendering_image_outline.init( _("Images in Outline Mode"), "/options/rendering/imageinoutlinemode", false);
148+ _page_bitmaps.add_line(false, _(""), _rendering_image_outline, "", _("When active will render images while in outline mode instead of a red box with an x. This is useful for manual tracing."));
149+
150 this->AddPage(_page_bitmaps, _("Bitmaps"), PREFS_PAGE_BITMAPS);
151 }
152
153
154=== modified file 'src/ui/dialog/inkscape-preferences.h'
155--- src/ui/dialog/inkscape-preferences.h 2014-03-27 01:33:44 +0000
156+++ src/ui/dialog/inkscape-preferences.h 2014-04-19 04:52:53 +0000
157@@ -292,6 +292,7 @@
158 UI::Widget::PrefCheckButton _show_filters_info_box;
159 UI::Widget::PrefCombo _dockbar_style;
160 UI::Widget::PrefCombo _switcher_style;
161+ UI::Widget::PrefCheckButton _rendering_image_outline;
162 UI::Widget::PrefSpinButton _rendering_cache_size;
163 UI::Widget::PrefSpinButton _filter_multi_threaded;
164