/* * Copyright (C) 2017 Thales Lima Oliveira * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CAMERA_H #define CAMERA_H #include /** * @class Camera * @author Thales Lima Oliveira * @date 05/10/2017 * @brief Class responsible for the correct visualization of the elements on screen. * @file Camera.h */ class Camera { public: Camera(); ~Camera(); void SetScale(wxPoint2DDouble screenPoint, double delta); void SetScale(double scale) { m_scale = scale; } void SetTranslation(wxPoint2DDouble screenPoint); void StartTranslation(wxPoint2DDouble startPoint) { this->m_translationStartPt = startPoint; } void UpdateMousePosition(wxPoint2DDouble mousePosition) { this->m_mousePosition = mousePosition; } double GetScale() const { return m_scale; } wxPoint2DDouble GetTranslation() const { return m_translation; } wxPoint2DDouble GetMousePosition(bool worldCoords = true) const; wxPoint2DDouble ScreenToWorld(wxPoint2DDouble screenCoords) const; double GetZoomMin() const { return m_zoomMin; } double GetZoomMax() const { return m_zoomMax; } protected: wxPoint2DDouble m_translation; wxPoint2DDouble m_translationStartPt; double m_scale; wxPoint2DDouble m_mousePosition; double m_zoomMin = 0.01; double m_zoomMax = 3.0; }; #endif // CAMERA_H