| 157 | } |
| 158 | |
| 159 | void Viewport::doPaint() |
| 160 | { |
| 161 | using pv::view::Signal; |
| 162 | |
| 163 | QStyleOption o; |
| 164 | o.initFrom(this); |
| 165 | QPainter p(this); |
| 166 | style()->drawPrimitive(QStyle::PE_Widget, &o, &p, this); |
| 167 | |
| 168 | QFont font = p.font(); |
| 169 | float fSize = AppConfig::Instance().appOptions.fontSize; |
| 170 | if (fSize > 10) |
| 171 | fSize = 10; |
| 172 | font.setPointSizeF(fSize); |
| 173 | p.setFont(font); |
| 174 | |
| 175 | _view.session().check_update(); |
| 176 | QColor fore(QWidget::palette().color(QWidget::foregroundRole())); |
| 177 | QColor back(QWidget::palette().color(QWidget::backgroundRole())); |
| 178 | fore.setAlpha(View::ForeAlpha); |
| 179 | _view.set_back(false); |
| 180 | |
| 181 | std::vector<Trace*> traces; |
| 182 | _view.get_traces(_type, traces); |
| 183 | |
| 184 | for(auto t : traces){ |
| 185 | t->paint_back(p, 0, _view.get_view_width(), fore, back); |
| 186 | if (_view.back_ready()) |
| 187 | break; |
| 188 | } |
| 189 | |
| 190 | int mode = _view.session().get_device()->get_work_mode(); |
| 191 | |
| 192 | if (mode == LOGIC || _view.session().is_instant()) |
| 193 | { |
| 194 | if (_view.session().is_init_status()) |
| 195 | { |
| 196 | paintCursors(p); |
| 197 | } |
| 198 | else if (_view.session().is_stopped_status()) |
| 199 | { |
| 200 | paintSignals(p, fore, back); |
| 201 | } |
| 202 | else if (_view.session().is_realtime_refresh()) |
| 203 | { |
| 204 | _view.session().have_new_realtime_refresh(false); // Try to reset refresh timer. |
| 205 | |
| 206 | if (_view.session().have_view_data() || _view.session().is_instant()) |
| 207 | paintSignals(p, fore, back); |
| 208 | else |
| 209 | paintProgress(p, fore, back); |
| 210 | } |
| 211 | else if (_view.session().is_running_status()){ |
| 212 | if (_view.session().is_repeat_mode()) |
| 213 | { |
| 214 | paintSignals(p, fore, back); |
| 215 | |
| 216 | if (!_transfer_started){ |
nothing calls this directly
no test coverage detected