mirror of git://sigrok.org/pulseview
Add TriggerMarker class.
This will be used in a follow-up changeset for the markers that visualize the time of SR_DF_TRIGGER. Note that this copies a little code from the TimeMarker class, but that seemed a better idea than deriving from it and disabling the popup and label-drawing code.
This commit is contained in:
parent
d75c5d1296
commit
51ae69ae74
|
@ -206,6 +206,7 @@ set(pulseview_SOURCES
|
|||
pv/view/tracepalette.cpp
|
||||
pv/view/tracetreeitem.cpp
|
||||
pv/view/tracetreeitemowner.cpp
|
||||
pv/view/triggermarker.cpp
|
||||
pv/view/view.cpp
|
||||
pv/view/viewitem.cpp
|
||||
pv/view/viewitemowner.cpp
|
||||
|
@ -258,6 +259,7 @@ set(pulseview_HEADERS
|
|||
pv/view/trace.hpp
|
||||
pv/view/tracegroup.hpp
|
||||
pv/view/tracetreeitem.hpp
|
||||
pv/view/triggermarker.hpp
|
||||
pv/view/view.hpp
|
||||
pv/view/viewitem.hpp
|
||||
pv/view/viewport.hpp
|
||||
|
|
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* This file is part of the PulseView project.
|
||||
*
|
||||
* Copyright (C) 2014 Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "triggermarker.hpp"
|
||||
#include "view.hpp"
|
||||
|
||||
namespace pv {
|
||||
namespace view {
|
||||
|
||||
const QColor TriggerMarker::Colour(0x00, 0x00, 0xB0);
|
||||
|
||||
TriggerMarker::TriggerMarker(View &view, const pv::util::Timestamp& time) :
|
||||
TimeItem(view),
|
||||
time_(time)
|
||||
{
|
||||
}
|
||||
|
||||
TriggerMarker::TriggerMarker(const TriggerMarker &marker) :
|
||||
TimeItem(marker.view_),
|
||||
time_(marker.time_)
|
||||
{
|
||||
}
|
||||
|
||||
bool TriggerMarker::enabled() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TriggerMarker::is_draggable() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
void TriggerMarker::set_time(const pv::util::Timestamp& time)
|
||||
{
|
||||
time_ = time;
|
||||
|
||||
view_.time_item_appearance_changed(true, true);
|
||||
}
|
||||
|
||||
float TriggerMarker::get_x() const
|
||||
{
|
||||
return ((time_ - view_.offset()) / view_.scale()).convert_to<float>();
|
||||
}
|
||||
|
||||
QPoint TriggerMarker::point(const QRect &rect) const
|
||||
{
|
||||
return QPoint(get_x(), rect.bottom());
|
||||
}
|
||||
|
||||
void TriggerMarker::paint_fore(QPainter &p, const ViewItemPaintParams &pp)
|
||||
{
|
||||
if (!enabled())
|
||||
return;
|
||||
|
||||
QPen pen(Colour);
|
||||
pen.setStyle(Qt::DashLine);
|
||||
|
||||
const float x = get_x();
|
||||
p.setPen(pen);
|
||||
p.drawLine(QPointF(x, pp.top()), QPointF(x, pp.bottom()));
|
||||
}
|
||||
|
||||
} // namespace view
|
||||
} // namespace pv
|
|
@ -0,0 +1,86 @@
|
|||
/*
|
||||
* This file is part of the PulseView project.
|
||||
*
|
||||
* Copyright (C) 2014 Joel Holdsworth <joel@airwebreathe.org.uk>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef PULSEVIEW_PV_VIEW_TRIGGER_MARKER_HPP
|
||||
#define PULSEVIEW_PV_VIEW_TRIGGER_MARKER_HPP
|
||||
|
||||
#include "timeitem.hpp"
|
||||
|
||||
namespace pv {
|
||||
namespace view {
|
||||
|
||||
class TriggerMarker : public TimeItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
static const QColor Colour;
|
||||
|
||||
public:
|
||||
/**
|
||||
* Constructor.
|
||||
* @param view A reference to the view that owns this marker.
|
||||
* @param time The time to set the marker to.
|
||||
*/
|
||||
TriggerMarker(View &view, const pv::util::Timestamp& time);
|
||||
|
||||
/**
|
||||
* Copy constructor.
|
||||
*/
|
||||
TriggerMarker(const TriggerMarker &marker);
|
||||
|
||||
/**
|
||||
* Returns true if the item is visible and enabled.
|
||||
*/
|
||||
bool enabled() const override;
|
||||
|
||||
/**
|
||||
Returns true if the item may be dragged/moved.
|
||||
*/
|
||||
bool is_draggable() const override;
|
||||
|
||||
/**
|
||||
* Sets the time of the marker.
|
||||
*/
|
||||
void set_time(const pv::util::Timestamp& time) override;
|
||||
|
||||
float get_x() const override;
|
||||
|
||||
/**
|
||||
* Gets the arrow-tip point of the time marker.
|
||||
* @param rect the rectangle of the ruler area.
|
||||
*/
|
||||
QPoint point(const QRect &rect) const override;
|
||||
|
||||
/**
|
||||
* Paints the foreground layer of the item with a QPainter
|
||||
* @param p the QPainter to paint into.
|
||||
* @param pp the painting parameters object to paint with.
|
||||
**/
|
||||
void paint_fore(QPainter &p, const ViewItemPaintParams &pp) override;
|
||||
|
||||
private:
|
||||
pv::util::Timestamp time_;
|
||||
};
|
||||
|
||||
} // namespace view
|
||||
} // namespace pv
|
||||
|
||||
#endif // PULSEVIEW_PV_VIEW_TRIGGER_MARKER_HPP
|
|
@ -61,6 +61,7 @@ set(pulseview_TEST_SOURCES
|
|||
${PROJECT_SOURCE_DIR}/pv/view/tracepalette.cpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/tracetreeitem.cpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/tracetreeitemowner.cpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/triggermarker.cpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/view.cpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/viewitem.cpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/viewitemowner.cpp
|
||||
|
@ -109,6 +110,7 @@ set(pulseview_TEST_HEADERS
|
|||
${PROJECT_SOURCE_DIR}/pv/view/trace.hpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/tracegroup.hpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/tracetreeitem.hpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/triggermarker.hpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/view.hpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/viewitem.hpp
|
||||
${PROJECT_SOURCE_DIR}/pv/view/viewport.hpp
|
||||
|
|
Loading…
Reference in New Issue