MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / paintEvent

Method paintEvent

pcsx2-qt/Debugger/RegisterView.cpp:82–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80}
81
82void RegisterView::paintEvent(QPaintEvent* event)
83{
84 QPainter painter(this);
85 painter.setPen(this->palette().text().color());
86 m_renderStart = QPoint(0, ui.registerTabs->pos().y() + ui.registerTabs->size().height());
87 const QSize renderSize = QSize(this->size().width(), this->size().height() - ui.registerTabs->size().height());
88
89 m_rowHeight = painter.fontMetrics().height() + 2;
90 m_rowEnd = m_rowStart + (renderSize.height() / m_rowHeight) - 1; // Maybe move this to a onsize event
91
92 bool alternate = m_rowStart % 2;
93
94 const int categoryIndex = ui.registerTabs->currentIndex();
95
96 // Used for 128 bit and VU0f registers
97 const int titleStartX = m_renderStart.x() + (painter.fontMetrics().averageCharWidth() * 6);
98 m_fieldWidth = ((renderSize.width() - (painter.fontMetrics().averageCharWidth() * 6)) / 4);
99
100 m_fieldStartX[0] = titleStartX;
101 m_fieldStartX[1] = titleStartX + m_fieldWidth;
102 m_fieldStartX[2] = titleStartX + (m_fieldWidth * 2);
103 m_fieldStartX[3] = titleStartX + (m_fieldWidth * 3);
104
105 if (categoryIndex == EECAT_VU0F)
106 {
107 painter.fillRect(m_renderStart.x(), m_renderStart.y(), renderSize.width(), m_rowHeight, this->palette().highlight());
108
109 painter.drawText(m_fieldStartX[0], m_renderStart.y(), m_fieldWidth, m_rowHeight, Qt::AlignLeft, "W");
110 painter.drawText(m_fieldStartX[1], m_renderStart.y(), m_fieldWidth, m_rowHeight, Qt::AlignLeft, "Z");
111 painter.drawText(m_fieldStartX[2], m_renderStart.y(), m_fieldWidth, m_rowHeight, Qt::AlignLeft, "Y");
112 painter.drawText(m_fieldStartX[3], m_renderStart.y(), m_fieldWidth, m_rowHeight, Qt::AlignLeft, "X");
113
114 m_renderStart += QPoint(0, m_rowHeight); // Make room for VU0f titles
115 }
116
117 // Find the longest register name and calculate where to place our values
118 // off of that.
119 // Can probably constexpr the loop out as register names are known during runtime
120 int safeValueStartX = 0;
121 for (int i = 0; i < cpu().getRegisterCount(categoryIndex); i++)
122 {
123 const int registerNameWidth = strlen(cpu().getRegisterName(categoryIndex, i));
124 if (safeValueStartX < registerNameWidth)
125 {
126 safeValueStartX = registerNameWidth;
127 }
128 }
129
130 // Add a space between the value and name
131 safeValueStartX += 2;
132 // Convert to width in pixels
133 safeValueStartX *= painter.fontMetrics().averageCharWidth();
134 // Make it relative to where we start rendering
135 safeValueStartX += m_renderStart.x();
136
137 for (s32 i = 0; i < cpu().getRegisterCount(categoryIndex) - m_rowStart; i++)
138 {
139 const s32 registerIndex = i + m_rowStart;

Callers

nothing calls this directly

Calls 9

FilledQStringFromValueFunction · 0.85
colorMethod · 0.80
getRegisterCountMethod · 0.80
getRegisterNameMethod · 0.80
getRegisterSizeMethod · 0.80
getRegisterMethod · 0.80
argMethod · 0.80
sizeMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected