File indexing completed on 2024-04-28 15:09:12
0001 /* 0002 SPDX-FileCopyrightText: 2022 Toni Schriber 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 0007 #pragma once 0008 0009 #include "indi/indimount.h" 0010 0011 class RotatorUtils : public QObject 0012 { 0013 Q_OBJECT 0014 0015 public: 0016 static RotatorUtils *Instance(); 0017 static void release(); 0018 0019 void initRotatorUtils(const QString &train); 0020 void setImageFlip(bool state); 0021 bool checkImageFlip(); 0022 double calcRotatorAngle(double PositionAngle); 0023 double calcCameraAngle(double RotatorAngle, bool flippedImage); 0024 double calcOffsetAngle(double RotatorAngle, double PositionAngle); 0025 void updateOffset(double Angle); 0026 void setImagePierside(ISD::Mount::PierSide ImgPierside); 0027 ISD::Mount::PierSide getMountPierside(); 0028 double DiffPA(double diff); 0029 void initTimeFrame(const double EndAngle); 0030 int calcTimeFrame(const double CurrentAngle); 0031 void startTimeFrame(const double StartAngle); 0032 0033 private: 0034 RotatorUtils(); 0035 ~RotatorUtils(); 0036 static RotatorUtils *m_Instance; 0037 0038 ISD::Mount::PierSide m_CalPierside {ISD::Mount::PIER_WEST}; 0039 ISD::Mount::PierSide m_ImgPierside {ISD::Mount::PIER_UNKNOWN}; 0040 double m_Offset {0}; 0041 bool m_flippedMount {false}; 0042 ISD::Mount *m_Mount {nullptr}; 0043 double m_StartAngle, m_EndAngle {0}; 0044 double m_ShiftAngle, m_DiffAngle {0}; 0045 QTime m_StartTime, m_CurrentTime; 0046 int m_DeltaTime = 0; 0047 double m_DeltaAngle = 0; 0048 int m_TimeFrame = 0; 0049 bool m_initParameter, m_CCW = true; 0050 0051 signals: 0052 void changedPierside(ISD::Mount::PierSide index); 0053 };