[Scummvm-git-logs] scummvm master -> 36f2a6fdf00c67a68b8d57b709d2a805d673db2a

OMGPizzaGuy noreply at scummvm.org
Sat Sep 9 00:09:41 UTC 2023


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
dc5ca71404 ULTIMA8: Alter fill32 method to use TEX32_PACK_RGB format
d7cd2d5cba ULTIMA8: Alter drawLine32 method to use TEX32_PACK_RGB format
600403e7a2 ULTIMA8: Use TEX32_PACK_RGBA macro when calling fillBlended
42a88e23d8 ULTIMA8: Use TEX32_PACK_RGBA in remaining places colors are hard-coded
77c16212c8 ULTIMA8: Remove render surface fillAlpha method.
36f2a6fdf0 ULTIMA8: Add frameRect32 to replace less efficient gump border drawing


Commit: dc5ca714040f023773b665cdd789e82e3f4ad80e
    https://github.com/scummvm/scummvm/commit/dc5ca714040f023773b665cdd789e82e3f4ad80e
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-09-08T18:30:25-05:00

Commit Message:
ULTIMA8: Alter fill32 method to use TEX32_PACK_RGB format
Use of these macros will allow us to be more consistent in render surface and easily alter the format later.

Changed paths:
    engines/ultima/ultima8/graphics/avi_player.cpp
    engines/ultima/ultima8/graphics/fonts/jp_rendered_text.cpp
    engines/ultima/ultima8/graphics/fonts/shape_rendered_text.cpp
    engines/ultima/ultima8/graphics/render_surface.cpp
    engines/ultima/ultima8/graphics/render_surface.h
    engines/ultima/ultima8/graphics/skf_player.cpp
    engines/ultima/ultima8/graphics/texture.h
    engines/ultima/ultima8/gumps/credits_gump.cpp
    engines/ultima/ultima8/gumps/cru_credits_gump.cpp
    engines/ultima/ultima8/gumps/cru_demo_gump.cpp
    engines/ultima/ultima8/gumps/cru_energy_gump.cpp
    engines/ultima/ultima8/gumps/cru_health_gump.cpp
    engines/ultima/ultima8/gumps/difficulty_gump.cpp
    engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
    engines/ultima/ultima8/gumps/message_box_gump.cpp
    engines/ultima/ultima8/gumps/message_box_gump.h
    engines/ultima/ultima8/gumps/mini_stats_gump.cpp
    engines/ultima/ultima8/gumps/minimap_gump.cpp
    engines/ultima/ultima8/gumps/movie_gump.cpp
    engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
    engines/ultima/ultima8/ultima8.cpp
    engines/ultima/ultima8/world/item_sorter.cpp
    engines/ultima/ultima8/world/target_reticle_process.cpp


diff --git a/engines/ultima/ultima8/graphics/avi_player.cpp b/engines/ultima/ultima8/graphics/avi_player.cpp
index a1e7f0a9e4e..7b0581e902a 100644
--- a/engines/ultima/ultima8/graphics/avi_player.cpp
+++ b/engines/ultima/ultima8/graphics/avi_player.cpp
@@ -22,6 +22,7 @@
 #include "ultima/ultima8/audio/music_process.h"
 #include "ultima/ultima8/graphics/avi_player.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "video/avi_decoder.h"
 
 namespace Ultima {
@@ -116,7 +117,8 @@ void AVIPlayer::paint(RenderSurface *surf, int /*lerp*/) {
 		}
 	}
 
-	surf->Fill32(0, _xoff, _yoff, _currentFrame.w, _currentFrame.h);
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
+	surf->fill32(color, _xoff, _yoff, _currentFrame.w, _currentFrame.h);
 	Common::Rect srcRect(_currentFrame.w, _currentFrame.h);
 	surf->Blit(_currentFrame, srcRect, _xoff, _yoff);
 }
diff --git a/engines/ultima/ultima8/graphics/fonts/jp_rendered_text.cpp b/engines/ultima/ultima8/graphics/fonts/jp_rendered_text.cpp
index 573ac943d08..aa94ee3e54a 100644
--- a/engines/ultima/ultima8/graphics/fonts/jp_rendered_text.cpp
+++ b/engines/ultima/ultima8/graphics/fonts/jp_rendered_text.cpp
@@ -26,6 +26,7 @@
 #include "ultima/ultima8/graphics/render_surface.h"
 #include "ultima/ultima8/graphics/shape_frame.h"
 #include "ultima/ultima8/graphics/palette_manager.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -51,6 +52,7 @@ void JPRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destmaske
 	const Palette *savepal = _font->getPalette();
 	_font->setPalette(pal);
 
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
 	Std::list<PositionedText>::const_iterator iter;
 
 	for (iter = _lines.begin(); iter != _lines.end(); ++iter) {
@@ -69,7 +71,7 @@ void JPRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destmaske
 			surface->Paint(_font, u8char, line_x, line_y);
 
 			if (i == iter->_cursor) {
-				surface->Fill32(0xFF000000, line_x, line_y - _font->getBaseline(),
+				surface->fill32(color, line_x, line_y - _font->getBaseline(),
 				                1, iter->_dims.height());
 			}
 
@@ -77,7 +79,7 @@ void JPRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destmaske
 		}
 
 		if (iter->_cursor == textsize) {
-			surface->Fill32(0xFF000000, line_x, line_y - _font->getBaseline(),
+			surface->fill32(color, line_x, line_y - _font->getBaseline(),
 			                1, iter->_dims.height());
 		}
 	}
diff --git a/engines/ultima/ultima8/graphics/fonts/shape_rendered_text.cpp b/engines/ultima/ultima8/graphics/fonts/shape_rendered_text.cpp
index 9ba44def4e9..d99f159dea6 100644
--- a/engines/ultima/ultima8/graphics/fonts/shape_rendered_text.cpp
+++ b/engines/ultima/ultima8/graphics/fonts/shape_rendered_text.cpp
@@ -24,6 +24,7 @@
 
 #include "ultima/ultima8/graphics/fonts/shape_font.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -43,6 +44,7 @@ ShapeRenderedText::~ShapeRenderedText() {
 void ShapeRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destmasked*/) {
 	// TODO support masking here???
 
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
 	Std::list<PositionedText>::const_iterator iter;
 
 	surface->BeginPainting();
@@ -58,7 +60,7 @@ void ShapeRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destma
 			               line_x, line_y);
 
 			if (i == iter->_cursor) {
-				surface->Fill32(0xFF000000, line_x, line_y - _font->getBaseline(),
+				surface->fill32(color, line_x, line_y - _font->getBaseline(),
 				                1, iter->_dims.height());
 			}
 
@@ -66,7 +68,7 @@ void ShapeRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destma
 		}
 
 		if (iter->_cursor == textsize) {
-			surface->Fill32(0xFF000000, line_x, line_y - _font->getBaseline(),
+			surface->fill32(color, line_x, line_y - _font->getBaseline(),
 			                1, iter->_dims.height());
 		}
 	}
diff --git a/engines/ultima/ultima8/graphics/render_surface.cpp b/engines/ultima/ultima8/graphics/render_surface.cpp
index 00167b849e1..9948ff3b502 100644
--- a/engines/ultima/ultima8/graphics/render_surface.cpp
+++ b/engines/ultima/ultima8/graphics/render_surface.cpp
@@ -284,16 +284,11 @@ bool RenderSurface::IsFlipped() const {
 	return _flipped;
 }
 
