home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GEMini Atari
/
GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso
/
files
/
gnu
/
gchsrc31
/
include
/
screen.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-27
|
3KB
|
112 lines
//////////////////////////////////////////////////////////////////////////////
//
// 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