[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