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 
00112 protected:
00113   //GTK+ Virtual Functions (override these to change behaviour):
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(Gdk::RgbDither dither);
00355   
00359   Gdk::RgbDither 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   
00387 
00388   Glib::SignalProxy5< void,const Glib::RefPtr<Gdk::Drawable>&,int,int,int,int > signal_draw_background();
00389 
00390   // Render the background for the buffer given. 
00391   //- The buf data structure contains both a pointer to a packed 24-bit
00392   //- RGB array, and the coordinates.
00393   //- This method is only used for antialiased canvases.
00394   
00395 
00396   Glib::SignalProxy1< void,GnomeCanvasBuf* > signal_render_background();
00397 
00398   //: Private Virtual methods for groping the canvas inside bonobo.
00399     virtual void request_update_vfunc();
00400 
00401   // Whether the canvas is in antialiased mode or not.
00408   Glib::PropertyProxy_ReadOnly<bool> property_aa() const;
00409 
00410 
00411 };
00412 
00413 //: Antialiased Canvas.
00414 //- Constructor takes care of push/pop actions of the colormap.
00415 class CanvasAA : public Canvas
00416 {
00417   public:
00418     CanvasAA();
00419     virtual ~CanvasAA();
00420 };
00421 
00422 } /* namespace Canvas */
00423 } /* namespace Gnome */
00424 
00425 
00426 namespace Glib
00427 {
00433   Gnome::Canvas::Canvas* wrap(GnomeCanvas* object, bool take_copy = false);
00434 } //namespace Glib
00435 
00436 
00437 #endif /* _LIBGNOMECANVASMM_CANVAS_H */
00438 

Generated on Fri Mar 17 09:38:50 2006 for libgnomecanvasmm by  doxygen 1.4.6