-- Proxy for drawing in a GdkDrawable, adding capabilities like autoscale,
-- zoom, axis flipping...
with Ada.Containers.Indefinite_Doubly_Linked_Lists;
with Gdk.Drawable; use Gdk.Drawable;
package Agpl.Gdk.Drawer_Action is
type Object is abstract tagged null record;
-- This type is used to encapsulate drawing primitives, so anyone can
-- provide new ones.
procedure Prepare (This : in out Object;
Transf : in Float_Matrix;
Min_X,
Max_X,
Min_Y,
Max_Y : out Float) is abstract;
-- Pre-transform the figure and say enclosing box.
procedure Perform (This : in out Object;
Transf : in Float_Matrix; -- Scaling transformation.
Draw : Gdk_Drawable) is abstract;
-- Do the real drawing.
package Action_Lists is new
Ada.Containers.Indefinite_Doubly_Linked_Lists
(Drawer_Action.Object'Class, Drawer_Action."=");
subtype Action_List is Action_Lists.List;
end Agpl.Gdk.Drawer_Action;