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 }