-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2011, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or --
-- modify it under the terms of the GNU General Public --
-- License as published by the Free Software Foundation; either --
-- version 2 of the License, or (at your option) any later version. --
-- --
-- This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. --
-- --
-- You should have received a copy of the GNU General Public --
-- License along with this library; if not, write to the --
-- Free Software Foundation, Inc., 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA. --
-- --
-- --
-- --
-- --
-- --
-- --
-- --
-----------------------------------------------------------------------
--
-- The Gtk_Image widget displays a graphical image. The image is typically
-- created using Gdk.Image.Gdk_New.
--
-- The pixels in a Gtk_Image may be manipulated by the application after
-- creation, as Gtk_Image store the pixel data on the client side. If you wish
-- to store the pixel data on the server side (thus not allowing manipulation
-- of the data after creation) you should use Gtk_Pixmap.
--
--
-- gtk-image
-- Display widgets
pragma Warnings (Off, "*is already use-visible*");
with GNAT.Strings; use GNAT.Strings;
with Gdk.Bitmap; use Gdk.Bitmap;
with Gdk.Image; use Gdk.Image;
with Gdk.Pixbuf; use Gdk.Pixbuf;
with Gdk.Pixmap; use Gdk.Pixmap;
with Glib; use Glib;
with Glib.G_Icon; use Glib.G_Icon;
with Glib.Properties; use Glib.Properties;
with Glib.Types; use Glib.Types;
with Gtk.Buildable; use Gtk.Buildable;
with Gtk.Enums; use Gtk.Enums;
with Gtk.Icon_Factory; use Gtk.Icon_Factory;
with Gtk.Misc; use Gtk.Misc;
with Gtk.Widget; use Gtk.Widget;
package Gtk.Image is
type Gtk_Image_Record is new Gtk_Misc_Record with null record;
type Gtk_Image is access all Gtk_Image_Record'Class;
type Gtk_Image_Type is
(Image_Empty,
Image_Pixmap,
Image_Image,
Image_Pixbuf,
Image_Stock,
Image_Icon_Set,
Image_Animation,
Image_Icon_Name,
Image_Gicon);
pragma Convention (C, Gtk_Image_Type);
------------------
-- Constructors --
------------------
procedure Gtk_New (Image : out Gtk_Image);
procedure Initialize (Image : access Gtk_Image_Record'Class);
-- Creates a new empty Gtk.Image.Gtk_Image widget.
procedure Gtk_New
(Image : out Gtk_Image;
Animation : Gdk.Pixbuf.Gdk_Pixbuf_Animation);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Animation : Gdk.Pixbuf.Gdk_Pixbuf_Animation);
-- Creates a Gtk.Image.Gtk_Image displaying the given animation. The
-- Gtk.Image.Gtk_Image does not assume a reference to the animation; you
-- still need to unref it if you own references. Gtk.Image.Gtk_Image will
-- add its own reference rather than adopting yours. Note that the
-- animation frames are shown using a timeout with G_PRIORITY_DEFAULT. When
-- using animations to indicate busyness, keep in mind that the animation
-- will only be shown if the main loop is not busy with something that has
-- a higher priority.
-- "animation": an animation
procedure Gtk_New (Image : out Gtk_Image; Filename : UTF8_String);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Filename : UTF8_String);
-- Creates a new Gtk.Image.Gtk_Image displaying the file Filename. If the
-- file isn't found or can't be loaded, the resulting Gtk.Image.Gtk_Image
-- will display a "broken image" icon. This function never returns null, it
-- always returns a valid Gtk.Image.Gtk_Image widget. If the file contains
-- an animation, the image will contain an animation. If you need to detect
-- failures to load the file, use Gdk.Pixbuf.Gdk_New_From_File to load the
-- file yourself, then create the Gtk.Image.Gtk_Image from the pixbuf. (Or
-- for animations, use Gdk.Pixbuf.Gdk_New_From_File). The storage type
-- (gtk_image_get_storage_type) of the returned image is not defined, it
-- will be whatever is appropriate for displaying the file.
-- "filename": a filename
procedure Gtk_New_From_Gicon
(Image : out Gtk_Image;
Icon : Glib.G_Icon.G_Icon;
Size : Gtk.Enums.Gtk_Icon_Size);
procedure Initialize_From_Gicon
(Image : access Gtk_Image_Record'Class;
Icon : Glib.G_Icon.G_Icon;
Size : Gtk.Enums.Gtk_Icon_Size);
-- Creates a Gtk.Image.Gtk_Image displaying an icon from the current icon
-- theme. If the icon name isn't known, a "broken image" icon will be
-- displayed instead. If the current icon theme is changed, the icon will
-- be updated appropriately.
-- Since: gtk+ 2.14
-- "icon": an icon
-- "size": a stock icon size
procedure Gtk_New_From_Icon_Name
(Image : out Gtk_Image;
Icon_Name : UTF8_String;
Size : Gtk.Enums.Gtk_Icon_Size);
procedure Initialize_From_Icon_Name
(Image : access Gtk_Image_Record'Class;
Icon_Name : UTF8_String;
Size : Gtk.Enums.Gtk_Icon_Size);
-- Creates a Gtk.Image.Gtk_Image displaying an icon from the current icon
-- theme. If the icon name isn't known, a "broken image" icon will be
-- displayed instead. If the current icon theme is changed, the icon will
-- be updated appropriately.
-- Since: gtk+ 2.6
-- "icon_name": an icon name
-- "size": a stock icon size
procedure Gtk_New
(Image : out Gtk_Image;
Icon_Set : Gtk.Icon_Factory.Gtk_Icon_Set;
Size : Gtk.Enums.Gtk_Icon_Size);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Icon_Set : Gtk.Icon_Factory.Gtk_Icon_Set;
Size : Gtk.Enums.Gtk_Icon_Size);
-- Creates a Gtk.Image.Gtk_Image displaying an icon set. Sample stock
-- sizes are GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_SMALL_TOOLBAR. Instead of
-- using this function, usually it's better to create a
-- Gtk.Iconfactory.Gtk_Iconfactory, put your icon sets in the icon factory,
-- add the icon factory to the list of default factories with
-- Gtk.Icon_Factory.Add_Default, and then use Gtk.Image.Gtk_New. This will
-- allow themes to override the icon you ship with your application. The
-- Gtk.Image.Gtk_Image does not assume a reference to the icon set; you
-- still need to unref it if you own references. Gtk.Image.Gtk_Image will
-- add its own reference rather than adopting yours.
-- "icon_set": a GtkIconSet
-- "size": a stock icon size
procedure Gtk_New
(Image : out Gtk_Image;
Val : Gdk.Image.Gdk_Image;
Mask : Gdk.Bitmap.Gdk_Bitmap);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Val : Gdk.Image.Gdk_Image;
Mask : Gdk.Bitmap.Gdk_Bitmap);
-- Creates a Gtk.Image.Gtk_Image widget displaying a Image with a Mask. A
-- GdkImage is a client-side image buffer in the pixel format of the
-- current display. The Gtk.Image.Gtk_Image does not assume a reference to
-- the image or mask; you still need to unref them if you own references.
-- Gtk.Image.Gtk_Image will add its own reference rather than adopting
-- yours.
-- "Val": a GdkImage, or null
-- "mask": a GdkBitmap, or null
procedure Gtk_New
(Image : out Gtk_Image;
Pixbuf : access Gdk.Pixbuf.Gdk_Pixbuf_Record'Class);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Pixbuf : access Gdk.Pixbuf.Gdk_Pixbuf_Record'Class);
-- Creates a new Gtk.Image.Gtk_Image displaying Pixbuf. The
-- Gtk.Image.Gtk_Image does not assume a reference to the pixbuf; you still
-- need to unref it if you own references. Gtk.Image.Gtk_Image will add its
-- own reference rather than adopting yours. Note that this function just
-- creates an Gtk.Image.Gtk_Image from the pixbuf. The Gtk.Image.Gtk_Image
-- created will not react to state changes. Should you want that, you
-- should use Gtk.Image.Gtk_New.
-- "pixbuf": a Gdk.Pixbuf.Gdk_Pixbuf, or null
procedure Gtk_New
(Image : out Gtk_Image;
Pixmap : Gdk.Pixmap.Gdk_Pixmap;
Mask : Gdk.Bitmap.Gdk_Bitmap);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Pixmap : Gdk.Pixmap.Gdk_Pixmap;
Mask : Gdk.Bitmap.Gdk_Bitmap);
-- Creates a Gtk.Image.Gtk_Image widget displaying Pixmap with a Mask. A
-- GdkPixmap is a server-side image buffer in the pixel format of the
-- current display. The Gtk.Image.Gtk_Image does not assume a reference to
-- the pixmap or mask; you still need to unref them if you own references.
-- Gtk.Image.Gtk_Image will add its own reference rather than adopting
-- yours.
-- "pixmap": a GdkPixmap, or null
-- "mask": a GdkBitmap, or null
procedure Gtk_New
(Image : out Gtk_Image;
Stock_Id : UTF8_String;
Size : Gtk.Enums.Gtk_Icon_Size);
procedure Initialize
(Image : access Gtk_Image_Record'Class;
Stock_Id : UTF8_String;
Size : Gtk.Enums.Gtk_Icon_Size);
-- Creates a Gtk.Image.Gtk_Image displaying a stock icon. Sample stock
-- icon names are GTK_STOCK_OPEN, GTK_STOCK_QUIT. Sample stock sizes are
-- GTK_ICON_SIZE_MENU, GTK_ICON_SIZE_SMALL_TOOLBAR. If the stock icon name
-- isn't known, the image will be empty. You can register your own stock
-- icon names, see Gtk.Icon_Factory.Add_Default and Gtk.Icon_Factory.Add.
-- "stock_id": a stock icon name
-- "size": a stock icon size
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_image_get_type");
-------------
-- Methods --
-------------
procedure Clear (Image : access Gtk_Image_Record);
-- Resets the image to be empty.
-- Since: gtk+ 2.8
function Get
(Image : access Gtk_Image_Record)
return Gdk.Pixbuf.Gdk_Pixbuf_Animation;
procedure Get
(Image : access Gtk_Image_Record;
Gicon : out Glib.G_Icon.G_Icon;
Size : out Gtk.Enums.Gtk_Icon_Size);
procedure Get
(Image : access Gtk_Image_Record;
Icon_Set : out Gtk.Icon_Factory.Gtk_Icon_Set;
Size : out Gtk.Enums.Gtk_Icon_Size);
procedure Get
(Image : access Gtk_Image_Record;
Gdk_Image : out Gdk.Image.Gdk_Image;
Mask : out Gdk.Bitmap.Gdk_Bitmap);
function Get
(Image : access Gtk_Image_Record) return Gdk.Pixbuf.Gdk_Pixbuf;
procedure Get
(Image : access Gtk_Image_Record;
Pixmap : out Gdk.Pixmap.Gdk_Pixmap;
Mask : out Gdk.Bitmap.Gdk_Bitmap);
-- Gets the pixmap and mask being displayed by the Gtk.Image.Gtk_Image.
-- The storage type of the image must be %GTK_IMAGE_EMPTY or
-- %GTK_IMAGE_PIXMAP (see Gtk.Image.Get_Storage_Type). The caller of this
-- function does not own a reference to the returned pixmap and mask.
-- "pixmap": location to store the pixmap, or null
-- "mask": location to store the mask, or null
function Get_Pixel_Size (Image : access Gtk_Image_Record) return Gint;
procedure Set_Pixel_Size
(Image : access Gtk_Image_Record;
Pixel_Size : Gint);
-- Sets the pixel size to use for named icons. If the pixel size is set to
-- a value != -1, it is used instead of the icon size set by
-- Gtk.Image.Set_From_Icon_Name.
-- Since: gtk+ 2.6
-- "pixel_size": the new pixel size
function Get_Storage_Type
(Image : access Gtk_Image_Record) return Gtk_Image_Type;
-- Gets the type of representation being used by the Gtk.Image.Gtk_Image
-- to store image data. If the Gtk.Image.Gtk_Image has no image data, the
-- return value will be %GTK_IMAGE_EMPTY.
-- Returns image representation being used
procedure Set
(Image : access Gtk_Image_Record;
Animation : Gdk.Pixbuf.Gdk_Pixbuf_Animation);
procedure Set (Image : access Gtk_Image_Record; Filename : UTF8_String);
procedure Set
(Image : access Gtk_Image_Record;
Icon : Glib.G_Icon.G_Icon;
Size : Gtk.Enums.Gtk_Icon_Size);
procedure Set
(Image : access Gtk_Image_Record;
Icon_Set : Gtk.Icon_Factory.Gtk_Icon_Set;
Size : Gtk.Enums.Gtk_Icon_Size);
procedure Set
(Image : access Gtk_Image_Record;
Gdk_Image : Gdk.Image.Gdk_Image;
Mask : Gdk.Bitmap.Gdk_Bitmap);
procedure Set
(Image : access Gtk_Image_Record;
Pixbuf : access Gdk.Pixbuf.Gdk_Pixbuf_Record'Class);
procedure Set
(Image : access Gtk_Image_Record;
Pixmap : Gdk.Pixmap.Gdk_Pixmap;
Mask : Gdk.Bitmap.Gdk_Bitmap);
procedure Set
(Image : access Gtk_Image_Record;
Stock_Id : UTF8_String;
Size : Gtk.Enums.Gtk_Icon_Size);
-- See Gtk.Image.Gtk_New for details.
-- "stock_id": a stock icon name
-- "size": a stock icon size
procedure Set_From_Icon_Name
(Image : access Gtk_Image_Record;
Icon_Name : UTF8_String;
Size : Gtk.Enums.Gtk_Icon_Size);
-- See Gtk.Image.Gtk_New_From_Icon_Name for details.
-- Since: gtk+ 2.6
-- "icon_name": an icon name
-- "size": an icon size
----------------------
-- GtkAda additions --
----------------------
function Get
(Image : access Gtk_Image_Record;
Size : access Gtk.Enums.Gtk_Icon_Size) return String;
-- Get the stock_id for the image displayed
procedure Get_Icon_Name
(Image : access Gtk_Image_Record;
Name : out GNAT.Strings.String_Access;
Size : out Gtk.Enums.Gtk_Icon_Size);
----------------
-- Interfaces --
----------------
-- This class implements several interfaces. See Glib.Types
--
-- - "Buildable"
package Implements_Buildable is new Glib.Types.Implements
(Gtk.Buildable.Gtk_Buildable, Gtk_Image_Record, Gtk_Image);
function "+"
(Widget : access Gtk_Image_Record'Class)
return Gtk.Buildable.Gtk_Buildable
renames Implements_Buildable.To_Interface;
function "-"
(Interf : Gtk.Buildable.Gtk_Buildable)
return Gtk_Image
renames Implements_Buildable.To_Object;
----------------
-- Properties --
----------------
-- The following properties are defined for this widget. See
-- Glib.Properties for more information on properties)
--
-- Name: File_Property
-- Type: UTF8_String
-- Flags: read-write
--
-- Name: Gicon_Property
-- Type: Glib.G_Icon.G_Icon
-- Flags: read-write
-- The GIcon displayed in the GtkImage. For themed icons, If the icon
-- theme is changed, the image will be updated automatically.
--
-- Name: Icon_Name_Property
-- Type: UTF8_String
-- Flags: read-write
-- The name of the icon in the icon theme. If the icon theme is changed,
-- the image will be updated automatically.
--
-- Name: Icon_Set_Property
-- Type: Gtk.Icon_Factory.Gtk_Icon_Set
-- Flags: read-write
--
-- Name: Icon_Size_Property
-- Type: Gint
-- Flags: read-write
--
-- Name: Image_Property
-- Type: Gdk.Image.Gdk_Image
-- Flags: read-write
--
-- Name: Mask_Property
-- Type: Gdk.Pixmap.Gdk_Pixmap
-- Flags: read-write
--
-- Name: Pixbuf_Property
-- Type: Gdk.Pixbuf.Gdk_Pixbuf
-- Flags: read-write
--
-- Name: Pixbuf_Animation_Property
-- Type: Gdk.Pixbuf.Gdk_Pixbuf_Animation
-- Flags: read-write
--
-- Name: Pixel_Size_Property
-- Type: Gint
-- Flags: read-write
-- The "pixel-size" property can be used to specify a fixed size
-- overriding the Gtk.Image.Gtk_Image:icon-size property for images of type
-- %GTK_IMAGE_ICON_NAME.
--
-- Name: Pixmap_Property
-- Type: Gdk.Pixmap.Gdk_Pixmap
-- Flags: read-write
--
-- Name: Stock_Property
-- Type: UTF8_String
-- Flags: read-write
--
-- Name: Storage_Type_Property
-- Type: Gtk_Image_Type
-- Flags: read-write
File_Property : constant Glib.Properties.Property_String;
Gicon_Property : constant Glib.Properties.Property_Boxed;
Icon_Name_Property : constant Glib.Properties.Property_String;
Icon_Set_Property : constant Glib.Properties.Property_Boxed;
Icon_Size_Property : constant Glib.Properties.Property_Int;
Image_Property : constant Glib.Properties.Property_Boxed;
Mask_Property : constant Glib.Properties.Property_Boxed;
Pixbuf_Property : constant Glib.Properties.Property_Object;
Pixbuf_Animation_Property : constant Glib.Properties.Property_Boxed;
Pixel_Size_Property : constant Glib.Properties.Property_Int;
Pixmap_Property : constant Glib.Properties.Property_Boxed;
Stock_Property : constant Glib.Properties.Property_String;
Storage_Type_Property : constant Glib.Properties.Property_Boxed;
private
File_Property : constant Glib.Properties.Property_String :=
Glib.Properties.Build ("file");
Gicon_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("gicon");
Icon_Name_Property : constant Glib.Properties.Property_String :=
Glib.Properties.Build ("icon-name");
Icon_Set_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("icon-set");
Icon_Size_Property : constant Glib.Properties.Property_Int :=
Glib.Properties.Build ("icon-size");
Image_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("image");
Mask_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("mask");
Pixbuf_Property : constant Glib.Properties.Property_Object :=
Glib.Properties.Build ("pixbuf");
Pixbuf_Animation_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("pixbuf-animation");
Pixel_Size_Property : constant Glib.Properties.Property_Int :=
Glib.Properties.Build ("pixel-size");
Pixmap_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("pixmap");
Stock_Property : constant Glib.Properties.Property_String :=
Glib.Properties.Build ("stock");
Storage_Type_Property : constant Glib.Properties.Property_Boxed :=
Glib.Properties.Build ("storage-type");
end Gtk.Image;