22#ifndef SCI_GRAPHICS_CELOBJ32_H
23#define SCI_GRAPHICS_CELOBJ32_H
25#include "common/rational.h"
26#include "common/rect.h"
27#include "sci/resource/resource.h"
28#include "sci/engine/vm_types.h"
55enum CelCompressionType {
56 kCelCompressionNone = 0,
57 kCelCompressionRLE = 138,
58 kCelCompressionInvalid = 1000
108 inline bool operator==(
const CelInfo32 &other) {
118 inline bool operator!=(
const CelInfo32 &other) {
119 return !(*
this == other);
152#pragma mark CelScaler
203 void activateScaleTables(
const Ratio &scaleX,
const Ratio &scaleY);
210 void buildLookupTable(
int *table,
const Ratio &ratio,
const int size);
223 for (
int i = 1; i <
ARRAYSIZE(_scaleTables); ++i) {
224 _scaleTables[i] = _scaleTables[0];
406 virtual uint8
readPixel(
const uint16 x,
const uint16 y,
const bool mirrorX)
const;
415#pragma mark CelObj - Drawing
417 template<
typename MAPPER,
typename SCALER>
420 template<
typename MAPPER,
typename SCALER>
451#pragma mark CelObj - Caching
480#pragma mark CelObjView
492 bool analyzeUncompressedForRemap()
const;
498 bool analyzeForRemap()
const;
501 CelObjView(
const GuiResourceId viewId,
const int16 loopNo,
const int16 celNo);
506 static int16 getNumLoops(
const GuiResourceId viewId);
507 static int16 getNumCels(
const GuiResourceId viewId,
const int16 loopNo);
522#pragma mark CelObjPic
534 bool analyzeUncompressedForSkip()
const;
553 CelObjPic(
const GuiResourceId pictureId,
const int16 celNo);
564#pragma mark CelObjMem
581#pragma mark CelObjColor
589 CelObjColor(
const uint8 color,
const int16 width,
const int16 height);
Definition: display_client.h:113
Definition: rational.h:40
static String format(MSVC_PRINTF const char *fmt,...) GCC_PRINTF(1
Definition: celobj32.h:587
void draw(Buffer &target, const Common::Rect &targetRect) const
const SciSpan< const byte > getResPointer() const override
CelObjColor * duplicate() const override
void draw(Buffer &target, const ScreenItem &screenItem, const Common::Rect &targetRect, const bool mirrorX) override
void draw(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition, const bool mirrorX) override
Definition: celobj32.h:242
int searchCache(const CelInfo32 &celInfo, int *nextInsertIndex) const
static bool _drawBlackLines
Definition: celobj32.h:252
uint32 _hunkPaletteOffset
Definition: celobj32.h:281
bool _remap
Definition: celobj32.h:326
uint32 _celHeaderOffset
Definition: celobj32.h:275
virtual const SciSpan< const byte > getResPointer() const =0
virtual void draw(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition, const bool mirrorX)
uint16 _width
Definition: celobj32.h:286
bool _drawMirrored
Definition: celobj32.h:260
void drawTo(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition, const Ratio &scaleX, const Ratio &scaleY) const
uint16 _xResolution
Definition: celobj32.h:304
virtual void draw(Buffer &target, const ScreenItem &screenItem, const Common::Rect &targetRect, const bool mirrorX)
virtual CelObj * duplicate() const =0
uint8 _skipColor
Definition: celobj32.h:310
bool _mirrorX
Definition: celobj32.h:333
bool _transparent
Definition: celobj32.h:316
void putCopyInCache(int index) const
void submitPalette() const
Common::Point _origin
Definition: celobj32.h:292
CelInfo32 _info
Definition: celobj32.h:270
bool _isMacSource
Definition: celobj32.h:339
void draw(Buffer &target, const ScreenItem &screenItem, const Common::Rect &targetRect) const
static int _nextCacheId
Definition: celobj32.h:457
CelCompressionType _compressionType
Definition: celobj32.h:321
virtual uint8 readPixel(const uint16 x, const uint16 y, const bool mirrorX) const
static CelCache * _cache
Definition: celobj32.h:463
Definition: celobj32.h:571
const SciSpan< const byte > getResPointer() const override
CelObjMem * duplicate() const override
Definition: celobj32.h:528
void draw(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition, const bool mirrorX) override
Common::Point _relativePosition
Definition: celobj32.h:545
uint8 _celCount
Definition: celobj32.h:540
int16 _priority
Definition: celobj32.h:551
CelObjPic * duplicate() const override
const SciSpan< const byte > getResPointer() const override
Definition: celobj32.h:486
void draw(Buffer &target, const Common::Rect &targetRect, const Common::Point &scaledPosition, bool mirrorX, const Ratio &scaleX, const Ratio &scaleY)
CelObjView * duplicate() const override
const SciSpan< const byte > getResPointer() const override
Definition: celobj32.h:187
const CelScalerTable & getScalerTable(const Ratio &scaleX, const Ratio &scaleY)
Definition: screen_item32.h:53
#define ARRAYSIZE(x)
Definition: util.h:114
@ kCelScalerTableSize
Definition: celobj32.h:158
Definition: celobj32.h:139
int id
Definition: celobj32.h:144
Definition: celobj32.h:64
uint8 color
Definition: celobj32.h:95
CelType type
Definition: celobj32.h:68
int16 loopNo
Definition: celobj32.h:78
reg_t bitmap
Definition: celobj32.h:90
GuiResourceId resourceId
Definition: celobj32.h:73
int16 celNo
Definition: celobj32.h:84
Definition: celobj32.h:161
int valuesX[kCelScalerTableSize]
Definition: celobj32.h:167
Ratio scaleY
Definition: celobj32.h:184
int valuesY[kCelScalerTableSize]
Definition: celobj32.h:179
Ratio scaleX
Definition: celobj32.h:172
Definition: vm_types.h:39