home *** CD-ROM | disk | FTP | other *** search
- /*
-
- ------------------------------------------------------------------
-
- Black Nebula
-
- File : viewports.c
- Programmer: Colin Adams
- Date: 26/4/91
- Last Modified : 10/6/91
-
- Description:
-
- Allocates two bitmapped views for the main display.
-
- ------------------------------------------------------------------
-
- */
-
- #define AMIGA_INCLUDES
- #include "3d.h"
-
-
- extern UWORD Palette2[];
- extern short swapflag, store1, store2;
-
- struct View my_view;
- struct View back_view;
-
- struct View *my_old_view;
-
- struct ViewPort my_view_port;
- struct ViewPort back_view_port;
-
- struct RasInfo my_ras_info;
- struct RasInfo back_ras_info;
-
- struct BitMap my_bit_map;
- struct BitMap back_bit_map;
-
- struct RastPort my_rast_port;
- struct RastPort back_rast_port;
-
- void SetUpViews(void)
- {
- UWORD *pointer;
- int loop;
- char *temppoint, *temp2;
-
- my_old_view = GfxBase->ActiView;
-
- InitView(&my_view);
- InitView(&back_view);
-
- my_view.ViewPort = &my_view_port;
- back_view.ViewPort = &back_view_port;
-
- InitVPort(&my_view_port);
- InitVPort(&back_view_port);
-
- back_view_port.DWidth = my_view_port.DWidth = G;
- back_view_port.DHeight = my_view_port.DHeight = HEIGHT;
-
- my_view_port.RasInfo = &my_ras_info;
- my_view_port.Modes = NULL;
-
- back_view_port.RasInfo = &back_ras_info;
- back_view_port.Modes = NULL;
-
- my_view_port.ColorMap = (struct ColorMap *) GetColorMap(COLOURS);
- if(my_view_port.ColorMap == NULL)
- CleanUpandExit();
-
- back_view_port.ColorMap = (struct ColorMap *) GetColorMap(COLOURS);
- if(back_view_port.ColorMap == NULL)
- CleanUpandExit();
-
- pointer = (UWORD *) my_view_port.ColorMap->ColorTable;
-
- for(loop = 0; loop<COLOURS; loop++)
- *pointer++ = Palette2[loop];
-
- pointer = (UWORD *) back_view_port.ColorMap->ColorTable;
-
- for(loop = 0; loop < COLOURS; loop++)
- *pointer++ = Palette2[loop];
-
- InitBitMap(&my_bit_map, DEPTH, G, HEIGHT);
- InitBitMap(&back_bit_map, DEPTH, G, HEIGHT);
-
- temppoint = AllocMem(40960, MEMF_CHIP);
- if(!temppoint)
- CleanUpandExit();
-
- temp2 = AllocMem(40960, MEMF_CHIP);
- if(!temp2)
- CleanUpandExit();
-
- for(loop=0; loop<DEPTH; loop++)
- {
- my_bit_map.Planes[loop] = (PLANEPTR) temppoint + 10240*loop;
- back_bit_map.Planes[loop] = (PLANEPTR) temp2 + 10240*loop;
- }
-
- BltClear(temppoint, 40960, 0);
- BltClear(temp2, 40960, 0);
-
- my_ras_info.BitMap = &my_bit_map;
- my_ras_info.RxOffset = 0;
- my_ras_info.RyOffset = 0;
- my_ras_info.Next = NULL;
-
- back_ras_info.BitMap = &back_bit_map;
- back_ras_info.RxOffset = 0;
- back_ras_info.RyOffset = 0;
- back_ras_info.Next = NULL;
-
-
- /* Create the display: */
-
- MakeVPort(&my_view, &my_view_port);
- MakeVPort(&back_view, &back_view_port);
-
- MrgCop(&my_view);
- MrgCop(&back_view);
-
- InitRastPort( &my_rast_port );
- my_rast_port.BitMap = &my_bit_map;
-
- InitRastPort( &back_rast_port );
- back_rast_port.BitMap = &back_bit_map;
-
- InitArea(&my_area_info, areabuffer, MAX_POINTS);
-
- back_rast_port.AreaInfo = my_rast_port.AreaInfo = &my_area_info;
-
- if(!(extra_space = (PLANEPTR) AllocRaster(G,256)))
- CleanUpandExit();
-
- back_rast_port.TmpRas = my_rast_port.TmpRas = (struct TmpRas *)
- InitTmpRas(&my_temp_ras, (APTR) extra_space, RASSIZE(G,HEIGHT));
-
- rastport = &back_rast_port;
-
- BNDRYOFF(&my_rast_port); /* no boundaries around objects */
- BNDRYOFF(&back_rast_port);
-
- loadpic("screen.iff");
- LoadView(&my_view);
- }
-
- void FreeView(void)
- {
- LoadView(my_old_view);
-
- FreeVPortCopLists(&my_view_port);
- FreeVPortCopLists(&back_view_port);
-
- FreeCprList(my_view.LOFCprList);
- FreeCprList(back_view.LOFCprList);
-
- if(my_bit_map.Planes[0])
- FreeMem(my_bit_map.Planes[0], 40960);
-
- if(back_bit_map.Planes[0])
- FreeMem(back_bit_map.Planes[0], 40960);
-
- if(my_view_port.ColorMap) FreeColorMap(my_view_port.ColorMap);
- if(back_view_port.ColorMap) FreeColorMap(back_view_port.ColorMap);
- if(extra_space)
- FreeRaster(extra_space, G, 256);
- swapflag = 1;
- store1 = store2 = 0;
- active_list[0] = NULL;
- }
-
- /* end of module views.c */
-