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 
00007 #include <glibmm.h>
00008 
00009 // -*- C++ -*-
00010 /* $Id: canvas.hg,v 1.20 2005/06/08 16:21:02 murrayc Exp $ */
00011 
00012 /* canvas.h
00013  * 
00014  * Copyright (C) 1998 EMC Capital Management Inc.
00015  * Developed by Havoc Pennington <hp@pobox.com>
00016  *
00017  * Copyright (C) 1999 The Gtk-- Development Team
00018  *
00019  * This library is free software; you can redistribute it and/or
00020  * modify it under the terms of the GNU Library General Public
00021  * License as published by the Free Software Foundation; either
00022  * version 2 of the License, or (at your option) any later version.
00023  *
00024  * This library is distributed in the hope that it will be useful,
00025  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00026  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00027  * Library General Public License for more details.
00028  *
00029  * You should have received a copy of the GNU Library General Public
00030  * License along with this library; if not, write to the Free
00031  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00032  */
00033 
00034 #include <libgnomecanvas/gnome-canvas.h>
00035 #include <libgnomecanvasmm/affinetrans.h>
00036 #include <gtkmm/layout.h>
00037 #include <gdkmm/color.h>
00038 
00039 
00040 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00041 typedef struct _GnomeCanvas GnomeCanvas;
00042 typedef struct _GnomeCanvasClass GnomeCanvasClass;
00043 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00044 
00045 
00046 namespace Gnome
00047 {
00048 
00049 namespace Canvas
00050 { class Canvas_Class; } // namespace Canvas
00051 
00052 } // namespace Gnome
00053 namespace Gnome
00054 {
00055 
00056 namespace Canvas
00057 {
00058 
00059 class Item;
00060 class Group;
00061 
00068 class Canvas : public Gtk::Layout
00069 {
00070   public:
00071 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00072   typedef Canvas CppObjectType;
00073   typedef Canvas_Class CppClassType;
00074   typedef GnomeCanvas BaseObjectType;
00075   typedef GnomeCanvasClass BaseClassType;
00076 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00077 
00078   virtual ~Canvas();
00079 
00080 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00081 
00082 protected:
00083   friend class Canvas_Class;
00084   static CppClassType canvas_class_;
00085 
00086   // noncopyable
00087   Canvas(const Canvas&);
00088   Canvas& operator=(const Canvas&);
00089 
00090 protected:
00091   explicit Canvas(const Glib::ConstructParams& construct_params);
00092   explicit Canvas(GnomeCanvas* castitem);
00093 
00094 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
00095 
00096 public:
00097 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00098   static GType get_type()      G_GNUC_CONST;
00099   static GType get_base_type() G_GNUC_CONST;
00100 #endif
00101 
00103   GnomeCanvas*       gobj()       { return reinterpret_cast<GnomeCanvas*>(gobject_); }
00104 
00106   const GnomeCanvas* gobj() const { return reinterpret_cast<GnomeCanvas*>(gobject_); }
00107 
00108 
00109 public:
00110   //C++ methods used to invoke GTK+ virtual functions:
00111 #ifdef GLIBMM_VFUNCS_ENABLED
00112 #endif //GLIBMM_VFUNCS_ENABLED
00113 
00114 protected:
00115   //GTK+ Virtual Functions (override these to change behaviour):
00116 #ifdef GLIBMM_VFUNCS_ENABLED
00117 #endif //GLIBMM_VFUNCS_ENABLED
00118 
00119   //Default Signal Handlers::
00120   virtual void on_draw_background(const Glib::RefPtr<Gdk::Drawable>& drawable, int x, int y, int width, int height);
00121   virtual void on_render_background(GnomeCanvasBuf* buf);
00122 
00123 
00124 private:
00125 
00126 public:
00127   Canvas();
00128 
00129   //Allow CanvasAA to access the canvas_class_ member.
00130   
00131 
00132   //: Get the root canvas item
00133   
00137   Group* root() const;
00138            
00139   //: Limits of scroll region
00140   
00149   void set_scroll_region(double x1, double y1, double x2, double y2);
00150 
00151   //: Get limits of scroll region
00152   
00159   void get_scroll_region(double& x1, double& y1, double& x2, double& y2) const;
00160 
00161   
00169   void set_center_scroll_region(bool center);
00170 
00171   
00176   bool get_center_scroll_region() const;
00177 
00178   //: Set the pixels/world coordinates ratio
00179   //- With no arguments sets to default of 1.0.
00180   
00193   void set_pixels_per_unit(double n = 1.0);
00194 
00195   //: Shift window.
00196   //- Makes a canvas scroll to the specified offsets, given in canvas pixel
00197   //- units.
00198   //- The canvas will adjust the view so that it is not outside the scrolling
00199   //- region.  This function is typically not used, as it is better to hook
00200   //- scrollbars to the canvas layout's scrolling adjusments.
00201   
00209   void scroll_to(int x, int y);
00210 
00211   //: Scroll offsets in canvas pixel coordinates.
00212   
00218   void get_scroll_offsets(int& cx, int& cy) const;
00219 
00220   //: Repaint immediately, don't wait for idle loop
00221   //- normally the canvas queues repainting and does it in an
00222   //- idle loop
00223   
00229   void update_now();
00230 
00231   //: Find an item at a location.
00232   //- Looks for the item that is under the specified position, which must be
00233   //- specified in world coordinates.  Arguments are in world coordinates.
00234   //- Returns 0 if no item is at that
00235   //- location.
00236   
00244   Item* get_item_at(double x, double y) const;
00245 
00246 
00247   //: Repaint small area (internal)
00248   //- Used only by item implementations. Request an eventual redraw
00249   //- of the region, which includes x1,y1 but not x2,y2
00250   
00260   void request_redraw(int x1, int y1, int x2, int y2);
00261   //TODO: Investigate ArtUta.
00262   
00269   void request_redraw(ArtUta* uta);
00270 
00271   Art::AffineTrans w2c_affine() const;
00272   
00273 
00274   //: Convert from World to canvas coordinates (units for the entire canvas)
00275   //: to Canvas coordinates (pixels starting at 0,0 in the top left
00276   //: of the visible area). The relationship depends on the current
00277   //: scroll position and the pixels_per_unit ratio (zoom factor)
00278   
00285   void w2c(double wx, double wy, int& cx, int& cy) const;
00286   
00294   void w2c(double wx, double wy, double& cx, double& cy) const;
00295 
00296   //: From Canvas to World
00297   
00304   void c2w(int cx, int cy, double& wx, double& wy) const;
00305 
00306   //: Convert from Window coordinates to world coordinates.
00307   //- Window coordinates are based of the widget's GdkWindow.
00308   //- This is fairly low-level and not generally useful.
00309   
00318   void window_to_world (double winx,double winy, double& worldx,double& worldy) const;
00319 
00320   //: Convert from world coordinates to Window coordinates.
00321   //- Window coordinates are based of the widget's GdkWindow.
00322   //- This is fairly low-level and not generally useful.
00323   
00330   void world_to_window (double worldx, double worldy, double& winx, double& winy) const;
00331 
00332   //: Parse color spec string and allocate it into the GdkColor.
00333   bool get_color(const Glib::ustring& spec, Gdk::Color& color) const;
00334   
00335 
00336 /* Allocates a color from the RGB value passed into this function. */
00337   
00343   gulong get_color_pixel(guint rgba) const;
00344   
00350   void set_stipple_origin(const Glib::RefPtr<Gdk::GC>& gc);
00351   
00358   void set_dither(Gdk::RgbDither dither);
00359   
00363   Gdk::RgbDither get_dither() const;
00364 
00365 
00366   //TODO: Look at ArtSVP.
00367   
00373   void update_svp(ArtSVP** p_svp, ArtSVP* new_svp);
00374   
00381   void update_svp_clip(ArtSVP** p_svp, ArtSVP* new_svp, ArtSVP* clip_svp);
00382 
00383   // The following are simply accessed via the struct in C,
00384   //  but Federico reports that they are meant to be used.
00385   //: Get the pixels per unit.
00386    double get_pixels_per_unit() const;
00387  
00388   //: Draw the background for the area given.
00389   //- This method is only used for non-antialiased canvases.
00390   
00391 
00392   Glib::SignalProxy5< void,const Glib::RefPtr<Gdk::Drawable>&,int,int,int,int > signal_draw_background();
00393 
00394   // Render the background for the buffer given. 
00395   //- The buf data structure contains both a pointer to a packed 24-bit
00396   //- RGB array, and the coordinates.
00397   //- This method is only used for antialiased canvases.
00398   
00399 
00400   Glib::SignalProxy1< void,GnomeCanvasBuf* > signal_render_background();
00401 
00402   //: Private Virtual methods for groping the canvas inside bonobo.
00403   #ifdef GLIBMM_VFUNCS_ENABLED
00404   virtual void request_update_vfunc();
00405 #endif //GLIBMM_VFUNCS_ENABLED
00406 
00407 
00408   // Whether the canvas is in antialiased mode or not.
00409   #ifdef GLIBMM_PROPERTIES_ENABLED
00410 
00416   Glib::PropertyProxy_ReadOnly<bool> property_aa() const;
00417 #endif //#GLIBMM_PROPERTIES_ENABLED
00418 
00419 
00420 };
00421 
00422 //: Antialiased Canvas.
00423 //- Constructor takes care of push/pop actions of the colormap.
00424 class CanvasAA : public Canvas
00425 {
00426   public:
00427     CanvasAA();
00428     virtual ~CanvasAA();
00429 };
00430 
00431 } /* namespace Canvas */
00432 } /* namespace Gnome */
00433 
00434 
00435 namespace Glib
00436 {
00442   Gnome::Canvas::Canvas* wrap(GnomeCanvas* object, bool take_copy = false);
00443 } //namespace Glib
00444 
00445 
00446 #endif /* _LIBGNOMECANVASMM_CANVAS_H */
00447 

Generated on Tue Jan 2 10:46:48 2007 for libgnomecanvasmm by  doxygen 1.5.1