home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / utility / 252 / gemsrc / icon.def < prev    next >
Encoding:
Modula Definition  |  1988-02-13  |  4.7 KB  |  181 lines

  1. DEFINITION MODULE Icon;
  2.  
  3.    (* This module defines types and procedures used for manipulating *)
  4.    (* GEM graphic icon structures.                                   *)
  5.  
  6.  
  7.    FROM SYSTEM IMPORT ADDRESS;
  8.    IMPORT Screen;
  9.  
  10.  
  11.    CONST
  12.       Selectable  = 0;   (* Object Flags *)
  13.       Default     = 1;
  14.       Exit        = 2;
  15.       Editable    = 3;
  16.       RadioButton = 4;
  17.       LastObject  = 5;
  18.       TouchExit   = 6;
  19.       HideTree    = 7;
  20.       Indirect    = 8;
  21.  
  22.       Selected    = 0;   (* Object States *)
  23.       Crossed     = 1;
  24.       Checked     = 2;
  25.       Disabled    = 3;
  26.       Outlined    = 4;
  27.       Shadowed    = 5;
  28.  
  29.  
  30.    TYPE Object = RECORD
  31.       Next   : CARDINAL;
  32.       Head   : CARDINAL;
  33.       Tail   : CARDINAL;
  34.       Type   : CARDINAL;
  35.       Flags  : BITSET;
  36.       State  : BITSET;
  37.       Spec   : ADDRESS;
  38.       X      : CARDINAL;
  39.       Y      : CARDINAL;
  40.       Width  : CARDINAL;
  41.       Height : CARDINAL;
  42.    END;
  43.  
  44.    TYPE ObjectPtr = POINTER TO Object;
  45.  
  46.    TYPE Tedinfo = RECORD
  47.       Text           : ADDRESS;
  48.       Template       : ADDRESS;
  49.       Valid          : ADDRESS;
  50.       Font           : CARDINAL;
  51.       Reserved1      : CARDINAL;
  52.       Justification  : CARDINAL;
  53.       Color          : CARDINAL;
  54.       Reserved2      : CARDINAL;
  55.       Thickness      : CARDINAL;
  56.       TextLength     : CARDINAL;
  57.       TemplateLength : CARDINAL;
  58.    END;
  59.  
  60.    TYPE Iconblk = RECORD
  61.       Mask       : ADDRESS;
  62.       Data       : ADDRESS;
  63.       Text       : ADDRESS;
  64.       Char       : CARDINAL;
  65.       CharX      : CARDINAL;
  66.       CharY      : CARDINAL;
  67.       IconX      : CARDINAL;
  68.       IconY      : CARDINAL;
  69.       IconWidth  : CARDINAL;
  70.       IconHeight : CARDINAL;
  71.       TextX      : CARDINAL;
  72.       TextY      : CARDINAL;
  73.       TextWidth  : CARDINAL;
  74.       TextHeight : CARDINAL;
  75.       Reserved   : CARDINAL;
  76.    END;
  77.  
  78.    TYPE Bitblk = RECORD
  79.       Data     : ADDRESS;
  80.       Width    : CARDINAL;
  81.       Height   : CARDINAL;
  82.       X        : CARDINAL;
  83.       Y        : CARDINAL;
  84.       Color    : CARDINAL;
  85.       Reserved : CARDINAL;
  86.    END;
  87.  
  88.    TYPE Applblk = RECORD
  89.       DrawRoutine : PROC;
  90.       Parameters  : ADDRESS;
  91.    END;
  92.  
  93.    TYPE Parmblk = RECORD
  94.       ObjectTree    : ADDRESS;
  95.       ObjectIndex   : CARDINAL;
  96.       PreviousState : CARDINAL;
  97.       CurrentState  : CARDINAL;
  98.       ObjectX       : CARDINAL;
  99.       ObjectY       : CARDINAL;
  100.       ObjectWidth   : CARDINAL;
  101.       ObjectHeight  : CARDINAL;
  102.       ClipX         : CARDINAL;
  103.       ClipY         : CARDINAL;
  104.       ClipWidth     : CARDINAL;
  105.       ClipHeight    : CARDINAL;
  106.       Parameters    : ADDRESS;
  107.    END;
  108.  
  109.  
  110.    PROCEDURE GetAddress ( ObjectTree  : INTEGER;
  111.                           ObjectIndex : INTEGER ) : ObjectPtr;
  112.  
  113.       (* Return a pointer to the specified object in a graphic *)
  114.       (* icon tree.                                            *)
  115.  
  116.  
  117.    PROCEDURE GetRegion ( Tree       : INTEGER;
  118.                          Object     : INTEGER;
  119.                          VAR Region : Screen.Box );
  120.  
  121.       (* Get the coordinates and size of the specified object. *)
  122.  
  123.  
  124.    PROCEDURE SetOrigin ( Tree   : INTEGER;
  125.                          Object : INTEGER;
  126.                          Origin : Screen.PixelCoordinate );
  127.  
  128.       (* Set the origin of the object to the specified coordinate. *)
  129.  
  130.  
  131.    PROCEDURE SetSize ( Tree    : INTEGER;
  132.                        Object  : INTEGER;
  133.                        NewSize : Screen.Area );
  134.  
  135.       (* Set the size of the object. *)
  136.  
  137.  
  138.    PROCEDURE Enable (
  139.       Tree    : (* IN *) INTEGER;
  140.       Object  : (* IN *) INTEGER;
  141.       ClipBox : (* IN *) Screen.Box );
  142.  
  143.  
  144.    PROCEDURE Disable (
  145.       Tree    : (* IN *) INTEGER;
  146.       Object  : (* IN *) INTEGER;
  147.       ClipBox : (* IN *) Screen.Box );
  148.  
  149.  
  150.    PROCEDURE Select (
  151.       Tree    : (* IN *) INTEGER;
  152.       Object  : (* IN *) INTEGER;
  153.       ClipBox : (* IN *) Screen.Box );
  154.  
  155.  
  156.    PROCEDURE Deselect (
  157.       Tree    : (* IN *) INTEGER;
  158.       Object  : (* IN *) INTEGER;
  159.       ClipBox : (* IN *) Screen.Box );
  160.  
  161.  
  162.    PROCEDURE Find ( Tree            : INTEGER;
  163.                     MouseCoordinate : Screen.PixelCoordinate;
  164.                     VAR Object      : INTEGER ) : BOOLEAN;
  165.  
  166.       (* Search the tree for an object located under the mouse *)
  167.       (* coordinate.  This routine returns "true" if an object *)
  168.       (* was located, or "false" otherwise.                    *)
  169.  
  170.  
  171.    PROCEDURE Display ( Tree    : INTEGER;
  172.                        Object  : INTEGER;
  173.                        ClipBox : Screen.Box );
  174.  
  175.       (* Display the specified object on the screen.  The object *)
  176.       (* will be clipped to the size specified by "ClipBox".     *)
  177.  
  178.  
  179. END Icon.
  180.  
  181.