Code

Make knotholders for LPE items finally work; each effect can now overload the addKnot...
[inkscape.git] / src / desktop.h
index 0a3732d56cd54ec91cb1b9d9eedf2d30d14dbf0f..af0d41b2a573ff7335480670e114e1faee43ab77 100644 (file)
@@ -35,6 +35,9 @@
 #include "ui/view/view.h"
 #include "ui/view/edit-widget-interface.h"
 
+#include "display/rendermode.h"
+#include "display/snap-indicator.h"
+
 class NRRect;
 class SPCSSAttr;
 struct _GtkWidget;
@@ -42,13 +45,11 @@ typedef struct _GtkWidget GtkWidget;
 struct SPCanvas;
 struct SPCanvasItem;
 struct SPCanvasGroup;
-struct SPDesktopWidget;
 struct SPEventContext;
 struct SPItem;
 struct SPNamedView;
 struct SPObject;
 struct SPStyle;
-struct SPViewWidget;
 
 namespace Gtk
 {
@@ -74,6 +75,11 @@ namespace Inkscape {
   namespace Whiteboard {
       class SessionManager;
   }
+  namespace Display {
+      class TemporaryItemList;
+      class TemporaryItem;
+      //class SnapIndicator;
+  }
 }
 
 /**
@@ -92,6 +98,9 @@ struct SPDesktop : public Inkscape::UI::View::View
     Inkscape::LayerManager    *layer_manager;
     Inkscape::EventLog        *event_log;
 
+    Inkscape::Display::TemporaryItemList *temporary_item_list;
+    Inkscape::Display::SnapIndicator *snapindicator;
+
     SPCanvasItem  *acetate;
     SPCanvasGroup *main;
     SPCanvasGroup *gridgroup;
@@ -99,6 +108,7 @@ struct SPDesktop : public Inkscape::UI::View::View
     SPCanvasItem  *drawing;
     SPCanvasGroup *sketch;
     SPCanvasGroup *controls;
+    SPCanvasGroup *tempgroup;   ///< contains temporary canvas items
     SPCanvasItem  *table;       ///< outside-of-page background
     SPCanvasItem  *page;        ///< page background
     SPCanvasItem  *page_border; ///< page border
@@ -175,11 +185,23 @@ struct SPDesktop : public Inkscape::UI::View::View
         return _guides_message_context;
     }
 
-    void setDisplayModeNormal();
-    void setDisplayModeOutline();
+    Inkscape::Display::TemporaryItem * add_temporary_canvasitem (SPCanvasItem *item, guint lifetime, bool move_to_bottom = true);
+    void remove_temporary_canvasitem (Inkscape::Display::TemporaryItem * tempitem);
+
+    void _setDisplayMode(Inkscape::RenderMode mode);
+    void setDisplayModeNormal() {
+        _setDisplayMode(Inkscape::RENDERMODE_NORMAL);
+    }
+    void setDisplayModeNoFilters() {
+        _setDisplayMode(Inkscape::RENDERMODE_NO_FILTERS);
+    }
+    void setDisplayModeOutline() {
+        _setDisplayMode(Inkscape::RENDERMODE_OUTLINE);
+    }
     void displayModeToggle();
-    int displayMode;
-    int getMode() const { return displayMode; }
+    Inkscape::RenderMode _display_mode;
+    Inkscape::RenderMode _saved_display_mode;
+    Inkscape::RenderMode getMode() const { return _display_mode; }
 
     Inkscape::UI::Widget::Dock* getDock() { return _widget->getDock(); }
 
@@ -223,7 +245,7 @@ struct SPDesktop : public Inkscape::UI::View::View
     void zoom_drawing();
     void zoom_selection();
     void zoom_grab_focus();
-    double current_zoom() const  { return _d2w.expansion(); }
+    double current_zoom() const  { return NR::expansion(_d2w); }
     void prev_zoom();
     void next_zoom();
 
@@ -235,6 +257,7 @@ struct SPDesktop : public Inkscape::UI::View::View
         using NR::Y;
         scroll_world(scroll[X], scroll[Y], is_scrolling);
     }
+    void scroll_world_in_svg_coords (double dx, double dy, bool is_scrolling = false);
 
     void getWindowGeometry (gint &x, gint &y, gint &w, gint &h);
     void setWindowPosition (NR::Point p);