168 lines
3.6 KiB
C++
168 lines
3.6 KiB
C++
#pragma once
|
|
|
|
#ifndef FUNCTIONPANELTOOLS_H
|
|
#define FUNCTIONPANELTOOLS_H
|
|
|
|
#include "toonzqt/functionpanel.h"
|
|
#include "tdoublekeyframe.h"
|
|
#include "toonz/doubleparamcmd.h"
|
|
|
|
// class QMouseEvent;
|
|
class KeyframeSetter;
|
|
class TDoubleParam;
|
|
|
|
class FunctionPanel::DragTool
|
|
{
|
|
public:
|
|
DragTool() {}
|
|
virtual ~DragTool() {}
|
|
virtual void click(QMouseEvent *e) {}
|
|
virtual void drag(QMouseEvent *e) {}
|
|
virtual void release(QMouseEvent *e) {}
|
|
|
|
virtual void draw(QPainter &p) {}
|
|
};
|
|
|
|
class MoveFrameDragTool : public FunctionPanel::DragTool
|
|
{
|
|
FunctionPanel *m_panel;
|
|
TFrameHandle *m_frameHandle;
|
|
|
|
public:
|
|
MoveFrameDragTool(FunctionPanel *panel, TFrameHandle *frameHandle);
|
|
void drag(QMouseEvent *e);
|
|
};
|
|
|
|
class PanDragTool : public FunctionPanel::DragTool
|
|
{
|
|
FunctionPanel *m_panel;
|
|
QPoint m_oldPos;
|
|
bool m_xLocked, m_yLocked;
|
|
|
|
public:
|
|
PanDragTool(FunctionPanel *panel, bool xLocked, bool yLocked);
|
|
void click(QMouseEvent *e);
|
|
void drag(QMouseEvent *e);
|
|
};
|
|
|
|
class ZoomDragTool : public FunctionPanel::DragTool
|
|
{
|
|
FunctionPanel *m_panel;
|
|
QPoint m_startPos, m_oldPos;
|
|
int m_zoomType;
|
|
|
|
public:
|
|
enum ZoomType { FrameZoom = 1,
|
|
ValueZoom = 2 };
|
|
ZoomDragTool(FunctionPanel *panel, ZoomType zoomType) : m_panel(panel), m_zoomType((int)zoomType) {}
|
|
|
|
void click(QMouseEvent *e);
|
|
void drag(QMouseEvent *e);
|
|
void release(QMouseEvent *e);
|
|
};
|
|
|
|
class RectSelectTool : public FunctionPanel::DragTool
|
|
{
|
|
FunctionPanel *m_panel;
|
|
TDoubleParam *m_curve;
|
|
QPoint m_startPos;
|
|
QRect m_rect;
|
|
|
|
public:
|
|
RectSelectTool(FunctionPanel *panel, TDoubleParam *curve) : m_panel(panel), m_curve(curve) {}
|
|
|
|
void click(QMouseEvent *e);
|
|
void drag(QMouseEvent *e);
|
|
void release(QMouseEvent *e);
|
|
|
|
void draw(QPainter &painter);
|
|
};
|
|
|
|
class MovePointDragTool : public FunctionPanel::DragTool
|
|
{
|
|
|
|
FunctionPanel *m_panel;
|
|
QPoint m_startPos, m_oldPos;
|
|
double m_deltaFrame;
|
|
// length and kIndex of speedinout handles which can change because of point moving
|
|
double m_speed0Length;
|
|
int m_speed0Index;
|
|
double m_speed1Length;
|
|
int m_speed1Index;
|
|
std::vector<KeyframeSetter *> m_setters;
|
|
bool m_groupEnabled;
|
|
FunctionSelection *m_selection;
|
|
|
|
public:
|
|
MovePointDragTool(
|
|
FunctionPanel *panel,
|
|
TDoubleParam *curve);
|
|
~MovePointDragTool();
|
|
|
|
void addKeyframe2(int kIndex);
|
|
// void addKeyframe(int kIndex) {m_setter->selectKeyframe(kIndex);}
|
|
void createKeyframe(double frame);
|
|
void selectKeyframes(double frame);
|
|
|
|
void setSelection(FunctionSelection *selection);
|
|
|
|
void click(QMouseEvent *e);
|
|
void drag(QMouseEvent *e);
|
|
void release(QMouseEvent *e);
|
|
};
|
|
|
|
class MoveHandleDragTool : public FunctionPanel::DragTool
|
|
{
|
|
public:
|
|
typedef FunctionPanel::Handle Handle;
|
|
|
|
private:
|
|
FunctionPanel *m_panel;
|
|
TDoubleParam *m_curve;
|
|
QPoint m_startPos; //, m_oldPos;
|
|
double m_deltaFrame;
|
|
Handle m_handle;
|
|
int m_kIndex;
|
|
TDoubleKeyframe m_keyframe;
|
|
KeyframeSetter m_setter;
|
|
double m_segmentWidth;
|
|
QPointF m_nSpeed; // speedInOut constraint
|
|
|
|
public:
|
|
FunctionTreeModel::ChannelGroup *m_channelGroup;
|
|
|
|
MoveHandleDragTool(
|
|
FunctionPanel *panel,
|
|
TDoubleParam *curve,
|
|
int kIndex,
|
|
Handle handle);
|
|
|
|
void click(QMouseEvent *e);
|
|
void drag(QMouseEvent *e);
|
|
void release(QMouseEvent *e);
|
|
};
|
|
|
|
class MoveGroupHandleDragTool : public FunctionPanel::DragTool
|
|
{
|
|
public:
|
|
typedef FunctionPanel::Handle Handle;
|
|
|
|
private:
|
|
FunctionPanel *m_panel;
|
|
double m_keyframePosition;
|
|
Handle m_handle;
|
|
std::vector<std::pair<TDoubleKeyframe, KeyframeSetter *>> m_setters;
|
|
|
|
public:
|
|
MoveGroupHandleDragTool(
|
|
FunctionPanel *panel,
|
|
double keyframePosition,
|
|
Handle handle);
|
|
~MoveGroupHandleDragTool();
|
|
|
|
void click(QMouseEvent *e);
|
|
void drag(QMouseEvent *e);
|
|
void release(QMouseEvent *e);
|
|
};
|
|
|
|
#endif
|