[librsvg] pattern.rs: Define a PatternContentUnits newtype



commit 83311d90ffdbe736b0b42f74b370b1fa309cc87a
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue Mar 21 14:32:49 2017 -0600

    pattern.rs: Define a PatternContentUnits newtype
    
    This is the same as a PaintServerUnits, but with a different default value.

 rust/src/pattern.rs |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/rust/src/pattern.rs b/rust/src/pattern.rs
index cc174f8..dfbb621 100644
--- a/rust/src/pattern.rs
+++ b/rust/src/pattern.rs
@@ -11,6 +11,7 @@ use length::*;
 use drawing_ctx;
 use drawing_ctx::RsvgDrawingCtx;
 use node::*;
+use paint_server::*;
 
 use bbox::*;
 use util::*;
@@ -37,6 +38,25 @@ pub struct Pattern {
     pub c_node:                *const RsvgNode
 }
 
+// A pattern's patternUnits attribute (in our Pattern::units field) defines the coordinate
+// system relative to the x/y/width/height of the Pattern.  However, patterns also
+// have a patternContentUnits attribute, which refers to the pattern's contents (i.e. the
+// objects which it references.  We define PatternContentUnits as a newtype, so that
+// it can have its own default value, different from the one in PaintServerUnits.
+struct PatternContentUnits(PaintServerUnits);
+
+impl From<PaintServerUnits> for PatternContentUnits {
+    fn from (units: PaintServerUnits) -> PatternContentUnits {
+        PatternContentUnits(units)
+    }
+}
+
+impl Default for PatternContentUnits {
+    fn default () -> PatternContentUnits {
+        PatternContentUnits (PaintServerUnits::UserSpaceOnUse)
+    }
+}
+
 extern "C" {
     fn rsvg_pattern_node_to_rust_pattern (node: *const RsvgNode) -> *mut Pattern;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]