-//
-// RenderSurface::Fill32(uint32 rgb, int32 sx, int32 sy, int32 w, int32 h)
-//
-// Desc: Fill buffer (using a RGB colour)
-//
-void RenderSurface::Fill32(uint32 rgb, const Rect &r) {
+void RenderSurface::fill32(uint32 rgb, const Rect &r) {
 	Common::Rect rect(r.left, r.top, r.right, r.bottom);
 	rect.clip(_clipWindow);
 	rect.translate(_ox, _oy);
-	rgb = _surface->format.RGBToColor((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF);
+	rgb = _surface->format.RGBToColor(TEX32_R(rgb), TEX32_G(rgb), TEX32_B(rgb));
 	_surface->fillRect(rect, rgb);
 }
 
@@ -402,7 +397,7 @@ void inline fillBlendedLogic(uint8 *pixels, int32 pitch, uint32 rgba, const Comm
 void RenderSurface::FillBlended(uint32 rgba, const Rect &r) {
 	int alpha = TEX32_A(rgba);
 	if (alpha == 0xFF) {
-		Fill32(rgba, r);
+		fill32(rgba, r);
 		return;
 	} else if (!alpha) {
 		return;
diff --git a/engines/ultima/ultima8/graphics/render_surface.h b/engines/ultima/ultima8/graphics/render_surface.h
index a80dbeb5bf8..7c57107bb9b 100644
--- a/engines/ultima/ultima8/graphics/render_surface.h
+++ b/engines/ultima/ultima8/graphics/render_surface.h
@@ -130,17 +130,18 @@ public:
 	// Surface Filling
 	//
 
-	//! Fill buffer (using a RGB colour)
-	void Fill32(uint32 rgb, int32 sx, int32 sy, int32 w, int32 h) {
-		Fill32(rgb, Rect(sx, sy, sx + w, sy + h));
+	//! Fill the region with a color in the TEX32_PACK_RGB format
+	void fill32(uint32 rgb, int32 sx, int32 sy, int32 w, int32 h) {
+		fill32(rgb, Rect(sx, sy, sx + w, sy + h));
 	}
 
-	void Fill32(uint32 rgb, const Rect &r);
+	//! Fill the region with a color in the TEX32_PACK_RGB format
+	void fill32(uint32 rgb, const Rect &r);
 
 	//! Fill alpha channel
 	void FillAlpha(uint8 alpha, const Rect &r);
 
-	//! Fill the region doing alpha blending
+	//! Fill the region doing alpha blending with a color in the TEX32_PACK_RGBA format
 	void FillBlended(uint32 rgba, const Rect &r);
 
 	//
diff --git a/engines/ultima/ultima8/graphics/skf_player.cpp b/engines/ultima/ultima8/graphics/skf_player.cpp
index c1e8ee60f30..cb58eba5688 100644
--- a/engines/ultima/ultima8/graphics/skf_player.cpp
+++ b/engines/ultima/ultima8/graphics/skf_player.cpp
@@ -104,7 +104,8 @@ void SKFPlayer::parseEventList(Common::ReadStream *eventlist) {
 }
 
 void SKFPlayer::start() {
-	_buffer->Fill32(0, 0, 0, _width, _height);
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
+	_buffer->fill32(color, 0, 0, _width, _height);
 	MusicProcess *musicproc = MusicProcess::get_instance();
 	if (musicproc) musicproc->playMusic(0);
 	_playing = true;
diff --git a/engines/ultima/ultima8/graphics/texture.h b/engines/ultima/ultima8/graphics/texture.h
index 3d0641e1e2d..e88d717eda6 100644
--- a/engines/ultima/ultima8/graphics/texture.h
+++ b/engines/ultima/ultima8/graphics/texture.h
@@ -46,8 +46,11 @@ namespace Ultima8 {
 #define TEX32_R_MASK            0x000000FF
 #define TEX32_R(col32)          (((col32)&TEX32_R_MASK)>>TEX32_R_SHIFT)
 
-#define TEX32_PACK_RGBA(r,g,b,a)    (((a)<<TEX32_A_SHIFT)|((r)<<TEX32_R_SHIFT)|\
-									 ((g)<<TEX32_G_SHIFT)|((b)<<TEX32_B_SHIFT))
+#define TEX32_PACK_RGB(r, g, b) (uint32)(((0xFF) << TEX32_A_SHIFT) | ((r) << TEX32_R_SHIFT) | \
+								 ((g) << TEX32_G_SHIFT) | ((b) << TEX32_B_SHIFT))
+
+#define TEX32_PACK_RGBA(r, g, b, a) (uint32)(((a) << TEX32_A_SHIFT) | ((r) << TEX32_R_SHIFT) | \
+									((g) << TEX32_G_SHIFT) | ((b) << TEX32_B_SHIFT))
 
 } // End of namespace Ultima8
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima8/gumps/credits_gump.cpp b/engines/ultima/ultima8/gumps/credits_gump.cpp
index 2fef5de3a05..b67ee93e05b 100644
--- a/engines/ultima/ultima8/gumps/credits_gump.cpp
+++ b/engines/ultima/ultima8/gumps/credits_gump.cpp
@@ -26,6 +26,7 @@
 
 #include "ultima/ultima8/kernel/mouse.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/graphics/fonts/rendered_text.h"
 #include "ultima/ultima8/graphics/fonts/font.h"
 #include "ultima/ultima8/graphics/fonts/font_manager.h"
@@ -76,10 +77,13 @@ void CreditsGump::InitGump(Gump *newparent, bool take_focus) {
 	_scroll[1] = RenderSurface::CreateSecondaryRenderSurface(width, height);
 	_scroll[2] = RenderSurface::CreateSecondaryRenderSurface(width, height);
 	_scroll[3] = RenderSurface::CreateSecondaryRenderSurface(width, height);
-	_scroll[0]->Fill32(0xFF000000, 0, 0, width, height); // black background
-	_scroll[1]->Fill32(0xFF000000, 0, 0, width, height);
-	_scroll[2]->Fill32(0xFF000000, 0, 0, width, height);
-	_scroll[3]->Fill32(0xFF000000, 0, 0, width, height);
+
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
+	_scroll[0]->fill32(color, 0, 0, width, height); // black background
+	_scroll[1]->fill32(color, 0, 0, width, height);
+	_scroll[2]->fill32(color, 0, 0, width, height);
+	_scroll[3]->fill32(color, 0, 0, width, height);
+
 	_scrollHeight[0] = 156;
 	_scrollHeight[1] = 0;
 	_scrollHeight[2] = 0;
@@ -176,8 +180,12 @@ void CreditsGump::run() {
 		// time to render next block
 		Rect bounds;
 		_scroll[nextblock]->GetSurfaceDims(bounds);
-		_scroll[nextblock]->Fill32(0xFF000000, 0, 0, bounds.width(), bounds.height());
-		//_scroll[nextblock]->Fill32(0xFFFFFFFF, 0, 0, bounds.width(), 2); // block marker
+
+		uint32 color = TEX32_PACK_RGB(0, 0, 0);
+		_scroll[nextblock]->fill32(color, 0, 0, bounds.width(), bounds.height());
+
+		//color = TEX32_PACK_RGB(0xFF, 0xFF, 0xFF);
+		//_scroll[nextblock]->fill32(color, 0, 0, bounds.width(), 2); // block marker
 		_scrollHeight[nextblock] = 0;
 
 		Font *redfont, *yellowfont;
@@ -278,8 +286,8 @@ void CreditsGump::run() {
 						int linewidth = outline.size() * 8;
 						if (linewidth > 192) linewidth = 192;
 
-						_scroll[nextblock]->
-						Fill32(0xFFD43030, 128 - (linewidth / 2),
+						color = TEX32_PACK_RGB(0xD4, 0x30, 0x30);
+						_scroll[nextblock]->fill32(color, 128 - (linewidth / 2),
 						       _scrollHeight[nextblock] + height + 3,
 						       linewidth, 1);
 						height += 7;
@@ -349,8 +357,12 @@ void CreditsGump::run() {
 }
 
 void CreditsGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) {
-	surf->Fill32(0xFF000000, 0, 0, 320, 200); // black background
-	surf->Fill32(0xFFD43030, 64, 41, 192, 1); // line between _title and scroller
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
+	surf->fill32(color, 0, 0, 320, 200);
+
+	// line between _title and scroller
+	color = TEX32_PACK_RGB(0xD4, 0x30, 0x30);
+	surf->fill32(color, 64, 41, 192, 1);
 
 	if (_title)
 		_title->draw(surf, 64, 34);
diff --git a/engines/ultima/ultima8/gumps/cru_credits_gump.cpp b/engines/ultima/ultima8/gumps/cru_credits_gump.cpp
index ba3f1593cb8..789ab95c32b 100644
--- a/engines/ultima/ultima8/gumps/cru_credits_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_credits_gump.cpp
@@ -28,6 +28,7 @@
 #include "ultima/ultima8/kernel/mouse.h"
 #include "ultima/ultima8/graphics/render_surface.h"
 #include "ultima/ultima8/graphics/palette_manager.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/graphics/fonts/rendered_text.h"
 #include "ultima/ultima8/graphics/fonts/font.h"
 #include "ultima/ultima8/graphics/fonts/font_manager.h"
@@ -52,7 +53,9 @@ CruCreditsGump::CruCreditsGump(Common::SeekableReadStream *txtrs,
 {
 	Image::BitmapDecoder decoder;
 	_background = RenderSurface::CreateSecondaryRenderSurface(640, 480);
-	_background->Fill32(0xFF000000, 0, 0, 640, 480); // black background
+
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
+	_background->fill32(color, 0, 0, 640, 480); // black background
 
 	if (decoder.loadStream(*bmprs)) {
 		// This does an extra copy via the ManagedSurface, but it's a once-off.
diff --git a/engines/ultima/ultima8/gumps/cru_demo_gump.cpp b/engines/ultima/ultima8/gumps/cru_demo_gump.cpp
index 21ca165d429..f2619f087cc 100644
--- a/engines/ultima/ultima8/gumps/cru_demo_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_demo_gump.cpp
@@ -27,6 +27,7 @@
 #include "ultima/ultima8/ultima8.h"
 #include "ultima/ultima8/kernel/mouse.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/audio/music_process.h"
 
 namespace Ultima {
@@ -43,7 +44,9 @@ CruDemoGump::CruDemoGump(Common::SeekableReadStream *bmprs, uint32 flags, int32
 {
 	Image::BitmapDecoder decoder;
 	_background = RenderSurface::CreateSecondaryRenderSurface(640, 480);
-	_background->Fill32(0xFF000000, 0, 0, 640, 480); // black background
+
+	uint32 color = TEX32_PACK_RGB(0, 0, 0);
+	_background->fill32(color, 0, 0, 640, 480); // black background
 
 	if (decoder.loadStream(*bmprs)) {
 		// This does an extra copy via the ManagedSurface, but it's a once-off.
diff --git a/engines/ultima/ultima8/gumps/cru_energy_gump.cpp b/engines/ultima/ultima8/gumps/cru_energy_gump.cpp
index d64dbc2c792..5b4cf252a1b 100644
--- a/engines/ultima/ultima8/gumps/cru_energy_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_energy_gump.cpp
@@ -24,6 +24,7 @@
 #include "ultima/ultima8/world/actors/main_actor.h"
 #include "ultima/ultima8/graphics/palette_manager.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/world/get_object.h"
 
 namespace Ultima {
@@ -76,8 +77,8 @@ void CruEnergyGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scale
 	int g = ENERGY_BAR_G;
 	int b = ENERGY_BAR_B;
 	gamepal->transformRGB(r, g, b);
-	uint32 fillcolor = (r << 16) | (g << 8) | b;
-	surf->Fill32(fillcolor, 34, 7, width, 14);
+	uint32 color = TEX32_PACK_RGB(r, g, b);
+	surf->fill32(color, 34, 7, width, 14);
 }
 
 void CruEnergyGump::saveData(Common::WriteStream *ws) {
diff --git a/engines/ultima/ultima8/gumps/cru_health_gump.cpp b/engines/ultima/ultima8/gumps/cru_health_gump.cpp
index 385604527ba..c615e66d9e7 100644
--- a/engines/ultima/ultima8/gumps/cru_health_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_health_gump.cpp
@@ -24,6 +24,7 @@
 #include "ultima/ultima8/world/actors/main_actor.h"
 #include "ultima/ultima8/graphics/palette_manager.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/world/get_object.h"
 
 namespace Ultima {
@@ -68,8 +69,8 @@ void CruHealthGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scale
 	int g = HEALTH_BAR_G;
 	int b = HEALTH_BAR_B;
 	gamepal->transformRGB(r, g, b);
-	uint32 fillcolor = (r << 16) | (g << 8) | b;
-	surf->Fill32(fillcolor, 34, 7, width, 14);
+	uint32 color = TEX32_PACK_RGB(r, g, b);
+	surf->fill32(color, 34, 7, width, 14);
 }
 
 void CruHealthGump::saveData(Common::WriteStream *ws) {
diff --git a/engines/ultima/ultima8/gumps/difficulty_gump.cpp b/engines/ultima/ultima8/gumps/difficulty_gump.cpp
index 04672eb441d..349b73aa2c6 100644
--- a/engines/ultima/ultima8/gumps/difficulty_gump.cpp
+++ b/engines/ultima/ultima8/gumps/difficulty_gump.cpp
@@ -23,6 +23,7 @@
 #include "ultima/ultima8/graphics/render_surface.h"
 #include "ultima/ultima8/graphics/gump_shape_archive.h"
 #include "ultima/ultima8/graphics/palette_manager.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/ultima8.h"
 #include "ultima/ultima8/games/game_data.h"
 #include "ultima/ultima8/kernel/mouse.h"
@@ -136,7 +137,8 @@ void DifficultyGump::OnFocus(bool gain) {
 void DifficultyGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) {
 	// Paint a highlight around the current level
 	int highlihght_y = BUTTON_Y + ((_highlighted - 1) * (BUTTON_SPACE + BUTTON_HEIGHT));
-	surf->Fill32(0xFF808080, BUTTON_X - 1, highlihght_y - 1, _buttonWidth + 2, _buttonHeight + 2);
+	uint32 color = TEX32_PACK_RGB(0x80, 0x80, 0x80);
+	surf->fill32(color, BUTTON_X - 1, highlihght_y - 1, _buttonWidth + 2, _buttonHeight + 2);
 	ModalGump::PaintThis(surf, lerp_factor, scaled);
 }
 
diff --git a/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp b/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
index 2434173c2bc..39c8805528a 100644
--- a/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
+++ b/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
@@ -25,6 +25,7 @@
 #include "ultima/ultima8/world/get_object.h"
 #include "ultima/ultima8/world/item.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -41,13 +42,18 @@ void FastAreaVisGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool sca
 	World *world = World::get_instance();
 	CurrentMap *currentmap = world->getCurrentMap();
 
-	surf->Fill32(0xFF0000, 0, 0, MAP_NUM_CHUNKS + 2, MAP_NUM_CHUNKS + 2);
-	surf->Fill32(0, 1, 1, MAP_NUM_CHUNKS, MAP_NUM_CHUNKS);
+	uint32 color = TEX32_PACK_RGB(0xFF, 0, 0);
+	surf->fill32(color, 0, 0, MAP_NUM_CHUNKS + 2, MAP_NUM_CHUNKS + 2);
 
+	color = TEX32_PACK_RGB(0, 0, 0);
+	surf->fill32(color, 1, 1, MAP_NUM_CHUNKS, MAP_NUM_CHUNKS);
 
+
+	color = TEX32_PACK_RGB(0xFF, 0xFF, 0xFF);
 	for (int yp = 0; yp < MAP_NUM_CHUNKS; yp++)
 		for (int xp = 0; xp < MAP_NUM_CHUNKS; xp++)
-			if (currentmap->isChunkFast(xp, yp)) surf->Fill32(0xFFFFFFFF, xp + 1, yp + 1, 1, 1);
+			if (currentmap->isChunkFast(xp, yp))
+				surf->fill32(color, xp + 1, yp + 1, 1, 1);
 
 	// Put a red dot where the avatar is
 	Item *avatar = getItem(1);
@@ -57,8 +63,10 @@ void FastAreaVisGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool sca
 		int chunksize = currentmap->getChunkSize();
 		x /= chunksize;
 		y /= chunksize;
-		if (x >= 0 && x < MAP_NUM_CHUNKS && y >= 0 && y < MAP_NUM_CHUNKS)
-			surf->Fill32(0xFFFF1010, x + 1, y + 1, 1, 1);
+		if (x >= 0 && x < MAP_NUM_CHUNKS && y >= 0 && y < MAP_NUM_CHUNKS) {
+			color = TEX32_PACK_RGB(0xFF, 0x10, 0x10);
+			surf->fill32(color, x + 1, y + 1, 1, 1);
+		}
 	}
 }
 
diff --git a/engines/ultima/ultima8/gumps/message_box_gump.cpp b/engines/ultima/ultima8/gumps/message_box_gump.cpp
index 3a40b2d8f62..c67c626acfb 100644
--- a/engines/ultima/ultima8/gumps/message_box_gump.cpp
+++ b/engines/ultima/ultima8/gumps/message_box_gump.cpp
@@ -26,6 +26,7 @@
 #include "ultima/ultima8/graphics/fonts/font_manager.h"
 #include "ultima/ultima8/kernel/mouse.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -33,7 +34,7 @@ namespace Ultima8 {
 DEFINE_RUNTIME_CLASSTYPE_CODE(MessageBoxGump)
 
 MessageBoxGump::MessageBoxGump()
-	: ModalGump(), _titleColour(0) {
+	: ModalGump(), _titleColour(TEX32_PACK_RGB(0, 0, 0)) {
 
 }
 
@@ -116,24 +117,25 @@ void MessageBoxGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool /*sc
 	// Background is partially transparent
 	surf->FillBlended(0x80000000, _dims);
 
-	uint32 line_colour = 0xFFFFFFFF;
-	if (!IsFocus()) line_colour = 0xFF7F7F7F;
+	uint32 color = TEX32_PACK_RGB(0xFF, 0xFF, 0xFF);
+	if (!IsFocus())
+		color = TEX32_PACK_RGB(0x7F, 0x7F, 0x7F);
 
 	// outer border
-	surf->Fill32(line_colour, 0, 0, _dims.width(), 1);
-	surf->Fill32(line_colour, 0, 0, 1, _dims.height());
-	surf->Fill32(line_colour, 0, _dims.height() - 1, _dims.width(), 1);
-	surf->Fill32(line_colour, _dims.width() - 1, 0, 1, _dims.height());
+	surf->fill32(color, 0, 0, _dims.width(), 1);
+	surf->fill32(color, 0, 0, 1, _dims.height());
+	surf->fill32(color, 0, _dims.height() - 1, _dims.width(), 1);
+	surf->fill32(color, _dims.width() - 1, 0, 1, _dims.height());
 
 	// line above _buttons
-	surf->Fill32(line_colour, 0, _dims.height() - 28, _dims.width(), 1);
+	surf->fill32(color, 0, _dims.height() - 28, _dims.width(), 1);
 
 	// line below _title
-	surf->Fill32(line_colour, 0, 23, _dims.width(), 1);
+	surf->fill32(color, 0, 23, _dims.width(), 1);
 
-	// Highlight behind _message..
-	if (IsFocus()) surf->Fill32(_titleColour, 1, 1, _dims.width() - 2, 22);
-	else surf->Fill32(0xFF000000, 1, 1, _dims.width() - 2, 22);
+	// Highlight behind _message
+	color = IsFocus() ? _titleColour : TEX32_PACK_RGB(0, 0, 0);
+	surf->fill32(color, 1, 1, _dims.width() - 2, 22);
 }
 
 void MessageBoxGump::ChildNotify(Gump *child, uint32 msg) {
diff --git a/engines/ultima/ultima8/gumps/message_box_gump.h b/engines/ultima/ultima8/gumps/message_box_gump.h
index 0f5302fd758..b399d92cd55 100644
--- a/engines/ultima/ultima8/gumps/message_box_gump.h
+++ b/engines/ultima/ultima8/gumps/message_box_gump.h
@@ -28,6 +28,7 @@
 #include "ultima/shared/std/string.h"
 #include "ultima/shared/std/containers.h"
 #include "ultima/ultima8/misc/classtype.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -63,9 +64,9 @@ public:
 	//! \param titleColour The colour to be displayed behind the title bar
 	//! \param buttons Array of button names to be displayed. Default is "Ok"
 	//! \return Pid of process that will have the result when finished
-	static ProcId Show(Std::string title, Std::string message, uint32 titleColour = 0xFF30308F, Std::vector<Std::string> *buttons = 0);
+	static ProcId Show(Std::string title, Std::string message, uint32 titleColour, Std::vector<Std::string> *buttons = 0);
 	static ProcId Show(Std::string title, Std::string message, Std::vector<Std::string> *buttons) {
-		return Show(title, message, 0xFF30308F, buttons);
+		return Show(title, message, TEX32_PACK_RGB(0x30, 0x30, 0x8F), buttons);
 	}
 
 	void ChildNotify(Gump *child, uint32 msg) override;
diff --git a/engines/ultima/ultima8/gumps/mini_stats_gump.cpp b/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
index f8c62fed79e..cfa25fdb427 100644
--- a/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
+++ b/engines/ultima/ultima8/gumps/mini_stats_gump.cpp
@@ -25,6 +25,7 @@
 #include "ultima/ultima8/graphics/gump_shape_archive.h"
 #include "ultima/ultima8/world/actors/main_actor.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/kernel/mouse.h"
 #include "ultima/ultima8/world/get_object.h"
 
@@ -39,8 +40,17 @@ static const int manax = 13;
 static const int bary = 19;
 static const int barheight = 14;
 
-static const uint32 hpcolour[] = { 0x980404, 0xBC0C0C, 0xD43030 };
-static const uint32 manacolour[] = { 0x4050FC, 0x1C28FC, 0x0C0CCC };
+static const uint32 hpcolour[] = {
+	TEX32_PACK_RGB(0x98, 0x04, 0x04),
+	TEX32_PACK_RGB(0xBC, 0x0C, 0x0C),
+	TEX32_PACK_RGB(0xD4, 0x30, 0x30)
+};
+
+static const uint32 manacolour[] = {
+	TEX32_PACK_RGB(0x40, 0x50, 0xFC),
+	TEX32_PACK_RGB(0x1C, 0x28, 0xFC),
+	TEX32_PACK_RGB(0x0C, 0x0C, 0xCC)
+};
 
 
 MiniStatsGump::MiniStatsGump() : Gump() {
@@ -87,8 +97,8 @@ void MiniStatsGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scale
 		hpheight = (hp * barheight) / maxhp;
 
 	for (int i = 0; i < 3; ++i) {
-		surf->Fill32(hpcolour[i], hpx + i, bary - hpheight + 1, 1, hpheight);
-		surf->Fill32(manacolour[i], manax + i, bary - manaheight + 1, 1, manaheight);
+		surf->fill32(hpcolour[i], hpx + i, bary - hpheight + 1, 1, hpheight);
+		surf->fill32(manacolour[i], manax + i, bary - manaheight + 1, 1, manaheight);
 	}
 }
 
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 54127cf15ec..25a15b25023 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -25,6 +25,7 @@
 #include "ultima/ultima8/world/world.h"
 #include "ultima/ultima8/world/actors/main_actor.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/world/get_object.h"
 #include "ultima/ultima8/kernel/mouse.h"
 
@@ -120,7 +121,7 @@ void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 	dims.grow(-1);
 
 	// Fill the background
-	surf->Fill32(0xFF000000, dims);
+	surf->fill32(TEX32_PACK_RGB(0, 0, 0), dims);
 
 	// Center on avatar
 	int sx = _ax - dims.width() / 2;
diff --git a/engines/ultima/ultima8/gumps/movie_gump.cpp b/engines/ultima/ultima8/gumps/movie_gump.cpp
index 04bd5287892..f30b99ed4e7 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.cpp
+++ b/engines/ultima/ultima8/gumps/movie_gump.cpp
@@ -27,6 +27,7 @@
 #include "ultima/ultima8/graphics/shape.h"
 #include "ultima/ultima8/graphics/shape_frame.h"
 #include "ultima/ultima8/graphics/palette_manager.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/graphics/fade_to_modal_process.h"
 #include "ultima/ultima8/ultima8.h"
 #include "ultima/ultima8/games/game_data.h"
@@ -203,7 +204,7 @@ void MovieGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled) {
 			subtitle->getLocation(x, y);
 			subtitle->GetDims(textdims);
 			surf->GetSurfaceDims(screendims);
-			surf->Fill32(0x000000,
+			surf->fill32(TEX32_PACK_RGB(0, 0, 0),
 						 screendims.width() / 2 - 300 - screendims.left,
 						 y - 3,
 						 600,
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
index 7c2c32ee6f8..c24fff806cd 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
@@ -37,6 +37,7 @@
 #include "ultima/ultima8/graphics/main_shape_archive.h"
 #include "ultima/ultima8/graphics/gump_shape_archive.h"
 #include "ultima/ultima8/graphics/mouse_shape_archive.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 #include "ultima/ultima8/filesys/file_system.h"
 #include "ultima/ultima8/convert/u8/convert_shape_u8.h"
@@ -50,9 +51,24 @@ namespace Ultima8 {
 
 DEFINE_RUNTIME_CLASSTYPE_CODE(ShapeViewerGump)
 
+static const uint32 background_colors[] = {
+	TEX32_PACK_RGB(0x10, 0x10, 0x10),
+	TEX32_PACK_RGB(0x90, 0x90, 0x90)
+};
+
+static const uint32 grid_colors[] = {
+	TEX32_PACK_RGB(0x20, 0x20, 0x20),
+	TEX32_PACK_RGB(0xA0, 0xA0, 0xA0)
+};
+
+static const uint32 axis_colors[] = {
+	TEX32_PACK_RGB(0x10, 0x30, 0x10),
+	TEX32_PACK_RGB(0x90, 0xB0, 0x90)
+};
+
 ShapeViewerGump::ShapeViewerGump()
 	: ModalGump(), _curArchive(0), _curShape(0), _curFrame(0),
-	  _background(0x101010), _fontNo(0), _showGrid(false), _mirrored(false),
+	  _background(0), _fontNo(0), _showGrid(false), _mirrored(false),
 	  _shapeW(0), _shapeH(0), _shapeX(0), _shapeY(0) {
 
 }
@@ -62,7 +78,7 @@ ShapeViewerGump::ShapeViewerGump(int x, int y, int width, int height,
 								 uint32 flags, int32 layer)
 		: ModalGump(x, y, width, height, 0, flags, layer), _archives(archives),
 		  _curArchive(0), _curShape(0), _curFrame(0),
-		  _background(0x101010), _fontNo(0), _showGrid(false), _mirrored(false),
+		  _background(0), _fontNo(0), _showGrid(false), _mirrored(false),
 		  _shapeW(0), _shapeH(0), _shapeX(0), _shapeY(0) {
 
 	if (GAME_IS_CRUSADER) {
@@ -89,7 +105,8 @@ void ShapeViewerGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool /*s
 		return;
 	}
 
-	surf->Fill32(_background, _dims);
+	uint32 color = background_colors[_background];
+	surf->fill32(color, _dims);
 
 	int32 posx = (_dims.width() - _shapeW) / 2 + _shapeX;
 	int32 posy = (_dims.height() - _shapeH) / 2 + _shapeY - 25;
@@ -97,7 +114,7 @@ void ShapeViewerGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool /*s
 	if (_showGrid) {
 		const int step = 16;
 
-		uint32 color = _background + 0x101010;
+		color = grid_colors[_background];
 		for (int i = step; i < _dims.width(); i += step) {
 			int32 x = posx + i;
 			if (x < _dims.right)
@@ -118,7 +135,7 @@ void ShapeViewerGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool /*s
 				surf->DrawLine32(color, _dims.left, y, _dims.right - 1, y);
 		}
 
-		color = _background + 0x002000;
+		color = axis_colors[_background];
 		surf->DrawLine32(color, posx, _dims.top, posx, _dims.bottom - 1);
 		surf->DrawLine32(color, _dims.left, posy, _dims.right - 1, posy);
 	}
@@ -312,8 +329,7 @@ bool ShapeViewerGump::OnKeyDown(int key, int mod) {
 	}
 	break;
 	case Common::KEYCODE_b: {
-		_background += 0x808080;
-		_background &= 0xF0F0F0;
+		_background = _background ? 0 : 1;
 	} break;
 	case Common::KEYCODE_ESCAPE: {
 		Close();
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index 3bdc7c03f17..f5e348a1df5 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -683,7 +683,7 @@ void Ultima8Engine::paint() {
 	Rect r;
 	_screen->GetSurfaceDims(r);
 	if (_highRes)
-		_screen->Fill32(0, r);
+		_screen->fill32(TEX32_PACK_RGB(0, 0, 0), r);
 
 #ifdef DEBUG
 	// Fill the screen with an annoying color so we can see fast area bugs
diff --git a/engines/ultima/ultima8/world/item_sorter.cpp b/engines/ultima/ultima8/world/item_sorter.cpp
index c9fbe1e88ca..7501e7c7488 100644
--- a/engines/ultima/ultima8/world/item_sorter.cpp
+++ b/engines/ultima/ultima8/world/item_sorter.cpp
@@ -27,6 +27,7 @@
 #include "ultima/ultima8/graphics/shape_frame.h"
 #include "ultima/ultima8/graphics/main_shape_archive.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/games/game_data.h"
 #include "ultima/ultima8/ultima8.h"
 
@@ -253,7 +254,8 @@ void ItemSorter::AddItem(const Item *add) {
 void ItemSorter::PaintDisplayList(RenderSurface *surf, bool item_highlight) {
 	if (_sortLimit) {
 		// Clear the surface when debugging the sorter
-		surf->Fill32(0, _clipWindow);
+		uint32 color = TEX32_PACK_RGB(0, 0, 0);
+		surf->fill32(color, _clipWindow);
 	}
 
 	SortItem *it = _items;
diff --git a/engines/ultima/ultima8/world/target_reticle_process.cpp b/engines/ultima/ultima8/world/target_reticle_process.cpp
index a1de56cc530..9b5adbe2717 100644
--- a/engines/ultima/ultima8/world/target_reticle_process.cpp
+++ b/engines/ultima/ultima8/world/target_reticle_process.cpp
@@ -200,7 +200,7 @@ void TargetReticleProcess::clearSprite() {
 void TargetReticleProcess::toggle() {
 	bool newstate = !getEnabled();
 	Std::string msg = newstate ? _TL_("TARGETING RETICLE ACTIVE") : _TL_("TARGETING RETICLE INACTIVE");
-	MessageBoxGump::Show("", msg, 0xFF707070);
+	MessageBoxGump::Show("", msg, TEX32_PACK_RGB(0x70, 0x70, 0x70));
 	setEnabled(newstate);
 }
 


Commit: d7cd2d5cba33509dd00b52f309135f0e0411da18
    https://github.com/scummvm/scummvm/commit/d7cd2d5cba33509dd00b52f309135f0e0411da18
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-09-08T18:30:26-05:00

Commit Message:
ULTIMA8: Alter drawLine32 method to use TEX32_PACK_RGB format

Changed paths:
    engines/ultima/ultima8/graphics/render_surface.cpp
    engines/ultima/ultima8/graphics/render_surface.h
    engines/ultima/ultima8/gumps/minimap_gump.cpp
    engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
    engines/ultima/ultima8/world/actors/pathfinder.cpp


diff --git a/engines/ultima/ultima8/graphics/render_surface.cpp b/engines/ultima/ultima8/graphics/render_surface.cpp
index 9948ff3b502..3e354d0d075 100644
--- a/engines/ultima/ultima8/graphics/render_surface.cpp
+++ b/engines/ultima/ultima8/graphics/render_surface.cpp
@@ -412,13 +412,8 @@ void RenderSurface::FillBlended(uint32 rgba, const Rect &r) {
 		fillBlendedLogic<uint16>(_pixels, _pitch, rgba, rect, _surface->format);
 }
 
-//
-// RenderSurface::DrawLine32(uint32 rgb, int32 sx, int32 sy, int32 ex, int32 ey);
-//
-// Desc: Draw a (non-antialiased) line from (sx,sy) to (ex,ey) with color rgb
-//
-void RenderSurface::DrawLine32(uint32 rgb, int32 sx, int32 sy, int32 ex, int32 ey) {
-	rgb = _surface->format.RGBToColor((rgb >> 16) & 0xFF, (rgb >> 8) & 0xFF, rgb & 0xFF);
+void RenderSurface::drawLine32(uint32 rgb, int32 sx, int32 sy, int32 ex, int32 ey) {
+	rgb = _surface->format.RGBToColor(TEX32_R(rgb), TEX32_G(rgb), TEX32_B(rgb));
 	_surface->drawLine(sx + _ox, sy + _oy, ex + _ox, ey + _oy, rgb);
 }
 
diff --git a/engines/ultima/ultima8/graphics/render_surface.h b/engines/ultima/ultima8/graphics/render_surface.h
index 7c57107bb9b..878a78e6fe0 100644
--- a/engines/ultima/ultima8/graphics/render_surface.h
+++ b/engines/ultima/ultima8/graphics/render_surface.h
@@ -178,8 +178,8 @@ public:
 	// Basic Line Drawing
 	//
 
-	// Draw a RGB Line
-	void DrawLine32(uint32 rgb, int32 sx, int32 sy, int32 ex, int32 ey);
+	// Draw a line with a color in the TEX32_PACK_RGB format
+	void drawLine32(uint32 rgb, int32 sx, int32 sy, int32 ex, int32 ey);
 
 
 	//
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 25a15b25023..21a66d79b8a 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -34,8 +34,8 @@ namespace Ultima8 {
 
 DEFINE_RUNTIME_CLASSTYPE_CODE(MiniMapGump)
 
-static const uint32 NORMAL_COLOR = 0xFFFFAF00;
-static const uint32 HIGHLIGHT_COLOR = 0xFFFFCF00;
+static const uint32 NORMAL_COLOR = TEX32_PACK_RGB(0xFF, 0xAF, 0x00);
+static const uint32 HIGHLIGHT_COLOR = TEX32_PACK_RGB(0xFF, 0xCF, 0x00);
 
 MiniMapGump::MiniMapGump(int x, int y) : ResizableGump(x, y, 120, 120), _minimaps(), _ax(0), _ay(0) {
 	setMinSize(60, 60);
@@ -111,10 +111,10 @@ void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 		color = HIGHLIGHT_COLOR;
 
 	// Draw the border
-	surf->DrawLine32(color, _dims.left, _dims.top, _dims.right - 1, _dims.top);
-	surf->DrawLine32(color, _dims.left, _dims.top, _dims.left, _dims.bottom - 1);
-	surf->DrawLine32(color, _dims.left, _dims.bottom - 1, _dims.right - 1, _dims.bottom - 1);
-	surf->DrawLine32(color, _dims.right -1, _dims.top, _dims.right - 1, _dims.bottom - 1);
+	surf->drawLine32(color, _dims.left, _dims.top, _dims.right - 1, _dims.top);
+	surf->drawLine32(color, _dims.left, _dims.top, _dims.left, _dims.bottom - 1);
+	surf->drawLine32(color, _dims.left, _dims.bottom - 1, _dims.right - 1, _dims.bottom - 1);
+	surf->drawLine32(color, _dims.right -1, _dims.top, _dims.right - 1, _dims.bottom - 1);
 
 	// Dimensions minus border
 	Rect dims = _dims;
@@ -166,10 +166,10 @@ void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 	int32 ay = _ay - sy;
 
 	// Paint the avatar position marker
-	surf->DrawLine32(color, ax - 1, ay + 1, ax, ay + 1);
-	surf->DrawLine32(color, ax + 1, ay - 1, ax + 1, ay);
-	surf->DrawLine32(color, ax + 2, ay + 1, ax + 3, ay + 1);
-	surf->DrawLine32(color, ax + 1, ay + 2, ax + 1, ay + 3);
+	surf->drawLine32(color, ax - 1, ay + 1, ax, ay + 1);
+	surf->drawLine32(color, ax + 1, ay - 1, ax + 1, ay);
+	surf->drawLine32(color, ax + 2, ay + 1, ax + 3, ay + 1);
+	surf->drawLine32(color, ax + 1, ay + 2, ax + 1, ay + 3);
 }
 
 Gump *MiniMapGump::onMouseDown(int button, int32 mx, int32 my) {
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
index c24fff806cd..56689bab2fa 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
@@ -118,26 +118,26 @@ void ShapeViewerGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool /*s
 		for (int i = step; i < _dims.width(); i += step) {
 			int32 x = posx + i;
 			if (x < _dims.right)
-				surf->DrawLine32(color, x, _dims.top, x, _dims.bottom - 1);
+				surf->drawLine32(color, x, _dims.top, x, _dims.bottom - 1);
 
 			x = posx - i;
 			if (x > _dims.left)
-				surf->DrawLine32(color, x, _dims.top, x, _dims.bottom - 1);
+				surf->drawLine32(color, x, _dims.top, x, _dims.bottom - 1);
 		}
 
 		for (int i = step; i < _dims.height(); i += step) {
 			int32 y = posy + i;
 			if (y < _dims.bottom)
-				surf->DrawLine32(color, _dims.left, y, _dims.right - 1, y);
+				surf->drawLine32(color, _dims.left, y, _dims.right - 1, y);
 
 			y = posy - i;
 			if (y > _dims.top)
-				surf->DrawLine32(color, _dims.left, y, _dims.right - 1, y);
+				surf->drawLine32(color, _dims.left, y, _dims.right - 1, y);
 		}
 
 		color = axis_colors[_background];
-		surf->DrawLine32(color, posx, _dims.top, posx, _dims.bottom - 1);
-		surf->DrawLine32(color, _dims.left, posy, _dims.right - 1, posy);
+		surf->drawLine32(color, posx, _dims.top, posx, _dims.bottom - 1);
+		surf->drawLine32(color, _dims.left, posy, _dims.right - 1, posy);
 	}
 
 	ShapeArchive *archive = _archives[_curArchive]._archive;
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.cpp b/engines/ultima/ultima8/world/actors/pathfinder.cpp
index 78dbf3529fe..32c3be1a2d9 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder.cpp
@@ -280,11 +280,11 @@ static void drawbox(const Item *item) {
 	x3 = (d.width() / 2) + (ix - iy + yd) / 4;
 	y3 = (d.height() / 2) + (ix + iy - yd) / 8 - iz;
 
-	screen->Fill32(0xFF0000FF, x0 - 1, y0 - 1, 3, 3);
+	screen->fill32(TEX32_PACK_RGB(0x00, 0x00, 0xFF), x0 - 1, y0 - 1, 3, 3);
 
-	screen->DrawLine32(0xFF00FF00, x0, y0, x1, y1);
-	screen->DrawLine32(0xFF00FF00, x0, y0, x2, y2);
-	screen->DrawLine32(0xFF00FF00, x0, y0, x3, y3);
+	screen->drawLine32(TEX32_PACK_RGB(0x00, 0xFF, 0x00), x0, y0, x1, y1);
+	screen->drawLine32(TEX32_PACK_RGB(0x00, 0xFF, 0x00), x0, y0, x2, y2);
+	screen->drawLine32(TEX32_PACK_RGB(0x00, 0xFF, 0x00), x0, y0, x3, y3);
 }
 
 static void drawdot(int32 x, int32 y, int32 Z, int size, uint32 rgb) {
@@ -331,7 +331,7 @@ static void drawedge(const PathNode *from, const PathNode *to, uint32 rgb) {
 	x1 = (d.width() / 2) + (cx - cy) / 4;
 	y1 = (d.height() / 2) + (cx + cy) / 8 - cz;
 
-	screen->DrawLine32(rgb, x0, y0, x1, y1);
+	screen->drawLine32(rgb, x0, y0, x1, y1);
 }
 
 static void drawpath(PathNode *to, uint32 rgb, bool done) {
@@ -342,12 +342,12 @@ static void drawpath(PathNode *to, uint32 rgb, bool done) {
 		drawedge(n1, n2, rgb);
 
 		if (done && n1 == to)
-			drawdot(n1->state._x, n1->state._y, n1->state._z, 2, 0xFFFF0000);
+			drawdot(n1->state._x, n1->state._y, n1->state._z, 2, TEX32_PACK_RGB(0xFF, 0x00, 0x00));
 		else
-			drawdot(n1->state._x, n1->state._y, n1->state._z, 1, 0xFFFFFFFF);
+			drawdot(n1->state._x, n1->state._y, n1->state._z, 1, TEX32_PACK_RGB(0xFF, 0xFF, 0xFF));
 
 
-		drawdot(n2->state._x, n2->state._y, n2->state._z, 2, 0xFFFFFFFF);
+		drawdot(n2->state._x, n2->state._y, n2->state._z, 2, TEX32_PACK_RGB(0xFF, 0xFF, 0xFF));
 
 		n1 = n2;
 		n2 = n1->parent;
@@ -401,12 +401,12 @@ void Pathfinder::newNode(PathNode *oldnode, PathfindingState &state,
 	if (_actor->getObjId() == _visualDebugActor) {
 		RenderSurface *screen = Ultima8Engine::get_instance()->getRenderScreen();
 		screen->BeginPainting();
-		drawpath(newnode, 0xFFFFFF00, done);
+		drawpath(newnode, TEX32_PACK_RGB(0xFF, 0xFF, 0x00), done);
 		screen->EndPainting();
 		g_system->delayMillis(50);
 		if (!done) {
 			screen->BeginPainting();
-			drawpath(newnode, 0xFFB0B000, done);
+			drawpath(newnode, TEX32_PACK_RGB(0xB0, 0xB0, 0x00), done);
 			screen->EndPainting();
 		}
 	}
@@ -513,7 +513,7 @@ bool Pathfinder::pathfind(Std::vector<PathfindingAction> &path) {
 		if (_targetItem)
 			drawbox(_targetItem);
 		else
-			drawdot(_targetX, _targetY, _targetZ, 2, 0xFF0000FF);
+			drawdot(_targetX, _targetY, _targetZ, 2, TEX32_PACK_RGB(0x00, 0x00, 0xFF));
 		screen->EndPainting();
 	}
 #endif


Commit: 600403e7a2a6828e406096e1bab2a586f87708e6
    https://github.com/scummvm/scummvm/commit/600403e7a2a6828e406096e1bab2a586f87708e6
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-09-08T18:30:26-05:00

Commit Message:
ULTIMA8: Use TEX32_PACK_RGBA macro when calling fillBlended

Changed paths:
    engines/ultima/ultima8/graphics/render_surface.cpp
    engines/ultima/ultima8/graphics/render_surface.h
    engines/ultima/ultima8/gumps/desktop_gump.cpp
    engines/ultima/ultima8/gumps/message_box_gump.cpp


diff --git a/engines/ultima/ultima8/graphics/render_surface.cpp b/engines/ultima/ultima8/graphics/render_surface.cpp
index 3e354d0d075..39bd9f07f4b 100644
--- a/engines/ultima/ultima8/graphics/render_surface.cpp
+++ b/engines/ultima/ultima8/graphics/render_surface.cpp
@@ -389,12 +389,7 @@ void inline fillBlendedLogic(uint8 *pixels, int32 pitch, uint32 rgba, const Comm
 
 } // End of anonymous namespace
 
-//
-// RenderSurface::FillBlended(uint32 rgba, Rect r)
-//
-// Desc: Fill the region doing alpha blending
-//
-void RenderSurface::FillBlended(uint32 rgba, const Rect &r) {
+void RenderSurface::fillBlended(uint32 rgba, const Rect &r) {
 	int alpha = TEX32_A(rgba);
 	if (alpha == 0xFF) {
 		fill32(rgba, r);
diff --git a/engines/ultima/ultima8/graphics/render_surface.h b/engines/ultima/ultima8/graphics/render_surface.h
index 878a78e6fe0..c67115829ef 100644
--- a/engines/ultima/ultima8/graphics/render_surface.h
+++ b/engines/ultima/ultima8/graphics/render_surface.h
@@ -142,7 +142,7 @@ public:
 	void FillAlpha(uint8 alpha, const Rect &r);
 
 	//! Fill the region doing alpha blending with a color in the TEX32_PACK_RGBA format
-	void FillBlended(uint32 rgba, const Rect &r);
+	void fillBlended(uint32 rgba, const Rect &r);
 
 	//
 	// The rule for painting methods:
diff --git a/engines/ultima/ultima8/gumps/desktop_gump.cpp b/engines/ultima/ultima8/gumps/desktop_gump.cpp
index fbfdb68225e..3ad25df85e1 100644
--- a/engines/ultima/ultima8/gumps/desktop_gump.cpp
+++ b/engines/ultima/ultima8/gumps/desktop_gump.cpp
@@ -21,6 +21,7 @@
 
 #include "ultima/ultima8/gumps/desktop_gump.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/kernel/mouse.h"
 #include "ultima/ultima8/gumps/target_gump.h"
 
@@ -60,7 +61,7 @@ void DesktopGump::PaintChildren(RenderSurface *surf, int32 lerp_factor, bool sca
 			// Background is partially transparent
 			if (_fadedModal && dynamic_cast<ModalGump *>(g) &&
 			        !dynamic_cast<TargetGump *>(g) && !g->IsHidden())
-				surf->FillBlended(0x7F000000, _dims);
+				surf->fillBlended(TEX32_PACK_RGBA(0, 0, 0, 0x80), _dims);
 
 			g->Paint(surf, lerp_factor, scaled);
 		}
diff --git a/engines/ultima/ultima8/gumps/message_box_gump.cpp b/engines/ultima/ultima8/gumps/message_box_gump.cpp
index c67c626acfb..a85eb9b3f8d 100644
--- a/engines/ultima/ultima8/gumps/message_box_gump.cpp
+++ b/engines/ultima/ultima8/gumps/message_box_gump.cpp
@@ -115,7 +115,7 @@ void MessageBoxGump::Close(bool no_del) {
 
 void MessageBoxGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool /*scaled*/) {
 	// Background is partially transparent
-	surf->FillBlended(0x80000000, _dims);
+	surf->fillBlended(TEX32_PACK_RGBA(0, 0, 0, 0x80), _dims);
 
 	uint32 color = TEX32_PACK_RGB(0xFF, 0xFF, 0xFF);
 	if (!IsFocus())


Commit: 42a88e23d8f311502a3f161c47e24175c4700990
    https://github.com/scummvm/scummvm/commit/42a88e23d8f311502a3f161c47e24175c4700990
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-09-08T18:30:26-05:00

Commit Message:
ULTIMA8: Use TEX32_PACK_RGBA in remaining places colors are hard-coded

Changed paths:
    engines/ultima/ultima8/games/start_crusader_process.cpp
    engines/ultima/ultima8/graphics/fade_to_modal_process.cpp
    engines/ultima/ultima8/graphics/palette_fader_process.cpp
    engines/ultima/ultima8/gumps/message_box_gump.cpp
    engines/ultima/ultima8/gumps/movie_gump.cpp
    engines/ultima/ultima8/misc/debugger.cpp
    engines/ultima/ultima8/ultima8.cpp
    engines/ultima/ultima8/world/item_sorter.cpp


diff --git a/engines/ultima/ultima8/games/start_crusader_process.cpp b/engines/ultima/ultima8/games/start_crusader_process.cpp
index d35deabaf8e..26a84728e2d 100644
--- a/engines/ultima/ultima8/games/start_crusader_process.cpp
+++ b/engines/ultima/ultima8/games/start_crusader_process.cpp
@@ -32,6 +32,7 @@
 #include "ultima/ultima8/world/item_factory.h"
 #include "ultima/ultima8/world/actors/teleport_to_egg_process.h"
 #include "ultima/ultima8/graphics/palette_fader_process.h"
+#include "ultima/ultima8/graphics/texture.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -137,7 +138,7 @@ void StartCrusaderProcess::run() {
 		avatar->setActorFlag(Actor::ACT_WEAPONREADY);
 	}
 
-	Process *fader = new PaletteFaderProcess(0x00FFFFFF, true, 0x7FFF, 60, false);
+	Process *fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0xFF, 0xFF, 0xFF, 0x00), true, 0x7FFF, 60, false);
 	Kernel::get_instance()->addProcess(fader);
 
 	Ultima8Engine::get_instance()->setAvatarInStasis(false);
diff --git a/engines/ultima/ultima8/graphics/fade_to_modal_process.cpp b/engines/ultima/ultima8/graphics/fade_to_modal_process.cpp
index c0638b9bfeb..ae81f98ea0b 100644
--- a/engines/ultima/ultima8/graphics/fade_to_modal_process.cpp
+++ b/engines/ultima/ultima8/graphics/fade_to_modal_process.cpp
@@ -21,6 +21,7 @@
 
 #include "ultima/ultima8/graphics/palette_fader_process.h"
 #include "ultima/ultima8/graphics/fade_to_modal_process.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/kernel/kernel.h"
 #include "ultima/ultima8/gumps/gump_notify_process.h"
 
@@ -45,7 +46,7 @@ void FadeToModalProcess::onWakeUp() {
 		// Jump in now and make sure the fade in is started (ie, we go to black)
 		// before the modal is closed, otherwise a single frame of the thing
 		// behind it will be shown first.
-		_fader = new PaletteFaderProcess(0x00000000, true, 0x7FFF, 30, false);
+		_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0x00, 0x00, 0x00, 0x00), true, 0x7FFF, 30, false);
 		_fader->run();
 	}
 }
@@ -54,7 +55,7 @@ void FadeToModalProcess::run() {
 	switch (_nextState) {
 		case FS_OpenFadeOut:
 		{
-			_fader = new PaletteFaderProcess(0x00000000, false, 0x7FFF, 30, true);
+			_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0x00, 0x00, 0x00, 0x00), false, 0x7FFF, 30, true);
 			Kernel::get_instance()->addProcess(_fader);
 			_fader->setRunPaused();
 			_nextState = FS_ShowGump;
diff --git a/engines/ultima/ultima8/graphics/palette_fader_process.cpp b/engines/ultima/ultima8/graphics/palette_fader_process.cpp
index ed14d340958..7e81d46f41e 100644
--- a/engines/ultima/ultima8/graphics/palette_fader_process.cpp
+++ b/engines/ultima/ultima8/graphics/palette_fader_process.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "ultima/ultima8/graphics/palette_fader_process.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/kernel/kernel.h"
 #include "ultima/ultima8/ultima8.h"
 
@@ -158,7 +159,7 @@ uint32 PaletteFaderProcess::I_fadeToBlack(const uint8 *args,
 		}
 	}
 
-	_fader = new PaletteFaderProcess(0x00000000, false, 0x7FFF, nsteps, true);
+	_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0x00, 0x00, 0x00, 0x00), false, 0x7FFF, nsteps, true);
 	return Kernel::get_instance()->addProcess(_fader);
 }
 
@@ -179,7 +180,7 @@ uint32 PaletteFaderProcess::I_fadeFromBlack(const uint8 *args,
 		}
 	}
 
-	_fader = new PaletteFaderProcess(0x00000000, true, 0x7FFF, nsteps, false);
+	_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0x00, 0x00, 0x00, 0x00), true, 0x7FFF, nsteps, false);
 	return Kernel::get_instance()->addProcess(_fader);
 }
 
@@ -190,7 +191,7 @@ uint32 PaletteFaderProcess::I_fadeToWhite(const uint8 * /*args*/,
 	else if (_fader && !_fader->is_terminated())
 		_fader->terminate();
 
-	_fader = new PaletteFaderProcess(0x00FFFFFF, false, 0x7FFF, 30, true);
+	_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0xFF, 0xFF, 0xFF, 0x00), false, 0x7FFF, 30, true);
 	return Kernel::get_instance()->addProcess(_fader);
 }
 
@@ -201,7 +202,7 @@ uint32 PaletteFaderProcess::I_fadeFromWhite(const uint8 * /*args*/,
 	else if (_fader && !_fader->is_terminated())
 		_fader->terminate();
 
-	_fader = new PaletteFaderProcess(0x00FFFFFF, true, 0x7FFF, 30, false);
+	_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0xFF, 0xFF, 0xFF, 0x00), true, 0x7FFF, 30, false);
 	return Kernel::get_instance()->addProcess(_fader);
 }
 
