[Scummvm-git-logs] scummvm master -> d57d2ab4856b660605c299f72e64724b2d077c6d

sev- noreply at scummvm.org
Sun May 19 23:39:39 UTC 2024


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

Summary:
11cff12163 DIRECTOR: DEBUGGER: Started adding cast details to Score window
d57d2ab485 DIRECTOR: DEBUGGER: Render sprite details


Commit: 11cff12163ead867ab8a558d65197a437597c94f
    https://github.com/scummvm/scummvm/commit/11cff12163ead867ab8a558d65197a437597c94f
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-05-20T01:39:19+02:00

Commit Message:
DIRECTOR: DEBUGGER: Started adding cast details to Score window

Changed paths:
    engines/director/debugtools.cpp


diff --git a/engines/director/debugtools.cpp b/engines/director/debugtools.cpp
index 4cbdd991eca..7006d988367 100644
--- a/engines/director/debugtools.cpp
+++ b/engines/director/debugtools.cpp
@@ -355,6 +355,11 @@ typedef struct ImGuiState {
 	Common::HashMap<Common::String, bool, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _breakpoints;
 	Common::HashMap<Common::String, bool, Common::IgnoreCase_Hash, Common::IgnoreCase_EqualTo> _variables;
 	int _prevFrame = -1;
+
+	struct {
+		int frame = -1;
+		int channel = -1;
+	} _selectedScoreCast;
 } ImGuiState;
 
 ImGuiState *_state = nullptr;
