Code

* [INTL: zh_TW] translation update by Dong-Jun Wu
[inkscape.git] / src / style.h
index 3a547bfb90b2e6431782690a8b86a1dd5feab940..d5ccc4901ac5553d0fe6c29db161d30894a43d77 100644 (file)
@@ -3,8 +3,8 @@
 
 /** \file
  * SPStyle - a style object for SPItem objects
- *
- * Authors:
+ */
+/* Authors:
  *   Lauris Kaplinski <lauris@kaplinski.com>
  *
  * Copyright (C) 2001-2002 Lauris Kaplinski
@@ -144,13 +144,6 @@ struct SPILength {
 #define SP_OBJECT_STYLE_FILL_SERVER(o) (SP_OBJECT (o)->style->getFillPaintServer())
 #define SP_OBJECT_STYLE_STROKE_SERVER(o) (SP_OBJECT (o)->style->getStrokePaintServer())
 
-enum {
-    SP_PAINT_TYPE_NONE,
-    SP_PAINT_TYPE_COLOR,
-    SP_PAINT_TYPE_PAINTSERVER,
-    SP_PAINT_TYPE_IMPOSSIBLE
-};
-
 class SVGICCColor;
 
 /// Paint type internal to SPStyle.
@@ -158,14 +151,28 @@ struct SPIPaint {
     unsigned set : 1;
     unsigned inherit : 1;
     unsigned currentcolor : 1;
-    unsigned type : 2;
     unsigned int colorSet : 1;
     unsigned int noneSet : 1;
     struct {
-        SPPaintServerReference *href; 
-        SPColor color;
-        SVGICCColor *iccColor;
+         SPPaintServerReference *href;
+         SPColor color;
     } value;
+
+
+    bool isSet() const { return true; /* set || colorSet*/}
+    bool isSameType( SPIPaint const & other ) const {return (isPaintserver() == other.isPaintserver()) && (colorSet == other.colorSet) && (currentcolor == other.currentcolor);}
+
+    bool isNoneSet() const {return noneSet;}
+
+    bool isNone() const {return !currentcolor && !colorSet && !isPaintserver();} // TODO refine
+    bool isColor() const {return colorSet && !isPaintserver();}
+    bool isPaintserver() const {return value.href && value.href->getObject();}
+
+    void clear();
+
+    void setColor( float r, float g, float b ) {value.color.set( r, g, b ); colorSet = true;}
+    void setColor( guint32 val ) {value.color.set( val ); colorSet = true;}
+    void setColor( SPColor const& color ) {value.color = color; colorSet = true;}
 };
 
 /// Filter type internal to SPStyle
@@ -375,7 +382,7 @@ SPStyle *sp_style_unref(SPStyle *style);
 
 void sp_style_read_from_object(SPStyle *style, SPObject *object);
 
-void sp_style_read_from_repr(SPStyle *style, Inkscape::XML::Node *repr);
+void sp_style_read_from_prefs(SPStyle *style, Glib::ustring const &path);
 
 void sp_style_merge_from_style_string(SPStyle *style, gchar const *p);
 
@@ -531,6 +538,9 @@ struct SPTextStyle {
     /* CSS font properties */
     SPIString font_family;
 
+    /* Full font name, as font_factory::ConstructFontSpecification would give */
+    SPIString font_specification;
+    
     /** \todo fixme: The 'font' property is ugly, and not working (lauris) */
     SPIString font;
 };