projects
/
pulseview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
View: Change the type of tick_period to pv::util::Timestamp
[pulseview.git]
/
pv
/
view
/
view.cpp
diff --git
a/pv/view/view.cpp
b/pv/view/view.cpp
index 652c4f8087e637c32e1a94068b8dabdb6fbd6ab3..e00917f64fa4d49086890ce333d924ed76ad77fc 100644
(file)
--- a/
pv/view/view.cpp
+++ b/
pv/view/view.cpp
@@
-103,10
+103,10
@@
View::View(Session &session, QWidget *parent) :
updating_scroll_(false),
sticky_scrolling_(false), // Default setting is set in MainWindow::setup_ui()
always_zoom_to_fit_(false),
updating_scroll_(false),
sticky_scrolling_(false), // Default setting is set in MainWindow::setup_ui()
always_zoom_to_fit_(false),
- tick_period_(0
.0
),
- tick_prefix_(
0
),
+ tick_period_(0),
+ tick_prefix_(
pv::util::SIPrefix::yocto
),
tick_precision_(0),
tick_precision_(0),
- time_unit_(util::Time),
+ time_unit_(util::Time
Unit::Time
),
show_cursors_(false),
cursors_(new CursorPair(*this)),
next_flag_text_('A'),
show_cursors_(false),
cursors_(new CursorPair(*this)),
next_flag_text_('A'),
@@
-211,11
+211,27
@@
double View::scale() const
return scale_;
}
return scale_;
}
+void View::set_scale(double scale)
+{
+ if (scale_ != scale) {
+ scale_ = scale;
+ Q_EMIT scale_changed();
+ }
+}
+
const Timestamp& View::offset() const
{
return offset_;
}
const Timestamp& View::offset() const
{
return offset_;
}
+void View::set_offset(const pv::util::Timestamp& offset)
+{
+ if (offset_ != offset) {
+ offset_ = offset;
+ Q_EMIT offset_changed();
+ }
+}
+
int View::owner_visual_v_offset() const
{
return -verticalScrollBar()->sliderPosition();
int View::owner_visual_v_offset() const
{
return -verticalScrollBar()->sliderPosition();
@@
-233,26
+249,58
@@
unsigned int View::depth() const
return 0;
}
return 0;
}
-
unsigned int
View::tick_prefix() const
+
pv::util::SIPrefix
View::tick_prefix() const
{
return tick_prefix_;
}
{
return tick_prefix_;
}
+void View::set_tick_prefix(pv::util::SIPrefix tick_prefix)
+{
+ if (tick_prefix_ != tick_prefix) {
+ tick_prefix_ = tick_prefix;
+ Q_EMIT tick_prefix_changed();
+ }
+}
+
unsigned int View::tick_precision() const
{
return tick_precision_;
}
unsigned int View::tick_precision() const
{
return tick_precision_;
}
-double View::tick_period() const
+void View::set_tick_precision(unsigned tick_precision)
+{
+ if (tick_precision_ != tick_precision) {
+ tick_precision_ = tick_precision;
+ Q_EMIT tick_precision_changed();
+ }
+}
+
+const pv::util::Timestamp& View::tick_period() const
{
return tick_period_;
}
{
return tick_period_;
}
+void View::set_tick_period(const pv::util::Timestamp& tick_period)
+{
+ if (tick_period_ != tick_period) {
+ tick_period_ = tick_period;
+ Q_EMIT tick_period_changed();
+ }
+}
+
TimeUnit View::time_unit() const
{
return time_unit_;
}
TimeUnit View::time_unit() const
{
return time_unit_;
}
+void View::set_time_unit(pv::util::TimeUnit time_unit)
+{
+ if (time_unit_ != time_unit) {
+ time_unit_ = time_unit;
+ Q_EMIT time_unit_changed();
+ }
+}
+
void View::zoom(double steps)
{
zoom(steps, viewport_->width() / 2);
void View::zoom(double steps)
{
zoom(steps, viewport_->width() / 2);
@@
-335,15
+383,14
@@
void View::set_scale_offset(double scale, const Timestamp& offset)
}
}
}
}
- s
cale_ = scale
;
-
offset_ = offset
;
+ s
et_scale(scale)
;
+
set_offset(offset)
;
calculate_tick_spacing();
update_scroll();
ruler_->update();
viewport_->update();
calculate_tick_spacing();
update_scroll();
ruler_->update();
viewport_->update();
- scale_offset_changed();
}
set< shared_ptr<SignalData> > View::get_visible_data() const
}
set< shared_ptr<SignalData> > View::get_visible_data() const
@@
-514,7
+561,8
@@
void View::calculate_tick_spacing()
const double min_period = scale_ * min_width;
const int order = (int)floorf(log10f(min_period));
const double min_period = scale_ * min_width;
const int order = (int)floorf(log10f(min_period));
- const double order_decimal = pow(10.0, order);
+ const pv::util::Timestamp order_decimal =
+ pow(pv::util::Timestamp(10), order);
// Allow for a margin of error so that a scale unit of 1 can be used.
// Otherwise, for a SU of 1 the tick period will almost always be below
// Allow for a margin of error so that a scale unit of 1 can be used.
// Otherwise, for a SU of 1 the tick period will almost always be below
@@
-525,17
+573,20
@@
void View::calculate_tick_spacing()
unsigned int unit = 0;
do {
unsigned int unit = 0;
do {
- tp_with_margin = order_decimal * (ScaleUnits[unit++] + tp_margin);
+ tp_with_margin = order_decimal.convert_to<double>() *
+ (ScaleUnits[unit++] + tp_margin);
} while (tp_with_margin < min_period && unit < countof(ScaleUnits));
} while (tp_with_margin < min_period && unit < countof(ScaleUnits));
- tick_period_ = order_decimal * ScaleUnits[unit - 1];
- tick_prefix_ = (order - pv::util::FirstSIPrefixPower) / 3;
+ set_tick_period(order_decimal * ScaleUnits[unit - 1]);
+ set_tick_prefix(static_cast<pv::util::SIPrefix>(
+ (order - pv::util::exponent(pv::util::SIPrefix::yocto)) / 3));
// Precision is the number of fractional digits required, not
// taking the prefix into account (and it must never be negative)
// Precision is the number of fractional digits required, not
// taking the prefix into account (and it must never be negative)
- tick_precision_ = std::max((int)ceil(log10f(1 / tick_period_)), 0);
+ set_tick_precision(std::max(
+ ceil(log10(1 / tick_period_)).convert_to<int>(), 0));
- tick_period_width =
tick_period_ / scale_
;
+ tick_period_width =
(tick_period_ / scale_).convert_to<double>()
;
const QString label_text =
format_time(max_time, tick_prefix_, time_unit_, tick_precision_);
const QString label_text =
format_time(max_time, tick_prefix_, time_unit_, tick_precision_);
@@
-545,7
+596,6
@@
void View::calculate_tick_spacing()
MinValueSpacing;
min_width += SpacingIncrement;
MinValueSpacing;
min_width += SpacingIncrement;
-
} while (tick_period_width < label_width);
}
} while (tick_period_width < label_width);
}
@@
-561,7
+611,7
@@
void View::update_scroll()
get_scroll_layout(length, offset);
length = max(length - areaSize.width(), 0.0);
get_scroll_layout(length, offset);
length = max(length - areaSize.width(), 0.0);
- int major_tick_distance =
tick_period_ / scale_
;
+ int major_tick_distance =
(tick_period_ / scale_).convert_to<int>()
;
horizontalScrollBar()->setPageStep(areaSize.width() / 2);
horizontalScrollBar()->setSingleStep(major_tick_distance);
horizontalScrollBar()->setPageStep(areaSize.width() / 2);
horizontalScrollBar()->setSingleStep(major_tick_distance);
@@
-679,7
+729,7
@@
vector< shared_ptr<Trace> > View::extract_new_traces_for_channels(
void View::determine_time_unit()
{
// Check whether we know the sample rate and hence can use time as the unit
void View::determine_time_unit()
{
// Check whether we know the sample rate and hence can use time as the unit
- if (time_unit_ == util::Samples) {
+ if (time_unit_ == util::
TimeUnit::
Samples) {
shared_lock<shared_mutex> lock(session().signals_mutex());
const unordered_set< shared_ptr<Signal> > &sigs(session().signals());
shared_lock<shared_mutex> lock(session().signals_mutex());
const unordered_set< shared_ptr<Signal> > &sigs(session().signals());
@@
-691,7
+741,7
@@
void View::determine_time_unit()
const vector< shared_ptr<Segment> > segments = data->segments();
if (!segments.empty())
if (segments[0]->samplerate()) {
const vector< shared_ptr<Segment> > segments = data->segments();
if (!segments.empty())
if (segments[0]->samplerate()) {
-
time_unit_ = util::Time
;
+
set_time_unit(util::TimeUnit::Time)
;
break;
}
}
break;
}
}
@@
-785,12
+835,12
@@
void View::h_scroll_value_changed(int value)
const int range = horizontalScrollBar()->maximum();
if (range < MaxScrollValue)
const int range = horizontalScrollBar()->maximum();
if (range < MaxScrollValue)
-
offset_ = scale_ * value
;
+
set_offset(scale_ * value)
;
else {
double length = 0;
Timestamp offset;
get_scroll_layout(length, offset);
else {
double length = 0;
Timestamp offset;
get_scroll_layout(length, offset);
-
offset_ = scale_ * length * value / MaxScrollValue
;
+
set_offset(scale_ * length * value / MaxScrollValue)
;
}
ruler_->update();
}
ruler_->update();
@@
-932,7
+982,7
@@
void View::signals_changed()
void View::capture_state_updated(int state)
{
if (state == Session::Running)
void View::capture_state_updated(int state)
{
if (state == Session::Running)
-
time_unit_ = util::Samples
;
+
set_time_unit(util::TimeUnit::Samples)
;
if (state == Session::Stopped) {
// After acquisition has stopped we need to re-calculate the ticks once
if (state == Session::Stopped) {
// After acquisition has stopped we need to re-calculate the ticks once
@@
-974,7
+1024,7
@@
void View::perform_delayed_view_update()
const QSize areaSize = viewport_->size();
length = max(length - areaSize.width(), 0.0);
const QSize areaSize = viewport_->size();
length = max(length - areaSize.width(), 0.0);
-
offset_ = scale_ * length
;
+
set_offset(scale_ * length)
;
}
determine_time_unit();
}
determine_time_unit();