with Tiles.Matrices; use Tiles.Matrices;
package Tools.Matrixbrushes is
type Matrixbrush is new Tool with private;
type A_Matrixbrush is access all Matrixbrush'Class;
function Create_Matrixbrush( matrix : not null A_Tile_Matrix;
offsetX,
offsetY : Integer ) return A_Tool;
pragma Postcondition( Create_Matrixbrush'Result /= null );
function Get_Matrix( this : not null access Matrixbrush'Class ) return A_Tile_Matrix;
pragma Postcondition( Get_Matrix'Result /= null );
procedure Get_Offset( this : not null access Matrixbrush'Class;
x, y : out Integer );
private
type Matrixbrush is new Tool with
record
matrix : A_Tile_Matrix := null;
offsetX,
offsetY : Integer := 0;
startTileX,
startTileY,
overTileX,
overTileY : Integer := -1;
end record;
procedure Adjust( this : access Matrixbrush );
procedure Construct( this : access Matrixbrush;
matrix : A_Tile_Matrix;
offsetX,
offsetY : Integer );
procedure Delete( this : in out Matrixbrush );
procedure Apply( this : access Matrixbrush; context : Tool_Context );
function Get_Type( this : access Matrixbrush ) return Tool_Type;
end Tools.Matrixbrushes;