diff --git a/src/sp-shape.h b/src/sp-shape.h
index cc25d2e88f9cf3d4d3a0fdd20d8137fe1fa4b260..4932687110fdb7c58eb9e79baac2778822749baa 100644 (file)
--- a/src/sp-shape.h
+++ b/src/sp-shape.h
-#ifndef __SP_SHAPE_H__
-#define __SP_SHAPE_H__
+#ifndef SEEN_SP_SHAPE_H
+#define SEEN_SP_SHAPE_H
/*
* Base class for shapes, including <path> element
*
* Author:
* Lauris Kaplinski <lauris@kaplinski.com>
/*
* Base class for shapes, including <path> element
*
* Author:
* Lauris Kaplinski <lauris@kaplinski.com>
+ * Abhishek Sharma
+ * Jon A. Cruz <jon@joncruz.org>
*
* Copyright (C) 1999-2002 Lauris Kaplinski
* Copyright (C) 2000-2001 Ximian, Inc.
*
* Copyright (C) 1999-2002 Lauris Kaplinski
* Copyright (C) 2000-2001 Ximian, Inc.
* Released under GNU GPL, read the file 'COPYING' for more information
*/
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "display/display-forward.h"
#include "sp-lpe-item.h"
#include "sp-marker-loc.h"
#include "sp-lpe-item.h"
#include "sp-marker-loc.h"
+#include <2geom/forward.h>
#include <sigc++/connection.h>
#include <sigc++/connection.h>
-#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))
#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))
struct SPDesktop;
struct SPDesktop;
-struct SPShape : public SPLPEItem {
+class SPShape : public SPLPEItem {
+public:
SPCurve *curve;
SPCurve *curve;
- SPObject *marker[SP_MARKER_LOC_QTY];
- sigc::connection release_connect [SP_MARKER_LOC_QTY];
- sigc::connection modified_connect [SP_MARKER_LOC_QTY];
-};
+ 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);
-struct SPShapeClass {
- SPLPEItemClass item_class;
+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);
+
+ 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<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs);
+
+ static void sp_shape_update_marker_view (SPShape *shape, NRArenaItem *ai);
- /* Build bpath from extra shape attributes */
- void (* set_shape) (SPShape *shape);
-};
-GType sp_shape_get_type (void);
-void sp_shape_set_shape (SPShape *shape);
+ friend class SPShapeClass;
+};
+
+class SPShapeClass {
+public:
+ SPLPEItemClass item_class;
-/* Return duplicate of curve or NULL */
-SPCurve *sp_shape_get_curve (SPShape *shape);
+ /* Build bpath from extra shape attributes */
+ void (* set_shape) (SPShape *shape);
-// sets a curve, updates display
-void sp_shape_set_curve (SPShape *shape, SPCurve *curve, unsigned int owner);
+private:
+ static SPLPEItemClass *parent_class;
+ static void sp_shape_class_init (SPShapeClass *klass);
-// 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 SPShape;
+};
-// markers API
void sp_shape_set_marker (SPObject *object, unsigned int key, const gchar *value);
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 :