Kstars

linelistlabel.h
1 /*
2  SPDX-FileCopyrightText: 2007 James B. Bowlin <[email protected]>
3  SPDX-License-Identifier: GPL-2.0-or-later
4 */
5 
6 #pragma once
7 
8 #include <QPointF>
9 #include <QString>
10 
11 class LineList;
12 class Projector;
13 class SkyLabeler;
14 
15 /**
16  * @class LabelListIndex
17  * An abstract parent class to be inherited by Ecliptic and Equator.
18  *
19  * @author James B. Bowlin
20  * @version 0.1
21  */
22 class LineListLabel
23 {
24  public:
25  explicit LineListLabel(const QString &text);
26 
27  enum
28  {
29  TopCandidate,
30  BotCandidate,
31  LeftCandidate,
32  RightCandidate
33  };
34 
35  /** @short prepare the context for selecting label position candidates. */
36  void reset();
37 
38  /**
39  * @short draw the label if any. Is currently called at the bottom of draw() but that call could
40  * be removed and it could be called externally AFTER draw() has been called so draw() can set
41  * up the label position candidates.
42  */
43  void draw();
44 
45  void updateLabelCandidates(qreal x, qreal y, LineList *lineList, int i);
46 
47  private:
48  /**
49  * @short This routine does two things at once. It returns the QPointF
50  * corresponding to pointList[i] and also computes the angle using
51  * pointList[i] and pointList[i-1] therefore you MUST ensure that:
52  *
53  * 1 <= i < pointList.size().
54  */
55  QPointF angleAt(const Projector *proj, LineList *list, int i, double *angle);
56 
57  const QString m_text;
58  SkyLabeler *m_skyLabeler { nullptr };
59 
60  // these two arrays track/contain 4 candidate points
61  int m_labIndex[4] { 0, 0, 0, 0 };
62  LineList *m_labList[4] { nullptr, nullptr, nullptr, nullptr };
63 
64  float m_marginLeft { 0 };
65  float m_marginRight { 0 };
66  float m_marginTop { 0 };
67  float m_marginBot { 0 };
68  float m_farLeft { 0 };
69  float m_farRight { 0 };
70  float m_farTop { 0 };
71  float m_farBot { 0 };
72 };
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Fri Aug 19 2022 03:57:52 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.