mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
44 lines
1.9 KiB
C++
44 lines
1.9 KiB
C++
#ifndef SHARED_SIMPLE_INTERACTIVE_CURVE_VIEW_CONTROLLER_H
|
|
#define SHARED_SIMPLE_INTERACTIVE_CURVE_VIEW_CONTROLLER_H
|
|
|
|
#include <escher/view_controller.h>
|
|
#include "text_field_delegate.h"
|
|
#include "interactive_curve_view_range.h"
|
|
#include "curve_view_cursor.h"
|
|
#include "curve_view.h"
|
|
|
|
namespace Shared {
|
|
|
|
/* SimpleInteractiveCurveViewController is a View controller with a cursor that
|
|
* can handles zoom in/out and left and right events. */
|
|
|
|
class SimpleInteractiveCurveViewController : public ViewController, public TextFieldDelegate {
|
|
public:
|
|
SimpleInteractiveCurveViewController(Responder * parentResponder, CurveViewCursor * cursor);
|
|
View * view() override;
|
|
bool handleEvent(Ion::Events::Event event) override;
|
|
bool textFieldDidAbortEditing(TextField * textField) override;
|
|
bool textFieldDidReceiveEvent(TextField * textField, Ion::Events::Event event) override;
|
|
protected:
|
|
constexpr static float k_cursorRightMarginRatio = 0.04f; // (cursorWidth/2)/(graphViewWidth-1)
|
|
constexpr static float k_cursorLeftMarginRatio = 0.04f; // (cursorWidth/2)/(graphViewWidth-1)
|
|
virtual float cursorTopMarginRatio() { return 0.07f; } // (cursorHeight/2)/(graphViewHeight-1)
|
|
virtual float cursorBottomMarginRatio() = 0; // (cursorHeight/2+bannerHeight)/(graphViewHeight-1)
|
|
constexpr static float k_numberOfCursorStepsInGradUnit = 5.0f;
|
|
virtual bool handleZoom(Ion::Events::Event event);
|
|
virtual bool handleLeftRightEvent(Ion::Events::Event event);
|
|
virtual void reloadBannerView() = 0;
|
|
/* the result of moveCursorVertically/Horizontally means:
|
|
* false -> the cursor cannot move in this direction
|
|
* true -> the cursor moved */
|
|
virtual bool moveCursorHorizontally(int direction) { return false; };
|
|
virtual InteractiveCurveViewRange * interactiveCurveViewRange() = 0;
|
|
virtual CurveView * curveView() = 0;
|
|
virtual bool handleEnter() = 0;
|
|
CurveViewCursor * m_cursor;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|