[Scummvm-git-logs] scummvm master -> a2258645c2748847f8c6cb79c90c13892df6a476
moralrecordings
noreply at scummvm.org
Fri Sep 19 10:12:37 UTC 2025
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
d234f6e451 DIRECTOR: Fix colour rendering for button-type cast members
a2258645c2 GRAPHICS: MACGUI: Fix crash when rendering checkbox in 32bpp mode
Commit: d234f6e45165111267e4c83c68d68352a0bef060
https://github.com/scummvm/scummvm/commit/d234f6e45165111267e4c83c68d68352a0bef060
Author: Scott Percival (code at moral.net.au)
Date: 2025-09-19T17:54:13+08:00
Commit Message:
DIRECTOR: Fix colour rendering for button-type cast members
Changed paths:
engines/director/graphics.cpp
engines/director/sprite.cpp
graphics/macgui/macbutton.cpp
diff --git a/engines/director/graphics.cpp b/engines/director/graphics.cpp
index 55adc26af01..1bc50e6484f 100644
--- a/engines/director/graphics.cpp
+++ b/engines/director/graphics.cpp
@@ -567,7 +567,7 @@ uint32 DirectorPlotData::preprocessColor(uint32 src) {
// HACK: Right now this method is just used for adjusting the colourization on text
// sprites, as it would be costly to colourize the chunks on the fly each
// time a section needs drawing. It's ugly but mostly works.
- if (sprite == kTextSprite) {
+ if (sprite == kTextSprite || sprite == kButtonSprite || sprite == kCheckboxSprite || sprite == kRadioButtonSprite) {
switch(ink) {
case kInkTypeMask:
src = (src == backColor ? foreColor : 0xff);
@@ -706,7 +706,7 @@ void DirectorPlotData::inkBlitSurface(Common::Rect &srcRect, const Graphics::Sur
return;
// TODO: Determine why colourization causes problems in Warlock
- if (sprite == kTextSprite)
+ if (sprite == kTextSprite || sprite == kButtonSprite || sprite == kCheckboxSprite || sprite == kRadioButtonSprite)
applyColor = false;
Common::Rect srfClip = srf->getBounds();
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 510794d073d..21d60bcede7 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -28,6 +28,7 @@
#include "director/sprite.h"
#include "director/castmember/castmember.h"
#include "director/castmember/shape.h"
+#include "director/castmember/text.h"
namespace Director {
@@ -555,6 +556,24 @@ void Sprite::setCast(CastMemberID memberID, bool replaceDims) {
case kCastText:
_spriteType = kTextSprite;
break;
+ case kCastButton:
+ {
+ TextCastMember *text = (TextCastMember *)_cast;
+ switch (text->_buttonType) {
+ case kTypeButton:
+ _spriteType = kButtonSprite;
+ break;
+ case kTypeCheckBox:
+ _spriteType = kCheckboxSprite;
+ break;
+ case kTypeRadio:
+ _spriteType = kRadioButtonSprite;
+ break;
+ default:
+ break;
+ }
+ break;
+ }
default:
break;
}
diff --git a/graphics/macgui/macbutton.cpp b/graphics/macgui/macbutton.cpp
index 0e985d9f6f0..3b51be65c80 100644
--- a/graphics/macgui/macbutton.cpp
+++ b/graphics/macgui/macbutton.cpp
@@ -33,7 +33,7 @@
namespace Graphics {
MacButton::MacButton(MacButtonType buttonType, TextAlign textAlignment, MacWidget *parent, int x, int y, int w, int h, MacWindowManager *wm, const Common::U32String &s, const MacFont *macFont, int fgcolor, int bgcolor) :
- MacText(parent, x, y, w, h, wm, s, macFont, fgcolor, bgcolor, w, textAlignment), _pd(Graphics::MacPlotData(_composeSurface, nullptr, &_wm->getPatterns(), 1, 0, 0, 1, 0, true)) {
+ MacText(parent, x, y, w, h, wm, s, macFont, fgcolor, bgcolor, w, textAlignment), _pd(Graphics::MacPlotData(_composeSurface, nullptr, &_wm->getPatterns(), 1, 0, 0, 1, bgcolor, true)) {
_buttonType = buttonType;
init();
@@ -79,14 +79,14 @@ void MacButton::invertOuter() {
switch (_buttonType) {
case kCheckBox: {
Common::Rect c = Common::Rect(r.left + 1, r.top + 3, r.left + 9, r.top + 11);
- primitives.drawRect1(c, 0, &_pd);
- }
+ primitives.drawRect1(c, _wm->_colorWhite, &_pd);
break;
+ }
case kRound:
- primitives.drawRoundRect1(r, 4, 0, true, &_pd);
+ primitives.drawRoundRect1(r, 4, _wm->_colorWhite, true, &_pd);
break;
case kRadio:
- primitives.drawEllipse(r.left + 1, r.top + 3, r.left + 10, r.top + 12, 0, false, &_pd);
+ primitives.drawEllipse(r.left + 1, r.top + 3, r.left + 10, r.top + 12, _wm->_colorWhite, false, &_pd);
break;
}
}
@@ -108,17 +108,17 @@ void MacButton::invertInner() {
case kCheckBox:
switch (_checkBoxType) {
case kCBNormal:
- primitives.drawLine(r.left + 1, r.top + 3, r.left + 9, r.top + 11, 0, &_pd);
- primitives.drawLine(r.left + 1, r.top + 11, r.left + 9, r.top + 3, 0, &_pd);
- (_wm->getDrawInvertPrimitives()).drawPoint(5, 7, 0, &_pd);
+ primitives.drawLine(r.left + 1, r.top + 3, r.left + 9, r.top + 11, _wm->_colorWhite, &_pd);
+ primitives.drawLine(r.left + 1, r.top + 11, r.left + 9, r.top + 3, _wm->_colorWhite, &_pd);
+ (_wm->getDrawInvertPrimitives()).drawPoint(5, 7, _wm->_colorWhite, &_pd);
break;
case kCBInsetBlack:
checkbox = Common::Rect(r.left + 2, r.top + 4, r.left + 2 + 6, r.top + 4 + 6);
- primitives.drawFilledRect1(checkbox, 0, &_pd);
+ primitives.drawFilledRect1(checkbox, _wm->_colorWhite, &_pd);
break;
case kCBFilledBlack:
checkbox = Common::Rect(r.left + 1, r.top + 3, r.left + 1 + 8, r.top + 3 + 8);
- primitives.drawFilledRect1(checkbox, 0, &_pd);
+ primitives.drawFilledRect1(checkbox, _wm->_colorWhite, &_pd);
break;
}
break;
@@ -142,7 +142,6 @@ bool MacButton::draw(bool forceRedraw) {
return false;
MacText::draw();
-
Common::Rect r(_dims.width() - 1, _dims.height() - 1);
Graphics::MacPlotData pd(_composeSurface, nullptr, &_wm->getPatterns(), 1, 0, 0, 1, 0);
@@ -151,14 +150,14 @@ bool MacButton::draw(bool forceRedraw) {
switch (_buttonType) {
case kCheckBox: {
Common::Rect c = Common::Rect(r.left, r.top + 2, r.left + 10, r.top + 2 + 10);
- primitives.drawRect1(c, 0xff, &pd);
+ primitives.drawRect1(c, _wm->_colorBlack, &pd);
break;
}
case kRound:
- primitives.drawRoundRect1(r, 4, 0xff, false, &pd);
+ primitives.drawRoundRect1(r, 4, _wm->_colorBlack, false, &pd);
break;
case kRadio:
- primitives.drawEllipse(r.left, r.top + 2, r.left + 11, r.top + 13, 0xff, false, &pd);
+ primitives.drawEllipse(r.left, r.top + 2, r.left + 11, r.top + 13, _wm->_colorBlack, false, &pd);
break;
}
Commit: a2258645c2748847f8c6cb79c90c13892df6a476
https://github.com/scummvm/scummvm/commit/a2258645c2748847f8c6cb79c90c13892df6a476
Author: Scott Percival (code at moral.net.au)
Date: 2025-09-19T17:54:13+08:00
Commit Message:
GRAPHICS: MACGUI: Fix crash when rendering checkbox in 32bpp mode
Changed paths:
graphics/macgui/macbutton.cpp
diff --git a/graphics/macgui/macbutton.cpp b/graphics/macgui/macbutton.cpp
index 3b51be65c80..d2a506f22ba 100644
--- a/graphics/macgui/macbutton.cpp
+++ b/graphics/macgui/macbutton.cpp
@@ -110,7 +110,7 @@ void MacButton::invertInner() {
case kCBNormal:
primitives.drawLine(r.left + 1, r.top + 3, r.left + 9, r.top + 11, _wm->_colorWhite, &_pd);
primitives.drawLine(r.left + 1, r.top + 11, r.left + 9, r.top + 3, _wm->_colorWhite, &_pd);
- (_wm->getDrawInvertPrimitives()).drawPoint(5, 7, _wm->_colorWhite, &_pd);
+ primitives.drawPoint(5, 7, _wm->_colorWhite, &_pd);
break;
case kCBInsetBlack:
checkbox = Common::Rect(r.left + 2, r.top + 4, r.left + 2 + 6, r.top + 4 + 6);
More information about the Scummvm-git-logs
mailing list