home *** CD-ROM | disk | FTP | other *** search
- //////////////////////////////////////////////////////////////////////////////
- //
- // This file is part of the Atari Machine Specific Library,
- // and is Copyright 1992 by Warwick W. Allison.
- //
- // You are free to copy and modify these sources, provided you acknoledge
- // the origin by retaining this notice, and adhere to the conditions
- // described in the file COPYING.
- //
- //////////////////////////////////////////////////////////////////////////////
-
- #ifndef _Screen_h
- #define _Screen_h
- //
- // Support for direct Atari screens.
- //
- // Screens are memory areas (possibly extending above and below the
- // visible area) with palettes. Palettes are fairly independent, but
- // are included here, because most picture file formats include the
- // palette in the file.
- //
- // One good thing. Palette is spelt correctly!
- //
- // The LoadDegas and SaveDegas routines support TT resolutions as
- // logical extensions (all still have 16 colours, except TTLow which
- // has 256 colours). LoadCrackArt and SaveCrackArt routines also
- // support TT resolutions logically.
- //
- // Note that CrackArt is a compressed format.
- //
- // Recommended suffixes:
- //
- // CrackArt Degas Resolution Getrez()
- // CA1 PI1 STLow 0
- // CA2 PI2 STMedium 1
- // CA3 PI3 STHigh 2
- // CA8 PI8 TTLow 7
- // CA5 PI5 TTMedium 4
- // CA6 PI6 TTHigh 5
- //
- // ie.
- // "CA"+('1'+Resolution)
- // "PI"+('1'+Resolution)
- //
-
- #include "resolution.h"
- #include "osbind.h"
-
- #define DESKSCREEN ((char *)0)
-
-
- class Screen {
- private:
- char *AllocArea;
- long AllocSize;
- char *location;
- Resolution Res;
- short *Palette;
-
- public:
- Screen(const Screen&); // Copy image & Palette
- Screen(Resolution);
- Screen(Resolution, short LinesAbove, short LinesBelow);
- Screen(short LinesAbove, short LinesBelow);
- Screen(); // In current resolution
- Screen(char *At); // DESKSCREEN = current screen, else specify desired location
- ~Screen();
-
- void Clear();
-
- int LoadDegas(const char *);
- int SaveDegas(const char *);
- int LoadDegasPalette(const char *);
- int LoadCrackArtPalette(const char *);
- int LoadCrackArt(const char *);
- int SaveCrackArt(const char *, int Compression=3);
- // Compression 0 = minimal compression attempt
- // Compression 8 = maximal compression attempt
-
- void ShowPalette();
- void Show(); // Physically show
- void Use(); // Logically activate (for VDI/BIOS writes)
-
- short* Colour(); // Returns array of RGB
-
- char *Location();
- Resolution Rez();
- };
-
- class PaletteChange // Resolution sensitive
- {
- public:
- PaletteChange();
- ~PaletteChange();
-
- private:
- short *col;
- short ncols;
- };
-
- // Always inline:
-
- inline char* Screen::Location() { return location; }
- inline Resolution Screen::Rez() { return Res; }
- inline void Screen::ShowPalette() { Setpallete(Palette); }
- inline void Screen::Show() { Setscreen(-1,location,-1); }
- inline void Screen::Use() { Setscreen(location,-1,-1); }
- inline short* Screen::Colour() { return Palette; }
-
-
- #endif
-