home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 056.lha / Four / display.c < prev    next >
C/C++ Source or Header  |  1986-11-20  |  3KB  |  112 lines

  1. /* Four in a Row's screen, window and other display structures etc. */
  2.  
  3.  
  4. extern void done();
  5. void init_display(), set_screen(), set_window();
  6. void set_defmap(), set_colormap();
  7.  
  8.  
  9. void set_screen(new_screen, depth, title)
  10. struct NewScreen *new_screen;
  11. SHORT depth;
  12. UBYTE *title;
  13. {
  14.    new_screen-> LeftEdge      =  0;
  15.    new_screen-> TopEdge       =  0;
  16.    new_screen-> Width         =  320*W;
  17.    new_screen-> Height        =  200*H;
  18.    new_screen-> Depth         =  depth;
  19.    new_screen-> DetailPen     =  1;
  20.    new_screen-> BlockPen      =  2;
  21.    new_screen-> ViewModes     =  (W==2 ? HIRES : 0) | (H==2 ? LACE : 0);
  22.    if (depth == 6)   {
  23.       new_screen-> ViewModes |=  EXTRA_HALFBRITE;
  24.    }
  25.    new_screen-> Type          =  CUSTOMSCREEN;
  26.    new_screen-> Font          =  font;
  27.    new_screen-> DefaultTitle  =  title;
  28.    new_screen-> Gadgets       =  NULL;
  29.    new_screen-> CustomBitMap  =  NULL;
  30.  
  31.    return;
  32. }
  33.  
  34.  
  35. void set_window(new_window, left, top, width, height, gadget, title, screen)
  36. struct NewWindow *new_window;
  37. SHORT left, top, width, height;
  38. struct Gadget *gadget;
  39. UBYTE *title;
  40. struct Screen *screen;
  41. {
  42.    new_window-> LeftEdge      =  left;
  43.    new_window-> TopEdge       =  top;
  44.    new_window-> Width         =  width;
  45.    new_window-> Height        =  height;
  46.    new_window-> DetailPen     =  8;
  47.    new_window-> BlockPen      =  1;
  48.    new_window-> IDCMPFlags    =  CLOSEWINDOW | ACTIVEWINDOW | MOUSEBUTTONS |
  49.                                  GADGETUP | MENUPICK;
  50.    new_window-> Flags         =  ACTIVATE | REPORTMOUSE | NOCAREREFRESH |
  51.                                  WINDOWDEPTH | WINDOWCLOSE | WINDOWDRAG |
  52.                                  SMART_REFRESH;
  53.    new_window-> FirstGadget   =  gadget;
  54.    new_window-> CheckMark     =  NULL;
  55.    new_window-> Title         =  title;
  56.    new_window-> Screen        =  screen;
  57.    new_window-> BitMap        =  NULL;
  58.    new_window-> MinWidth      =  0;
  59.    new_window-> MinHeight     =  0;
  60.    new_window-> MaxWidth      =  0;
  61.    new_window-> MaxHeight     =  0;
  62.    new_window-> Type          =  CUSTOMSCREEN;
  63.  
  64.    return;
  65. }
  66.  
  67.  
  68. void init_display(left, top, width, height, depth, title)
  69. SHORT left, top, width, height, depth;
  70. UBYTE *title;
  71. {
  72.    SHORT i;
  73.  
  74.    static struct NewScreen new_screen;
  75.    static struct NewWindow new_window;
  76.  
  77.    set_screen(&new_screen, depth, "");
  78.    if ((screen1=OpenScreen(&new_screen))==NULL) done(4);
  79.  
  80.    set_window(&new_window, left, top, width, height,
  81.               &Gadget1, title, screen1);
  82.    if ((window1=OpenWindow(&new_window))==NULL) done(5);
  83.  
  84.    myviewport = (struct ViewPort *)ViewPortAddress(window1);
  85.    if ((colormap = (struct ColorMap *)GetColorMap(CTSIZ))==NULL) done(6);
  86.    colortable = (USHORT *)colormap->ColorTable;
  87.    for (i=STCOL; i<CTSIZ; i++)
  88.       newcolors[i] = colortable[i];
  89.    set_defmap();
  90.  
  91.    SetMenuStrip(window1, &menu1);
  92.    return;
  93. }
  94.  
  95.  
  96. void set_defmap()
  97. {
  98. register int i;
  99.  
  100.    for (i=0; i<CTSIZ; i++)
  101.       *(colortable+i) = newcolors[i];
  102.    set_colormap();
  103.    return;
  104. }
  105.  
  106.  
  107. void set_colormap()
  108. {
  109.    LoadRGB4(myviewport, colortable, CTSIZ);
  110.    return;
  111. }
  112.