•  Back 
  •  AES structures 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - The Operating System
Author      : 
Version     : tos.hyp (December 19, 2008)
Subject     : Programmieren/Atari
Nodes       : 3010
Index Size  : 93790
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Title
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File8.22.26  PARMBLK                                                   TOS

typedef struct
{
   OBJECT   *pb_tree;        /* Pointer to the object tree         */
   int16_t  pb_obj;          /* Index of the object                */
   int16_t  pb_prevstate;    /* Previous object status             */
   int16_t  pb_currstate;    /* New object status                  */
   int16_t  pb_x;            /* X-position of the object           */
   int16_t  pb_y;            /* Y-position of the object           */
   int16_t  pb_w;            /* Width of the object                */
   int16_t  pb_h;            /* Height of the object               */
   int16_t  pb_xc;           /* X-position of the clipping region  */
   int16_t  pb_yc;           /* Y-position of the clipping region  */
   int16_t  pb_wc;           /* Width of the clipping region       */
   int16_t  pb_hc;           /* Height of the clipping region      */
   int32_t  pb_parm;         /* Parameter of USERBLK structure     */
} PARMBLK;

Note: The object only needs to be redrawn if the old and new states 
are identical; otherwise an 'update' of the object tree suffices. 
Furthermore, the following points should be respected:

   . A private function must return to the AES in data register d0 
     which aspects of the object status still have to be updated. With 
     this it is not absolutely necessary to program out the code for 
     inverting the object in a private output function. Generally one 
     would want to process some bits of the object status oneself, and 
     leave others to the AES.

   . The function receives the PARMBLK pointer on the stack, and hence 
     must be declared in Pure-C as 'cdecl'.

   . A complete redraw of the object is required only if the compo 
     nents pb_prevstate and pb_currstate are identical; otherwise only 
     the obects status has changed (for example by being clicked on).

   . A private function is executed de facto as a sub-program of the 
     AES, hence one should take care with regard to stack usage. 
     Furthermore, one can of course make no further AES calls, since 
     the AES is not re-entrant. On the other hand, calls of the VDI 
     input functions are permitted here.

   . The component pb_parm serves to pass to one's private function 
     further information (such as a pointer to a string, perhaps).

   . One should not stray too far from the original appearance of GEM. 
     Rounded rectangles or italic texts certainly do not match the 
     normal appearance of a GEM application.

See Also: About the AES   GEM   USERBLK