@@ -1475,6 +1480,7 @@ static void showScore() {
 	if (ImGui::Begin("Score", &_state->_showScore)) {
 		Score *score = g_director->getCurrentMovie()->getScore();
 		uint numFrames = score->_scoreCache.size();
+		Cast *cast = g_director->getCurrentMovie()->getCast();
 
 		if (!numFrames) {
 			ImGui::Text("No frames");
@@ -1483,6 +1489,25 @@ static void showScore() {
 			return;
 		}
 
+		{
+			Sprite *sprite = nullptr;
+
+			if (_state->_selectedScoreCast.frame != -1)
+				sprite = score->_scoreCache[_state->_selectedScoreCast.frame]->_sprites[_state->_selectedScoreCast.channel];
+
+			if (sprite) {
+				CastMember *castMember = cast->getCastMember(sprite->_castId.member, true);
+
+				ImGuiImage imgID = getImageID(castMember);
+				if (imgID.id) {
+					Common::String name(getDisplayName(castMember));
+					showImage(imgID, name.c_str(), 32.f);
+				} else {
+					ImGui::InvisibleButton("##canvas", ImVec2(32.f, 32.f));
+				}
+			}
+		}
+
 		uint numChannels = score->_scoreCache[0]->_sprites.size();
 		uint tableColumns = MAX(numFrames, 25U); // Set minimal table width to 25
 
@@ -1490,8 +1515,8 @@ static void showScore() {
 		ImU32 cell_bg_color = ImGui::GetColorU32(ImVec4(0.7f, 0.7f, 0.0f, 0.65f));
 
 		if (ImGui::BeginTable("Score", tableColumns + 1,
-				ImGuiTableFlags_Borders | ImGuiTableFlags_SizingFixedSame |
-				ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg)) {
+					ImGuiTableFlags_Borders | ImGuiTableFlags_SizingFixedSame |
+					ImGuiTableFlags_ScrollX | ImGuiTableFlags_ScrollY | ImGuiTableFlags_RowBg)) {
 			ImGuiTableFlags flags = ImGuiTableColumnFlags_WidthFixed;
 
 			ImGui::TableSetupColumn("##", flags);
@@ -1515,6 +1540,11 @@ static void showScore() {
 
 					if (sprite._castId.member) {
 						ImGui::Text("%d", sprite._castId.member);
+
+						if (ImGui::IsItemClicked(0)) {
+							_state->_selectedScoreCast.frame = f;
+							_state->_selectedScoreCast.channel = ch + 1;
+						}
 					}
 				}
 			}


Commit: d57d2ab4856b660605c299f72e64724b2d077c6d
    https://github.com/scummvm/scummvm/commit/d57d2ab4856b660605c299f72e64724b2d077c6d
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2024-05-20T01:39:19+02:00

Commit Message:
DIRECTOR: DEBUGGER: Render sprite details

Changed paths:
    engines/director/debugtools.cpp
    engines/director/types.cpp
    engines/director/types.h


diff --git a/engines/director/debugtools.cpp b/engines/director/debugtools.cpp
index 7006d988367..ac66d688726 100644
--- a/engines/director/debugtools.cpp
+++ b/engines/director/debugtools.cpp
@@ -1489,15 +1489,20 @@ static void showScore() {
 			return;
 		}
 
-		{
+		{ // Render sprite details
 			Sprite *sprite = nullptr;
+			CastMember *castMember = nullptr;
 
 			if (_state->_selectedScoreCast.frame != -1)
 				sprite = score->_scoreCache[_state->_selectedScoreCast.frame]->_sprites[_state->_selectedScoreCast.channel];
 
-			if (sprite) {
-				CastMember *castMember = cast->getCastMember(sprite->_castId.member, true);
+			if (sprite)
+				castMember = cast->getCastMember(sprite->_castId.member, true);
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Image", ImVec2(200.0f, 70.0f));
 
+			if (castMember) {
 				ImGuiImage imgID = getImageID(castMember);
 				if (imgID.id) {
 					Common::String name(getDisplayName(castMember));
@@ -1505,7 +1510,131 @@ static void showScore() {
 				} else {
 					ImGui::InvisibleButton("##canvas", ImVec2(32.f, 32.f));
 				}
+				ImGui::SameLine();
+				ImGui::Text("%s", sprite->_castId.asString().c_str());
+				ImGui::Text("%s", spriteType2str(sprite->_spriteType));
+			}
+
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::SameLine();
+			ImGui::BeginChild("Details", ImVec2(500.0f, 70.0f));
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Ink", ImVec2(150.0f, 20.0f));
+
+			if (castMember) {
+				ImGui::Text("%s", inkType2str(sprite->_ink)); ImGui::SameLine();
+				ImGui::SetItemTooltip("Ink");
+				ImGui::Text("0x%x", sprite->_blendAmount);  ImGui::SameLine();
+				ImGui::SetItemTooltip("Blend");
+			}
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::SameLine();
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Range", ImVec2(100.0f, 20.0f));
+
+			if (castMember) {
+				ImGui::Text("\ue033"); ImGui::SameLine();
+				ImGui::Text("?"); ImGui::SameLine();
+				ImGui::SetItemTooltip("Start Frame");
+				ImGui::Text("\ue034"); ImGui::SameLine();
+				ImGui::Text("?"); ImGui::SameLine();
+				ImGui::SetItemTooltip("End Frame");
 			}
+
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::SameLine();
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Flags", ImVec2(200.0f, 20.0f));
+
+			if (castMember) {
+				ImGui::Checkbox("\ue0e4", &sprite->_enabled); ImGui::SameLine();
+				ImGui::SetItemTooltip("enabled");
+				ImGui::Checkbox("\ue057", &sprite->_editable); ImGui::SameLine();
+				ImGui::SetItemTooltip("editable");
+				ImGui::Checkbox("\ue096", &sprite->_moveable); ImGui::SameLine();
+				ImGui::SetItemTooltip("moveable");
+				ImGui::Checkbox("\ue0dd", &sprite->_trails);
+				ImGui::SetItemTooltip("trails");
+			}
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Colors", ImVec2(150.0f, 40.0f));
+
+			if (castMember) {
+				ImVec4 fg = convertColor(sprite->_foreColor);
+
+				ImGui::ColorButton("foreColor", fg); ImGui::SameLine();
+				ImGui::Text("#%02x%02x%02x", (int)(fg.x * 255), (int)(fg.y * 255), (int)(fg.z * 255));
+				ImGui::SetItemTooltip("Foreground Color");
+				ImVec4 bg = convertColor(sprite->_backColor);
+				ImGui::ColorButton("backColor", bg); ImGui::SameLine();
+				ImGui::Text("#%02x%02x%02x", (int)(bg.x * 255), (int)(bg.y * 255), (int)(bg.z * 255)); ImGui::SameLine();
+				ImGui::SetItemTooltip("Background Color");
+			}
+
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::SameLine();
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Coordinates", ImVec2(150.0f, 40.0f));
+
+			if (castMember) {
+				ImGui::Text("X:"); ImGui::SameLine();
+				ImGui::Text("%d", sprite->_startPoint.x); ImGui::SameLine();
+				ImGui::SetItemTooltip("Reg Point Horizontal");
+				ImGui::Text("W:"); ImGui::SameLine();
+				ImGui::Text("%d", sprite->getWidth());
+				ImGui::SetItemTooltip("Width");
+
+				ImGui::Text("Y:"); ImGui::SameLine();
+				ImGui::Text("%d", sprite->_startPoint.y); ImGui::SameLine();
+				ImGui::SetItemTooltip("Reg Point Vertical");
+				ImGui::Text("H:"); ImGui::SameLine();
+				ImGui::Text("%d", sprite->getHeight()); ImGui::SameLine();
+				ImGui::SetItemTooltip("Height");
+			}
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::SameLine();
+
+			ImGui::PushStyleColor(ImGuiCol_ChildBg, ImGui::GetStyleColorVec4(ImGuiCol_FrameBg));
+			ImGui::BeginChild("Bbox", ImVec2(150.0f, 40.0f));
+
+			if (castMember) {
+				const Common::Rect &box = sprite->getBbox(true);
+
+				ImGui::Text("l:"); ImGui::SameLine();
+				ImGui::Text("%d", box.left); ImGui::SameLine();
+				ImGui::SetItemTooltip("Left");
+				ImGui::Text("r:"); ImGui::SameLine();
+				ImGui::Text("%d", box.right);
+				ImGui::SetItemTooltip("Right");
+
+				ImGui::Text("t:"); ImGui::SameLine();
+				ImGui::Text("%d", box.top); ImGui::SameLine();
+				ImGui::SetItemTooltip("Top");
+				ImGui::Text("b:"); ImGui::SameLine();
+				ImGui::Text("%d", box.bottom);
+				ImGui::SetItemTooltip("Bottom");
+			}
+			ImGui::PopStyleColor();
+			ImGui::EndChild();
+
+			ImGui::EndChild();
 		}
 
 		uint numChannels = score->_scoreCache[0]->_sprites.size();
@@ -1538,6 +1667,9 @@ static void showScore() {
 
 					ImGui::TableNextColumn();
 
+					if (f == _state->_selectedScoreCast.frame && ch == _state->_selectedScoreCast.channel - 1)
+						ImGui::TableSetBgColor(ImGuiTableBgTarget_CellBg, ImGui::GetColorU32(ImVec4(0.7f, 0.7f, 0.7f, 0.3f)));
+
 					if (sprite._castId.member) {
 						ImGui::Text("%d", sprite._castId.member);
 
diff --git a/engines/director/types.cpp b/engines/director/types.cpp
index c172d6cb955..e82cde09b80 100644
--- a/engines/director/types.cpp
+++ b/engines/director/types.cpp
@@ -106,5 +106,38 @@ const char *spriteType2str(SpriteType type) {
 	return "<unknown>";
 }
 
+const char *inkType[] = {
+	"Copy",
+	"Transparent",
+	"Reverse",
+	"Ghost",
+	"NotCopy",
+	"NotTrans",
+	"NotReverse",
+	"NotGhost",
+	"Matte",
+	"Mask",
+
+	"Blend", // 32
+	"AddPin",
+	"Add",
+	"SubPin",
+	"BackgndTrans",
+	"Light",
+	"Sub",
+	"Dark"
+};
+
+
+const char *inkType2str(InkType type) {
+	if (type <= kInkTypeMask)
+		return inkType[type];
+
+	if (type >= kInkTypeBlend && type <= kInkTypeDark)
+		return inkType[type - 32 + 10];
+
+	return "<unknown>";
+
+}
 
 } // End of namespace Director
diff --git a/engines/director/types.h b/engines/director/types.h
index fbdb4fd956a..de1e89081a8 100644
--- a/engines/director/types.h
+++ b/engines/director/types.h
@@ -450,6 +450,7 @@ typedef Common::Array<PCell> PropertyArray;
 const char *scriptType2str(ScriptType scr);
 const char *castType2str(CastType type);
 const char *spriteType2str(SpriteType type);
+const char *inkType2str(InkType type);
 
 } // End of namespace Director
 




More information about the Scummvm-git-logs mailing list