22 #ifndef MEDIASTATION_GRAPHICS_H 23 #define MEDIASTATION_GRAPHICS_H 25 #include "common/rect.h" 26 #include "common/array.h" 27 #include "common/stack.h" 28 #include "graphics/managed_surface.h" 29 #include "graphics/screen.h" 31 #include "mediastation/clients.h" 32 #include "mediastation/events.h" 33 #include "mediastation/mediascript/scriptvalue.h" 37 class MediaStationEngine;
38 struct DissolvePattern;
42 kUncompressedBlit = 0x00,
45 kUncompressedTransparentBlit = 0x08,
46 kPartialDissolve = 0x10,
51 kColorCellCompressionBlit = 0x40,
52 kColorCellCompressionTransparentBlit = 0x80
56 kTransitionFadeToBlack = 300,
57 kTransitionFadeToPalette = 301,
58 kTransitionSetToPalette = 302,
59 kTransitionSetToBlack = 303,
60 kTransitionFadeToColor = 304,
61 kTransitionSetToColor = 305,
62 kTransitionSetToPercentOfPalette = 306,
63 kTransitionFadeToPaletteObject = 307,
64 kTransitionSetToPaletteObject = 308,
65 kTransitionSetToPercentOfPaletteObject = 309,
66 kTransitionColorShiftCurrentPalette = 310,
67 kTransitionScrollLeft = 311,
68 kTransitionScrollRight = 312,
69 kTransitionScrollUp = 313,
70 kTransitionScrollDown = 314,
71 kTransitionWipeLeft = 315,
72 kTransitionWipeRight = 316,
73 kTransitionWipeUp = 317,
74 kTransitionWipeDown = 318,
75 kTransitionSlideLeft = 319,
76 kTransitionSlideRight = 320,
77 kTransitionSlideUp = 321,
78 kTransitionSlideDown = 322,
79 kTransitionSlitLROpen = 323,
80 kTransitionSlitLRClose = 324,
81 kTransitionSlitUDOpen = 325,
82 kTransitionSlitUDClose = 326,
83 kTransitionCircleIn = 327,
84 kTransitionCircleOut = 328
86 const char *transitionTypeToStr(TransitionType type);
88 enum VideoDisplayManagerSectionType {
89 kVideoDisplayManagerUpdateDirty = 0x578,
90 kVideoDisplayManagerUpdateAll = 0x579,
91 kVideoDisplayManagerEffectTransition = 0x57a,
92 kVideoDisplayManagerSetTime = 0x57b,
93 kVideoDisplayManagerLoadPalette = 0x5aa,
112 void addToRegion(
const Region ®ion);
127 void setClipTo(
Region region);
128 void emptyCurrentClip();
133 Clip *previousClip();
134 void verifyClipSize();
152 bool printerIsReady();
156 void flushToPrinter();
158 bool _isPortrait =
false;
160 double _leftMargin = -1;
161 double _rightMargin = -1;
162 double _topMargin = -1;
163 double _bottomMargin = -1;
171 void performAutoUpdateAndFlush();
172 void performUpdateAll();
173 void performUpdateDirty();
175 void enableAutoUpdate(uint disabledUpdateDepthCounter);
176 uint disableAutoUpdate();
177 bool needToDisplay();
180 bool _autoUpdateEnabled =
true;
181 bool _forceFlush =
false;
182 uint _disabledScreenAutoUpdateToken = 0;
190 virtual bool attemptToReadFromStream(
Chunk &chunk, uint sectionType)
override;
192 void flushToDisplay();
193 void updateScreen() { _screen->update(); }
195 void setRegisteredPalette(
Graphics::Palette *palette) { _registeredPalette = palette; }
200 double dissolveFactor,
203 bool useTransBlit =
false);
210 const double dissolveFactor,
218 const int16 CCC_BLOCK_DIMENSION = 4;
221 void decompressCccBlock(
225 uint8_t backgroundColor,
226 uint8_t foregroundColor,
230 const uint8_t *transparencyColor =
nullptr);
234 void doTransitionOnSync();
236 void setGammaValues(
double red,
double green,
double blue);
237 void getDefaultGammaValues(
double &red,
double &green,
double &blue);
238 void getGammaValues(
double &red,
double &green,
double &blue);
247 double _defaultTransitionTime = 0.0;
249 const double DEFAULT_GAMMA_VALUE = 1.0;
250 double _redGamma = 1.0;
251 double _greenGamma = 1.0;
252 double _blueGamma = 1.0;
254 void readAndEffectTransition(
Chunk &chunk);
255 void readAndRegisterPalette(
Chunk &chunk);
265 bool useTransBlit =
false);
266 void rleBlitRectsClip(
271 void cccBlitRectsClip(
276 void cccTransparentBlitRectsClip(
281 void dissolveBlitRectsClip(
286 const uint dissolveFactor);
287 void dissolveBlit1Rect(
294 void fullDeltaRleBlitRectsClip(
301 void deltaRleBlitRectsClip(
307 void deltaRleBlit1Rect(
315 const double DEFAULT_FADE_TRANSITION_TIME_IN_SECONDS = 0.5;
316 const byte DEFAULT_PALETTE_TRANSITION_START_INDEX = 0x01;
317 const byte DEFAULT_PALETTE_TRANSITION_COLOR_COUNT = 0xFE;
332 void _setPaletteToColor(
Graphics::Palette &targetPalette, byte r, byte g, byte b);
333 uint _limitColorRange(uint &startIndex, uint &colorCount);
334 byte _interpolateColorComponent(byte source, byte target,
double progress);
336 void _fadeToColor(byte r, byte g, byte b,
double fadeTime, uint startIndex, uint colorCount);
337 void _setToColor(byte r, byte g, byte b, uint startIndex, uint colorCount);
338 void _setPercentToColor(
double percent, byte r, byte g, byte b, uint startIndex, uint colorCount);
340 void _fadeToPalette(
double fadeTime,
Graphics::Palette &targetPalette, uint startIndex, uint colorCount);
342 uint startIndex, uint colorCount);
343 void _fadeToRegisteredPalette(
double fadeTime, uint startIndex, uint colorCount);
344 void _setToRegisteredPalette(uint startIndex, uint colorCount);
345 void _colorShiftCurrentPalette(uint startIndex, uint shiftAmount, uint colorCount);
346 void _fadeToPaletteObject(uint paletteId,
double fadeTime, uint startIndex, uint colorCount);
347 void _setToPaletteObject(uint paletteId, uint startIndex, uint colorCount);
348 void _setPercentToPaletteObject(
double percent, uint paletteId, uint startIndex, uint colorCount);
Definition: managed_surface.h:51
Definition: graphics.h:122
Simple class for handling a palette data.
Definition: palette.h:61