Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

canvas.h

Go to the documentation of this file.
00001 // -*- c++ -*- 00002 // Generated by gtkmmproc -- DO NOT MODIFY! 00003 #ifndef _LIBGNOMECANVASMM_CANVAS_H 00004 #define _LIBGNOMECANVASMM_CANVAS_H 00005 00006 #include <glibmm.h> 00007 00008 // -*- C++ -*- 00009 /* $Id: canvas.hg,v 1.18 2003/07/21 19:45:07 murrayc Exp $ */ 00010 00011 /* canvas.h 00012 * 00013 * Copyright (C) 1998 EMC Capital Management Inc. 00014 * Developed by Havoc Pennington <hp@pobox.com> 00015 * 00016 * Copyright (C) 1999 The Gtk-- Development Team 00017 * 00018 * This library is free software; you can redistribute it and/or 00019 * modify it under the terms of the GNU Library General Public 00020 * License as published by the Free Software Foundation; either 00021 * version 2 of the License, or (at your option) any later version. 00022 * 00023 * This library is distributed in the hope that it will be useful, 00024 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00025 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00026 * Library General Public License for more details. 00027 * 00028 * You should have received a copy of the GNU Library General Public 00029 * License along with this library; if not, write to the Free 00030 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00031 */ 00032 00033 #include <libgnomecanvas/gnome-canvas.h> 00034 #include <libgnomecanvasmm/affinetrans.h> 00035 #include <gtkmm/layout.h> 00036 #include <gdkmm/color.h> 00037 00038 00039 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00040 typedef struct _GnomeCanvas GnomeCanvas; 00041 typedef struct _GnomeCanvasClass GnomeCanvasClass; 00042 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 00043 00044 00045 namespace Gnome 00046 { 00047 00048 namespace Canvas 00049 { class Canvas_Class; } // namespace Canvas 00050 00051 } // namespace Gnome 00052 namespace Gnome 00053 { 00054 00055 namespace Canvas 00056 { 00057 00058 class Item; 00059 class Group; 00060 00067 class Canvas : public Gtk::Layout 00068 { 00069 public: 00070 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00071 typedef Canvas CppObjectType; 00072 typedef Canvas_Class CppClassType; 00073 typedef GnomeCanvas BaseObjectType; 00074 typedef GnomeCanvasClass BaseClassType; 00075 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 00076 00077 virtual ~Canvas(); 00078 00079 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00080 00081 protected: 00082 friend class Canvas_Class; 00083 static CppClassType canvas_class_; 00084 00085 // noncopyable 00086 Canvas(const Canvas&); 00087 Canvas& operator=(const Canvas&); 00088 00089 protected: 00090 explicit Canvas(const Glib::ConstructParams& construct_params); 00091 explicit Canvas(GnomeCanvas* castitem); 00092 00093 #endif /* DOXYGEN_SHOULD_SKIP_THIS */ 00094 00095 public: 00096 #ifndef DOXYGEN_SHOULD_SKIP_THIS 00097 static GType get_type() G_GNUC_CONST; 00098 static GType get_base_type() G_GNUC_CONST; 00099 #endif 00100 00102 GnomeCanvas* gobj() { return reinterpret_cast<GnomeCanvas*>(gobject_); } 00103 00105 const GnomeCanvas* gobj() const { return reinterpret_cast<GnomeCanvas*>(gobject_); } 00106 00107 00108 public: 00109 //C++ methods used to invoke GTK+ virtual functions: 00110 00111 protected: 00112 //GTK+ Virtual Functions (override these to change behaviour): 00113 virtual void request_update_vfunc(); 00114 00115 //Default Signal Handlers:: 00116 virtual void on_draw_background(const Glib::RefPtr<Gdk::Drawable>& drawable, int x, int y, int width, int height); 00117 virtual void on_render_background(GnomeCanvasBuf* buf); 00118 00119 00120 private: 00121 ; 00122 public: 00123 Canvas(); 00124 00125 //Allow CanvasAA to access the canvas_class_ member. 00126 00127 00128 //: Get the root canvas item 00129 00133 Group* root() const; 00134 00135 //: Limits of scroll region 00136 00145 void set_scroll_region(double x1, double y1, double x2, double y2); 00146 00147 //: Get limits of scroll region 00148 00155 void get_scroll_region(double& x1, double& y1, double& x2, double& y2) const; 00156 00157 00165 void set_center_scroll_region(bool center); 00166 00167 00172 bool get_center_scroll_region() const; 00173 00174 //: Set the pixels/world coordinates ratio 00175 //- With no arguments sets to default of 1.0. 00176 00189 void set_pixels_per_unit(double n = 1.0); 00190 00191 //: Shift window. 00192 //- Makes a canvas scroll to the specified offsets, given in canvas pixel 00193 //- units. 00194 //- The canvas will adjust the view so that it is not outside the scrolling 00195 //- region. This function is typically not used, as it is better to hook 00196 //- scrollbars to the canvas layout's scrolling adjusments. 00197 00205 void scroll_to(int x, int y); 00206 00207 //: Scroll offsets in canvas pixel coordinates. 00208 00214 void get_scroll_offsets(int& cx, int& cy) const; 00215 00216 //: Repaint immediately, don't wait for idle loop 00217 //- normally the canvas queues repainting and does it in an 00218 //- idle loop 00219 00225 void update_now(); 00226 00227 //: Find an item at a location. 00228 //- Looks for the item that is under the specified position, which must be 00229 //- specified in world coordinates. Arguments are in world coordinates. 00230 //- Returns 0 if no item is at that 00231 //- location. 00232 00240 Item* get_item_at(double x, double y) const; 00241 00242 00243 //: Repaint small area (internal) 00244 //- Used only by item implementations. Request an eventual redraw 00245 //- of the region, which includes x1,y1 but not x2,y2 00246 00256 void request_redraw(int x1, int y1, int x2, int y2); 00257 //TODO: Investigate ArtUta. 00258 00265 void request_redraw(ArtUta* uta); 00266 00267 Art::AffineTrans w2c_affine() const; 00268 00269 00270 //: Convert from World to canvas coordinates (units for the entire canvas) 00271 //: to Canvas coordinates (pixels starting at 0,0 in the top left 00272 //: of the visible area). The relationship depends on the current 00273 //: scroll position and the pixels_per_unit ratio (zoom factor) 00274 00281 void w2c(double wx, double wy, int& cx, int& cy) const; 00282 00290 void w2c(double wx, double wy, double& cx, double& cy) const; 00291 00292 //: From Canvas to World 00293 00300 void c2w(int cx, int cy, double& wx, double& wy) const; 00301 00302 //: Convert from Window coordinates to world coordinates. 00303 //- Window coordinates are based of the widget's GdkWindow. 00304 //- This is fairly low-level and not generally useful. 00305 00314 void window_to_world (double winx,double winy, double& worldx,double& worldy) const; 00315 00316 //: Convert from world coordinates to Window coordinates. 00317 //- Window coordinates are based of the widget's GdkWindow. 00318 //- This is fairly low-level and not generally useful. 00319 00326 void world_to_window (double worldx, double worldy, double& winx, double& winy) const; 00327 00328 //: Parse color spec string and allocate it into the GdkColor. 00329 bool get_color(const Glib::ustring& spec, Gdk::Color& color) const; 00330 00331 00332 /* Allocates a color from the RGB value passed into this function. */ 00333 00339 gulong get_color_pixel(guint rgba) const; 00340 00346 void set_stipple_origin(const Glib::RefPtr<Gdk::GC>& gc); 00347 00354 void set_dither(GdkRgbDither dither); 00355 00359 GdkRgbDither get_dither() const; 00360 00361 00362 //TODO: Look at ArtSVP. 00363 00369 void update_svp(ArtSVP** p_svp, ArtSVP* new_svp); 00370 00377 void update_svp_clip(ArtSVP** p_svp, ArtSVP* new_svp, ArtSVP* clip_svp); 00378 00379 // The following are simply accessed via the struct in C, 00380 // but Federico reports that they are meant to be used. 00381 //: Get the pixels per unit. 00382 double get_pixels_per_unit() const; 00383 00384 //: Draw the background for the area given. 00385 //- This method is only used for non-antialiased canvases. 00386 00391 Glib::SignalProxy5<void,const Glib::RefPtr<Gdk::Drawable>&,int,int,int,int> signal_draw_background(); 00392 00393 // Render the background for the buffer given. 00394 //- The buf data structure contains both a pointer to a packed 24-bit 00395 //- RGB array, and the coordinates. 00396 //- This method is only used for antialiased canvases. 00397 00402 Glib::SignalProxy1<void,GnomeCanvasBuf*> signal_render_background(); 00403 00404 //: Private Virtual methods for groping the canvas inside bonobo. 00405 00406 00407 // Whether the canvas is in antialiased mode or not. 00413 Glib::PropertyProxy<bool> property_aa(); 00414 00415 00416 }; 00417 00418 //: Antialiased Canvas. 00419 //- Constructor takes care of push/pop actions of the colormap. 00420 class CanvasAA : public Canvas 00421 { 00422 public: 00423 CanvasAA(); 00424 virtual ~CanvasAA(); 00425 }; 00426 00427 } /* namespace Canvas */ 00428 } /* namespace Gnome */ 00429 00430 00431 namespace Glib 00432 { 00434 Gnome::Canvas::Canvas* wrap(GnomeCanvas* object, bool take_copy = false); 00435 } 00436 #endif /* _LIBGNOMECANVASMM_CANVAS_H */ 00437

Generated on Sat Aug 21 18:29:12 2004 for libgnomecanvasmm by doxygen 1.3.8