home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_01 / MIDICOM.LZH / MC_UTILS / PURE_C / INCLUDE / CPXDATA.H next >
C/C++ Source or Header  |  1993-02-15  |  7KB  |  173 lines

  1. /*  CPX DATA STRUCTURES
  2.  *==========================================================================
  3.  *  XCPB structure is passed TO the CPX
  4.  *  CPXINFO structure pointer is returned FROM the CPX
  5.  *
  6.  *  xcpb structure is initialized in XCONTROL.C
  7.  */
  8. struct foobar {
  9.     WORD    dummy;
  10.     WORD    *image;
  11.     };
  12.  
  13. typedef struct
  14. {
  15.     WORD x;
  16.     WORD y;
  17.     WORD buttons;
  18.     WORD kstate;
  19. }MRETS;
  20.  
  21. typedef struct {
  22.      short   handle;
  23.      short   booting;
  24.      short   reserved;  
  25.      short   SkipRshFix;
  26.  
  27.      char    *reserve1;
  28.      char    *reserve2;
  29.      
  30.      void cdecl    (*rsh_fix)                    (WORD num_objs, WORD num_frstr,
  31.                                                                      WORD num_frimg, WORD num_tree,
  32.                                                                      OBJECT *rs_object, TEDINFO *rs_tedinfo,
  33.                                                                      char *rs_strings[], ICONBLK *rs_iconblk,
  34.                                                                      BITBLK *rs_bitblk, LONG *rs_frstr,
  35.                                                                      LONG *rs_frimg, LONG *rs_trindex,
  36.                                                                      struct foobar *rs_imdope);
  37.      void cdecl (*rsh_obfix)                (OBJECT *tree, WORD curob);
  38.      WORD cdecl (*Popup)                        (char *items[], WORD num_items,
  39.                                                                      WORD default_item, WORD font_size,
  40.                                                                      GRECT *button, GRECT  *world);
  41.      void cdecl    (*Sl_size)                (OBJECT *tree, WORD base,
  42.                                                                      WORD slider, WORD num_items, WORD visible,
  43.                                                                      WORD direction, WORD min_size);
  44.      void cdecl    (*Sl_x)                    (OBJECT *tree, WORD base, WORD slider,
  45.                                                                       WORD value, WORD num_min, WORD num_max,
  46.                                                                       void (*foo) (void));
  47.      void cdecl    (*Sl_y)                    (OBJECT *tree, WORD base, WORD slider,
  48.                                                                       WORD value, WORD num_min, WORD num_max,
  49.                                                                       void (*foo) (void));
  50.      void cdecl    (*Sl_arrow)            (OBJECT *tree, WORD base,
  51.                                                                      WORD slider, WORD obj, WORD inc, WORD min,
  52.                                                                       WORD max, WORD *numvar,WORD direction,
  53.                                                                       void (*foo) (void));
  54.      void cdecl    (*Sl_dragx)            (OBJECT    *tree, WORD base,
  55.                                                                      WORD slider, WORD min, WORD max,
  56.                                                                      WORD *numvar, void (*foo) (void));
  57.      void cdecl    (*Sl_dragy)            (OBJECT *tree, WORD base,
  58.                                                                      WORD slider, WORD min, WORD max,
  59.                                                                      WORD *numvar, void (*foo) (void));
  60.      int cdecl     (*Xform_do)            (OBJECT *tree, WORD start_field,
  61.                                               WORD *puntmsg);
  62.      GRECT   * cdecl (*GetFirstRect)(GRECT *prect);
  63.      GRECT   * cdecl (*GetNextRect)    (void);
  64.      void cdecl    (*Set_Evnt_Mask)    (WORD mask, MOBLK* m1,
  65.                                                                      MOBLK* m2, long time);
  66.      WORD cdecl         (*XGen_Alert)        (WORD id);
  67.      WORD cdecl         (*CPX_Save)            (void *ptr, LONG num);
  68.      BYTE *cdecl   (*Get_Buffer)        (void);
  69.      WORD cdecl    (*getcookie)            (LONG cookie, LONG *p_value);
  70.      WORD                 Country_Code; 
  71.      void cdecl    (*MFsave)                (WORD saveit, MFORM *mf);        
  72. } XCPB;
  73.  
  74.  
  75. typedef struct 
  76. {
  77.      WORD cdecl    (*cpx_call)        (GRECT *work);
  78.      void cdecl    (*cpx_draw)        (GRECT *clip);
  79.      void cdecl    (*cpx_wmove)    (GRECT *work);
  80.      void cdecl    (*cpx_timer)    (WORD *event);
  81.      void cdecl    (*cpx_key)        (WORD kstate, WORD key, WORD *event);
  82.        void cdecl    (*cpx_button)    (MRETS *mrets, WORD *event);
  83.      void cdecl    (*cpx_m1)            (MRETS *mrets, WORD *event);
  84.      void cdecl    (*cpx_m2)            (MRETS *mrets, WORD *event);
  85.      WORD cdecl    (*cpx_hook)        (WORD event, WORD *msg, MRETS *mrets, 
  86.                                                           WORD *key, WORD *nclicks);
  87.      void cdecl (*cpx_close)    (WORD flag);
  88. }CPXINFO;
  89.  
  90.  
  91.  
  92. /* Object structure macros, useful in dealing with forms
  93.  * ================================================================
  94.  * `tree' must be an OBJECT *
  95.  */
  96. #define SPECIAL        0x40 /* user defined object state */
  97.  
  98. #define ObNext(obj)            ( tree[(obj)].ob_next )
  99. #define ObHead(obj)            ( tree[(obj)].ob_head )
  100. #define ObTail(obj)            ( tree[(obj)].ob_tail )
  101. #define ObFlags(obj)        ( tree[(obj)].ob_flags )
  102. #define ObState(obj)        ( tree[(obj)].ob_state )
  103. #define ObSpec(obj)            ( tree[(obj)].ob_spec )
  104. #define BText(obj)            ( tree[(obj)].ob_spec.free_string )
  105. #define TedText(obj)        ( tree[(obj)].ob_spec.tedinfo->te_ptext )
  106. #define TedTemp(obj)        ( tree[(obj)].ob_spec.tedinfo->te_ptmplt )
  107. #define TedLen(obj)            ( tree[(obj)].ob_spec.tedinfo->te_txtlen )
  108. #define TedTempLen(obj)    ( tree[(obj)].ob_spec.tedinfo->te_tmplen )
  109.  
  110. #define TedJust( obj )  ( tree[(obj)].ob_spec->te_just )
  111. #define TedFont( obj )  ( tree[(obj)].ob_spec->te_font )
  112. #define TedColor( obj ) ( tree[(obj)].ob_spec->te_color )
  113.  
  114. #define ObString(obj)        ( tree[(obj)].ob_spec.free_string )
  115. #define ObX(obj)                 ( tree[(obj)].ob_x )
  116. #define ObY(obj)                 ( tree[(obj)].ob_y )
  117. #define ObW(obj)                 ( tree[(obj)].ob_width )
  118. #define ObH(obj)                 ( tree[(obj)].ob_height )
  119. #define ObRect(obj)         ( *(GRECT *)(&(tree[(obj)].ob_x)) )
  120.  
  121.  
  122. #define Set_tree(obj)            ( rsrc_gaddr(R_TREE,(obj),&tree) )
  123. #define Set_alert(num,s)    ( rsrc_gaddr(R_STRING,(num),&((OBJECT *)(s)) )
  124. #define Set_button(num,s)    ( rsrc_gaddr(R_STRING,(num),&((OBJECT *)(s)) )
  125.  
  126. #define IsSelected(obj)                    ( ObState(obj) & SELECTED )
  127. #define IsEditable(obj)                    ( ObFlags(obj) & EDITABLE )
  128. #define IsSpecial(obj)                    ( ObState(obj) & SPECIAL  )
  129. #define ActiveTree( newtree )        ( tree = newtree )
  130. #define IsDisabled(obj)                    ( ObState(obj) & DISABLED )
  131. #define IsActiveTree( newtree ) ( tree == newtree )
  132.  
  133. /* macros ok when object is not on screen
  134.  */
  135. #define HideObj(obj)                        ( ObFlags(obj) |= HIDETREE )
  136. #define ShowObj(obj)                        ( ObFlags(obj) &= ~HIDETREE )
  137. #define MakeEditable(obj)                ( ObFlags(obj) |= EDITABLE )
  138. #define NoEdit(obj)                            ( ObFlags(obj) &= ~EDITABLE )
  139. #define Select(obj)                            ( ObState(obj) |= SELECTED )
  140. #define Deselect(obj)                        ( ObState(obj) &= ~SELECTED )
  141. #define Disable(obj)                        ( ObState(obj) |= DISABLED )
  142. #define Enable(obj)                            ( ObState(obj) &= ~DISABLED )
  143. #define MarkObj(obj)                        ( ObState(obj) |= SPECIAL  )
  144. #define UnmarkObj(obj)                    ( ObState(obj) &= ~SPECIAL  )
  145. #define SetNormal(obj)                    ( ObState(obj) = NORMAL       )
  146. #define MakeDefault(obj)                ( ObFlags(obj) |= DEFAULT )
  147. #define NoDefault(obj)                    ( ObFlags(obj) &= ~DEFAULT )
  148. #define MakeExit( obj )                    ( ObFlags(obj) |= EXIT )
  149. #define NoExit( obj )                        ( ObFlags(obj) &= ~EXIT )
  150.  
  151.  
  152. /* Shorthand macro to pass parameters for objc_draw() */
  153. #define PTRS(r) r->g_x, r->g_y, r->g_w, r->g_h
  154. #define ELTS(r) r.g_x, r.g_y, r.g_w, r.g_h
  155.  
  156.  
  157.  
  158. #define VERTICAL                0
  159. #define HORIZONTAL            1
  160. #define NULLFUNC    ( void(*)())0L
  161.  
  162. #define SAVE_DEFAULTS        0
  163. #define MEM_ERR                    1
  164. #define FILE_ERR                2
  165. #define FILE_NOT_FOUND    3
  166.  
  167. #define MFSAVE                     1
  168. #define MFRESTORE             0
  169.  
  170.  
  171. /* Additional define from XFORM_DO() */
  172. #define CT_KEY                    53
  173.