Code

patch by Dennis Lin: optionally for debugging paint the rect-to-redraw yellow
[inkscape.git] / src / display / nr-filter-slot.h
index 13ce1afe20fff919619db5fc2b9d8ac4d2f97826..2272c3ae78dbd80b3aaffddf703eff7adf6f4997 100644 (file)
@@ -9,21 +9,28 @@
  * Author:
  *   Niko Kiirala <niko@kiirala.com>
  *
- * Copyright (C) 2006 Niko Kiirala
+ * Copyright (C) 2006,2007 Niko Kiirala
  *
  * Released under GNU GPL, read the file 'COPYING' for more information
  */
 
 #include "libnr/nr-pixblock.h"
+#include "display/nr-filter-units.h"
+
+struct NRArenaItem;
 
 namespace NR {
 
 class FilterSlot {
 public:
-    /** Creates a new FilterSlot object, with two slots. */
-    FilterSlot();
-    /** Creates a new FilterSlot object, with specified amount of slots */
-    FilterSlot(int slots);
+    /** Creates a new FilterSlot object.
+     * First parameter specifies the amount of slots this SilterSlot
+     * should reserve beforehand. If a negative number is given,
+     * two slots will be reserved.
+     * Second parameter specifies the arena item, which should be used
+     * for background accesses from filters.
+     */
+    FilterSlot(int slots, NRArenaItem const *item);
     /** Destroys the FilterSlot object and all its contents */
     ~FilterSlot();
 
@@ -38,6 +45,14 @@ public:
      */
     NRPixBlock *get(int slot);
 
+    /** Gets the final result from this filter.
+     * The result is fetched from the specified slot, see description of
+     * method get for valid values. The pixblock 'result' will be modified
+     * to contain the result image, ready to be used in the rest of rendering
+     * pipeline
+     */
+    void get_final(int slot, NRPixBlock *result);
+
     /** Sets or re-sets the pixblock associated with given slot.
      * If there was a pixblock already assigned with this slot,
      * that pixblock is destroyed.
@@ -51,6 +66,12 @@ public:
     /** Returns the number of slots in use. */
     int get_slot_count();
 
+    /** arenaitem getter method*/
+    NRArenaItem const* get_arenaitem();
+
+    /** Sets the unit system to be used for the internal images. */
+    void set_units(FilterUnits const &units);
+
 private:
     NRPixBlock **_slot;
     int *_slot_number;
@@ -58,7 +79,11 @@ private:
 
     int _last_out;
 
-    /** Returns the table index of given slot. If that slot dows not exist,
+    NRArenaItem const *_arena_item;
+
+    FilterUnits units;
+
+    /** Returns the table index of given slot. If that slot does not exist,
      * it is created. Table index can be used to read the correct
      * pixblock from _slot */
     int _get_index(int slot);