@@ -212,7 +213,7 @@ uint32 PaletteFaderProcess::I_lightningBolt(const uint8 * /*args*/,
 	else if (_fader && !_fader->is_terminated())
 		_fader->terminate();
 
-	_fader = new PaletteFaderProcess(0x3FCFCFCF, true, -1, 10, false);
+	_fader = new PaletteFaderProcess(TEX32_PACK_RGBA(0xCF, 0xCF, 0xCF, 0x3F), true, -1, 10, false);
 	return Kernel::get_instance()->addProcess(_fader);
 }
 
diff --git a/engines/ultima/ultima8/gumps/message_box_gump.cpp b/engines/ultima/ultima8/gumps/message_box_gump.cpp
index a85eb9b3f8d..e00ba5e2e72 100644
--- a/engines/ultima/ultima8/gumps/message_box_gump.cpp
+++ b/engines/ultima/ultima8/gumps/message_box_gump.cpp
@@ -94,7 +94,7 @@ void MessageBoxGump::InitGump(Gump *newparent, bool take_focus) {
 	// Buttons (right aligned)
 	int off = _dims.width() - buttons_w;
 	for (size_t i = 0; i < _buttons.size(); i++) {
-		w = new ButtonWidget(off, _dims.height() - 23, _buttons[i], false, 1, 0x80D000D0);
+		w = new ButtonWidget(off, _dims.height() - 23, _buttons[i], false, 1, TEX32_PACK_RGBA(0xD0, 0x00, 0xD0, 0x80));
 		w->SetIndex(static_cast<int32>(i));
 		w->InitGump(this, false);
 		width = height = 0;
diff --git a/engines/ultima/ultima8/gumps/movie_gump.cpp b/engines/ultima/ultima8/gumps/movie_gump.cpp
index f30b99ed4e7..001bf583a23 100644
--- a/engines/ultima/ultima8/gumps/movie_gump.cpp
+++ b/engines/ultima/ultima8/gumps/movie_gump.cpp
@@ -178,7 +178,7 @@ void MovieGump::run() {
 				widget->InitGump(this);
 				widget->setRelativePosition(BOTTOM_CENTER, 0, -10);
 				// Subtitles should be white.
-				widget->setBlendColour(0xffffffff);
+				widget->setBlendColour(TEX32_PACK_RGBA(0xFF, 0xFF, 0xFF, 0xFF));
 				_subtitleWidget = widget->getObjId();
 			}
 		}
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index 44a4e50a83c..eace5881c78 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -31,6 +31,7 @@
 #include "ultima/ultima8/graphics/inverter_process.h"
 #include "ultima/ultima8/graphics/main_shape_archive.h"
 #include "ultima/ultima8/graphics/render_surface.h"
+#include "ultima/ultima8/graphics/texture.h"
 #include "ultima/ultima8/gumps/fast_area_vis_gump.h"
 #include "ultima/ultima8/gumps/game_map_gump.h"
 #include "ultima/ultima8/gumps/minimap_gump.h"
@@ -1827,6 +1828,7 @@ bool Debugger::cmdBenchmarkRenderSurface(int argc, const char **argv) {
 	surface->BeginPainting();
 
 	uint32 start, end;
+	uint32 blendColor = TEX32_PACK_RGBA(0x7F, 0x00, 0x00, 0x7F);
 
 	start = g_system->getMillis();
 	for (int i = 0; i < count; i++) {
@@ -1858,14 +1860,14 @@ bool Debugger::cmdBenchmarkRenderSurface(int argc, const char **argv) {
 
 	start = g_system->getMillis();
 	for (int i = 0; i < count; i++) {
-		surface->PaintHighlight(s, frame, 160, 100, false, false, 0x7F00007F);
+		surface->PaintHighlight(s, frame, 160, 100, false, false, blendColor);
 	}
 	end = g_system->getMillis();
 	debugPrintf("PaintHighlight: %d\n", end - start);
 
 	start = g_system->getMillis();
 	for (int i = 0; i < count; i++) {
-		surface->PaintHighlightInvis(s, frame, 160, 100, false, false, 0x7F00007F);
+		surface->PaintHighlightInvis(s, frame, 160, 100, false, false, blendColor);
 	}
 	end = g_system->getMillis();
 	debugPrintf("PaintHighlightInvis: %d\n", end - start);
diff --git a/engines/ultima/ultima8/ultima8.cpp b/engines/ultima/ultima8/ultima8.cpp
index f5e348a1df5..fe5a375147c 100644
--- a/engines/ultima/ultima8/ultima8.cpp
+++ b/engines/ultima/ultima8/ultima8.cpp
@@ -687,7 +687,7 @@ void Ultima8Engine::paint() {
 
 #ifdef DEBUG
 	// Fill the screen with an annoying color so we can see fast area bugs
-	_screen->Fill32(0xFF10FF10, r);
+	_screen->fill32(TEX32_PACK_RGB(0x10, 0xFF, 0x10), r);
 #endif
 
 	_desktopGump->Paint(_screen, _lerpFactor, false);
diff --git a/engines/ultima/ultima8/world/item_sorter.cpp b/engines/ultima/ultima8/world/item_sorter.cpp
index 7501e7c7488..123053e1d7c 100644
--- a/engines/ultima/ultima8/world/item_sorter.cpp
+++ b/engines/ultima/ultima8/world/item_sorter.cpp
@@ -42,6 +42,9 @@
 namespace Ultima {
 namespace Ultima8 {
 
+static const uint32 TRANSPARENT_COLOR = TEX32_PACK_RGBA(0x7F, 0x00, 0x00, 0x7F);
+static const uint32 HIGHLIGHT_COLOR = TEX32_PACK_RGBA(0xFF, 0xFF, 0x00, 0x1F);
+
 ItemSorter::ItemSorter(int capacity) :
 	_shapes(nullptr), _clipWindow(0, 0, 0, 0), _items(nullptr), _itemsTail(nullptr),
 	_itemsUnused(nullptr), _painted(nullptr), _camSx(0), _camSy(0),
@@ -276,7 +279,8 @@ void ItemSorter::PaintDisplayList(RenderSurface *surf, bool item_highlight) {
 				                          it->_sxBot,
 				                          it->_syBot,
 				                          it->_trans,
-				                          (it->_flags & Item::FLG_FLIPPED) != 0, 0x1f00ffff);
+				                          (it->_flags & Item::FLG_FLIPPED) != 0,
+										  HIGHLIGHT_COLOR);
 			}
 
 			it = it->_next;
@@ -318,9 +322,9 @@ bool ItemSorter::PaintSortItem(RenderSurface *surf, SortItem *si) {
 		//	if (wire) si->info->draw_box_back(s, dispx, dispy, 255);
 
 		if (si->_extFlags & Item::EXT_HIGHLIGHT && si->_extFlags & Item::EXT_TRANSPARENT)
-			surf->PaintHighlightInvis(si->_shape, si->_frame, si->_sxBot, si->_syBot, si->_trans, (si->_flags & Item::FLG_FLIPPED) != 0, 0x7F00007F);
+			surf->PaintHighlightInvis(si->_shape, si->_frame, si->_sxBot, si->_syBot, si->_trans, (si->_flags & Item::FLG_FLIPPED) != 0, TRANSPARENT_COLOR);
 		if (si->_extFlags & Item::EXT_HIGHLIGHT)
-			surf->PaintHighlight(si->_shape, si->_frame, si->_sxBot, si->_syBot, si->_trans, (si->_flags & Item::FLG_FLIPPED) != 0, 0x7F00007F);
+			surf->PaintHighlight(si->_shape, si->_frame, si->_sxBot, si->_syBot, si->_trans, (si->_flags & Item::FLG_FLIPPED) != 0, TRANSPARENT_COLOR);
 		else if (si->_extFlags & Item::EXT_TRANSPARENT)
 			surf->PaintInvisible(si->_shape, si->_frame, si->_sxBot, si->_syBot, si->_trans, (si->_flags & Item::FLG_FLIPPED) != 0);
 		else if (si->_flags & Item::FLG_FLIPPED)


Commit: 77c16212c8ad167797b0694181ef375ae08e60d4
    https://github.com/scummvm/scummvm/commit/77c16212c8ad167797b0694181ef375ae08e60d4
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-09-08T18:30:26-05:00

Commit Message:
ULTIMA8: Remove render surface fillAlpha method.
This was only used for composited painting of text which is not enabled and has no effect on 16bpp surfaces.

Changed paths:
    engines/ultima/ultima8/graphics/render_surface.cpp
    engines/ultima/ultima8/graphics/render_surface.h
    engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
    engines/ultima/ultima8/gumps/widgets/text_widget.cpp


diff --git a/engines/ultima/ultima8/graphics/render_surface.cpp b/engines/ultima/ultima8/graphics/render_surface.cpp
index 39bd9f07f4b..509b02c6631 100644
--- a/engines/ultima/ultima8/graphics/render_surface.cpp
+++ b/engines/ultima/ultima8/graphics/render_surface.cpp
@@ -292,69 +292,6 @@ void RenderSurface::fill32(uint32 rgb, const Rect &r) {
 	_surface->fillRect(rect, rgb);
 }
 
-
-// #define CHECK_ALPHA_FILLS
-namespace {
-
-template<typename uintX>
-void inline fillAlphaLogic(uint8 *pixels, int32 pitch, uint8 alpha, const Common::Rect &rect, const Graphics::PixelFormat &format) {
-	uint32 aMask = format.aMax() << format.aShift;
-	int32 w = rect.width();
-	int32 h = rect.height();
-
-	if (!w || !h || !aMask)
-		return;
-
-	uint32 a = (((uint32)alpha) << format.aShift) & aMask;
-
-#ifdef CHECK_ALPHA_FILLS
-	uint32 c;
-	uint32 m;
-	if (a == 0) {
-		uint32 bMask = format.bMax() << format.bShift;
-		c = (bMask >> 1) & bMask;
-		m = bMask;
-	} else {
-		uint32 rMask = format.rMax() << format.rShift;
-		c = (rMask >> 1) & rMask;
-		m = rMask;
-	}
-#endif
-
-	uint8 *pixel = pixels + rect.top * pitch + rect.left * format.bytesPerPixel;
-	int diff = pitch - w * format.bytesPerPixel;
-
-	for (int y = 0; y < h; ++y) {
-		for (int x = 0; x < w; ++x) {
-			uintX *dest = reinterpret_cast<uintX *>(pixel);
-			*dest = (*dest & ~aMask) | a;
-#ifdef CHECK_ALPHA_FILLS
-			*dest = (*dest & ~m) | (c + (((*dest & m) >> 1) & m));
-#endif
-			pixel += format.bytesPerPixel;
-		}
-
-		pixel += diff;
-	}
-}
-
-} // End of anonymous namespace
-
-//
-// RenderSurface::FillAlpha(uint8 alpha, Rect r)
-//
-// Desc: Fill alpha channel
-//
-void RenderSurface::FillAlpha(uint8 alpha, const Rect &r) {
-	Common::Rect rect(r.left, r.top, r.right, r.bottom);
-	rect.clip(_clipWindow);
-
-	if (_surface->format.bytesPerPixel == 4)
-		fillAlphaLogic<uint32>(_pixels, _pitch, alpha, rect, _surface->format);
-	else if (_surface->format.bytesPerPixel == 2)
-		fillAlphaLogic<uint16>(_pixels, _pitch, alpha, rect, _surface->format);
-}
-
 namespace {
 
 template<typename uintX>
diff --git a/engines/ultima/ultima8/graphics/render_surface.h b/engines/ultima/ultima8/graphics/render_surface.h
index c67115829ef..93e10cdf1b2 100644
--- a/engines/ultima/ultima8/graphics/render_surface.h
+++ b/engines/ultima/ultima8/graphics/render_surface.h
@@ -138,9 +138,6 @@ public:
 	//! Fill the region with a color in the TEX32_PACK_RGB format
 	void fill32(uint32 rgb, const Rect &r);
 
-	//! Fill alpha channel
-	void FillAlpha(uint8 alpha, const Rect &r);
-
 	//! Fill the region doing alpha blending with a color in the TEX32_PACK_RGBA format
 	void fillBlended(uint32 rgba, const Rect &r);
 
diff --git a/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp b/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
index a610dd49faa..435477ca694 100644
--- a/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/edit_widget.cpp
@@ -158,7 +158,6 @@ void EditWidget::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 	renderText();
 
 	if (scaled && _gameFont && getFont()->isHighRes()) {
-		surf->FillAlpha(0xFF, _dims);
 		return;
 	}
 
@@ -178,7 +177,6 @@ void EditWidget::PaintComposited(RenderSurface *surf, int32 lerp_factor, int32 s
 
 	Rect rect(_dims);
 	GumpRectToScreenSpace(rect, ROUND_OUTSIDE);
-	surf->FillAlpha(0x00, rect);
 }
 
 // don't handle any mouse motion events, so let parent handle them for us.
diff --git a/engines/ultima/ultima8/gumps/widgets/text_widget.cpp b/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
index f0beddded5a..53c853ee984 100644
--- a/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
+++ b/engines/ultima/ultima8/gumps/widgets/text_widget.cpp
@@ -164,7 +164,6 @@ void TextWidget::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 	renderText();
 
 	if (scaled && _gameFont && getFont()->isHighRes()) {
-		surf->FillAlpha(0xFF, _dims);
 		return;
 	}
 
@@ -196,7 +195,6 @@ void TextWidget::PaintComposited(RenderSurface *surf, int32 lerp_factor, int32 s
 
 	Rect rect(_dims);
 	GumpRectToScreenSpace(rect, ROUND_OUTSIDE);
-	surf->FillAlpha(0x00, rect);
 }
 
 // don't handle any mouse motion events, so let parent handle them for us.


Commit: 36f2a6fdf00c67a68b8d57b709d2a805d673db2a
    https://github.com/scummvm/scummvm/commit/36f2a6fdf00c67a68b8d57b709d2a805d673db2a
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-09-08T18:30:26-05:00

Commit Message:
ULTIMA8: Add frameRect32 to replace less efficient gump border drawing

Changed paths:
    engines/ultima/ultima8/graphics/render_surface.cpp
    engines/ultima/ultima8/graphics/render_surface.h
    engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
    engines/ultima/ultima8/gumps/minimap_gump.cpp


diff --git a/engines/ultima/ultima8/graphics/render_surface.cpp b/engines/ultima/ultima8/graphics/render_surface.cpp
index 509b02c6631..f98f053cc1e 100644
--- a/engines/ultima/ultima8/graphics/render_surface.cpp
+++ b/engines/ultima/ultima8/graphics/render_surface.cpp
@@ -344,6 +344,14 @@ void RenderSurface::fillBlended(uint32 rgba, const Rect &r) {
 		fillBlendedLogic<uint16>(_pixels, _pitch, rgba, rect, _surface->format);
 }
 
+void RenderSurface::frameRect32(uint32 rgb, const Rect &r) {
+	Common::Rect rect(r.left, r.top, r.right, r.bottom);
+	rect.clip(_clipWindow);
+	rect.translate(_ox, _oy);
+	rgb = _surface->format.RGBToColor(TEX32_R(rgb), TEX32_G(rgb), TEX32_B(rgb));
+	_surface->frameRect(rect, rgb);
+}
+
 void RenderSurface::drawLine32(uint32 rgb, int32 sx, int32 sy, int32 ex, int32 ey) {
 	rgb = _surface->format.RGBToColor(TEX32_R(rgb), TEX32_G(rgb), TEX32_B(rgb));
 	_surface->drawLine(sx + _ox, sy + _oy, ex + _ox, ey + _oy, rgb);
diff --git a/engines/ultima/ultima8/graphics/render_surface.h b/engines/ultima/ultima8/graphics/render_surface.h
index 93e10cdf1b2..bd745a8fa98 100644
--- a/engines/ultima/ultima8/graphics/render_surface.h
+++ b/engines/ultima/ultima8/graphics/render_surface.h
@@ -141,7 +141,10 @@ public:
 	//! Fill the region doing alpha blending with a color in the TEX32_PACK_RGBA format
 	void fillBlended(uint32 rgba, const Rect &r);
 
-	//
+	//! Fill the region with a color in the TEX32_PACK_RGB format
+	void frameRect32(uint32 rgb, const Rect &r);
+
+		//
 	// The rule for painting methods:
 	//
 	// First arg are the source object to 'draw' with
diff --git a/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp b/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
index 39c8805528a..d3763ee9dc0 100644
--- a/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
+++ b/engines/ultima/ultima8/gumps/fast_area_vis_gump.cpp
@@ -43,7 +43,7 @@ void FastAreaVisGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool sca
 	CurrentMap *currentmap = world->getCurrentMap();
 
 	uint32 color = TEX32_PACK_RGB(0xFF, 0, 0);
-	surf->fill32(color, 0, 0, MAP_NUM_CHUNKS + 2, MAP_NUM_CHUNKS + 2);
+	surf->frameRect32(color, _dims);
 
 	color = TEX32_PACK_RGB(0, 0, 0);
 	surf->fill32(color, 1, 1, MAP_NUM_CHUNKS, MAP_NUM_CHUNKS);
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 21a66d79b8a..25c68a3df1d 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -111,10 +111,7 @@ void MiniMapGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 		color = HIGHLIGHT_COLOR;
 
 	// Draw the border
-	surf->drawLine32(color, _dims.left, _dims.top, _dims.right - 1, _dims.top);
-	surf->drawLine32(color, _dims.left, _dims.top, _dims.left, _dims.bottom - 1);
-	surf->drawLine32(color, _dims.left, _dims.bottom - 1, _dims.right - 1, _dims.bottom - 1);
-	surf->drawLine32(color, _dims.right -1, _dims.top, _dims.right - 1, _dims.bottom - 1);
+	surf->frameRect32(color, _dims);
 
 	// Dimensions minus border
 	Rect dims = _dims;




More information about the Scummvm-git-logs mailing list