Ivan Mahonin 4df9cd
#pragma once
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
#ifndef GUIDELINELINE_INCLUDED
Ivan Mahonin 4df9cd
#define GUIDELINELINE_INCLUDED
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
// TnzTools includes
Ivan Mahonin 4df9cd
#include <tools/assistant.h>
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
#undef DVAPI
Ivan Mahonin 4df9cd
#undef DVVAR
Ivan Mahonin 4df9cd
#ifdef TNZTOOLS_EXPORTS
Ivan Mahonin 4df9cd
#define DVAPI DV_EXPORT_API
Ivan Mahonin 4df9cd
#define DVVAR DV_EXPORT_VAR
Ivan Mahonin 4df9cd
#else
Ivan Mahonin 4df9cd
#define DVAPI DV_IMPORT_API
Ivan Mahonin 4df9cd
#define DVVAR DV_IMPORT_VAR
Ivan Mahonin 4df9cd
#endif
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
//==============================================================
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
//    TGuidelineLineBase definition
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
class DVAPI TGuidelineLineBase : public TGuideline {
Ivan Mahonin 4df9cd
public:
Ivan Mahonin 4df9cd
  const TPointD p0;
Ivan Mahonin 4df9cd
  const TPointD p1;
Ivan Mahonin 4df9cd
Ivan Mahonin 8074a5
  TGuidelineLineBase(bool enabled, double magnetism, const TPointD &p0, const TPointD &p1);
Ivan Mahonin 7c7225
  void drawLine(const TPointD &p0, const TPointD &p1, bool restrict0, bool restrict1, bool active, bool enabled) const;
Ivan Mahonin 4df9cd
  static TPointD calcDirection(const TPointD &p0, const TPointD &p1);
Ivan Mahonin c7854d
  static bool truncateInfiniteLine(const TRectD &bounds, TPointD &p0, TPointD &p1);
Ivan Mahonin 7c7225
  static bool truncateRay(const TRectD &bounds, TPointD &p0, TPointD &p1);
Ivan Mahonin 7c7225
  static bool truncateLine(const TRectD &bounds, TPointD &p0, TPointD &p1);
Ivan Mahonin 4df9cd
};
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
//    TGuidelineLine definition
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
class DVAPI TGuidelineLine : public TGuidelineLineBase {
Ivan Mahonin 4df9cd
public:
Ivan Mahonin 4df9cd
  const TPointD dir;
Ivan Mahonin 4df9cd
  const double dist;
Ivan Mahonin 4df9cd
Ivan Mahonin 8074a5
  TGuidelineLine(bool enabled, double magnetism, const TPointD &p0, const TPointD &p1);
Ivan Mahonin 4df9cd
  TTrackPoint transformPoint(const TTrackPoint &point) const override;
Ivan Mahonin 8074a5
  void draw(bool active, bool enabled) const override;
Ivan Mahonin 4df9cd
};
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
//    TGuidelineInfiniteLine definition
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
class DVAPI TGuidelineInfiniteLine : public TGuidelineLineBase {
Ivan Mahonin 4df9cd
public:
Ivan Mahonin 4df9cd
  const TPointD dir;
Ivan Mahonin 4df9cd
Ivan Mahonin 8074a5
  TGuidelineInfiniteLine(bool enabled, double magnetism, const TPointD &p0, const TPointD &p1);
Ivan Mahonin 4df9cd
  TTrackPoint transformPoint(const TTrackPoint &point) const override;
Ivan Mahonin 8074a5
  void draw(bool active, bool enabled) const override;
Ivan Mahonin 4df9cd
};
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
//    TGuidelineRay definition
Ivan Mahonin 4df9cd
//*****************************************************************************************
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
class DVAPI TGuidelineRay : public TGuidelineLineBase {
Ivan Mahonin 4df9cd
public:
Ivan Mahonin 4df9cd
  const TPointD dir;
Ivan Mahonin 4df9cd
Ivan Mahonin 8074a5
  TGuidelineRay(bool enabled, double magnetism, const TPointD &p0, const TPointD &p1);
Ivan Mahonin 4df9cd
  TTrackPoint transformPoint(const TTrackPoint &point) const override;
Ivan Mahonin 8074a5
  void draw(bool active, bool enabled) const override;
Ivan Mahonin 4df9cd
};
Ivan Mahonin 4df9cd
Ivan Mahonin 4df9cd
#endif