diff options
| author | MenTaLguY <mental@rydia.net> | 2006-01-16 02:36:01 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2006-01-16 02:36:01 +0000 |
| commit | 179fa413b047bede6e32109e2ce82437c5fb8d34 (patch) | |
| tree | a5a6ac2c1708bd02288fbd8edb2ff500ff2e0916 /src/sp-pattern.h | |
| download | inkscape-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.h | 98 |
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 |
