Рефакторинг (1)
Создание системного заголовочного файла с нужными переопределениями, структурами и макросами
This commit is contained in:
61
Canvas.h
61
Canvas.h
@@ -1,56 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include "System.h"
|
||||||
constexpr auto EPS = 1e-9;
|
|
||||||
constexpr auto ZOOM_STEP = 0.05;
|
|
||||||
|
|
||||||
#define WIDGET_POSITION event->pos()
|
|
||||||
#define UCS_POSITION screenToLogical(WIDGET_POSITION)
|
|
||||||
#define CURVE_AS_LINE(CURVE) dynamic_cast<Line*>(CURVE)
|
|
||||||
#define CURVE_AS_CIRCLE(CURVE) dynamic_cast<Circle*>(CURVE)
|
|
||||||
|
|
||||||
#include <QWidget>
|
|
||||||
#include <QMouseEvent>
|
|
||||||
#include <QPointF>
|
|
||||||
#include <QMessageBox>
|
|
||||||
#include <QToolTip>
|
|
||||||
#include <QKeyEvent>
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
|
||||||
#include <QDebug>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// GCS — геометрический солвер из FreeCAD
|
|
||||||
#include "GCS/Geo.h"
|
|
||||||
#include "GCS/GCS.h"
|
|
||||||
using namespace GCS;
|
|
||||||
|
|
||||||
// ===================================================================
|
|
||||||
// Типы и перечисления
|
|
||||||
// ===================================================================
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Режимы работы с холстом
|
|
||||||
*/
|
|
||||||
enum class Mode : int
|
|
||||||
{
|
|
||||||
None = 0, ///< Режим отсутствия действия
|
|
||||||
DrawingLine = 1, ///< Режим рисования линии
|
|
||||||
Parallel = 2, ///< Режим задания параллельности
|
|
||||||
Coincedent = 3, ///< Режим задания совпадения точек
|
|
||||||
Horizontal = 4, ///< Режим задания горизонтальности
|
|
||||||
Vertical = 5, ///< Режим задания вертикальности
|
|
||||||
Perpendicular = 6, ///< Режим задания перпендикулярности
|
|
||||||
DrawingCircle = 7, ///< Режим рисования окружности
|
|
||||||
Tangent = 8 //< Режим задания касательности
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Удобный тип для хранения пары параллельных линий (порядок не важен)
|
|
||||||
using LinePair = std::pair<Line*, Line*>;
|
|
||||||
|
|
||||||
/// Удобный тип для хранения пары точек (порядок не важен)
|
|
||||||
using PointPair = std::pair<Point*, Point*>;
|
|
||||||
|
|
||||||
using CurvePair = std::pair<Curve*, Curve*>;
|
|
||||||
|
|
||||||
// ===================================================================
|
// ===================================================================
|
||||||
// Основной класс холста
|
// Основной класс холста
|
||||||
@@ -294,13 +243,5 @@ private:
|
|||||||
int constraints_count{ 0 }; ///< Счётчик ограничений (для тегов)
|
int constraints_count{ 0 }; ///< Счётчик ограничений (для тегов)
|
||||||
|
|
||||||
// ====================== Информация о последнем ограничении ======================
|
// ====================== Информация о последнем ограничении ======================
|
||||||
/**
|
|
||||||
* @brief Структура для хранения информации об ограничении
|
|
||||||
*/
|
|
||||||
struct ConstraintInfo {
|
|
||||||
Mode mode; ///< Тип ограничения
|
|
||||||
std::variant<LinePair, PointPair, CurvePair> data; ///< Данные ограничения
|
|
||||||
};
|
|
||||||
|
|
||||||
std::map<int, ConstraintInfo> C_Info; ///< Карта информации об ограничениях
|
std::map<int, ConstraintInfo> C_Info; ///< Карта информации об ограничениях
|
||||||
};
|
};
|
||||||
73
System.h
Normal file
73
System.h
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
#pragma once
|
||||||
|
#define WIDGET_POSITION event->pos()
|
||||||
|
#define UCS_POSITION screenToLogical(WIDGET_POSITION)
|
||||||
|
#define CURVE_AS_LINE(CURVE) dynamic_cast<Line*>(CURVE)
|
||||||
|
#define CURVE_AS_CIRCLE(CURVE) dynamic_cast<Circle*>(CURVE)
|
||||||
|
|
||||||
|
// GCS — геометрический солвер из FreeCAD
|
||||||
|
#include "GCS/Geo.h"
|
||||||
|
#include "GCS/GCS.h"
|
||||||
|
using namespace GCS;
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QPointF>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QToolTip>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef _DEBUG
|
||||||
|
#include <QDebug>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
constexpr auto EPS = 1e-9;
|
||||||
|
constexpr auto ZOOM_STEP = 0.05;
|
||||||
|
|
||||||
|
// ===================================================================
|
||||||
|
// Типы и перечисления
|
||||||
|
// ===================================================================
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Режимы работы с холстом
|
||||||
|
*/
|
||||||
|
enum class Mode : int
|
||||||
|
{
|
||||||
|
None = 0, ///< Режим отсутствия действия
|
||||||
|
DrawingLine = 1, ///< Режим рисования линии
|
||||||
|
Parallel = 2, ///< Режим задания параллельности
|
||||||
|
Coincedent = 3, ///< Режим задания совпадения точек
|
||||||
|
Horizontal = 4, ///< Режим задания горизонтальности
|
||||||
|
Vertical = 5, ///< Режим задания вертикальности
|
||||||
|
Perpendicular = 6, ///< Режим задания перпендикулярности
|
||||||
|
DrawingCircle = 7, ///< Режим рисования окружности
|
||||||
|
Tangent = 8 //< Режим задания касательности
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TextObject {
|
||||||
|
QPointF pos; ///< Логическая позиция (левый верхний угол)
|
||||||
|
QString text; ///< Текст
|
||||||
|
int tag; ///< Тег для идентификации
|
||||||
|
QFont font{ QFont("Arial", 12) }; ///< Шрифт (можно менять позже)
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Структура для хранения информации об ограничении
|
||||||
|
*/
|
||||||
|
struct ConstraintInfo {
|
||||||
|
Mode mode; ///< Тип ограничения
|
||||||
|
std::variant<LinePair, PointPair, CurvePair> data; ///< Данные ограничения
|
||||||
|
};
|
||||||
|
|
||||||
|
// ===================================================================
|
||||||
|
// Типы и перечисления
|
||||||
|
// ===================================================================
|
||||||
|
|
||||||
|
/// Удобный тип для хранения пары линий (порядок не важен)
|
||||||
|
using LinePair = std::pair<Line*, Line*>;
|
||||||
|
|
||||||
|
/// Удобный тип для хранения пары точек (порядок не важен)
|
||||||
|
using PointPair = std::pair<Point*, Point*>;
|
||||||
|
|
||||||
|
/// Удобный тип для хранения пары кривых (порядок не важен)
|
||||||
|
using CurvePair = std::pair<Curve*, Curve*>;
|
||||||
Reference in New Issue
Block a user