Reference Manual
Inti Logo
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

image.h

Go to the documentation of this file.
00001 /*  Inti: Integrated Foundation Classes
00002  *  Copyright (C) 2002 The Inti Development Team.
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU Library General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU Library General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
00017  */
00018  
00024 
00025 #ifndef INTI_GTK_IMAGE_H
00026 #define INTI_GTK_IMAGE_H
00027 
00028 #ifndef INTI_GTK_MISC_H
00029 #include <inti/gtk/misc.h>
00030 #endif
00031 
00032 #ifndef __GTK_IMAGE_H__
00033 #include <gtk/gtkimage.h>
00034 #endif
00035 
00036 #ifndef __GTK_STOCK_H__
00037 #include <gtk/gtkstock.h>
00038 #endif
00039 
00040 #ifndef __GTK_ICON_FACTORY_H__
00041 #include <gtk/gtkiconfactory.h>
00042 #endif
00043 
00044 namespace Inti {
00045 
00046 namespace Gdk {
00047 class Image;
00048 class Pixbuf;
00049 class PixbufAnimation;
00050 class Pixmap;
00051 }
00052 
00053 namespace Gtk {
00054 
00055 class IconSet;
00056 class ImageClass;
00057 
00058 // @enum Gtk::ImageType
00064 
00065 enum ImageType
00066 {
00067         IMAGE_EMPTY = GTK_IMAGE_EMPTY, 
00068         IMAGE_PIXMAP = GTK_IMAGE_PIXMAP, 
00069         IMAGE_IMAGE = GTK_IMAGE_IMAGE, 
00070         IMAGE_PIXBUF = GTK_IMAGE_PIXBUF, 
00071         IMAGE_STOCK = GTK_IMAGE_STOCK, 
00072         IMAGE_ICON_SET = GTK_IMAGE_ICON_SET, 
00073         IMAGE_ANIMATION = GTK_IMAGE_ANIMATION 
00074 };
00075 
00186 
00187 class Image : public Misc
00188 {
00189         friend class G::Object;
00190         friend class ImageClass;
00191 
00192         Image(const Image&);
00193         Image& operator=(const Image&);
00194         
00195 protected:
00198 
00199         explicit Image(GtkImage *image, bool reference = false);
00206 
00208 //  Properties
00209 
00210         typedef G::Property<Gdk::Pixbuf*, G::Object*> PixbufPropertyType;
00211         typedef G::PropertyProxy<G::Object, PixbufPropertyType> PixbufPropertyProxy;
00212         static const PixbufPropertyType pixbuf_property;
00213 
00214         typedef G::Property<Gdk::Pixmap*, G::Object*> PixmapPropertyType;
00215         typedef G::PropertyProxy<G::Object, PixmapPropertyType> PixmapPropertyProxy;
00216         static const PixmapPropertyType pixmap_property;
00217 
00218         typedef G::Property<Gdk::Image*, G::Object*> ImagePropertyType;
00219         typedef G::PropertyProxy<G::Object, ImagePropertyType> ImagePropertyProxy;
00220         static const ImagePropertyType image_property;
00221 
00222         typedef G::Property<Gdk::Bitmap*, G::Object*> MaskPropertyType;
00223         typedef G::PropertyProxy<G::Object, MaskPropertyType> MaskPropertyProxy;
00224         static const MaskPropertyType mask_property;
00225 
00226         typedef G::WritableProperty<String> FilePropertyType;
00227         typedef G::PropertyProxy<G::Object, FilePropertyType> FilePropertyProxy;
00228         static const FilePropertyType file_property;
00229 
00230         typedef G::Property<String> StockPropertyType;
00231         typedef G::PropertyProxy<G::Object, StockPropertyType> StockPropertyProxy;
00232         static const StockPropertyType stock_property;
00233 
00234         typedef G::Property<Pointer<IconSet> > IconSetPropertyType;
00235         typedef G::PropertyProxy<G::Object, IconSetPropertyType> IconSetPropertyProxy;
00236         static const IconSetPropertyType icon_set_property;
00237 
00238         typedef G::Property<int> IconSizePropertyType;
00239         typedef G::PropertyProxy<G::Object, IconSizePropertyType> IconSizePropertyProxy;
00240         static const IconSizePropertyType icon_size_property;
00241 
00242         typedef G::Property<Gdk::PixbufAnimation*, G::Object*> PixbufAnimationPropertyType;
00243         typedef G::PropertyProxy<G::Object, PixbufAnimationPropertyType> PixbufAnimationPropertyProxy;
00244         static const PixbufAnimationPropertyType pixbuf_animation_property;
00245 
00246         typedef G::ReadableProperty<ImageType, int> StorageTypePropertyType;
00247         typedef G::PropertyProxy<G::Object, StorageTypePropertyType> StorageTypePropertyProxy;
00248         static const StorageTypePropertyType storage_type_property;
00249 
00250 public:
00253 
00254         Image();
00256 
00257         Image(Gdk::Pixmap *pixmap, Gdk::Bitmap *mask);
00265 
00266         Image(Gdk::Image *image, Gdk::Bitmap *mask);
00274 
00275         explicit Image(const String& filename);
00286 
00287         explicit Image(Gdk::Pixbuf *pixbuf);
00295 
00296         explicit Image(const char **xpm_data);
00303 
00304         Image(const char *stock_id, IconSize size);
00313         
00314         Image(IconSet *icon_set, IconSize size) ;
00327 
00328         explicit Image(Gdk::PixbufAnimation& animation);
00334 
00335         virtual ~Image();
00337 
00341 
00342         GtkImage* gtk_image() const { return (GtkImage*)instance; }
00344 
00345         GtkImageClass* gtk_image_class() const;
00347 
00348         operator GtkImage* () const;
00350 
00351         ImageType get_storage_type() const;
00356         
00357         void get_pixmap(Gdk::Pixmap **pixmap, Gdk::Bitmap **mask) const;
00365 
00366         void get_image(Gdk::Image **gdk_image, Gdk::Bitmap **mask) const;
00374 
00375         Gdk::Pixbuf* get_pixbuf() const;
00382 
00383         void get_stock(char **stock_id, IconSize *size) const;
00391 
00392         void get_icon_set(Pointer<IconSet> *icon_set, IconSize *size) const;
00398 
00399         Gdk::PixbufAnimation* get_animation() const;
00406 
00410 
00411         void set(Gdk::Pixmap *pixmap, Gdk::Bitmap *mask);
00419 
00420         void set(Gdk::Image *image, Gdk::Bitmap *mask);
00428 
00429         void set(const String& filename);
00440 
00441         void set(Gdk::Pixbuf *pixbuf);
00449 
00450         void set(const char *stock_id, IconSize size);
00457 
00458         void set(Gtk::IconSet *icon_set, IconSize size);
00471 
00472         void set(Gdk::PixbufAnimation& animation);
00478 
00482         
00483         const PixbufPropertyProxy prop_pixbuf()
00484         {
00485                 return PixbufPropertyProxy(this, &pixbuf_property);
00486         }
00488 
00489         const PixmapPropertyProxy prop_pixmap()
00490         {
00491                 return PixmapPropertyProxy(this, &pixmap_property);
00492         }
00494 
00495         const ImagePropertyProxy prop_image()
00496         {
00497                 return ImagePropertyProxy(this, &image_property);
00498         }
00500 
00501         const MaskPropertyProxy prop_mask()
00502         {
00503                 return MaskPropertyProxy(this, &mask_property);
00504         }
00506 
00507         const FilePropertyProxy prop_file()
00508         {
00509                 return FilePropertyProxy(this, &file_property);
00510         }
00512 
00513         const StockPropertyProxy prop_stock()
00514         {
00515                 return StockPropertyProxy(this, &stock_property);
00516         }
00518 
00519         const IconSetPropertyProxy prop_icon_set()
00520         {
00521                 return IconSetPropertyProxy(this, &icon_set_property);
00522         }
00524 
00525         const IconSizePropertyProxy prop_icon_size()
00526         {
00527                 return IconSizePropertyProxy(this, &icon_size_property);
00528         }
00530 
00531         const PixbufAnimationPropertyProxy prop_pixbuf_animation()
00532         {
00533                 return PixbufAnimationPropertyProxy(this, &pixbuf_animation_property);
00534         }
00536 
00537         const StorageTypePropertyProxy prop_storage_type()
00538         {
00539                 return StorageTypePropertyProxy(this, &storage_type_property);
00540         }
00542 
00544 };
00545 
00546 } // namespace Gtk
00547 
00548 } // namespace Inti
00549 
00550 #endif // INTI_GTK_IMAGE_H
00551 
Main Page - Footer


Generated on Sun Sep 14 20:08:03 2003 for Inti by doxygen 1.3.2 written by Dimitri van Heesch, © 1997-2002