summaryrefslogtreecommitdiffstats
path: root/src/sp-pattern.h
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2006-01-16 02:36:01 +0000
committermental <mental@users.sourceforge.net>2006-01-16 02:36:01 +0000
commit179fa413b047bede6e32109e2ce82437c5fb8d34 (patch)
treea5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/sp-pattern.h
downloadinkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.tar.gz
inkscape-179fa413b047bede6e32109e2ce82437c5fb8d34.zip
moving trunk for module inkscape
(bzr r1)
Diffstat (limited to 'src/sp-pattern.h')
-rw-r--r--src/sp-pattern.h98
1 files changed, 98 insertions, 0 deletions
diff --git a/src/sp-pattern.h b/src/sp-pattern.h
new file mode 100644
index 000000000..42cac7a7e
--- /dev/null
+++ b/src/sp-pattern.h
@@ -0,0 +1,98 @@
+#ifndef __SP_PATTERN_H__
+#define __SP_PATTERN_H__
+
+/*
+ * SVG <pattern> implementation
+ *
+ * Author:
+ * Lauris Kaplinski <lauris@kaplinski.com>
+ *
+ * Copyright (C) 2002 Lauris Kaplinski
+ *
+ * Released under GNU GPL, read the file 'COPYING' for more information
+ */
+
+#include <gtk/gtktypeutils.h>
+
+#include "forward.h"
+
+#define SP_TYPE_PATTERN (sp_pattern_get_type ())
+#define SP_PATTERN(o) (GTK_CHECK_CAST ((o), SP_TYPE_PATTERN, SPPattern))
+#define SP_PATTERN_CLASS(k) (GTK_CHECK_CLASS_CAST ((k), SP_TYPE_PATTERN, SPPatternClass))
+#define SP_IS_PATTERN(o) (GTK_CHECK_TYPE ((o), SP_TYPE_PATTERN))
+#define SP_IS_PATTERN_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), SP_TYPE_PATTERN))
+
+GType sp_pattern_get_type (void);
+
+class SPPatternClass;
+
+#include <libnr/nr-rect.h>
+#include <libnr/nr-matrix.h>
+#include "svg/svg-length.h"
+#include "sp-paint-server.h"
+#include "uri-references.h"
+
+class SPPatternReference : public Inkscape::URIReference {
+public:
+ SPPatternReference (SPObject *obj) : URIReference(obj) {}
+ SPPattern *getObject() const {
+ return (SPPattern *)URIReference::getObject();
+ }
+protected:
+ virtual bool _acceptObject(SPObject *obj) const {
+ return SP_IS_PATTERN (obj);
+ }
+};
+
+enum {
+ SP_PATTERN_UNITS_USERSPACEONUSE,
+ SP_PATTERN_UNITS_OBJECTBOUNDINGBOX
+};
+
+struct SPPattern : public SPPaintServer {
+ /* Reference (href) */
+ gchar *href;
+ SPPatternReference *ref;
+
+ /* patternUnits and patternContentUnits attribute */
+ guint patternUnits : 1;
+ guint patternUnits_set : 1;
+ guint patternContentUnits : 1;
+ guint patternContentUnits_set : 1;
+ /* patternTransform attribute */
+ NR::Matrix patternTransform;
+ guint patternTransform_set : 1;
+ /* Tile rectangle */
+ SVGLength x;
+ SVGLength y;
+ SVGLength width;
+ SVGLength height;
+ /* VieBox */
+ NRRect viewBox;
+ guint viewBox_set : 1;
+};
+
+struct SPPatternClass {
+ SPPaintServerClass parent_class;
+};
+
+guint pattern_users (SPPattern *pattern);
+SPPattern *pattern_chain (SPPattern *pattern);
+SPPattern *sp_pattern_clone_if_necessary (SPItem *item, SPPattern *pattern, const gchar *property);
+void sp_pattern_transform_multiply (SPPattern *pattern, NR::Matrix postmul, bool set);
+
+const gchar *pattern_tile (GSList *reprs, NR::Rect bounds, SPDocument *document, NR::Matrix transform, NR::Matrix move);
+
+SPPattern *pattern_getroot (SPPattern *pat);
+
+guint pattern_patternUnits (SPPattern *pat);
+guint pattern_patternContentUnits (SPPattern *pat);
+NR::Matrix const &pattern_patternTransform(SPPattern const *pat);
+gdouble pattern_x (SPPattern *pat);
+gdouble pattern_y (SPPattern *pat);
+gdouble pattern_width (SPPattern *pat);
+gdouble pattern_height (SPPattern *pat);
+NRRect *pattern_viewBox (SPPattern *pat);
+
+
+#endif