------------------------------------------------------------------------------
-- --
-- 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>
-- GtkGradient is a boxed type that represents a gradient. It is the result
-- of parsing a <link linkend="gtkcssprovider-gradients">gradient
-- expression</link>. To obtain the gradient represented by a GtkGradient, it
-- has to be resolved with Gtk.Gradient.Resolve, which replaces all symbolic
-- color references by the colors they refer to (in a given context) and
-- constructs a cairo_pattern_t value.
--
-- It is not normally necessary to deal directly with Gtk_Gradients, since
-- they are mostly used behind the scenes by
-- Gtk.Style_Context.Gtk_Style_Context and Gtk.Css_Provider.Gtk_Css_Provider.
--
-- Gtk.Gradient.Gtk_Gradient is deprecated. It was used internally by GTK's
-- CSS engine to represent gradients. As its handling is not conforming to
-- modern web standards, it is not used anymore. If you want to use gradients
-- in your own code, please use Cairo directly.
--
-- </description>
pragma Ada_2005;
pragma Warnings (Off, "*is already use-visible*");
with Cairo; use Cairo;
with Glib; use Glib;
with Gtk.Style_Context; use Gtk.Style_Context;
with Gtk.Style_Properties; use Gtk.Style_Properties;
with Gtk.Symbolic_Color; use Gtk.Symbolic_Color;
package Gtk.Gradient is
type Gtk_Gradient is new Glib.C_Boxed with null record;
Null_Gtk_Gradient : constant Gtk_Gradient;
function From_Object (Object : System.Address) return Gtk_Gradient;
function From_Object_Free (B : access Gtk_Gradient'Class) return Gtk_Gradient;
pragma Inline (From_Object_Free, From_Object);
------------------
-- Constructors --
------------------
procedure Gtk_New_Linear
(Self : out Gtk_Gradient;
X0 : Gdouble;
Y0 : Gdouble;
X1 : Gdouble;
Y1 : Gdouble);
-- Creates a new linear gradient along the line defined by (x0, y0) and
-- (x1, y1). Before using the gradient a number of stop colors must be
-- added through Gtk.Gradient.Add_Color_Stop.
-- Since: gtk+ 3.0
-- "x0": X coordinate of the starting point
-- "y0": Y coordinate of the starting point
-- "x1": X coordinate of the end point
-- "y1": Y coordinate of the end point
function Gtk_Gradient_New_Linear
(X0 : Gdouble;
Y0 : Gdouble;
X1 : Gdouble;
Y1 : Gdouble) return Gtk_Gradient;
-- Creates a new linear gradient along the line defined by (x0, y0) and
-- (x1, y1). Before using the gradient a number of stop colors must be
-- added through Gtk.Gradient.Add_Color_Stop.
-- Since: gtk+ 3.0
-- "x0": X coordinate of the starting point
-- "y0": Y coordinate of the starting point
-- "x1": X coordinate of the end point
-- "y1": Y coordinate of the end point
procedure Gtk_New_Radial
(Self : out Gtk_Gradient;
X0 : Gdouble;
Y0 : Gdouble;
Radius0 : Gdouble;
X1 : Gdouble;
Y1 : Gdouble;
Radius1 : Gdouble);
-- Creates a new radial gradient along the two circles defined by (x0, y0,
-- radius0) and (x1, y1, radius1). Before using the gradient a number of
-- stop colors must be added through Gtk.Gradient.Add_Color_Stop.
-- Since: gtk+ 3.0
-- "x0": X coordinate of the start circle
-- "y0": Y coordinate of the start circle
-- "radius0": radius of the start circle
-- "x1": X coordinate of the end circle
-- "y1": Y coordinate of the end circle
-- "radius1": radius of the end circle
function Gtk_Gradient_New_Radial
(X0 : Gdouble;
Y0 : Gdouble;
Radius0 : Gdouble;
X1 : Gdouble;
Y1 : Gdouble;
Radius1 : Gdouble) return Gtk_Gradient;
-- Creates a new radial gradient along the two circles defined by (x0, y0,
-- radius0) and (x1, y1, radius1). Before using the gradient a number of
-- stop colors must be added through Gtk.Gradient.Add_Color_Stop.
-- Since: gtk+ 3.0
-- "x0": X coordinate of the start circle
-- "y0": Y coordinate of the start circle
-- "radius0": radius of the start circle
-- "x1": X coordinate of the end circle
-- "y1": Y coordinate of the end circle
-- "radius1": radius of the end circle
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "gtk_gradient_get_type");
-------------
-- Methods --
-------------
procedure Add_Color_Stop
(Self : Gtk_Gradient;
Offset : Gdouble;
Color : Gtk.Symbolic_Color.Gtk_Symbolic_Color);
pragma Obsolescent (Add_Color_Stop);
-- Adds a stop color to Gradient.
-- Since: gtk+ 3.0
-- Deprecated since 3.8, Gtk.Gradient.Gtk_Gradient is deprecated.
-- "offset": offset for the color stop
-- "color": color to use
function Ref (Self : Gtk_Gradient) return Gtk_Gradient;
pragma Obsolescent (Ref);
-- Increases the reference count of Gradient.
-- Since: gtk+ 3.0
-- Deprecated since 3.8, Gtk.Gradient.Gtk_Gradient is deprecated.
function Resolve
(Self : Gtk_Gradient;
Props : not null access Gtk.Style_Properties.Gtk_Style_Properties_Record'Class;
Resolved_Gradient : access Cairo.Cairo_Pattern) return Boolean;
pragma Obsolescent (Resolve);
-- If Gradient is resolvable, Resolved_Gradient will be filled in with the
-- resolved gradient as a cairo_pattern_t, and True will be returned.
-- Generally, if Gradient can't be resolved, it is due to it being defined
-- on top of a named color that doesn't exist in Props.
-- Since: gtk+ 3.0
-- Deprecated since 3.8, Gtk.Gradient.Gtk_Gradient is deprecated.
-- "props": Gtk.Style_Properties.Gtk_Style_Properties to use when
-- resolving named colors
-- "resolved_gradient": return location for the resolved pattern
function Resolve_For_Context
(Self : Gtk_Gradient;
Context : not null access Gtk.Style_Context.Gtk_Style_Context_Record'Class)
return Cairo.Cairo_Pattern;
function To_String (Self : Gtk_Gradient) return UTF8_String;
pragma Obsolescent (To_String);
-- Creates a string representation for Gradient that is suitable for using
-- in GTK CSS files.
-- Deprecated since 3.8, Gtk.Gradient.Gtk_Gradient is deprecated.
procedure Unref (Self : Gtk_Gradient);
pragma Obsolescent (Unref);
-- Decreases the reference count of Gradient, freeing its memory if the
-- reference count reaches 0.
-- Since: gtk+ 3.0
-- Deprecated since 3.8, Gtk.Gradient.Gtk_Gradient is deprecated.
private
Null_Gtk_Gradient : constant Gtk_Gradient := (Glib.C_Boxed with null record);
end Gtk.Gradient;