mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-18 21:30:38 +01:00
[apps/sequence] Enable to change cursor view in graph view
Change-Id: I32cadab6c9fe0ea05e503457f93b20bad7e2f84a
This commit is contained in:
@@ -7,7 +7,8 @@ namespace Sequence {
|
||||
GraphView::GraphView(SequenceStore * sequenceStore, InteractiveCurveViewRange * graphRange,
|
||||
CurveViewCursor * cursor, BannerView * bannerView, View * cursorView) :
|
||||
FunctionGraphView(graphRange, cursor, bannerView, cursorView),
|
||||
m_sequenceStore(sequenceStore)
|
||||
m_sequenceStore(sequenceStore),
|
||||
m_verticalCursor(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -27,9 +28,20 @@ void GraphView::drawRect(KDContext * ctx, KDRect rect) const {
|
||||
}
|
||||
}
|
||||
|
||||
void GraphView::setVerticalCursor(bool verticalCursor) {
|
||||
m_verticalCursor = verticalCursor;
|
||||
}
|
||||
|
||||
float GraphView::evaluateModelWithParameter(Model * curve, float abscissa) const {
|
||||
Sequence * s = (Sequence *)curve;
|
||||
return s->evaluateAtAbscissa(abscissa, context());
|
||||
}
|
||||
|
||||
KDSize GraphView::cursorSize() {
|
||||
if (m_verticalCursor) {
|
||||
return KDSize(1, 2*bounds().height());
|
||||
}
|
||||
return CurveView::cursorSize();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -11,9 +11,12 @@ public:
|
||||
GraphView(SequenceStore * sequenceStore, Shared::InteractiveCurveViewRange * graphRange,
|
||||
Shared::CurveViewCursor * cursor, Shared::BannerView * bannerView, View * cursorView);
|
||||
void drawRect(KDContext * ctx, KDRect rect) const override;
|
||||
void setVerticalCursor(bool verticalCursor);
|
||||
private:
|
||||
float evaluateModelWithParameter(Model * expression, float abscissa) const override;
|
||||
KDSize cursorSize() override;
|
||||
SequenceStore * m_sequenceStore;
|
||||
bool m_verticalCursor;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -51,6 +51,14 @@ void CurveView::setCurveViewRange(CurveViewRange * curveViewRange) {
|
||||
m_curveViewRange = curveViewRange;
|
||||
}
|
||||
|
||||
void CurveView::setCursorView(View * cursorView) {
|
||||
m_cursorView = cursorView;
|
||||
}
|
||||
|
||||
void CurveView::setBannerView(BannerView * bannerView) {
|
||||
m_bannerView = bannerView;
|
||||
}
|
||||
|
||||
float CurveView::min(Axis axis) const {
|
||||
assert(axis == Axis::Horizontal || axis == Axis::Vertical);
|
||||
return (axis == Axis::Horizontal ? m_curveViewRange->xMin(): m_curveViewRange->yMin());
|
||||
@@ -333,6 +341,10 @@ float CurveView::evaluateModelWithParameter(Model * curve, float t) const {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
KDSize CurveView::cursorSize() {
|
||||
return KDSize(k_cursorSize, k_cursorSize);
|
||||
}
|
||||
|
||||
void CurveView::jointDots(KDContext * ctx, KDRect rect, Model * curve, float x, float y, float u, float v, KDColor color, int maxNumberOfRecursion) const {
|
||||
float pyf = floatToPixel(Axis::Vertical, y);
|
||||
float pvf = floatToPixel(Axis::Vertical, v);
|
||||
@@ -413,7 +425,7 @@ void CurveView::layoutSubviews() {
|
||||
if (m_curveViewCursor != nullptr && m_cursorView != nullptr) {
|
||||
KDCoordinate xCursorPixelPosition = roundf(floatToPixel(Axis::Horizontal, m_curveViewCursor->x()));
|
||||
KDCoordinate yCursorPixelPosition = roundf(floatToPixel(Axis::Vertical, m_curveViewCursor->y()));
|
||||
KDRect cursorFrame(xCursorPixelPosition - k_cursorSize/2, yCursorPixelPosition - k_cursorSize/2, k_cursorSize, k_cursorSize);
|
||||
KDRect cursorFrame(xCursorPixelPosition - cursorSize().width()/2, yCursorPixelPosition - cursorSize().height()/2, cursorSize().width(), cursorSize().height());
|
||||
if (!m_mainViewSelected || isnan(m_curveViewCursor->x()) || isnan(m_curveViewCursor->y())
|
||||
|| isinf(m_curveViewCursor->x()) || isinf(m_curveViewCursor->y())) {
|
||||
cursorFrame = KDRectZero;
|
||||
@@ -436,7 +448,7 @@ int CurveView::numberOfSubviews() const {
|
||||
|
||||
View * CurveView::subviewAtIndex(int index) {
|
||||
assert(index >= 0 && index < 2);
|
||||
if (index == 0) {
|
||||
if (index == 0 && m_bannerView != nullptr) {
|
||||
return m_bannerView;
|
||||
}
|
||||
return m_cursorView;
|
||||
|
||||
@@ -23,7 +23,8 @@ public:
|
||||
// When the main view is selected, the banner view is visible
|
||||
bool isMainViewSelected() const;
|
||||
void selectMainView(bool mainViewSelected);
|
||||
|
||||
void setCursorView(View * cursorView);
|
||||
void setBannerView(BannerView * bannerView);
|
||||
protected:
|
||||
void setCurveViewRange(CurveViewRange * curveViewRange);
|
||||
// Drawing methods
|
||||
@@ -49,7 +50,7 @@ protected:
|
||||
bool fillBar, KDColor defaultColor, KDColor highlightColor, float highlightLowerBound = INFINITY, float highlightUpperBound = -INFINITY) const;
|
||||
void computeLabels(Axis axis);
|
||||
void drawLabels(KDContext * ctx, KDRect rect, Axis axis, bool shiftOrigin) const;
|
||||
|
||||
virtual KDSize cursorSize();
|
||||
private:
|
||||
/* The window bounds are deduced from the model bounds but also take into
|
||||
account a margin (computed with k_marginFactor) */
|
||||
|
||||
Reference in New Issue
Block a user