#include #include #include #include #include #include #include #include #include "jiff.h" struct Screen *show_iff(); struct ILBM_info *load_iff(); extern struct Screen *OpenScreen(); struct NewScreen ShowNewScreen; struct Screen *EagleScreen, *ControlScreen; struct ILBM_info *EagleInfo, *ControlInfo; void put_ea_cmap(screen, cmap, colors) struct Screen *screen; unsigned char *cmap; int colors; { int i; for (i=0; iViewPort, i, (long)cmap[3*i+0]>>4, (long)cmap[3*i+1]>>4, (long)cmap[3*i+2]>>4); } void show_cleanup() { if (EagleScreen != NULL) CloseScreen(EagleScreen); if (ControlScreen != NULL) CloseScreen(ControlScreen); if (EagleInfo) free_image(EagleInfo); if (ControlInfo) free_image(ControlInfo); } show_init() { EagleScreen = NULL; ControlScreen = NULL; EagleInfo = NULL; ControlInfo = NULL; add_cleanup(show_cleanup, "show"); if(EagleInfo = load_iff("lander.ilbm")) ControlInfo = load_iff("control.ilbm"); } struct Screen *show_iff(info) struct ILBM_info *info; { struct Screen *screen; ShowNewScreen.LeftEdge = 0; ShowNewScreen.TopEdge = 0; ShowNewScreen.Width = info->header.w; ShowNewScreen.Height = info->header.h; ShowNewScreen.Depth = info->header.nPlanes; if((info->viewmode & HAM) != HAM && (info->viewmode & DUALPF) != DUALPF && info->header.nPlanes > 5 ) { info->viewmode |= HAM; } ShowNewScreen.ViewModes = info->viewmode; ShowNewScreen.Type = CUSTOMSCREEN | CUSTOMBITMAP | SCREENQUIET | SCREENBEHIND; ShowNewScreen.Font = NULL; ShowNewScreen.DefaultTitle = NULL; ShowNewScreen.Gadgets = NULL; ShowNewScreen.CustomBitMap = &info->bitmap; if ( (screen = OpenScreen(&ShowNewScreen) ) != NULL) put_ea_cmap(screen, info->cmap, info->colors); ScreenToFront(screen); return screen; } struct ILBM_info *load_iff(file) char *file; { return read_iff(file, 0); } ShowEagle() { if(EagleInfo) EagleScreen = show_iff(EagleInfo); } HideEagle() { if(EagleScreen) { CloseScreen(EagleScreen); EagleScreen = 0; } } ShowControl() { if(ControlInfo) ControlScreen = show_iff(ControlInfo); } HideControl() { if(ControlScreen) { CloseScreen(ControlScreen); ControlScreen = 0; } }