tahoma2d/toonz/sources/tnztools/rulertool.h

61 lines
1.4 KiB
C
Raw Normal View History

2016-05-17 03:04:11 +12:00
#pragma once
2016-03-19 06:57:51 +13:00
#ifndef RULERTOOL_H
#define RULERTOOL_H
#include "tools/tool.h"
#include "tproperty.h"
#include "tools/tooloptions.h"
#include <QCoreApplication>
//----------------------------------------------------------------------------------------------
class RulerTool final : public TTool {
2016-06-15 18:43:10 +12:00
Q_DECLARE_TR_FUNCTIONS(RulerTool)
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
enum DragMode { MakeNewRuler = 0, MoveFirstPos, MoveSecondPos, MoveRuler };
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
TPointD m_firstPos, m_secondPos;
TPointD m_mousePos;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
DragMode m_dragMode;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool m_justClicked;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
std::vector<RulerToolOptionsBox *> m_toolOptionsBox;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
RulerTool();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setToolOptionsBox(RulerToolOptionsBox *toolOptionsBox);
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
ToolType getToolType() const override { return TTool::GenericTool; }
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void onImageChanged() override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void draw() override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void leftButtonDown(const TPointD &pos, const TMouseEvent &e) override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void leftButtonDrag(const TPointD &pos, const TMouseEvent &e) override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void leftButtonUp(const TPointD &pos, const TMouseEvent &) override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void mouseMove(const TPointD &pos, const TMouseEvent &e) override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void onActivate() override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
int getCursorId() const override;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void updateToolOption();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
/*--- 現在のマウス位置がRulerに十分近ければTrue ---*/
bool isNearRuler();
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
/*--- 基準点に対し、マウス位置を0,45,90度にフィットさせた位置を返す ---*/
TPointD getHVCoordinatedPos(TPointD p, TPointD centerPos);
2016-03-19 06:57:51 +13:00
};
#endif