Code

fix 1243587 and misc fixes
[inkscape.git] / src / display / nr-arena-shape.h
index f7991bf4de574f362dcdf39d21f8b6f42458b035..e6484de9f1d7748278a373f30ac7a671a317961f 100644 (file)
@@ -17,8 +17,6 @@
 #define NR_ARENA_SHAPE(obj) (NR_CHECK_INSTANCE_CAST ((obj), NR_TYPE_ARENA_SHAPE, NRArenaShape))
 #define NR_IS_ARENA_SHAPE(obj) (NR_CHECK_INSTANCE_TYPE ((obj), NR_TYPE_ARENA_SHAPE))
 
-//#include <libnr/nr-svp.h>
-
 #include "display/curve.h"
 #include "display/canvas-bpath.h"
 #include "forward.h"
@@ -124,6 +122,8 @@ struct NRArenaShape : public NRArenaItem {
        // the 2 cached polygons, for rasterizations uses
        Shape *fill_shp;
        Shape *stroke_shp;
+       // the stroke width of stroke_shp, to detect when it changes (on normal/outline switching) and rebuild
+       float cached_width; 
        // delayed_shp=true means the *_shp polygons are not computed yet
        // they'll be computed on demand in *_render(), *_pick() or *_clip()
        // the goal is to not uncross polygons that are outside the viewing region
@@ -140,12 +140,19 @@ struct NRArenaShape : public NRArenaItem {
        // skewing
        NR::Matrix cached_fctm;
        NR::Matrix cached_sctm;
+    NRRectL    cached_farea;
+    NRRectL    cached_sarea;
+    bool       cached_fpartialy;
+    bool       cached_spartialy;
        
        Shape    *cached_fill;
        Shape    *cached_stroke;
        /* Markers */
        NRArenaItem *markers;
 
+       NRArenaItem *last_pick;
+       guint repick_after;
+
        static NRArenaShape *create(NRArena *arena) {
                NRArenaShape *obj=reinterpret_cast<NRArenaShape *>(nr_object_new(NR_TYPE_ARENA_SHAPE));
                obj->init(arena);