X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-shape.h;h=4932687110fdb7c58eb9e79baac2778822749baa;hb=c7cf14ac71346f76ae219ce67fb88c1bd34832e2;hp=2b265fdaaf6b397c8c4247098dbf3ee7354c9068;hpb=7364fefab5ef7e649e09815354e5c848638b0f9e;p=inkscape.git diff --git a/src/sp-shape.h b/src/sp-shape.h index 2b265fdaa..493268711 100644 --- a/src/sp-shape.h +++ b/src/sp-shape.h @@ -1,25 +1,28 @@ -#ifndef __SP_SHAPE_H__ -#define __SP_SHAPE_H__ +#ifndef SEEN_SP_SHAPE_H +#define SEEN_SP_SHAPE_H /* * Base class for shapes, including element * * Author: * Lauris Kaplinski + * Abhishek Sharma + * Jon A. Cruz * * Copyright (C) 1999-2002 Lauris Kaplinski * Copyright (C) 2000-2001 Ximian, Inc. + * Copyright (C) 2008 Johan Engelen * * Released under GNU GPL, read the file 'COPYING' for more information */ -#include "display/display-forward.h" -#include "sp-item.h" +#include "sp-lpe-item.h" #include "sp-marker-loc.h" +#include <2geom/forward.h> #include -#define SP_TYPE_SHAPE (sp_shape_get_type ()) +#define SP_TYPE_SHAPE (SPShape::getType ()) #define SP_SHAPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_SHAPE, SPShape)) #define SP_SHAPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_SHAPE, SPShapeClass)) #define SP_IS_SHAPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_SHAPE)) @@ -27,39 +30,77 @@ #define SP_SHAPE_WRITE_PATH (1 << 2) -struct SPShape : public SPItem { - SPCurve *curve; +struct SPDesktop; - SPObject *marker[SP_MARKER_LOC_QTY]; - sigc::connection release_connect [SP_MARKER_LOC_QTY]; - sigc::connection modified_connect [SP_MARKER_LOC_QTY]; -}; +class SPShape : public SPLPEItem { +public: + SPCurve *curve; -struct SPShapeClass { - SPItemClass item_class; + SPObject *marker[SP_MARKER_LOC_QTY]; + sigc::connection release_connect [SP_MARKER_LOC_QTY]; + sigc::connection modified_connect [SP_MARKER_LOC_QTY]; + + static GType getType (void); + void setShape (); + SPCurve * getCurve (); + void setCurve (SPCurve *curve, unsigned int owner); + void setCurveInsync (SPCurve *curve, unsigned int owner); + int hasMarkers () const; + int numberOfMarkers (int type); - /* Build bpath from extra shape attributes */ - void (* set_shape) (SPShape *shape); -}; +private: + static void sp_shape_init (SPShape *shape); + static void sp_shape_finalize (GObject *object); + + static void sp_shape_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); + static void sp_shape_release (SPObject *object); + + static void sp_shape_set(SPObject *object, unsigned key, gchar const *value); + static void sp_shape_update (SPObject *object, SPCtx *ctx, unsigned int flags); + static void sp_shape_modified (SPObject *object, unsigned int flags); + static Inkscape::XML::Node *sp_shape_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -GType sp_shape_get_type (void); + static void sp_shape_bbox(SPItem const *item, NRRect *bbox, Geom::Matrix const &transform, unsigned const flags); + static NRArenaItem *sp_shape_show (SPItem *item, NRArena *arena, unsigned int key, unsigned int flags); + static void sp_shape_hide (SPItem *item, unsigned int key); + static void sp_shape_snappoints (SPItem const *item, std::vector &p, Inkscape::SnapPreferences const *snapprefs); -void sp_shape_set_shape (SPShape *shape); + static void sp_shape_update_marker_view (SPShape *shape, NRArenaItem *ai); -/* Return duplicate of curve or NULL */ -SPCurve *sp_shape_get_curve (SPShape *shape); -// sets a curve, updates display -void sp_shape_set_curve (SPShape *shape, SPCurve *curve, unsigned int owner); -// same as sp_shape_set_curve, but without updating display -void sp_shape_set_curve_insync (SPShape *shape, SPCurve *curve, unsigned int owner); + friend class SPShapeClass; +}; + +class SPShapeClass { +public: + SPLPEItemClass item_class; + + /* Build bpath from extra shape attributes */ + void (* set_shape) (SPShape *shape); + +private: + static SPLPEItemClass *parent_class; + static void sp_shape_class_init (SPShapeClass *klass); + + friend class SPShape; +}; -// markers API void sp_shape_set_marker (SPObject *object, unsigned int key, const gchar *value); -int sp_shape_has_markers (SPShape const *shape); -int sp_shape_number_of_markers (SPShape* Shape, int type); -NR::Matrix sp_shape_marker_get_transform(SPShape const *shape, NArtBpath const *bp); -bool sp_shape_marker_required(SPShape const *shape, int const m, NArtBpath *bp); -#endif +Geom::Matrix sp_shape_marker_get_transform(Geom::Curve const & c1, Geom::Curve const & c2); +Geom::Matrix sp_shape_marker_get_transform_at_start(Geom::Curve const & c); +Geom::Matrix sp_shape_marker_get_transform_at_end(Geom::Curve const & c); + +#endif // SEEN_SP_SHAPE_H + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :