This file is indexed.

/usr/include/astro/eclsolar.h is in libastro-dev 4:4.14.2-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
//
// This file is part of the Marble Virtual Globe.
//
// This program is free software licensed under the GNU LGPL. You can
// find a copy of this license in LICENSE.txt in the top directory of
// the source code.
//
// Copyright 2012 Gerhard HOLTKAMP
//

#if !defined(__eclsolar_h)
#define __eclsolar_h

#include "attlib.h"
#include "astrolib_export.h"

const int GBL_ECLBUF = 12;  // maximum number of eclipses allowed
const int MAXLUN = 15;

typedef double PMJD[MAXLUN];  // array of MJD's of the respective phase

class ASTROLIB_EXPORT EclSolar     // Calculate Solar Eclipses
{
  public:
    EclSolar();
    ~EclSolar();

    int getYear() const;  // the year currently used by EclSolar
    void putYear(int yr);  // set the year to be used by EclSolar
    int getNumberEclYear();  // get the number of eclipses of the currently selected year
    void setLunarEcl(bool lecl);  // include lunar eclipses
    void setStepWidth(double s);  // set the step width (minutes)
    void setTimezone(double d);  // set timezone for I/O
    void setDeltaTAI_UTC(double d);  // set IERS Parameter TAI - UTC
    void setAutoTAI_UTC();  // IERS Parameter TAI - UTC to auto
    void setLocalPos(double lat, double lng, double hgt); // set local geographic coordinates
    void getLocalDetails(char *otxt);  // provide eclipse details for local position
    void setCurrentMJD(int year, int month, int day, int hour, int min, double sec); // set current time
    void getDatefromMJD(double mjd, int &year, int &month, int &day,
                        int &hour, int &min, double &sec) const; // convert MJD into date and time
    int getLocalVisibility(double &mjd_start, double &mjd_stop);  // local start and stop times for eclipse
    int getLocalTotal(double &mjd_start, double &mjd_stop);  // local start and stop times for totality/annularity
    int getLocalMax(double &mjdmax, double &magmax, double &elmax);  // get local (solar) eclipse maximum
    int getPenumbra(double &mjd_start, double &mjd_stop);  // start and stop times for penumbral eclipse of Moon
    int getPartial(double &mjd_start, double &mjd_stop);  // (global) start and stop times for partial phase
    int getTotal(double &mjd_start, double &mjd_stop);   // (global) start and stop times for totality/annularity
    void getEclYearInfo(char* wbuf);  // list of eclipses of the year
    int getEclYearInfo(int k, int &yr, int &month, int &day,
                   int &hour, int &min, double &sec, double &tzone, double &magn);
    int getEclTxt (int j, char* jtxt);  // get text for j-th eclipse
    void putEclSelect(int es);  // select particular eclipse for details
    void nextEcl();  // select the next eclipse for details
    void previousEcl();  // select the previous eclipse for details
    double getLastMJD() const;  // get the MJD last used in calculations
    void getMaxPos(double &lat, double &lng); // get position of maximum eclipse
    int eclPltCentral(bool firstc, double &lat, double &lng);  // calc central eclipse line
    int GNSBound(bool firstc, bool north, double& lat, double& lng); // northern or southern boundary
    int GRSBound(bool firstc, double& lat1, double& lng1, double& lat2, double& lng2);
                     // Rise / Set Boundary
    int centralBound(bool firstc, double& lat1, double& lng1, double& lat2, double& lng2);
    void getShadowCone(double mjd, bool umbra, int numpts, double* lat, double* lng);
    void setPenumbraAngle(double pa, int mode);

  private:  
    void esinit();  // initialize EclSolar
    static double atan23 (double y, double x);  // atan without singularity for x,y=0
    void DefTime ();  // Get System Time and Date
    void calcMaxPos(double &lat, double &lng); // get position of maximum eclipse
    static void GetMonth (int mm, char* mchr);
    static double phmjd (double yearf, double phase, double tdut,
				  int& eph, double& ejd, double& emag);
    void ckphase (double minmjd, double maxmjd, double yr,
              double deltdut, int &mp, PMJD p, double phase);
    static void dtmstr(double jdmoon, char *dts);
    void moonph();  // calculate phases of the Moon
    void eclStart();   // initialize detailed calcs for selected eclipse
    static double getlocmag(double jd, double ep2, double phi, double lamda,
                     double height, Vec3 rs, Vec3 rm, int& totflg);
    static int iscrs(double vrc0, double vrc1, double dpn,
                           double& vrx0, double& vrx1, double& vrx20, double& vrx21);
    void InitBound(); // initialize boundary calcs
    void InRSBound();  // initialize Sunrise/Sunset boundaries
    static double DegFDms (double h);
    int localStart(int j, double *spt, double *ept, int *spp,
                                   int p, char *otxt);
    static double navCourse (double lat1, double lng1, double lat2, double lng2); // navigation course from p1 to p2
    static void navNewPos (double d, double an, double lat1, double lng1, double &lat2, double &lng2);
    static double sunObscure(double l1, double l2, double m);  // get the Obscuration of the Sun

   // data fields

      bool eb_start_called;  // true if eclStart() has already been called for eclipse
      bool eb_moonph_called; // true if moonph has already been called for year
      bool eb_lunecl;        // true if lunar eclipses are to be included
      bool eb_lunactive;     // true if current eclipse is a lunar eclipse
      bool eb_local_called;  // true if local circumstances calculated

      int eb_day;           // date
      int eb_month;
      int eb_year;
      int eb_hour;
      int eb_minute;
      int eb_second;
      double eb_time;
      double eb_tzone;      // timezone in hours
      double eb_del_tdut;   // TDT - UT in sec
      int eb_del_auto;      // 1 = automatic del_tdut,  0 = manual
      double eb_geolat;     // geographic coordinates (angles in degrees)
      double eb_geolong;
      double eb_geoheight;  // in meters
      int eb_lstcall;  // 1 = last call moonph; 2 = caldisp; 0 = no call 
      int eb_locecl;   // 1 = local eclipse call; 0 = normal (global) call

      bool eb_finished;  // true if the loop run on consecutive calls is finished
      bool eb_finished2;
      int eb_numecl;   // number of eclipses of the year;
      int eb_eclselect; // eclipse selected for detailed calculation
      int eb_lastyear;   // last year for which moon phases were calculated
      double eb_lasttz;  // last used timezone
      double eb_lastdlt; // last delta-t used
      int eb_cstep;   // step width in minutes used for central eclipse output
      double eb_eclmjd [GBL_ECLBUF];  // the MJD's of the middle of the eclipses
      double eb_magnitude [GBL_ECLBUF];   // magnitude of respective eclipse
      int eb_phase [GBL_ECLBUF];    // phase of the eclipse. 0 if no eclipse,
                                    // 1 partial Sun, 2 non-central annular, 3 non-central total,
                                    // 4 annular, 5 total, 6 annual/total  Sun
                                    // -1 partial penumbral Moon, -2 penumbral Moon,
                                    // -3 partial Moon, -4 total Moon.
      int eb_nphase;   // number of phases for eclipse details
      int eb_spp[4];     // kind of eclipse phase i
      double eb_spt[4];  // start time in MJD for phase i
      double eb_ept[4];  // end time in MJD for phase i
      int eb_lccnt; // = 0 not visible, 1,2 = first rise/set; 3,4 second r/s
      double eb_lcb1, eb_lcb2, eb_lce1, eb_lce2;  // rise and set times (up to 2 possible)
      double eb_jdmaxps; // MJD of maximum phase
      double eb_maxps;  // value of maximum phase
      double eb_maxelv; // elevation at maximum phase
      double eb_ltotb;  // begin of totality/annularity at local position
      double eb_ltote;  // end of totality/annularity at local position
      int eb_cphs;   // phase of the central eclipse for center line plotting
      double eb_clat; // current latitude of center line (in decimal degrees)
      double eb_clng; // current longitude of center line (in decimal degrees)
      double eb_cmxlat; // latitude of maximum eclipse (in decimal degrees)
      double eb_cmxlng; // longitude of maximum eclipse (in decimal degrees) 
      double eb_jdstart; // (global) start jd of eclipse
      double eb_jdstop;  // (global) end jd of eclipse
      double eb_lastjd;  // last used MJD for eclipse calcs
      double eb_dpb;   // Base value for diameter of penumbra
      double eb_dpd;   // delta value for diameter of penumbra
      double eb_penangle; // factor for multiplying the penumbra angle (1.0 for normal borders)
      int eb_penamode;  // mode for using eb_penangle
      Vec3 eb_ubm;  // Penumbra (or Umbra or Moon) base vector
      Vec3 eb_ube;  // Shadow base vector for upper boundary
      Vec3 eb_udm;  // Penumbra base delta vector
      Vec3 eb_ude;  // Shadow delta vector for upper boundary
      Vec3 eb_lbe;  // Shadod base vector for lower boundary
      Vec3 eb_lde;  // Shadow delta vector for lower boundary

};

#endif         // __eclsolar_h sentry.