[Scummvm-git-logs] scummvm master -> 547a1d72a3291cdc9e8d326891677c30f28a383b
dreammaster
paulfgilbert at gmail.com
Tue Mar 24 00:42:55 UTC 2020
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
547a1d72a3 ULTIMA8: Some minor shape and render cleanups
Commit: 547a1d72a3291cdc9e8d326891677c30f28a383b
https://github.com/scummvm/scummvm/commit/547a1d72a3291cdc9e8d326891677c30f28a383b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2020-03-23T17:42:52-07:00
Commit Message:
ULTIMA8: Some minor shape and render cleanups
Changed paths:
engines/ultima/ultima8/convert/convert_shape.cpp
engines/ultima/ultima8/graphics/render_surface.h
engines/ultima/ultima8/graphics/shape.h
engines/ultima/ultima8/graphics/shape_frame.h
engines/ultima/ultima8/graphics/soft_render_surface.cpp
engines/ultima/ultima8/graphics/soft_render_surface.h
engines/ultima/ultima8/graphics/soft_render_surface.inl
diff --git a/engines/ultima/ultima8/convert/convert_shape.cpp b/engines/ultima/ultima8/convert/convert_shape.cpp
index 7790ee698d..785a3216ad 100644
--- a/engines/ultima/ultima8/convert/convert_shape.cpp
+++ b/engines/ultima/ultima8/convert/convert_shape.cpp
@@ -631,7 +631,7 @@ bool ConvertShape::CheckUnsafe(IDataSource *source, const ConvertShapeFormat *cs
bool result = true;
// Just to be safe
- int start_pos = source->getPos();
+ const uint32 start_pos = source->getPos();
// Read the ident
if (csf->_bytes_ident)
@@ -739,7 +739,7 @@ bool ConvertShape::CheckUnsafe(IDataSource *source, const ConvertShapeFormat *cs
void ConvertShape::Write(ODataSource *dest, const ConvertShapeFormat *csf, uint32 &write_len)
{
// Just to be safe
- uint32 start_pos = dest->getPos();
+ const uint32 start_pos = dest->getPos();
// Write the ident
if (csf->_bytes_ident) dest->write(csf->_ident, csf->_bytes_ident);
diff --git a/engines/ultima/ultima8/graphics/render_surface.h b/engines/ultima/ultima8/graphics/render_surface.h
index 5a8ab503f3..daf4b806d7 100644
--- a/engines/ultima/ultima8/graphics/render_surface.h
+++ b/engines/ultima/ultima8/graphics/render_surface.h
@@ -207,9 +207,6 @@ public:
// TODO: virtual void PaintHighlightInvis(CachedShape* s, uint32 frame, int32 x, int32 y, bool trans, bool mirrored, uint32 col32);
virtual void PaintHighlightInvis(Shape *s, uint32 frame, int32 x, int32 y, bool trans, bool mirrored, uint32 col32, bool untformed_pal = false) = 0;
- //! Paint a shape masked against destination alpha
- virtual void PaintMasked(Shape *s, uint32 framenum, int32 x, int32 y, bool trans = false, bool mirrored = false, uint32 col32 = 0, bool untformed_pal = false) = 0;
-
//
// Basic Line Drawing
//
diff --git a/engines/ultima/ultima8/graphics/shape.h b/engines/ultima/ultima8/graphics/shape.h
index 35ad75b602..40a331b330 100644
--- a/engines/ultima/ultima8/graphics/shape.h
+++ b/engines/ultima/ultima8/graphics/shape.h
@@ -72,7 +72,7 @@ public:
ENABLE_CUSTOM_MEMORY_ALLOCATION()
-protected:
+private:
// This will load a u8 style shape 'optimized'.
void LoadU8Format(const uint8 *data, uint32 size, const ConvertShapeFormat *format);
diff --git a/engines/ultima/ultima8/graphics/shape_frame.h b/engines/ultima/ultima8/graphics/shape_frame.h
index 897d0d1100..afbe59c52c 100644
--- a/engines/ultima/ultima8/graphics/shape_frame.h
+++ b/engines/ultima/ultima8/graphics/shape_frame.h
@@ -54,7 +54,7 @@ public:
uint8 getPixelAtPoint(int32 x, int32 y) const; // Get the pixel at the point
void getConvertShapeFrame(ConvertShapeFrame &csf);
-protected:
+private:
// This will load a u8 style shape 'optimized'.
void LoadU8Format(const uint8 *data, uint32 size);
diff --git a/engines/ultima/ultima8/graphics/soft_render_surface.cpp b/engines/ultima/ultima8/graphics/soft_render_surface.cpp
index 94435e063d..1498ebc8f8 100644
--- a/engines/ultima/ultima8/graphics/soft_render_surface.cpp
+++ b/engines/ultima/ultima8/graphics/soft_render_surface.cpp
@@ -942,35 +942,6 @@ template<class uintX> void SoftRenderSurface<uintX>::PaintHighlightInvis(Shape *
#undef BLEND_SHAPES
}
-//
-// void SoftRenderSurface::PaintHighlight(Shape* s, uint32 frame, int32 x, int32 y, bool mirrored)
-//
-// Desc: Standard shape drawing functions. Masked against Dest Alpha. Highlights, Clips, and conditionally Flips and Xforms
-//
-
-template<class uintX> void SoftRenderSurface<uintX>::PaintMasked(Shape *s, uint32 framenum, int32 x, int32 y, bool trans, bool mirrored, uint32 col32, bool untformed_pal) {
-#define FLIP_SHAPES
-#define FLIP_CONDITIONAL mirrored
-#define XFORM_SHAPES
-#define XFORM_CONDITIONAL trans
-#define BLEND_SHAPES(src,dst) BlendHighlight(src,cr,cg,cb,ca,255-ca)
-#define DESTALPHA_MASK
-
- uint32 ca = TEX32_A(col32);
- uint32 cr = TEX32_R(col32);
- uint32 cg = TEX32_G(col32);
- uint32 cb = TEX32_B(col32);
-
-#include "ultima/ultima8/graphics/soft_render_surface.inl"
-
-#undef FLIP_SHAPES
-#undef FLIP_CONDITIONAL
-#undef XFORM_SHAPES
-#undef XFORM_CONDITIONAL
-#undef BLEND_SHAPES
-#undef DESTALPHA_MASK
-}
-
//
// Instantiate the SoftRenderSurface Class
//
diff --git a/engines/ultima/ultima8/graphics/soft_render_surface.h b/engines/ultima/ultima8/graphics/soft_render_surface.h
index ce12a3b860..7ef1b5ab08 100644
--- a/engines/ultima/ultima8/graphics/soft_render_surface.h
+++ b/engines/ultima/ultima8/graphics/soft_render_surface.h
@@ -106,10 +106,6 @@ public:
// TODO: virtual void PaintHighlightInvis(CachedShape* s, uint32 frame, int32 x, int32 y, bool trans, bool mirrored, uint32 col32);
void PaintHighlightInvis(Shape *s, uint32 frame, int32 x, int32 y, bool trans, bool mirrored, uint32 col32, bool untformed_pal = false) override;
- // Paint a shape masked against destination alpha
- void PaintMasked(Shape *s, uint32 framenum, int32 x, int32 y, bool trans, bool mirrored, uint32 col32 = 0, bool untformed_pal = false) override;
-
-
//
// Basic Line Drawing
//
diff --git a/engines/ultima/ultima8/graphics/soft_render_surface.inl b/engines/ultima/ultima8/graphics/soft_render_surface.inl
index 4cbb38813e..48c91c86db 100644
--- a/engines/ultima/ultima8/graphics/soft_render_surface.inl
+++ b/engines/ultima/ultima8/graphics/soft_render_surface.inl
@@ -167,25 +167,13 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
// The Function
//
-// All the variables we want
-
- const uint8 *linedata;
- int32 xpos;
- sintptr line; // sintptr for pointer arithmetic
- int32 dlen;
-
- uintX *pixptr;
- uintX *endrun;
- uintX *line_start;
- uint32 pix;
-
// Sanity check
if (framenum >= s->frameCount())
return;
if (s->getPalette() == 0)
return;
- const ShapeFrame *frame = s->getFrame(framenum);
+ const ShapeFrame *frame = s->getFrame(framenum);
const uint8 *rle_data = frame->_rle_data;
const uint32 *line_offsets = frame->_line_offsets;
const uint32 *pal = untformed_pal?
@@ -199,21 +187,19 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
&(s->getPalette()->_xform[0]);
#endif
- int32 width_ = frame->_width;
- int32 height_ = frame->_height;
+ const int32 width_ = frame->_width;
+ const int32 height_ = frame->_height;
x -= XNEG(frame->_xoff);
y -= frame->_yoff;
// Do it this way if compressed
if (frame->_compressed) for (int i=0; i<height_; i++) {
- xpos = 0;
- line = y+i;
+ int32 xpos = 0;
+ sintptr line = y+i;
if (NOT_CLIPPED_Y) {
-
- linedata = rle_data + line_offsets[i];
- line_start = reinterpret_cast<uintX *>(static_cast<uint8*>(OFFSET_PIXELS) + _pitch*line);
-
+ const uint8 *linedata = rle_data + line_offsets[i];
+ uintX *line_start = reinterpret_cast<uintX *>(static_cast<uint8*>(OFFSET_PIXELS) + _pitch*line);
LINE_END_ASSIGN();
do {
@@ -221,14 +207,15 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
if (xpos == width_) break;
- dlen = *linedata++;
- int type = dlen & 1;
+ int32 dlen = *linedata++;
+ const int type = dlen & 1;
dlen >>= 1;
- pixptr = line_start+x+XNEG(xpos);
- endrun = pixptr + XNEG(dlen);
+ uintX *pixptr = line_start+x+XNEG(xpos);
+ uintX *endrun = pixptr + XNEG(dlen);
if (!type) {
+ // Identical to the uncompressed case
while (pixptr != endrun) {
if (NOT_CLIPPED_X && NOT_DESTINATION_MASKED) {
#ifdef XFORM_SHAPES
@@ -244,17 +231,18 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
linedata++;
}
} else {
+ // a run of the same pixel
#ifdef XFORM_SHAPES
- pix = xform_pal[*linedata];
if (USE_XFORM_FUNC) {
+ const uint32 pix = xform_pal[*linedata];
while (pixptr != endrun) {
- if (NOT_CLIPPED_X && NOT_DESTINATION_MASKED) *pixptr = CUSTOM_BLEND(BlendPreModulated(xform_pal[*linedata],*pixptr));
+ if (NOT_CLIPPED_X && NOT_DESTINATION_MASKED) *pixptr = CUSTOM_BLEND(BlendPreModulated(pix,*pixptr));
pixptr += XNEG(1);
}
} else
#endif
{
- pix = pal[*linedata];
+ const uint32 pix = pal[*linedata];
while (pixptr != endrun)
{
if (NOT_CLIPPED_X && NOT_DESTINATION_MASKED)
@@ -274,12 +262,12 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
}
// Uncompressed
else for (int i=0; i<height_; i++) {
- linedata = rle_data + line_offsets[i];
- xpos = 0;
- line = y+i;
+ int32 xpos = 0;
+ sintptr line = y+i;
if (NOT_CLIPPED_Y) {
- line_start = reinterpret_cast<uintX *>(static_cast<uint8*>(OFFSET_PIXELS) + _pitch*line);
+ const uint8 *linedata = rle_data + line_offsets[i];
+ uintX *line_start = reinterpret_cast<uintX *>(static_cast<uint8*>(OFFSET_PIXELS) + _pitch*line);
LINE_END_ASSIGN();
do {
@@ -287,10 +275,10 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
if (xpos == width_) break;
- dlen = *linedata++;
+ const int32 dlen = *linedata++;
- pixptr= line_start+x+XNEG(xpos);
- endrun = pixptr + XNEG(dlen);
+ uintX *pixptr = line_start+x+XNEG(xpos);
+ uintX *endrun = pixptr + XNEG(dlen);
while (pixptr != endrun) {
if (NOT_CLIPPED_X && NOT_DESTINATION_MASKED) {
More information about the Scummvm-git-logs
mailing list