File indexing completed on 2024-04-21 03:44:18
0001 /* 0002 SPDX-FileCopyrightText: 2016 Artem Fedoskin <afedoskin3@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "fovitem.h" 0007 #include "labelsitem.h" 0008 #include "skynodes/fovsymbolnode.h" 0009 #include "Options.h" 0010 0011 FOVItem::FOVItem(RootNode *rootNode) : SkyItem(LabelsItem::label_t::NO_LABEL, rootNode) 0012 { 0013 addSymbol(i18nc("use field-of-view for binoculars", "7x35 Binoculars"), 558, 558, 0, 0, 0, CIRCLE, "#AAAAAA"); 0014 addSymbol(i18nc("use a Telrad field-of-view indicator", "Telrad"), 30, 30, 0, 0, 0, BULLSEYE, "#AA0000"); 0015 addSymbol(i18nc("use 1-degree field-of-view indicator", "One Degree"), 60, 60, 0, 0, 0, CIRCLE, "#AAAAAA"); 0016 addSymbol(i18nc("use HST field-of-view indicator", "HST WFPC2"), 2.4, 2.4, 0, 0, 0, SQUARE, "#AAAAAA"); 0017 addSymbol(i18nc("use Radiotelescope HPBW", "30m at 1.3cm"), 1.79, 1.79, 0, 0, 0, SQUARE, "#AAAAAA"); 0018 } 0019 0020 void FOVItem::addSymbol(const QString &name, float a, float b, float xoffset, float yoffset, float rot, 0021 FOVItem::Shape shape, const QString &color) 0022 { 0023 SkyMapLite::Instance()->addFOVSymbol(name, false); 0024 appendChildNode(new FOVSymbolNode(name, a, b, xoffset, yoffset, rot, shape, color)); 0025 } 0026 0027 void FOVItem::update() 0028 { 0029 float zoomFactor = Options::zoomFactor(); 0030 SkyMapLite *map = SkyMapLite::Instance(); 0031 0032 QSGNode *n = firstChild(); 0033 int index = 0; 0034 while (n != 0) 0035 { 0036 FOVSymbolNode *fov = static_cast<FOVSymbolNode *>(n); 0037 if (map->isFOVVisible(index)) 0038 { 0039 fov->update(zoomFactor); 0040 } 0041 else 0042 { 0043 fov->hide(); 0044 } 0045 n = n->nextSibling(); 0046 index++; 0047 } 0048 }