-----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 2000 E. Briot, J. Brobecker and A. Charlet --
-- Copyright (C) 2000-2006 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. --
-- --
-- --
-- --
-- --
-- --
-- --
-- --
-----------------------------------------------------------------------
--
-- This package defines the root of the plot hierarchy. It defines several
-- display strategies that can be used to show scientific data on the
-- screen (see the children for 3D, polar, bars,...)
--
-- All coordinates are in percent of the total size allocates for the data
-- set (ie the actual position is (x * width, y * height), where (x, y) is
-- the value stored in the data set and (width, height) its allocated screen
-- size.
--
-- gtkextra 2.1.1
-- Plotting Data
-- create_plot_realtime.adb
with Gdk.Color;
with Gdk.GC;
with Glib;
with Gtk.Widget;
with Gtkada.Types;
with Unchecked_Conversion;
package Gtk.Extra.Plot_Data is
type Plot_Label_Style is (Label_Float, Label_Exp, Label_Pow);
-- The style of labels (floating point, or scientific notation)
pragma Convention (C, Plot_Label_Style);
type Plot_Scale is (Scale_Linear, Scale_Log10);
-- Type of scale used for each axis of a graph.
pragma Convention (C, Plot_Scale);
type Gtk_Plot_Data_Record is new Gtk.Widget.Gtk_Widget_Record with private;
type Gtk_Plot_Data is access all Gtk_Plot_Data_Record'Class;
-- A set of values that can be represented on the screen. There are
-- several strategies to set the values, either explicitely in your
-- application, or by having them automatically generated by a function.
type Gtk_Plot_Marker is new Gdk.C_Proxy;
--
-- The convert functions are needed to e.g. instantiate Generic_List
-- They should not be used directly
function Convert is new Unchecked_Conversion
(Gtk_Plot_Data, System.Address);
function Convert is new Unchecked_Conversion
(System.Address, Gtk_Plot_Data);
--
-----------
-- Types --
-----------
type No_Range_Gdouble_Array is array (Natural) of Gdouble;
-- An array of values.
-- This is used to represent the data values displayed in the plot.
-- This array does not have any range information (so that it can be
-- easily returned from a C function, without requiring an extra
-- copy of the table). You can not use 'Range on this array.
type No_Range_Gdouble_Array_Access is access all No_Range_Gdouble_Array;
-- An access to a flat array.
type Gdouble_Array_Access is access all Glib.Gdouble_Array;
-- The reason we use this type in the functions below is because
-- gtk+-extra does not keep a copy of the arrays, but points to the one
-- given in argument. Thus, the Ada arrays should not be allocated on the
-- stack, or at least they should be at library level. Using this 'Access
-- will force the compiler to do the check for us.
type Points_Array is record
Points : No_Range_Gdouble_Array_Access;
Num_Points : Gint := 0;
end record;
-- The points are indexed from 0 to Num_Points-1.
-- Note that you can't use 'Range, 'First or 'Last on Points.
type Plot_Connector is
(Connect_None,
-- No connection
Connect_Straight,
-- straight line
Connect_Spline,
-- spline or Bezier curve
Connect_Hv_Step,
-- Horizontal then vertical
Connect_Vh_Step,
-- Vertical then horizontal
Connect_Middle_Step
-- Split in the middle
);
-- The type of connection between two adjacent points in a graph.
pragma Convention (C, Plot_Connector);
type Plot_Gradient is new Integer;
-- Indicate which color components vary along the gradient
Gradient_H : constant Plot_Gradient; -- Hue
Gradient_V : constant Plot_Gradient; -- Value
Gradient_S : constant Plot_Gradient; -- Saturation
type Plot_Symbol_Type is
(Symbol_None,
Symbol_Square,
Symbol_Circle,
Symbol_Up_Triangle,
Symbol_Down_Triangle,
Symbol_Right_Triangle,
Symbol_Left_Triangle,
Symbol_Diamond,
Symbol_Plus,
Symbol_Cross,
Symbol_Star,
Symbol_Dot,
Symbol_Impulse);
-- Type of symbol used to represent the points in a graph.
pragma Convention (C, Plot_Symbol_Type);
type Plot_Symbol_Style is
(Symbol_Empty,
Symbol_Filled,
Symbol_Opaque);
-- Style used to draw the points in a graph.
pragma Convention (C, Plot_Symbol_Style);
type Plot_Line_Style is
(Line_None,
Line_Solid,
Line_Dotted,
Line_Dashed,
Line_Dot_Dash,
Line_Dot_Dot_Dash,
Line_Dot_Dash_Dash);
-- Lines used to connect two adjacent points in a graph.
pragma Convention (C, Plot_Line_Style);
type Plot_Angle is (Angle_0, Angle_90, Angle_180, Angle_270);
-- Valid values for the angles of texts and titles.
pragma Convention (C, Plot_Angle);
--------------------
-- Plot functions --
--------------------
-- Plot functions should generate a unique Y value given a parameter.
-- These can be used for instance to represent exactly mathematical
-- functions.
-- Note that due to the C interface, the subprograms in Gtk.Extra.Plot and
-- in this package expect functions that take a System.Address as a
-- parameter. However, since it is much more convenient in your application
-- to get a Gtk_Plot_Record directly, GtkAda includes a generic function
-- that automatically does the conversion for you (see
-- Gtk.Plot.Generic_Plot_Function).
type Plot_Function is access function
(Plot : System.Address;
Set : Gtk_Plot_Data;
X : Gdouble;
Error : access Gboolean) return Gdouble;
-- Function used for plotting.
-- It should return the value associated with X in its graph, and set
-- Error to True if there was an error while calculating the value.
pragma Convention (C, Plot_Function);
-------------------------
-- Creating a Data set --
-------------------------
procedure Gtk_New (Data : out Gtk_Plot_Data; Func : Plot_Function := null);
-- Creates a new data set. Its values can either be generated automatically
-- from Func, or will have to be set explicitely using the other
-- subprograms in this package.
procedure Initialize
(Data : access Gtk_Plot_Data_Record'Class; Func : Plot_Function := null);
-- Internal initialization function.
-- See the section "Creating your own widgets" in the documentation.
function Get_Type return Gtk.Gtk_Type;
-- Return the internal value associated with a Gtk_Plot_Data.
procedure Set_Name (Data : access Gtk_Plot_Data_Record; Name : String);
-- Set the name used internally for that dataset.
-- This name does not appear anywhere on the screen, but it is easier to
-- find the dataset afterward by using this name.
procedure Clone
(Data : access Gtk_Plot_Data_Record;
Copy : access Gtk_Plot_Data_Record'Class);
-- Copy the contents of Data into Copy, which must have been allocated
-- first
-------------------
-- Drawing a set --
-------------------
-- Although a set is basically a list of values, it is closely associated
-- with its representation on the screen (see the children of Gtk_Plot_Data
-- for various possible representations).
-- The Gtk.Extra packages are designed so that the drawing can be done
-- either to the screen (through a Gdk adapter), to a postscript file for
-- easy printing, or to any other media.
procedure Paint (Data : access Gtk_Plot_Data_Record);
-- Emits the "draw_data" signal to request a redrawing of the data set.
procedure Update (Data : access Gtk_Plot_Data_Record);
-- Indicates that the data has changed, and the graphical view should
-- reflect this.
procedure Draw_Points (Data : access Gtk_Plot_Data_Record; N : Gint);
-- Draw the N last (most recent) values of the Data set on the screen.
-- If N is greater than the actual number of values in Data, then they are
-- all displayed. This subprogram should be used when you want to
-- periodically update the contents of a dataset (you would then modify
-- the number of points in the dataset with a call to Set_Numpoints, then
-- register the new points with Set_X and Set_Y, and finally refresh the
-- dataset with a call to Draw_Points and Gtk.Plot.Refresh).
procedure Draw_Symbol (Data : access Gtk_Plot_Data_Record; X, Y : Gdouble);
-- Draw the current symbol (see Set_Symbol) at specific coordinates on
-- the screen.
----------------
-- Dimensions --
----------------
-- The coordinates of the points to draw are specified in space. Therefore,
-- they have multiple coordinates, each associate with a specific
-- dimension.
-- The name of dimensions below must be one of "x", "y", "z", "dx", "dy",
-- "dz", "a", "da".
-- "d..." are the size (precision of these points). A bigger symbol is
-- displayed for the points whose (dx,dy) is bigger.
-- "a" is used to specify the size of the symbols. When plotting boxes in
-- two dimensions, "Z" is used to specify the size of the box.
procedure Dimension_Set_Points
(Data : access Gtk_Plot_Data_Record;
Name : String;
Points : Gdouble_Array_Access);
-- Set the coordinates of the points along one dimension
procedure Set_Numpoints (Data : access Gtk_Plot_Data_Record; Num : Gint);
-- Set the number of points that should be expected in the graph.
-- Note that this does not automatically resize all the internal structure,
-- it just indicates what size the parameters to Set_X, Set_Y,... should
-- have.
function Get_Numpoints (Data : access Gtk_Plot_Data_Record) return Gint;
-- Return the number of points expected in the graph.
-------------------------
-- Manipulating values --
-------------------------
-- These are older functions, kept for compatibility. They provide a
-- somewhat simpler interface to the dimensions, but the use of dimensions
-- is recommended.
-- See the comment for dimensions on the meaning of X, Y, Dx, Dy,...
procedure Set_Points
(Data : access Gtk_Plot_Data_Record;
X, Y, Dx, Dy : Gdouble_Array_Access);
-- Set some explicit points in the set.
-- Note that the set must not be associated with a function, or the points
-- will simply be ignored.
-- All of the arrays must have the same length, the behavior is undefined
-- otherwise.
procedure Get_Points
(Data : access Gtk_Plot_Data_Record;
X : out Points_Array;
Y : out Points_Array;
Dx : out Points_Array;
Dy : out Points_Array);
-- Return the value of the points in the set.
-- Null-length arrays are returned if the set is associated with a
-- function, since no explicit point has been set.
procedure Set_X
(Data : access Gtk_Plot_Data_Record; X : Gdouble_Array_Access);
procedure Set_Y
(Data : access Gtk_Plot_Data_Record; Y : Gdouble_Array_Access);
procedure Set_Z
(Data : access Gtk_Plot_Data_Record; Z : Gdouble_Array_Access);
procedure Set_A
(Data : access Gtk_Plot_Data_Record; A : Gdouble_Array_Access);
-- Set the values for one specific coordinate in the set.
-- The array must have a length of Get_Numpoints (if GtkAda was
-- compiled with assertions enabled, an exception will be raised if the
-- length are different).
-- No copy of the array is made for efficiency reasons, thus modifying
-- the array content later on will also modify the plot.
procedure Set_A_Scale
(Data : access Gtk_Plot_Data_Record; A_Scale : Gdouble);
function Get_A_Scale
(Data : access Gtk_Plot_Data_Record) return Gdouble;
-- Changes the scale used for the "A" coordinate
procedure Set_Dx
(Data : access Gtk_Plot_Data_Record; Dx : Gdouble_Array_Access);
procedure Set_Dy
(Data : access Gtk_Plot_Data_Record; Dy : Gdouble_Array_Access);
procedure Set_Dz
(Data : access Gtk_Plot_Data_Record; Dz : Gdouble_Array_Access);
-- Set the precision of the points in the set. A bigger symbol is displayed
-- for the points whose (Dx, Dy, Dz) is bigger.
-- The array must have a length of Get_Numpoints (if GtkAda was
-- compiled with assertions enabled, an exception will be raised if the
-- length are different).
-- No copy of the array is made for efficiency reasons, thus modifying
-- the array content later on will also modify the plot.
procedure Set_Da
(Data : access Gtk_Plot_Data_Record; Da : Gdouble_Array_Access);
-- Specifies the colors to use for the points.
-- The color of the symbols is detemined using the gradient. the gradient
-- has (min, max) values, and corresponding colors. The symbol's color is
-- interpolated between these values using hue/saturation/value depending
-- on the gradient_mask.
function Get_X (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_Y (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_Z (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_A (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_Dx (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_Dy (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_Dz (Data : access Gtk_Plot_Data_Record) return Points_Array;
function Get_Da (Data : access Gtk_Plot_Data_Record) return Points_Array;
-- Return the coordinates for the points in the set.
-- This is a direct access to the underlying C array, thus modifying this
-- array's contents also modifies the graph.
-- See the corresponding Set_* functions for a definition of the
-- coordinates
------------
-- Labels --
------------
-- Each point in the data set can be associated with a label that describes
-- it. This is only relevant for data sets where you explicitely give
-- values, not when the values are generated by a function.
procedure Set_Labels
(Data : access Gtk_Plot_Data_Record;
Labels : Gtkada.Types.Chars_Ptr_Array);
-- Set the labels associated which each point in the canvas.
-- There must be at least Get_Numpoints elements in Labels, or the
-- behavior is undefined
function Get_Labels (Data : access Gtk_Plot_Data_Record)
return Gtkada.Types.Chars_Ptr_Array;
-- Return the labels associated with the points in the data set.
-- Note that this returns a *copy* of the actual array, and thus might
-- be expensive to call.
procedure Show_Labels (Data : access Gtk_Plot_Data_Record; Show : Boolean);
-- Indicate whether the labels should be displayed next to each point in
-- the data set. This has no effect if no labels were specified.
procedure Labels_Set_Attributes
(Data : access Gtk_Plot_Data_Record;
Font : String;
Height : Gint;
Angle : Plot_Angle;
Foreground : Gdk.Color.Gdk_Color;
Background : Gdk.Color.Gdk_Color);
-- Set the properties of the labels
----------------------------
-- Symbols and Connectors --
----------------------------
-- Each point that is explicitely set in the data set through the
-- Set_X, Set_Y,... subprograms is visually associated with a symbol. There
-- are several representations for the symbols.
--
-- All these symbols are then connected by a line, a curve or any other
-- link. These are called connectors.
--
-- Each symbol, in addition to being connected to the next one with a
-- connector, can also be linked to the axis X=0, Y=0 or Z=0 so that it is
-- easier to read its coordinates. These are called errbars, and they must
-- be explicitely shown.
procedure Set_Symbol
(Data : access Gtk_Plot_Data_Record;
The_Type : Plot_Symbol_Type;
Style : Plot_Symbol_Style;
Size : Gint;
Line_Width : Gfloat;
Color : Gdk.Color.Gdk_Color;
Border_Color : Gdk.Color.Gdk_Color);
-- Set the visual aspect of the symbols.
procedure Get_Symbol
(Data : access Gtk_Plot_Data_Record;
The_Type : out Plot_Symbol_Type;
Style : out Plot_Symbol_Style;
Size : out Gint;
Line_Width : out Gint;
Color : out Gdk.Color.Gdk_Color;
Border_Color : out Gdk.Color.Gdk_Color);
-- Return the visual characteristics of the symbols.
procedure Set_Connector
(Data : access Gtk_Plot_Data_Record; Connector : Plot_Connector);
-- Set the style of the connectors.
function Get_Connector (Data : access Gtk_Plot_Data_Record)
return Plot_Connector;
-- Return the connector style used for the data set.
procedure Set_Line_Attributes
(Data : access Gtk_Plot_Data_Record;
Style : Plot_Line_Style;
Cap_Style : Gdk.GC.Gdk_Cap_Style;
Join_Style : Gdk.GC.Gdk_Join_Style;
Width : Gfloat;
Color : Gdk.Color.Gdk_Color);
-- Set the line style used for the connectors.
procedure Get_Line_Attributes
(Data : access Gtk_Plot_Data_Record;
Style : out Plot_Line_Style;
Cap_Style : out Gdk.GC.Gdk_Cap_Style;
Join_Style : out Gdk.GC.Gdk_Join_Style;
Width : out Gfloat;
Color : out Gdk.Color.Gdk_Color);
-- Return the line attributes used for the connectors.
procedure Set_X_Attributes
(Data : access Gtk_Plot_Data_Record;
Style : Plot_Line_Style;
Cap_Style : Gdk.GC.Gdk_Cap_Style;
Join_Style : Gdk.GC.Gdk_Join_Style;
Width : Gfloat;
Color : Gdk.Color.Gdk_Color);
-- Set the style of the lines used to connect the symbols to the X axis.
procedure Set_Y_Attributes
(Data : access Gtk_Plot_Data_Record;
Style : Plot_Line_Style;
Cap_Style : Gdk.GC.Gdk_Cap_Style;
Join_Style : Gdk.GC.Gdk_Join_Style;
Width : Gfloat;
Color : Gdk.Color.Gdk_Color);
-- Set the style of the lines used to connect the symbols to the Y axis.
procedure Set_Z_Attributes
(Data : access Gtk_Plot_Data_Record;
Style : Plot_Line_Style;
Cap_Style : Gdk.GC.Gdk_Cap_Style;
Join_Style : Gdk.GC.Gdk_Join_Style;
Width : Gfloat;
Color : Gdk.Color.Gdk_Color);
-- Set the style of the lines used to connect the symbols to the Z axis.
procedure Show_Xerrbars (Data : access Gtk_Plot_Data_Record);
procedure Show_Yerrbars (Data : access Gtk_Plot_Data_Record);
procedure Show_Zerrbars (Data : access Gtk_Plot_Data_Record);
-- Indicate that each symbol should be connected to the various axis
procedure Hide_Xerrbars (Data : access Gtk_Plot_Data_Record);
procedure Hide_Yerrbars (Data : access Gtk_Plot_Data_Record);
procedure Hide_Zerrbars (Data : access Gtk_Plot_Data_Record);
-- Indicate the the symbol should not be connected to the axis.
procedure Fill_Area (Data : access Gtk_Plot_Data_Record; Fill : Boolean);
-- Indicate whether the area between two points should be filled or not.
function Area_Is_Filled (Data : access Gtk_Plot_Data_Record)
return Boolean;
-- Indicate whether the area between two points is filled.
-------------
-- Legends --
-------------
-- In addition to the drawing corresponding to the data set, it is possible
-- to display a box that contains a legend. This is particulary useful when
-- multiple data sets are displayed on the same plot.
procedure Set_Legend (Data : access Gtk_Plot_Data_Record; Legend : String);
-- Set the string printed in the legend for that data set.
-- Note that an entry can exist in the legend even if there is no name
-- associated with the graph.
procedure Show_Legend (Data : access Gtk_Plot_Data_Record);
-- An entry will be made in the plot's legend for that dataset.
procedure Hide_Legend (Data : access Gtk_Plot_Data_Record);
-- No entry will appear in the plot's legend for that dataset.
procedure Set_Legend_Precision
(Data : access Gtk_Plot_Data_Record; Precision : Gint);
-- Number of digits to display when the legends is associated with values,
-- as is the case for gradients.
function Get_Legend_Precision (Data : access Gtk_Plot_Data_Record)
return Gint;
-- Return the number of digits used for values in the legend
---------------
-- Gradients --
---------------
-- The symbols displayed in the plot can be assigned specific colors. But
-- they can also compute their own color by picking it in a gradient,
-- depending on the value.
-- See function Gtk.Plot.Gradient
procedure Move_Gradient
(Data : access Gtk_Plot_Data_Record; X, Y : Gdouble);
procedure Set_Gradient_Size
(Data : access Gtk_Plot_Data_Record; Size : Gint);
procedure Reset_Gradient (Data : access Gtk_Plot_Data_Record);
-- Reset the gradient to its default value
procedure Reset_Gradient_Colors (Data : access Gtk_Plot_Data_Record);
-- Reset the colors of the gradient to their default values
procedure Gradient_Use_Custom_Colors
(Data : access Gtk_Plot_Data_Record; Custom : Boolean);
function Gradient_Custom_Colors
(Data : access Gtk_Plot_Data_Record) return Boolean;
-- Whether the gradient uses custom colors
procedure Set_Gradient_Mask
(Data : access Gtk_Plot_Data_Record; Mask : Plot_Gradient);
function Get_Gradient_Mask
(Data : access Gtk_Plot_Data_Record) return Plot_Gradient;
-- Set or Get how the component of the colors vary along the gradient.
procedure Gradient_Set_Visible
(Data : access Gtk_Plot_Data_Record; Visible : Boolean);
function Gradient_Visible
(Data : access Gtk_Plot_Data_Record) return Boolean;
-- Set or get whether the gradient is currently visible (this looks like a
-- legend for the plot)
procedure Gradient_Autoscale_A (Data : access Gtk_Plot_Data_Record);
procedure Gradient_Autoscale_Da (Data : access Gtk_Plot_Data_Record);
procedure Gradient_Autoscale_Z (Data : access Gtk_Plot_Data_Record);
-- ???
procedure Set_Gradient_Colors
(Data : access Gtk_Plot_Data_Record;
Min, Max : Gdk.Color.Gdk_Color);
procedure Get_Gradient_Colors
(Data : access Gtk_Plot_Data_Record;
Min, Max : out Gdk.Color.Gdk_Color);
-- Set or Get the colors that define the gradient. The colors will vary
-- from Min to Max along the components specified in Set_Gradient_Mask.
procedure Set_Gradient_Nth_Color
(Data : access Gtk_Plot_Data_Record;
Level : Guint;
Color : Gdk.Color.Gdk_Color);
function Get_Gradient_Nth_Color
(Data : access Gtk_Plot_Data_Record; Level : Guint)
return Gdk.Color.Gdk_Color;
-- Set or Get the nth color in the gradient
procedure Set_Gradient_Outer_Colors
(Data : access Gtk_Plot_Data_Record;
Min, Max : Gdk.Color.Gdk_Color);
procedure Get_Gradient_Outer_Colors
(Data : access Gtk_Plot_Data_Record;
Min, Max : out Gdk.Color.Gdk_Color);
-- Set the outer colors for the gradient
procedure Set_Gradient
(Data : access Gtk_Plot_Data_Record;
Min, Max : Gdouble;
Nlevels : Gint;
Nsublevels : Gint);
procedure Get_Gradient
(Data : access Gtk_Plot_Data_Record;
Min, Max : out Gdouble;
Nlevels : out Gint;
Nsublevels : out Gint);
-- Define the values associated with the minimal color and the maximal
-- color. Any value in between will have a color computed in between.
-- Nlevels is the number of ticks to display in the gradient.
procedure Get_Gradient_Level
(Data : access Gtk_Plot_Data_Record;
Level : Gdouble;
Color : out Gdk.Color.Gdk_Color);
-- Return the color associated with a specific level.
-- The color depends on the parameters to Set_Gradient and
-- Set_Gradient_Colors.
procedure Gradient_Set_Style
(Data : access Gtk_Plot_Data_Record;
Style : Plot_Label_Style;
Precision : Gint);
-- ???
procedure Gradient_Set_Scale
(Data : access Gtk_Plot_Data_Record;
Scale : Plot_Scale);
-- Set the scale of the gradient
-------------
-- Markers --
-------------
function Add_Marker
(Data : access Gtk_Plot_Data_Record; Point : Guint)
return Gtk_Plot_Marker;
-- Add a new marker
procedure Remove_Marker
(Data : access Gtk_Plot_Data_Record; Marker : Gtk_Plot_Marker);
-- Remove a marker from the plot
procedure Remove_Markers (Data : access Gtk_Plot_Data_Record);
-- Remove all markers
procedure Show_Markers (Data : access Gtk_Plot_Data_Record; Show : Boolean);
-- Whether markers should be shown
function Markers_Visible
(Data : access Gtk_Plot_Data_Record) return Boolean;
-- Whether markers are currently visible
---------------
-- User Data --
---------------
-- It is possible to associated your own user data with a plot. This is
-- the mechanism provided by the C version of gtkextra. However, the best
-- way to do this in Ada is to inherit from Gtk_Plot_Data_Record (or one
-- of its children), and add your own fields.
procedure Set_Link
(Data : access Gtk_Plot_Data_Record;
Link : System.Address);
-- Associate some user data with Data.
-- It is the responsability of the user to do some convert conversion to
-- System.Address.
function Get_Link (Data : access Gtk_Plot_Data_Record)
return System.Address;
-- Return the user data associated with Data, or Null_Address if there is
-- none.
procedure Remove_Link (Data : access Gtk_Plot_Data_Record);
-- Remove the user data associated with Data.
--
function To_Double_Array is new Unchecked_Conversion
(System.Address, No_Range_Gdouble_Array_Access);
--
private
type Gtk_Plot_Data_Record is new Gtk.Widget.Gtk_Widget_Record with
null record;
Gradient_H : constant Plot_Gradient := 1;
Gradient_V : constant Plot_Gradient := 2;
Gradient_S : constant Plot_Gradient := 4;
for Plot_Angle use
(Angle_0 => 0,
Angle_90 => 90,
Angle_180 => 180,
Angle_270 => 270);
pragma Import (C, Get_Type, "gtk_plot_data_get_type");
end Gtk.Extra.Plot_Data;
-- Unbound:
-- gtk_plot_data_new_iterator
-- gtk_plot_data_clone
-- gtk_plot_data_get_gradient_outer_colors
-- gtk_plot_data_add_dimension
-- gtk_plot_data_remove_dimension
-- gtk_plot_data_find_dimension
-- gtk_plot_data_required_dimensions
-- gtk_plot_data_independent_dimensions
-- gtk_plot_data_dimension_set_array
-- gtk_plot_data_dimension_get_array
-- gtk_plot_data_get_point
-- gtk_plot_get_gradient_allocation
-- These subprograms appear in gtkplotdata.h, but not in gtkplotdata.c
-- gtk_plot_data_dimension_set_scale
-- gtk_plot_data_dimension_get_scale