home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0678.ZIP / CCE_0678.PD / E_GEM135 / SOURCE / RC_OB_C.C < prev    next >
C/C++ Source or Header  |  1994-03-09  |  3KB  |  160 lines

  1.  
  2. #include "e_gem.h"
  3.  
  4. void ob_dostate(OBJECT *tree, int obj, int state)
  5. {
  6.     tree[obj].ob_state |= state;
  7. }
  8.  
  9. void ob_undostate(OBJECT *tree, int obj, int state)
  10. {
  11.     tree[obj].ob_state &= ~state;
  12. }
  13.  
  14. int ob_isstate(OBJECT *tree, int obj, int state)
  15. {
  16.     if (tree[obj].ob_state & state)
  17.         return 1;
  18.     else
  19.         return 0;
  20. }
  21.  
  22. void ob_doflag(OBJECT *tree, int obj, int flag)
  23. {
  24.     tree[obj].ob_flags |= flag;
  25. }
  26.  
  27. void ob_undoflag(OBJECT *tree, int obj, int flag)
  28. {
  29.     tree[obj].ob_flags &= ~flag;
  30. }
  31.  
  32. int ob_isflag(OBJECT *tree, int obj, int flag)
  33. {
  34.     if (tree[obj].ob_flags & flag)
  35.         return 1;
  36.     else
  37.         return 0;
  38. }
  39.  
  40. void ob_xywh(OBJECT *tree, int obj, GRECT *rec)
  41. {
  42.     *rec = *((GRECT *) &tree[obj].ob_x);
  43. }
  44.  
  45. char **typetest(OBJECT *tree, int obj)
  46. {
  47.     OBJECT *t = tree + obj;
  48.     int ot;
  49.  
  50.     switch ((ot = t->ob_type) & 0xff)
  51.     {
  52.     case G_TEXT:
  53.     case G_FTEXT:
  54.     case G_BOXTEXT:
  55.     case G_FBOXTEXT:
  56.         return &(t->ob_spec.tedinfo->te_ptext);
  57.     case G_STRING:
  58.     case G_BUTTON:
  59.     case G_TITLE:
  60.         return &(t->ob_spec.free_string);
  61.     default:
  62.         if ((ot & ~G_MODAL) == ((ATTR_TEXT << 8) | G_USERDEF))    
  63.             return ((char **) &(t->ob_spec.userblk->ub_parm));        else            return (NULL);
  64.     }
  65. }
  66.  
  67. char *ob_get_text(OBJECT *tree, int obj, int clear)
  68. {
  69.     char **te;
  70.  
  71.     if (te = typetest(tree, obj)) {
  72.         if (clear)
  73.             **te = '\0';
  74.         return *te;
  75.     } else
  76.         return NULL;
  77. }
  78.  
  79. void ob_set_text(OBJECT *tree, int obj, char *text)
  80. {
  81.     char **te;
  82.  
  83.     if (te = typetest(tree, obj))
  84.         *te = text;
  85. }
  86.  
  87. void ob_draw_dialog(OBJECT *tree,int x,int y,int w,int h)
  88. {
  89.     int tx,ty,tw,th;
  90.  
  91.     form_center(tree,&tx,&ty,&tw,&th);
  92.     form_dial(FMD_START,tx,ty,tw,th,tx,ty,tw,th);
  93.  
  94.     if (x|y|w|h)
  95.         form_dial(FMD_GROW,x,y,w,h,tx,ty,tw,th);
  96.     objc_draw(tree,0,MAX_DEPTH,tx,ty,tw,th);
  97. }
  98.  
  99. void ob_undraw_dialog(OBJECT *tree,int x,int y,int w,int h)
  100. {
  101.     int tx,ty,tw,th;
  102.  
  103.     form_center(tree,&tx,&ty,&tw,&th);
  104.     if (x|y|w|h)
  105.         form_dial(FMD_SHRINK,tx,ty,tw,th,x,y,w,h);
  106.     form_dial(FMD_FINISH,tx,ty,tw,th,tx,ty,tw,th);
  107. }
  108.  
  109. #ifdef __GNUC__
  110. int rc_inside(int x, int y, GRECT *rec)
  111. {
  112.     return (x >= rec->g_x && x < rec->g_x + rec->g_w &&
  113.             y >= rec->g_y && y < rec->g_y + rec->g_h);
  114. }
  115. #endif    /* __GNUC__ */
  116.  
  117. #ifdef LATTICE
  118. void rc_grect_to_array(GRECT *rec,int *pxy)
  119. {
  120.     pxy[0] = rec->g_x;
  121.     pxy[1] = rec->g_y;
  122.     pxy[2] = rec->g_x + rec->g_w - 1;
  123.     pxy[3] = rec->g_y + rec->g_h - 1;
  124. }
  125. #endif    /* LATTICE */
  126.  
  127. void rc_array_to_grect(int *pxy,GRECT *rec)
  128. {
  129.     rec->g_x = pxy[0];
  130.     rec->g_y = pxy[1];
  131.     rec->g_w = pxy[2] - pxy[0] + 1;
  132.     rec->g_h = pxy[3] - pxy[1] + 1;
  133. }
  134.  
  135. int EvntMulti(EVENT *evnt_struct)
  136. {
  137.     return (evnt_struct->ev_mwich = evnt_multi(evnt_struct->ev_mflags,
  138.         evnt_struct->ev_mbclicks,
  139.         evnt_struct->ev_bmask,
  140.         evnt_struct->ev_mbstate,
  141.         evnt_struct->ev_mm1flags,
  142.         evnt_struct->ev_mm1x,
  143.         evnt_struct->ev_mm1y,
  144.         evnt_struct->ev_mm1width,
  145.         evnt_struct->ev_mm1height,
  146.         evnt_struct->ev_mm2flags,
  147.         evnt_struct->ev_mm2x,
  148.         evnt_struct->ev_mm2y,
  149.         evnt_struct->ev_mm2width,
  150.         evnt_struct->ev_mm2height,
  151.         evnt_struct->ev_mmgpbuf,
  152.         ((unsigned long)evnt_struct->ev_mthicount << 16) + evnt_struct->ev_mtlocount,
  153.         &evnt_struct->ev_mmox,
  154.         &evnt_struct->ev_mmoy,
  155.         &evnt_struct->ev_mmobutton,
  156.         &evnt_struct->ev_mmokstate,
  157.         &evnt_struct->ev_mkreturn,
  158.         &evnt_struct->ev_mbreturn));
  159. }
  160.