------------------------------------------------------------------------------
-- --
-- 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/>. --
-- --
------------------------------------------------------------------------------
pragma Ada_2005;
pragma Warnings (Off, "*is already use-visible*");
with Glib; use Glib;
with Pango.Enums; use Pango.Enums;
package Pango.Attributes is
type Pango_Attribute is private;
function From_Object_Free (B : access Pango_Attribute) return Pango_Attribute;
pragma Inline (From_Object_Free);
type Pango_Attr_List is new Glib.C_Boxed with null record;
Null_Pango_Attr_List : constant Pango_Attr_List;
function From_Object (Object : System.Address) return Pango_Attr_List;
function From_Object_Free (B : access Pango_Attr_List'Class) return Pango_Attr_List;
pragma Inline (From_Object_Free, From_Object);
---------------
-- Callbacks --
---------------
type Pango_Attr_Filter_Func is access function (Attribute : Pango_Attribute) return Boolean;
-- Type of a function filtering a list of attributes.
-- "attribute": a Pango attribute
------------------
-- Constructors --
------------------
procedure Gdk_New (Self : out Pango_Attr_List);
-- Create a new empty attribute list with a reference count of one.
function Pango_Attr_List_New return Pango_Attr_List;
-- Create a new empty attribute list with a reference count of one.
function Get_Type return Glib.GType;
pragma Import (C, Get_Type, "pango_attr_list_get_type");
-------------
-- Methods --
-------------
function Copy (Self : Pango_Attribute) return Pango_Attribute;
pragma Import (C, Copy, "pango_attribute_copy");
-- Make a copy of an attribute.
function Copy (Self : Pango_Attr_List) return Pango_Attr_List;
-- Copy List and return an identical new list.
procedure Destroy (Self : Pango_Attribute);
pragma Import (C, Destroy, "pango_attribute_destroy");
-- Destroy a Pango.Attributes.Pango_Attribute and free all associated
-- memory.
function Equal
(Self : Pango_Attribute;
Attr2 : Pango_Attribute) return Boolean;
-- Compare two attributes for equality. This compares only the actual
-- value of the two attributes and not the ranges that the attributes apply
-- to.
-- "attr2": another Pango.Attributes.Pango_Attribute
procedure Change (Self : Pango_Attr_List; Attr : Pango_Attribute);
-- Insert the given attribute into the Pango.Attributes.Pango_Attr_List.
-- It will replace any attributes of the same type on that segment and be
-- merged with any adjoining attributes that are identical.
-- This function is slower than Pango.Attributes.Insert for creating a
-- attribute list in order (potentially much slower for large lists).
-- However, Pango.Attributes.Insert is not suitable for continually
-- changing a set of attributes since it never removes or combines existing
-- attributes.
-- "attr": the attribute to insert. Ownership of this value is assumed by
-- the list.
function Filter
(Self : Pango_Attr_List;
Func : Pango_Attr_Filter_Func) return Pango_Attr_List;
-- Given a Pango.Attributes.Pango_Attr_List and callback function, removes
-- any elements of List for which Func returns True and inserts them into a
-- new list.
-- Since: gtk+ 1.2
-- "func": callback function; returns True if an attribute should be
-- filtered out.
generic
type User_Data_Type (<>) is private;
with procedure Destroy (Data : in out User_Data_Type) is null;
package Filter_User_Data is
type Pango_Attr_Filter_Func is access function
(Attribute : Pango.Attributes.Pango_Attribute;
User_Data : User_Data_Type) return Boolean;
-- Type of a function filtering a list of attributes.
-- "attribute": a Pango attribute
-- "user_data": user data passed to the function
function Filter
(Self : Pango.Attributes.Pango_Attr_List;
Func : Pango_Attr_Filter_Func;
Data : User_Data_Type) return Pango.Attributes.Pango_Attr_List;
-- Given a Pango.Attributes.Pango_Attr_List and callback function,
-- removes any elements of List for which Func returns True and inserts
-- them into a new list.
-- Since: gtk+ 1.2
-- "func": callback function; returns True if an attribute should be
-- filtered out.
-- "data": Data to be passed to Func
end Filter_User_Data;
procedure Insert (Self : Pango_Attr_List; Attr : Pango_Attribute);
-- Insert the given attribute into the Pango.Attributes.Pango_Attr_List.
-- It will be inserted after all other attributes with a matching
-- Start_Index.
-- "attr": the attribute to insert. Ownership of this value is assumed by
-- the list.
procedure Insert_Before (Self : Pango_Attr_List; Attr : Pango_Attribute);
-- Insert the given attribute into the Pango.Attributes.Pango_Attr_List.
-- It will be inserted before all other attributes with a matching
-- Start_Index.
-- "attr": the attribute to insert. Ownership of this value is assumed by
-- the list.
function Ref (Self : Pango_Attr_List) return Pango_Attr_List;
-- Increase the reference count of the given attribute list by one.
-- Since: gtk+ 1.10
procedure Splice
(Self : Pango_Attr_List;
Other : Pango_Attr_List;
Pos : Gint;
Len : Gint);
-- This function opens up a hole in List, fills it in with attributes from
-- the left, and then merges Other on top of the hole.
-- This operation is equivalent to stretching every attribute that applies
-- at position Pos in List by an amount Len, and then calling
-- Pango.Attributes.Change with a copy of each attribute in Other in
-- sequence (offset in position by Pos).
-- This operation proves useful for, for instance, inserting a pre-edit
-- string in the middle of an edit buffer.
-- "other": another Pango.Attributes.Pango_Attr_List
-- "pos": the position in List at which to insert Other
-- "len": the length of the spliced segment. (Note that this must be
-- specified since the attributes in Other may only be present at some
-- subsection of this range)
procedure Unref (Self : Pango_Attr_List);
-- Decrease the reference count of the given attribute list by one. If the
-- result is zero, free the attribute list and the attributes it contains.
---------------
-- Functions --
---------------
function Attr_Underline_New
(Underline : Pango.Enums.Underline) return Pango_Attribute;
pragma Import (C, Attr_Underline_New, "pango_attr_underline_new");
-- Create a new underline-style attribute.
-- "underline": the underline style.
function Attr_Background_New
(Red : Guint16;
Green : Guint16;
Blue : Guint16) return Pango_Attribute;
pragma Import (C, Attr_Background_New, "pango_attr_background_new");
-- Create a new background color attribute.
-- "red": the red value (ranging from 0 to 65535)
-- "green": the green value
-- "blue": the blue value
function Attr_Foreground_New
(Red : Guint16;
Green : Guint16;
Blue : Guint16) return Pango_Attribute;
pragma Import (C, Attr_Foreground_New, "pango_attr_foreground_new");
-- Create a new foreground color attribute.
-- "red": the red value (ranging from 0 to 65535)
-- "green": the green value
-- "blue": the blue value
function Attr_Family_New (Family : UTF8_String) return Pango_Attribute;
-- Create a new font family attribute.
-- "family": the family or comma separated list of families
function Attr_Strikethrough_New
(Strikethrough : Boolean) return Pango_Attribute;
-- Create a new strike-through attribute.
-- "strikethrough": True if the text should be struck-through.
function Attr_Variant_New
(Variant : Pango.Enums.Variant) return Pango_Attribute;
pragma Import (C, Attr_Variant_New, "pango_attr_variant_new");
-- Create a new font variant attribute (normal or small caps)
-- "variant": the variant
function Attr_Weight_New
(Weight : Pango.Enums.Weight) return Pango_Attribute;
pragma Import (C, Attr_Weight_New, "pango_attr_weight_new");
-- Create a new font weight attribute.
-- "weight": the weight
function Attr_Stretch_New
(Stretch : Pango.Enums.Stretch) return Pango_Attribute;
pragma Import (C, Attr_Stretch_New, "pango_attr_stretch_new");
-- Create a new font stretch attribute
-- "stretch": the stretch
function Attr_Scale_New (Scale_Factor : Gdouble) return Pango_Attribute;
pragma Import (C, Attr_Scale_New, "pango_attr_scale_new");
-- Create a new font size scale attribute. The base font for the affected
-- text will have its size multiplied by Scale_Factor.
-- "scale_factor": factor to scale the font
function Attr_Rise_New (Rise : Gint) return Pango_Attribute;
pragma Import (C, Attr_Rise_New, "pango_attr_rise_new");
-- Create a new baseline displacement attribute.
-- "rise": the amount that the text should be displaced vertically, in
-- Pango units. Positive values displace the text upwards.
function Attr_Gravity_New
(Gravity : Pango.Enums.Gravity) return Pango_Attribute;
pragma Import (C, Attr_Gravity_New, "pango_attr_gravity_new");
-- Create a new gravity attribute.
-- Since: gtk+ 1.16
-- "gravity": the gravity value; should not be
-- Pango.Enums.Pango_Gravity_Auto.
private
type Pango_Attribute is record
Klass : access Pango_Attr_Class;
Start_Index : Guint;
End_Index : Guint;
end record;
pragma Convention (C, Pango_Attribute);
Null_Pango_Attr_List : constant Pango_Attr_List := (Glib.C_Boxed with null record);
end Pango.Attributes;