------------------------------------------------------------------------------
-- --
-- Copyright (C) 1998-2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2014, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify it --
-- under terms of the GNU General Public License as published by the Free --
-- Software Foundation; either version 3, 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 MERCHAN- --
-- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
------------------------------------------------------------------------------
-- <description>
-- The GdkRGBA structure is used to represent a (possibly translucent) color,
-- in a way that is compatible with cairos notion of color.
--
-- </description>
pragma Ada_2005;
pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
with Glib.Object; use Glib.Object;
with Glib.Values; use Glib.Values;
package Gdk.RGBA is
type Gdk_RGBA is record
Red : Gdouble;
Green : Gdouble;
Blue : Gdouble;
Alpha : Gdouble;
end record;
pragma Convention (C, Gdk_RGBA);
function From_Object_Free (B : access Gdk_RGBA) return Gdk_RGBA;
pragma Inline (From_Object_Free);
-- The GdkRGBA structure is used to represent a (possibly translucent)
-- color, in a way that is compatible with cairos notion of color.
------------------
-- Constructors --
------------------
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gdk_rgba_get_type");
-------------
-- Methods --
-------------
function Copy (Self : Gdk_RGBA) return Gdk_RGBA;
pragma Import (C, Copy, "gdk_rgba_copy");
-- Makes a copy of a Gdk.RGBA.Gdk_RGBA structure.
-- The result must be freed through Gdk.RGBA.Free.
-- Since: gtk+ 3.0
function Equal (Self : Gdk_RGBA; P2 : Gdk_RGBA) return Boolean;
-- Compares two RGBA colors.
-- Since: gtk+ 3.0
-- "p2": another Gdk.RGBA.Gdk_RGBA pointer
procedure Free (Self : Gdk_RGBA);
pragma Import (C, Free, "gdk_rgba_free");
-- Frees a Gdk.RGBA.Gdk_RGBA struct created with Gdk.RGBA.Copy
-- Since: gtk+ 3.0
function Hash (Self : Gdk_RGBA) return Guint;
pragma Import (C, Hash, "gdk_rgba_hash");
-- A hash function suitable for using for a hash table that stores
-- Gdk_RGBAs.
-- Since: gtk+ 3.0
procedure Parse
(Self : out Gdk_RGBA;
Spec : UTF8_String;
Success : out Boolean);
-- Parses a textual representation of a color, filling in the
-- <structfield>red</structfield>, <structfield>green</structfield>,
-- <structfield>blue</structfield> and <structfield>alpha</structfield>
-- fields of the Rgba struct.
-- The string can be either one of:
-- * A standard name (Taken from the X11 rgb.txt file).
-- * A hex value in the form '#rgb' '#rrggbb' '#rrrgggbbb'
-- or '#rrrrggggbbbb'
-- * A RGB color in the form 'rgb(r,g,b)' (In this case the color will
-- have full opacity)
-- * A RGBA color in the form 'rgba(r,g,b,a)'
-- Where 'r', 'g', 'b' and 'a' are respectively the red, green, blue and
-- alpha color values. In the last two cases, r g and b are either integers
-- in the range 0 to 255 or precentage values in the range 0% to 100%, and
-- a is a floating point value in the range 0 to 1.
-- Since: gtk+ 3.0
-- "spec": the string specifying the color
function To_String (Self : Gdk_RGBA) return UTF8_String;
-- Returns a textual specification of Rgba in the form 'rgb (r, g, b)' or
-- 'rgba (r, g, b, a)', where 'r', 'g', 'b' and 'a' represent the red,
-- green, blue and alpha values respectively. r, g, and b are represented
-- as integers in the range 0 to 255, and a is represented as floating
-- point value in the range 0 to 1.
-- These string forms are string forms those supported by the CSS3 colors
-- module, and can be parsed by Gdk.RGBA.Parse.
-- Note that this string representation may loose some precision, since r,
-- g and b are represented as 8-bit integers. If this is a concern, you
-- should use a different representation.
-- Since: gtk+ 3.0
----------------------
-- GtkAda additions --
----------------------
type array_of_Gdk_RGBA is array (Natural range <>) of Gdk_RGBA;
Null_RGBA : constant Gdk_RGBA := (0.0, 0.0, 0.0, 0.0);
Black_RGBA : constant Gdk_RGBA := (0.0, 0.0, 0.0, 1.0);
White_RGBA : constant Gdk_RGBA := (1.0, 1.0, 1.0, 1.0);
type Property_RGBA is new Glib.Property;
procedure Set_Property
(Object : access Glib.Object.GObject_Record'Class;
Name : Property_RGBA;
Value : Gdk_RGBA);
function Get_Property
(Object : access Glib.Object.GObject_Record'Class;
Name : Property_RGBA) return Gdk_RGBA;
function Gdk_RGBA_Or_Null (Val : System.Address) return System.Address;
-- Used for the GtkAda binding itself.
-- Return either a Null_Address or a pointer to Val, depending on
-- whether Val is the null value for the type.
-- In all cases, Val is supposed to be an access to the type mentioned in
-- the name of the subprogram.
-- In Ada2012, these could be replaced with expression functions instead.
procedure Set_Value (Value : out Glib.Values.GValue; Val : Gdk_RGBA);
function Get_Value (Value : Glib.Values.GValue) return Gdk_RGBA;
-- Conversion functions for storing a Gdk_RGBA as a GValue.
end Gdk.RGBA;