22 #ifndef MUTATIONOFJB_UTIL_H 23 #define MUTATIONOFJB_UTIL_H 25 #include "common/rect.h" 27 #include "graphics/managed_surface.h" 28 #include "graphics/surface.h" 36 void reportFileMissingError(
const char *fileName);
40 template<
typename SurfaceType>
42 if (destBounds.
left >= destSurf.w || destBounds.top >= destSurf.h ||
43 destBounds.
right <= 0 || destBounds.bottom <= 0)
47 if (destBounds.
right > destSurf.w) {
48 srcBounds.
right -= destBounds.
right - destSurf.w;
49 destBounds.
right = destSurf.w;
52 if (destBounds.bottom > destSurf.h) {
53 srcBounds.bottom -= destBounds.bottom - destSurf.h;
54 destBounds.bottom = destSurf.h;
57 if (destBounds.top < 0) {
58 srcBounds.top += -destBounds.top;
62 if (destBounds.
left < 0) {
70 template<
typename BlitOp>
78 if (!clipBounds(srcBounds, destBounds, dest))
81 for (
int y = 0; y < srcBounds.
height(); ++y) {
82 const byte *srcP =
reinterpret_cast<const byte *
>(src.
getBasePtr(srcBounds.
left, srcBounds.top + y));
83 const byte *srcEndP = srcP + srcBounds.
width();
84 byte *destP =
reinterpret_cast<byte *
>(dest.
getBasePtr(destBounds.
left, destBounds.top + y));
86 while (srcP != srcEndP) {
87 const byte newColor = blitOp(*srcP, *destP);
88 if (*destP != newColor) {
97 template<
typename BlitOp>
105 if (!clipBounds(srcBounds, destBounds, dest))
109 blit_if(src, srcRect, destSurf,
Common::Point(0, 0), blitOp);
112 template<
typename BlitOp>
114 blit_if(src,
Common::Rect(0, 0, src.
w, src.
h), dest, destPos, blitOp);
117 template<
typename BlitOp>
119 blit_if(src,
Common::Rect(0, 0, src.
w, src.
h), dest, destPos, blitOp);
Definition: managed_surface.h:51
int16 h
Definition: surface.h:76
Surface getSubArea(const Common::Rect &area)
Definition: managed_surface.h:772
int16 right
Definition: rect.h:146
const void * getBasePtr(int x, int y) const
Definition: surface.h:138
int16 width() const
Definition: rect.h:192
Definition: animationdecoder.h:36
Definition: algorithm.h:29
int16 left
Definition: rect.h:145
int16 x
Definition: rect.h:46
bool isValidRect() const
Definition: rect.h:338
int16 y
Definition: rect.h:47
int16 w
Definition: surface.h:71
PixelFormat format
Definition: surface.h:95
PixelFormat & format
Definition: managed_surface.h:126
int16 height() const
Definition: rect.h:193