22 #ifndef GRAPHICS_MANAGED_SURFACE_H 23 #define GRAPHICS_MANAGED_SURFACE_H 25 #include "graphics/pixelformat.h" 26 #include "graphics/surface.h" 27 #include "graphics/transform_struct.h" 28 #include "common/types.h" 29 #include "graphics/blit.h" 31 #define MS_RGB(R,G,B) (uint32)(((R) << 24) | ((G) << 16) | ((B) << 8) | 0xff) 32 #define MS_ARGB(A,R,G,B) (uint32)(((R) << 24) | ((G) << 16) | ((B) << 8) | (A)) 62 DisposeAfterUse::Flag _disposeAfterUse;
80 uint _transparentColor;
81 bool _transparentColorSet;
98 const Common::Rect &destRect, uint32 transColor,
bool flipped, uint32 overrideColor,
99 uint32 srcAlpha,
const Palette *srcPalette,
const Palette *dstPalette,
100 const Surface *mask,
bool maskOnly);
106 return _innerSurface.
clip(srcBounds, destBounds);
169 operator const Surface &()
const {
return _innerSurface; }
179 Surface *surfacePtr() {
return &_innerSurface; }
191 bool empty()
const {
return w == 0 || h == 0 || _innerSurface.
getPixels() ==
nullptr; }
207 return _innerSurface.
getPixel(x, y);
218 return _innerSurface.
setPixel(x, y, pixel);
260 virtual void create(int16 width, int16 height);
365 uint32 overrideColor = 0, uint32 srcAlpha = 0xff,
const Palette *srcPalette =
nullptr);
380 uint32 transColor = 0,
bool flipped =
false, uint32 overrideColor = 0, uint32 srcAlpha = 0xff,
const Palette *srcPalette =
nullptr);
418 uint32 transColor = 0,
bool flipped =
false, uint32 overrideColor = 0, uint32 srcAlpha = 0xff,
const Palette *srcPalette =
nullptr);
448 uint32 transColor = 0,
bool flipped =
false, uint32 overrideColor = 0, uint32 srcAlpha = 0xff,
449 const Surface *mask =
nullptr,
bool maskOnly =
false,
const Palette *srcPalette =
nullptr);
462 uint32 overrideColor = 0, uint32 srcAlpha = 0xff);
476 uint32 transColor = 0,
bool flipped =
false, uint32 overrideColor = 0, uint32 srcAlpha = 0xff);
501 uint32 transColor = 0,
bool flipped =
false, uint32 overrideColor = 0, uint32 srcAlpha = 0xff);
519 uint32 transColor = 0,
bool flipped =
false, uint32 overrideColor = 0, uint32 srcAlpha = 0xff,
520 const Surface *mask =
nullptr,
bool maskOnly =
false);
528 destPos.
y + srcRect.
height()), src._palette);
555 const int posX = 0,
const int posY = 0,
556 const int flipping = FLIP_NONE,
558 const uint colorMod = MS_ARGB(255, 255, 255, 255),
559 const int width = -1,
const int height = -1,
560 const TSpriteBlendMode blend = BLEND_NORMAL,
561 const AlphaType alphaType = ALPHA_FULL);
563 const int posX = 0,
const int posY = 0,
564 const int flipping = FLIP_NONE,
566 const uint colorMod = MS_ARGB(255, 255, 255, 255),
567 const int width = -1,
const int height = -1,
568 const TSpriteBlendMode blend = BLEND_NORMAL,
569 const AlphaType alphaType = ALPHA_FULL);
574 void clear(uint32 color = 0);
586 void copyRectToSurface(
const void *buffer,
int srcPitch,
int destX,
int destY,
int width,
int height) {
632 void drawLine(
int x0,
int y0,
int x1,
int y1, uint32 color) {
633 _innerSurface.
drawLine(x0, y0, x1, y1, color);
640 void drawThickLine(
int x0,
int y0,
int x1,
int y1,
int penX,
int penY, uint32 color) {
641 _innerSurface.
drawThickLine(x0, y0, x1, y1, penX, penY, color);
648 void hLine(
int x,
int y,
int x2, uint32 color) {
649 _innerSurface.
hLine(x, y, x2, color);
656 void vLine(
int x,
int y,
int y2, uint32 color) {
657 _innerSurface.
vLine(x, y, y2, color);
723 _transparentColor = color;
724 _transparentColorSet =
true;
731 _transparentColorSet =
false;
738 return _transparentColorSet;
754 void grabPalette(byte *colors, uint start, uint num)
const;
759 void setPalette(
const byte *colors, uint start, uint num);
void clear(uint32 color=0)
Definition: managed_surface.h:51
void convertToInPlace(const PixelFormat &dstFormat)
Definition: managed_surface.h:695
const Common::Rect getBounds() const
Definition: managed_surface.h:305
static PixelFormat getSupportedPixelFormat()
Definition: blit.h:337
int16 & w
Definition: managed_surface.h:110
uint getTransparentColor() const
Definition: managed_surface.h:717
Common::Rect blendBlitTo(ManagedSurface &target, const int posX=0, const int posY=0, const int flipping=FLIP_NONE, const Common::Rect *srcRect=nullptr, const uint colorMod=(uint32)(((255)<< 24)|((255)<< 16)|((255)<< 8)|(255)), const int width=-1, const int height=-1, const TSpriteBlendMode blend=BLEND_NORMAL, const AlphaType alphaType=ALPHA_FULL)
Renders this surface onto target.
virtual void addDirtyRect(const Common::Rect &r)
bool clip(Common::Rect &srcBounds, Common::Rect &destBounds) const
Definition: managed_surface.h:105
Surface getSubArea(const Common::Rect &area)
void copyRectToSurfaceWithKey(const void *buffer, int srcPitch, int destX, int destY, int width, int height, uint32 key)
Definition: managed_surface.h:604
virtual void create(int16 width, int16 height)
void rawBlitFrom(const ManagedSurface &src, const Common::Rect &srcRect, const Common::Point &destPos)
Definition: managed_surface.h:525
void convertToInPlace(const PixelFormat &dstFormat)
Definition: surface.h:358
Surface getSubArea(const Common::Rect &area)
Definition: managed_surface.h:681
static bool isBlendBlitPixelFormatSupported(const PixelFormat &src, const PixelFormat &dst)
Definition: managed_surface.h:536
virtual void clearDirtyRects()
Definition: managed_surface.h:288
int32 & pitch
Definition: managed_surface.h:112
void * getBasePtr(int x, int y)
Definition: managed_surface.h:241
DisposeAfterUse::Flag disposeAfterUse() const
Definition: managed_surface.h:196
void setTransparentColor(uint32 color)
Definition: managed_surface.h:722
void clearTransparentColor()
Definition: managed_surface.h:730
const void * getBasePtr(int x, int y) const
Definition: managed_surface.h:229
void transBlitFromInner(const Surface &src, const Common::Rect &srcRect, const Common::Rect &destRect, uint32 transColor, bool flipped, uint32 overrideColor, uint32 srcAlpha, const Palette *srcPalette, const Palette *dstPalette, const Surface *mask, bool maskOnly)
void drawLine(int x0, int y0, int x1, int y1, uint32 color)
Definition: managed_surface.h:632
void copyRectToSurfaceWithKey(const void *buffer, int srcPitch, int destX, int destY, int width, int height, uint32 key)
void transBlitFrom(const Surface &src, uint32 transColor=0, bool flipped=false, uint32 overrideColor=0, uint32 srcAlpha=0xff, const Palette *srcPalette=nullptr)
bool empty() const
Definition: managed_surface.h:191
void vLine(int x, int y, int y2, uint32 color)
Definition: managed_surface.h:656
void copyFrom(const ManagedSurface &surf)
void drawThickLine(int x0, int y0, int x1, int y1, int penX, int penY, uint32 color)
Definition: managed_surface.h:640
bool hasTransparentColor() const
Definition: managed_surface.h:737
bool clip(Common::Rect &srcBounds, Common::Rect &destBounds) const
void blitFrom(const Surface &src, const Palette *srcPalette=nullptr)
int16 & h
Definition: managed_surface.h:111
const void * getBasePtr(int x, int y) const
Definition: surface.h:137
int16 width() const
Definition: rect.h:191
void hLine(int x, int y, int x2, uint32 color)
void copyRectToSurface(const Graphics::Surface &srcSurface, int destX, int destY, const Common::Rect subRect)
Definition: managed_surface.h:595
void * getPixels()
Definition: managed_surface.h:248
void drawThickLine(int x0, int y0, int x1, int y1, int penX, int penY, uint32 color)
Definition: formatinfo.h:28
virtual ~ManagedSurface()
const Surface & rawSurface() const
Definition: managed_surface.h:178
void drawLine(int x0, int y0, int x1, int y1, uint32 color)
void frameRect(const Common::Rect &r, uint32 color)
const Common::Point getOffsetFromOwner() const
Definition: managed_surface.h:300
void setPixel(int x, int y, int pixel)
Definition: surface.h:182
int16 x
Definition: rect.h:46
void fillRect(Common::Rect r, uint32 color)
Definition: managed_surface.h:664
void frameRect(const Common::Rect &r, uint32 color)
Definition: managed_surface.h:672
int16 y
Definition: rect.h:47
void blitFromInner(const Surface &src, const Common::Rect &srcRect, const Common::Rect &destRect, const Palette *srcPalette)
T MIN(T a, T b)
Definition: util.h:59
void grabPalette(byte *colors, uint start, uint num) const
ManagedSurface & operator=(const ManagedSurface &surf)
PixelFormat & format
Definition: managed_surface.h:113
T MAX(T a, T b)
Definition: util.h:62
void vLine(int x, int y, int y2, uint32 color)
void hLine(int x, int y, int x2, uint32 color)
Definition: managed_surface.h:648
uint32 getPixel(int x, int y) const
Definition: managed_surface.h:206
Simple class for handling a palette data.
Definition: palette.h:39
void copyRectToSurfaceWithKey(const Graphics::Surface &srcSurface, int destX, int destY, const Common::Rect subRect, uint32 key)
Definition: managed_surface.h:613
void fillRect(Common::Rect r, uint32 color)
void copyRectToSurface(const void *buffer, int srcPitch, int destX, int destY, int width, int height)
void setPalette(const byte *colors, uint start, uint num)
const void * getPixels() const
Definition: managed_surface.h:250
uint32 getPixel(int x, int y) const
Definition: surface.h:161
void setPixel(int x, int y, uint32 pixel)
Definition: managed_surface.h:217
void convertToInPlace(const PixelFormat &dstFormat, const byte *palette, uint16 paletteCount)
Definition: managed_surface.h:710
virtual void setPixels(void *newPixels)
const void * getPixels() const
Definition: surface.h:107
int16 height() const
Definition: rect.h:192
void copyRectToSurface(const void *buffer, int srcPitch, int destX, int destY, int width, int height)
Definition: managed_surface.h:586
Definition: display_client.h:78