Skip to content

Commit cddb93f

Browse files
committed
Correct regression in information set drawing.
When removing options for changing how information sets are drawn, the arrows indicating information sets at multiple levels were lost. This corrects that regression. Closes #643.
1 parent b584210 commit cddb93f

File tree

1 file changed

+37
-43
lines changed

1 file changed

+37
-43
lines changed

src/gui/efglayout.cc

Lines changed: 37 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ gbtTreeLayout::ComputeNextInInfoset(const std::shared_ptr<gbtNodeEntry> &p_entry
615615
std::find(infoset->GetMembers().begin(), infoset->GetMembers().end(), p_entry->m_node));
616616
while (member != infoset->GetMembers().end()) {
617617
auto member_entry = GetNodeEntry(*member);
618-
if (member_entry != nullptr && p_entry->m_level == member_entry->m_level) {
618+
if (member_entry != nullptr) {
619619
return member_entry;
620620
}
621621
++member;
@@ -780,56 +780,50 @@ void gbtTreeLayout::RenderSubtree(wxDC &p_dc, bool p_noHints) const
780780
const int nextX = parentEntry->GetNextMember()->m_x;
781781
const int nextY = parentEntry->GetNextMember()->m_y;
782782

783-
if (parentEntry->m_x == nextX) {
784783
#ifdef __WXGTK__
785-
// A problem with using styled pens and user scaling on wxGTK
786-
p_dc.SetPen(wxPen(m_doc->GetStyle().GetPlayerColor(parentEntry->m_node->GetPlayer()), 1,
787-
wxPENSTYLE_SOLID));
784+
// A problem with using styled pens and user scaling on wxGTK
785+
p_dc.SetPen(wxPen(m_doc->GetStyle().GetPlayerColor(parentEntry->m_node->GetPlayer()), 1,
786+
wxPENSTYLE_SOLID));
788787
#else
789-
p_dc.SetPen(wxPen(m_doc->GetStyle().GetPlayerColor(parentEntry->m_node->GetPlayer()), 1,
790-
wxPENSTYLE_DOT));
788+
p_dc.SetPen(wxPen(m_doc->GetStyle().GetPlayerColor(parentEntry->m_node->GetPlayer()), 1,
789+
wxPENSTYLE_DOT));
791790
#endif // __WXGTK__
792-
p_dc.DrawLine(parentEntry->m_x, parentEntry->m_y, parentEntry->m_x, nextY);
793-
if (settings.GetInfosetJoin() == GBT_INFOSET_JOIN_CIRCLES) {
794-
p_dc.DrawLine(parentEntry->m_x + parentEntry->GetSize(), parentEntry->m_y,
795-
parentEntry->m_x + parentEntry->GetSize(), nextY);
796-
}
791+
p_dc.DrawLine(parentEntry->m_x, parentEntry->m_y, parentEntry->m_x, nextY);
792+
if (settings.GetInfosetJoin() == GBT_INFOSET_JOIN_CIRCLES) {
793+
p_dc.DrawLine(parentEntry->m_x + parentEntry->GetSize(), parentEntry->m_y,
794+
parentEntry->m_x + parentEntry->GetSize(), nextY);
795+
}
797796

798-
if (parentEntry->GetNextMember()->m_x != parentEntry->m_x) {
799-
// Draw a little arrow in the direction of the iset.
800-
int startX, endX;
801-
if (settings.GetInfosetJoin() == GBT_INFOSET_JOIN_LINES) {
802-
startX = parentEntry->m_x;
803-
endX =
804-
(startX + m_infosetSpacing *
805-
((parentEntry->GetNextMember()->m_x > parentEntry->m_x) ? 1 : -1));
806-
}
807-
else {
808-
if (parentEntry->GetNextMember()->m_x < parentEntry->m_x) {
809-
// information set is continued to the left
810-
startX = parentEntry->m_x + parentEntry->GetSize();
811-
endX = parentEntry->m_x - m_infosetSpacing;
812-
}
813-
else {
814-
// information set is continued to the right
815-
startX = parentEntry->m_x;
816-
endX = (parentEntry->m_x + parentEntry->GetSize() + m_infosetSpacing);
817-
}
818-
}
819-
p_dc.DrawLine(startX, nextY, endX, nextY);
820-
if (startX > endX) {
821-
p_dc.DrawLine(endX, nextY, endX + m_infosetSpacing / 2,
822-
nextY + m_infosetSpacing / 2);
823-
p_dc.DrawLine(endX, nextY, endX + m_infosetSpacing / 2,
824-
nextY - m_infosetSpacing / 2);
797+
if (parentEntry->GetNextMember()->m_x != parentEntry->m_x) {
798+
// Draw a little arrow in the direction of the iset.
799+
int startX, endX;
800+
if (settings.GetInfosetJoin() == GBT_INFOSET_JOIN_LINES) {
801+
startX = parentEntry->m_x;
802+
endX =
803+
(startX + m_infosetSpacing *
804+
((parentEntry->GetNextMember()->m_x > parentEntry->m_x) ? 1 : -1));
805+
}
806+
else {
807+
if (parentEntry->GetNextMember()->m_x < parentEntry->m_x) {
808+
// information set is continued to the left
809+
startX = parentEntry->m_x + parentEntry->GetSize();
810+
endX = parentEntry->m_x - m_infosetSpacing;
825811
}
826812
else {
827-
p_dc.DrawLine(endX, nextY, endX - m_infosetSpacing / 2,
828-
nextY + m_infosetSpacing / 2);
829-
p_dc.DrawLine(endX, nextY, endX - m_infosetSpacing / 2,
830-
nextY - m_infosetSpacing / 2);
813+
// information set is continued to the right
814+
startX = parentEntry->m_x;
815+
endX = (parentEntry->m_x + parentEntry->GetSize() + m_infosetSpacing);
831816
}
832817
}
818+
p_dc.DrawLine(startX, nextY, endX, nextY);
819+
if (startX > endX) {
820+
p_dc.DrawLine(endX, nextY, endX + m_infosetSpacing / 2, nextY + m_infosetSpacing / 2);
821+
p_dc.DrawLine(endX, nextY, endX + m_infosetSpacing / 2, nextY - m_infosetSpacing / 2);
822+
}
823+
else {
824+
p_dc.DrawLine(endX, nextY, endX - m_infosetSpacing / 2, nextY + m_infosetSpacing / 2);
825+
p_dc.DrawLine(endX, nextY, endX - m_infosetSpacing / 2, nextY - m_infosetSpacing / 2);
826+
}
833827
}
834828
}
835829
}

0 commit comments

Comments
 (0)