home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d114 / wblander.lha / WBLander / Source / show.c < prev    next >
C/C++ Source or Header  |  1987-11-22  |  2KB  |  121 lines

  1. #include    <exec/types.h>
  2. #include     <exec/nodes.h>
  3. #include    <exec/libraries.h>
  4. #include    <graphics/gfx.h>
  5. #include    <graphics/rastport.h>
  6. #include    <graphics/text.h>
  7. #include    <intuition/intuition.h>
  8. #include     <stdio.h>
  9. #include     "jiff.h"
  10.  
  11. struct Screen *show_iff();
  12. struct ILBM_info *load_iff();
  13.  
  14. extern struct Screen *OpenScreen();
  15.  
  16. struct NewScreen ShowNewScreen;
  17.  
  18. struct Screen *EagleScreen, *ControlScreen;
  19.  
  20. struct ILBM_info *EagleInfo, *ControlInfo;
  21.  
  22. void
  23. put_ea_cmap(screen, cmap, colors)
  24. struct Screen *screen;
  25. unsigned char *cmap;
  26. int colors;
  27. {
  28.     int i;
  29.  
  30.     for (i=0; i<colors; i++)
  31.         SetRGB4(&screen->ViewPort, i,
  32.             (long)cmap[3*i+0]>>4, (long)cmap[3*i+1]>>4, (long)cmap[3*i+2]>>4);
  33. }
  34.  
  35. void
  36. show_cleanup()
  37. {
  38.     if (EagleScreen != NULL)
  39.         CloseScreen(EagleScreen);
  40.     if (ControlScreen != NULL)
  41.         CloseScreen(ControlScreen);
  42.     if (EagleInfo) 
  43.         free_image(EagleInfo);
  44.     if (ControlInfo) 
  45.         free_image(ControlInfo);
  46. }
  47.  
  48. show_init()
  49. {
  50.     EagleScreen = NULL;
  51.     ControlScreen = NULL;
  52.     EagleInfo = NULL;
  53.     ControlInfo = NULL;
  54.  
  55.     add_cleanup(show_cleanup, "show");
  56.     if(EagleInfo = load_iff("lander.ilbm"))
  57.         ControlInfo = load_iff("control.ilbm");
  58. }
  59.  
  60. struct Screen *show_iff(info)
  61. struct ILBM_info *info;
  62. {
  63.     struct Screen *screen;
  64.  
  65.     ShowNewScreen.LeftEdge = 0;
  66.     ShowNewScreen.TopEdge = 0;
  67.     ShowNewScreen.Width = info->header.w;
  68.     ShowNewScreen.Height = info->header.h;
  69.     ShowNewScreen.Depth = info->header.nPlanes;
  70.     if((info->viewmode & HAM) != HAM &&
  71.        (info->viewmode & DUALPF) != DUALPF &&
  72.        info->header.nPlanes > 5
  73.     ) {
  74.         info->viewmode |= HAM;
  75.     }
  76.     ShowNewScreen.ViewModes = info->viewmode;
  77.     ShowNewScreen.Type = CUSTOMSCREEN | CUSTOMBITMAP | SCREENQUIET | SCREENBEHIND;
  78.     ShowNewScreen.Font = NULL;
  79.     ShowNewScreen.DefaultTitle = NULL;
  80.     ShowNewScreen.Gadgets = NULL;
  81.     ShowNewScreen.CustomBitMap = &info->bitmap;
  82.     if ( (screen = OpenScreen(&ShowNewScreen) ) != NULL)
  83.         put_ea_cmap(screen, info->cmap, info->colors);
  84.     ScreenToFront(screen);
  85.     return screen;
  86. }
  87.  
  88. struct ILBM_info *load_iff(file)
  89. char *file;
  90. {
  91.     return read_iff(file, 0);
  92. }
  93.  
  94. ShowEagle()
  95. {
  96.     if(EagleInfo)
  97.         EagleScreen = show_iff(EagleInfo);
  98. }
  99.  
  100. HideEagle()
  101. {
  102.     if(EagleScreen) {
  103.         CloseScreen(EagleScreen);
  104.         EagleScreen = 0;
  105.     }
  106. }
  107.  
  108. ShowControl()
  109. {
  110.     if(ControlInfo)
  111.         ControlScreen = show_iff(ControlInfo);
  112. }
  113.  
  114. HideControl()
  115. {
  116.     if(ControlScreen) {
  117.         CloseScreen(ControlScreen);
  118.         ControlScreen = 0;
  119.     }
  120. }
  121.