00001
00002
00003 #ifndef _LIBGNOMECANVASMM_ITEM_H
00004 #define _LIBGNOMECANVASMM_ITEM_H
00005
00006
00007 #include <glibmm.h>
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #include <gtkmm/object.h>
00035 #include <gdkmm/cursor.h>
00036 #include <libgnomecanvas/gnome-canvas.h>
00037
00038 #include <libgnomecanvasmm/point.h>
00039 #include <libgnomecanvasmm/affinetrans.h>
00040 #include <libgnomecanvasmm/properties.h>
00041
00042
00043 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00044 typedef struct _GnomeCanvasItem GnomeCanvasItem;
00045 typedef struct _GnomeCanvasItemClass GnomeCanvasItemClass;
00046 #endif
00047
00048
00049 namespace Gnome
00050 {
00051
00052 namespace Canvas
00053 { class Item_Class; }
00054
00055 }
00056 namespace Gnome
00057 {
00058
00059 namespace Canvas
00060 {
00061
00062 class Canvas;
00063 class Group;
00064
00065
00066 class Item : public Gtk::Object
00067 {
00068 public:
00069 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00070 typedef Item CppObjectType;
00071 typedef Item_Class CppClassType;
00072 typedef GnomeCanvasItem BaseObjectType;
00073 typedef GnomeCanvasItemClass BaseClassType;
00074 #endif
00075
00076 virtual ~Item();
00077
00078 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00079
00080 private:
00081 friend class Item_Class;
00082 static CppClassType item_class_;
00083
00084
00085 Item(const Item&);
00086 Item& operator=(const Item&);
00087
00088 protected:
00089 explicit Item(const Glib::ConstructParams& construct_params);
00090 explicit Item(GnomeCanvasItem* castitem);
00091
00092 #endif
00093
00094 public:
00095 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00096 static GType get_type() G_GNUC_CONST;
00097 static GType get_base_type() G_GNUC_CONST;
00098 #endif
00099
00101 GnomeCanvasItem* gobj() { return reinterpret_cast<GnomeCanvasItem*>(gobject_); }
00102
00104 const GnomeCanvasItem* gobj() const { return reinterpret_cast<GnomeCanvasItem*>(gobject_); }
00105
00106
00107 public:
00108
00109 #ifdef GLIBMM_VFUNCS_ENABLED
00110 #endif //GLIBMM_VFUNCS_ENABLED
00111
00112 protected:
00113
00114 #ifdef GLIBMM_VFUNCS_ENABLED
00115 #endif //GLIBMM_VFUNCS_ENABLED
00116
00117
00118 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00119 virtual bool on_event(GdkEvent* p1);
00120 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
00121
00122
00123 private:
00124
00125
00126 public:
00127
00128
00129
00137 void move(double dx, double dy);
00138
00139
00140
00141
00142
00148 void raise(int positions);
00149
00150
00151
00152
00153
00159 void lower(int positions);
00160
00161
00162
00165 void raise_to_top();
00166
00167
00168
00171 void lower_to_bottom();
00172
00173
00174
00175
00176
00177 int grab(unsigned int event_mask, const Gdk::Cursor& cursor, guint32 etime);
00178 int grab(unsigned int event_mask, guint32 etime);
00179
00180
00181
00182
00183
00184
00189 void ungrab(guint32 etime);
00190
00191
00192
00193
00199 void w2i(double& x, double& y);
00200
00206 void i2w(double& x, double& y);
00207
00208
00209
00210
00215 void grab_focus();
00216
00217
00218
00219
00227 void get_bounds(double& x1, double& y1, double& x2, double& y2) const;
00228
00229
00230
00233 void show();
00234
00235
00236
00240 void hide();
00241
00242
00243 void affine_relative(const Art::AffineTrans &affine);
00244
00245
00246
00247 void affine_absolute(const Art::AffineTrans &affine);
00248
00249
00250
00251
00252 Art::AffineTrans get_i2w_affine() const;
00253
00254
00255
00256
00257 Art::AffineTrans get_i2c_affine() const;
00258
00259
00265 void reparent(Group& new_group);
00266
00268 Canvas* get_canvas() const;
00269
00270 #ifdef GLIBMM_VFUNCS_ENABLED
00271 virtual void update_vfunc(double* affine, ArtSVP* clip_path, int flags);
00272 #endif //GLIBMM_VFUNCS_ENABLED
00273
00274 #ifdef GLIBMM_VFUNCS_ENABLED
00275 virtual void realize_vfunc();
00276 #endif //GLIBMM_VFUNCS_ENABLED
00277
00278 #ifdef GLIBMM_VFUNCS_ENABLED
00279 virtual void unrealize_vfunc();
00280 #endif //GLIBMM_VFUNCS_ENABLED
00281
00282 #ifdef GLIBMM_VFUNCS_ENABLED
00283 virtual void map_vfunc();
00284 #endif //GLIBMM_VFUNCS_ENABLED
00285
00286 #ifdef GLIBMM_VFUNCS_ENABLED
00287 virtual void unmap_vfunc();
00288 #endif //GLIBMM_VFUNCS_ENABLED
00289
00290 #ifdef GLIBMM_VFUNCS_ENABLED
00291 virtual ArtUta* coverage_vfunc();
00292 #endif //GLIBMM_VFUNCS_ENABLED
00293
00294 #ifdef GLIBMM_VFUNCS_ENABLED
00295 virtual void draw_vfunc(const Glib::RefPtr<Gdk::Drawable>& drawable, int x, int y, int width, int height);
00296 #endif //GLIBMM_VFUNCS_ENABLED
00297
00298 #ifdef GLIBMM_VFUNCS_ENABLED
00299 virtual void render_vfunc(GnomeCanvasBuf* buf);
00300 #endif //GLIBMM_VFUNCS_ENABLED
00301
00302 #ifdef GLIBMM_VFUNCS_ENABLED
00303 virtual double point_vfunc(double x, double y, int cx, int cy, GnomeCanvasItem** actual_item);
00304 #endif //GLIBMM_VFUNCS_ENABLED
00305
00306 #ifdef GLIBMM_VFUNCS_ENABLED
00307 virtual void bounds_vfunc(double* x1, double* y1, double* x2, double* y2);
00308 #endif //GLIBMM_VFUNCS_ENABLED
00309
00310
00311
00312
00313
00319 Glib::SignalProxy1< bool,GdkEvent* > signal_event();
00320
00321
00322 Group* get_parent_group();
00323 const Group* get_parent_group() const;
00324
00325 #ifdef GLIBMM_PROPERTIES_ENABLED
00326
00332 Glib::PropertyProxy<Group*> property_parent() ;
00333 #endif //#GLIBMM_PROPERTIES_ENABLED
00334
00335 #ifdef GLIBMM_PROPERTIES_ENABLED
00336
00342 Glib::PropertyProxy_ReadOnly<Group*> property_parent() const;
00343 #endif //#GLIBMM_PROPERTIES_ENABLED
00344
00345
00346 protected:
00347
00348
00349 void item_construct(Group& group);
00350
00351
00352
00353 void item_construct(Group& group, const gchar* first_arg_name,
00354 va_list ap);
00355
00356
00357 void set(const gchar* first_arg_name, ...);
00358
00359
00360
00361
00365 void request_update();
00366
00367
00370 void reset_bounds();
00371
00378 void update_svp(ArtSVP **p_svp, ArtSVP *new_svp);
00379
00386 void update_svp_clip(ArtSVP **p_svp, ArtSVP *new_svp, ArtSVP *clip_svp);
00387
00391 void request_redraw_svp(const ArtSVP* svp);
00392
00400 void update_bbox(int x1, int y1, int x2, int y2);
00401
00402
00403 };
00404
00405 }
00406 }
00407
00408
00409 namespace Glib
00410 {
00419 Gnome::Canvas::Item* wrap(GnomeCanvasItem* object, bool take_copy = false);
00420 }
00421
00422
00423 #endif
00424