|
Ivan Mahonin |
d9135c |
#pragma once
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
#ifndef ASSISTANTELLIPSE_INCLUDED
|
|
Ivan Mahonin |
d9135c |
#define ASSISTANTELLIPSE_INCLUDED
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
// TnzTools includes
|
|
Ivan Mahonin |
d9135c |
#include <tools/assistant.h>
|
|
Ivan Mahonin |
d9135c |
#include <tools/assistants/guidelineline.h>
|
|
Ivan Mahonin |
d9135c |
#include <tools/assistants/guidelineellipse.h>
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
// TnzCore includes
|
|
Ivan Mahonin |
d9135c |
#include <tgl.h>
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
// std includes
|
|
Ivan Mahonin |
d9135c |
#include <limits>
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
//*****************************************************************************************
|
|
Ivan Mahonin |
d9135c |
// TAssistantEllipse definition
|
|
Ivan Mahonin |
d9135c |
//*****************************************************************************************
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
class TAssistantEllipse final : public TAssistant {
|
|
Ivan Mahonin |
d9135c |
Q_DECLARE_TR_FUNCTIONS(TAssistantEllipse)
|
|
Ivan Mahonin |
d9135c |
public:
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idCircle;
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idRestrictA;
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idRestrictB;
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idRepeat;
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idGrid;
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idPerspective;
|
|
Ivan Mahonin |
d9135c |
const TStringId m_idPerspectiveDepth;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
protected:
|
|
Ivan Mahonin |
d9135c |
TAssistantPoint &m_center;
|
|
Ivan Mahonin |
d9135c |
TAssistantPoint &m_a;
|
|
Ivan Mahonin |
d9135c |
TAssistantPoint &m_b;
|
|
Ivan Mahonin |
d9135c |
TAssistantPoint &m_grid0;
|
|
Ivan Mahonin |
d9135c |
TAssistantPoint &m_grid1;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
public:
|
|
Ivan Mahonin |
d9135c |
TAssistantEllipse(TMetaObject &object);
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
static QString getLocalName();
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
void updateTranslation() const override;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
inline bool getCircle() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idCircle].getBool(); }
|
|
Ivan Mahonin |
d9135c |
inline bool getRestrictA() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idRestrictA].getBool(); }
|
|
Ivan Mahonin |
d9135c |
inline bool getRestrictB() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idRestrictB].getBool(); }
|
|
Ivan Mahonin |
d9135c |
inline bool getRepeat() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idRepeat].getBool(); }
|
|
Ivan Mahonin |
d9135c |
inline bool getGrid() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idGrid].getBool(); }
|
|
Ivan Mahonin |
d9135c |
inline bool getPerspective() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idPerspective].getBool(); }
|
|
Ivan Mahonin |
d9135c |
inline bool getPerspectiveDepth() const
|
|
Ivan Mahonin |
d9135c |
{ return data()[m_idPerspectiveDepth].getBool(); }
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
void onDataChanged(const TVariant &value) override;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
private:
|
|
Ivan Mahonin |
d9135c |
void fixBAndGrid(
|
|
Ivan Mahonin |
d9135c |
TPointD prevCenter,
|
|
Ivan Mahonin |
d9135c |
TPointD prevA,
|
|
Ivan Mahonin |
d9135c |
TPointD prevB );
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
public:
|
|
Ivan Mahonin |
d9135c |
void onMovePoint(TAssistantPoint &point, const TPointD &position) override;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
TAffine calcEllipseMatrix() const;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
void getGuidelines(
|
|
Ivan Mahonin |
d9135c |
const TPointD &position,
|
|
Ivan Mahonin |
d9135c |
const TAffine &toTool,
|
|
Ivan Mahonin |
d9135c |
TGuidelineList &outGuidelines ) const override;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
static void drawEllipseRanges(
|
|
Ivan Mahonin |
d9135c |
const TAngleRangeSet &ranges,
|
|
Ivan Mahonin |
d9135c |
const TAffine &ellipseMatrix,
|
|
Ivan Mahonin |
d9135c |
const TAffine &screenMatrixInv,
|
|
Ivan Mahonin |
d9135c |
double pixelSize,
|
|
Ivan Mahonin |
d9135c |
double alpha );
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
static inline void drawEllipse(
|
|
Ivan Mahonin |
d9135c |
const TAffine &ellipseMatrix,
|
|
Ivan Mahonin |
d9135c |
const TAffine &screenMatrixInv,
|
|
Ivan Mahonin |
d9135c |
double pixelSize,
|
|
Ivan Mahonin |
d9135c |
double alpha )
|
|
Ivan Mahonin |
d9135c |
{ drawEllipseRanges(TAngleRangeSet(true), ellipseMatrix, screenMatrixInv, pixelSize, alpha); }
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
static void drawRuler(
|
|
Ivan Mahonin |
d9135c |
const TAffine &ellipseMatrix,
|
|
Ivan Mahonin |
d9135c |
const TPointD &grid0,
|
|
Ivan Mahonin |
d9135c |
const TPointD &grid1,
|
|
Ivan Mahonin |
d9135c |
bool perspective,
|
|
Ivan Mahonin |
d9135c |
double alpha );
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
static void drawConcentricGrid(
|
|
Ivan Mahonin |
d9135c |
const TAffine &ellipseMatrix,
|
|
Ivan Mahonin |
d9135c |
const TPointD &grid0,
|
|
Ivan Mahonin |
d9135c |
const TPointD &grid1,
|
|
Ivan Mahonin |
d9135c |
bool perspective,
|
|
Ivan Mahonin |
d9135c |
double alpha );
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
static void drawParallelGrid(
|
|
Ivan Mahonin |
d9135c |
const TAffine &ellipseMatrix,
|
|
Ivan Mahonin |
d9135c |
const TPointD &grid0,
|
|
Ivan Mahonin |
d9135c |
const TPointD &grid1,
|
|
Ivan Mahonin |
d9135c |
const TPointD *bound0,
|
|
Ivan Mahonin |
d9135c |
const TPointD *bound1,
|
|
Ivan Mahonin |
d9135c |
bool perspective,
|
|
Ivan Mahonin |
d9135c |
bool perspectiveDepth,
|
|
Ivan Mahonin |
d9135c |
bool repeat,
|
|
Ivan Mahonin |
d9135c |
double alpha );
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
private:
|
|
Ivan Mahonin |
d9135c |
void draw(
|
|
Ivan Mahonin |
d9135c |
const TAffine &ellipseMatrix,
|
|
Ivan Mahonin |
d9135c |
const TAffine &screenMatrixInv,
|
|
Ivan Mahonin |
d9135c |
double ox,
|
|
Ivan Mahonin |
d9135c |
double pixelSize,
|
|
Ivan Mahonin |
d9135c |
bool enabled ) const;
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
public:
|
|
Ivan Mahonin |
d9135c |
void draw(TToolViewer *viewer, bool enabled) const override;
|
|
Ivan Mahonin |
d9135c |
};
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
|
|
Ivan Mahonin |
d9135c |
#endif
|