-- $Date: 2004/03/08 10:50:56 $
-- $Revision: 1.5 $
-- $Author: jcrocholl $
-- $Hash: 26265e008a9cd5d5c1ca7677ca07306e $

-- This file was automatically created with ado.php.
-- Manual changes will be lost when it is updated.

with Real_Numbers; use Real_Numbers;
with Real_Vectors; use Real_Vectors;
with Gray_Images; use Gray_Images;
with Glyphs; use Glyphs;

with Strings; use Strings;

package Printers is

   -- Public representation.
   type Printer is abstract tagged limited private;

   -- Pointer to representation data.
   type Printer_Access is access all Printer'Class;

   -- Accessor to read the filename of a printer.
   function Get_Filename
     (This : access Printer-- The printer to read from.
     return String;          -- The filename of that printer.

   function Get_Format
     (This : access Printer-- The printer object instance.
     return String           -- Maximum of four characters.
     is abstract;

   procedure Set_Bounds
     (This         : access Printer-- The printer object instance.
      Bounds       : in Rectangle;   -- The new bounding box.
      Staff_Height : in Real);       -- Output zoom factor.

   procedure Print
     (This   : access Printer-- The printer object instance.
      Add    : access Glyph;   -- Add this glyph.
      Center : in Vector)      -- Center coordinates.
     is abstract;

   procedure Frame_Box
     (This  : access Printer-- The printer object instance.
      Box   : in Rectangle;   -- Box coordinates.
      Color : in Gray_Pixel)  -- Use this color.
     is abstract;

   procedure Fill_Box
     (This  : access Printer-- The printer object instance.
      Box   : in Rectangle;   -- Box coordinates.
      Color : in Gray_Pixel)  -- Use this color.
     is abstract;

   procedure Write
     (This : access Printer-- The printer object instance.
     is abstract;

private

   -- Private representation.
   type Printer is abstract tagged limited record
      Filename : String_Access-- Output filename, null for stdout.
      Bounds   : Rectangle;     -- Output canvas size.
   end record;

end Printers;