+shared_ptr<pv::data::LogicSegment> LogicSignal::get_logic_segment_to_paint() const
+{
+ shared_ptr<pv::data::LogicSegment> segment;
+
+ const deque< shared_ptr<pv::data::LogicSegment> > &segments =
+ base_->logic_data()->logic_segments();
+
+ if (!segments.empty()) {
+ if (segment_display_mode_ == ShowLastSegmentOnly) {
+ segment = segments.back();
+ }
+
+ if ((segment_display_mode_ == ShowSingleSegmentOnly) ||
+ (segment_display_mode_ == ShowLastCompleteSegmentOnly)) {
+ try {
+ segment = segments.at(current_segment_);
+ } catch (out_of_range) {
+ qDebug() << "Current logic segment out of range for signal" << base_->name() << ":" << current_segment_;
+ }
+ }
+ }
+
+ return segment;
+}
+