home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / diskutil / mutate / gem.c next >
Encoding:
C/C++ Source or Header  |  1990-05-13  |  3.5 KB  |  176 lines

  1. #include <aes.h>
  2. #include "gemext.h"
  3. #include <mydefs.h>
  4.  
  5. /*******************************
  6.     GEM Related Functions
  7. *******************************/
  8.  
  9. /***********************************
  10.     Will put dialog box on screen
  11.     and return exit object after
  12.     erasing it.
  13. ***********************************/
  14. void erase_dialog(
  15.     int    x,
  16.     int    y,
  17.     int    w,
  18.     int    h    )
  19.     {
  20.     int sx,sy;
  21.     sx=x+(w/2);
  22.     sy=y+(h/2);
  23.     form_dial(FMD_SHRINK,sx,sy,0,0,x,y,w,h);
  24.     form_dial(FMD_FINISH,sx,sy,0,0,x,y,w,h);
  25.     }
  26.  
  27. void draw_dialog(
  28.     int        box_ind,
  29.     int        *x,
  30.     int        *y,
  31.     int        *w,
  32.     int        *h,
  33.     char    draw    )
  34.     {
  35.     int        sx,sy;
  36.     
  37.     form_center(rs_trindex[box_ind],x,y,w,h);
  38.     sx=*x+(*w/2);
  39.     sy=*y+(*h/2);
  40.     
  41.     form_dial(FMD_START,sx,sy,0,0,*x,*y,*w,*h); 
  42.     form_dial(FMD_GROW,sx,sy,0,0,*x,*y,*w,*h);
  43.     if (draw) objc_draw(rs_trindex[box_ind],0,10,*x,*y,*w,*h);
  44.     }
  45.     
  46. void dial_draw(
  47.     int box_ind,
  48.     int    obj    )
  49.     {
  50.     int        x1,y1;
  51.     OBJECT    *redraw;
  52.     
  53.     redraw = &rs_object[rs_trloc[box_ind]+obj];
  54.     objc_offset(rs_trindex[box_ind],obj,&x1,&y1);
  55.     objc_draw(rs_trindex[box_ind],0,10,x1,y1,redraw->ob_width,redraw->ob_height);
  56.     }
  57.  
  58. void drawout(
  59.     int box,
  60.     int    item)
  61.     {
  62.     int        x1,y1;
  63.     OBJECT    *redraw;
  64.     
  65.     redraw = &rs_object[rs_trloc[box]+item];
  66.     objc_offset(rs_trindex[box],item,&x1,&y1);
  67.     objc_draw(rs_trindex[box],0,10,x1-10,y1-10,redraw->ob_width+20,redraw->ob_height+20);
  68.     }
  69.  
  70. void unselabl(
  71.     int box,
  72.     int item)
  73.     {
  74.     rs_object[rs_trloc[box]+item].ob_flags &= UNSELABL;
  75.     rs_object[rs_trloc[box]+item].ob_state |= DISABLED;
  76.     }
  77.  
  78. void unselect(
  79.     int box,
  80.     int item)
  81.     {
  82.     rs_object[rs_trloc[box]+item].ob_state &= UNSELECT;
  83.     }
  84.  
  85. void select(int box, int item)
  86.     {
  87.     rs_object[rs_trloc[box]+item].ob_state |= SELECTED;
  88.     }
  89.  
  90. int selected(
  91.     int box,
  92.     int item)
  93.     {
  94.     return(rs_object[rs_trloc[box]+item].ob_state & SELECTED);
  95.     }
  96.  
  97. void defshado(int box, int item, int last)
  98.     {
  99.     rs_object[rs_trloc[box]+last].ob_flags &= UNDEFAULT;
  100.     rs_object[rs_trloc[box]+last].ob_state &= UNSHADOWED;
  101.     rs_object[rs_trloc[box]+item].ob_flags |= DEFAULT;
  102.     rs_object[rs_trloc[box]+item].ob_state |= SHADOWED;
  103.     }
  104.  
  105. int    exit_dialog(
  106.     int box_ind,
  107.     int    x,
  108.     int    y,
  109.     int    w,
  110.     int    h,
  111.     int    draw    )
  112.     {
  113.     int     e;
  114.     
  115.     if (draw) objc_draw(rs_trindex[box_ind],0,10,x,y,w,h);
  116.     e = form_do(rs_trindex[box_ind],0);
  117.     unselect(box_ind,e);
  118.     dial_draw(box_ind,e);
  119.     return(e);
  120.     }
  121.  
  122. int exitdflt(int box,int last)
  123.     {
  124.     int e;
  125.     e = form_do(rs_trindex[box],0);
  126.     unselect(box,e);
  127.     defshado(box,e,last);
  128.     drawout(box,e);
  129.     drawout(box,last);
  130.     return(e);
  131.     }
  132.     
  133.  
  134. void redraw_dialog(
  135.     int    box_ind,
  136.     int    x,
  137.     int    y,
  138.     int    w,
  139.     int    h    )
  140.     {
  141.     objc_draw(rs_trindex[box_ind],0,10,x,y,w+5,h+5);
  142.     }
  143.  
  144. void dial2_draw(
  145.     int box_ind,
  146.     int    obj1,
  147.     int    obj2    )
  148.     {
  149.     int        x1,y1;
  150.     int        x2,y2;
  151.     int        w,h;
  152.     OBJECT    *redraw1,*redraw2;
  153.     
  154.     redraw1 = &rs_object[rs_trloc[box_ind]+obj1];
  155.     redraw2 = &rs_object[rs_trloc[box_ind]+obj2];
  156.     objc_offset(rs_trindex[box_ind],obj1,&x1,&y1);
  157.     objc_offset(rs_trindex[box_ind],obj2,&x2,&y2);
  158.     w = x2-x1+redraw2->ob_width;
  159.     h = y2-y1+redraw2->ob_height;
  160.     if (w < redraw1->ob_width)    w = redraw1->ob_width;
  161.     if (h < redraw1->ob_height)    h = redraw1->ob_height;
  162.     objc_draw(rs_trindex[box_ind],0,10,x1,y1,w,h);
  163.     }
  164.  
  165. void objc_set(int box, int item, int x, int y)
  166.     {
  167.     int x1,y1;
  168.     OBJECT *redraw;
  169.  
  170.     redraw = &rs_object[rs_trloc[box]+item];
  171.     objc_offset(rs_trindex[box],item,&x1,&y1);
  172.     redraw->ob_x=x;
  173.     redraw->ob_y=y;
  174.     objc_draw(rs_trindex[box],0,10,x,y,redraw->ob_width,redraw->ob_height);
  175.     objc_draw(rs_trindex[box],0,10,x1,y1,redraw->ob_width,redraw->ob_height);
  176.     }