This file is indexed.

/usr/include/ossim/elevation/ossimTiledElevationDatabase.h is in libossim-dev 2.2.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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
//----------------------------------------------------------------------------
//
// File: ossimTiledElevationDatabase.h
// 
// License:  MIT
// 
// See LICENSE.txt file in the top level directory for more details.
//
// Author:  David Burken
//
// Description: See description for class below.
//
//----------------------------------------------------------------------------
// $Id$

#ifndef ossimTiledElevationDatabase_HEADER
#define ossimTiledElevationDatabase_HEADER 1

#include <ossim/elevation/ossimElevationDatabase.h>
#include <ossim/base/ossimFileProcessorInterface.h>
#include <ossim/base/ossimGrect.h>
#include <ossim/base/ossimRefPtr.h>
#include <ossim/base/ossimRtti.h>
#include <vector>

class ossimDblGrid;
class ossimFilename;
class ossimFileWalker;
class ossimImageData;
class ossimImageGeometry;
class ossimImageHandler;
class ossimProjection;
class ossimSingleImageChain;
class ossimString;

/**
 * @class ossimTiledElevationDatabase
 *
 * Elevation source used for working with generic images opened by an
 * ossimImageHandler.  This class supplies a mapRegion method used to map a
 * region of elevation to a grid.  The grid in turn is used for the
 * getHeightAboveMSL.  This class is for applications that know their region
 * of interest up front and want to bypass the ossimElevManager and grid the
 * elevation prior to processing for speed.  Can work on a file or a
 * directory of files.
 */
class OSSIM_DLL ossimTiledElevationDatabase :
   public ossimElevationDatabase, public ossimFileProcessorInterface
{
public:

   /** default constructor */
   ossimTiledElevationDatabase();

   /**
    * @brief Open a connection to a database.
    *
    * @param connectionString File or directory to open.  In most cases this
    * will point to a directory containing DEMs. Satisfies pure virtual
    * ossimElevationDatabase::open().
    *
    * @return true on success, false on error.
    */   
   virtual bool open(const ossimString& connectionString);

   /** @brief close method. Unreferences all data. */
   virtual void close();

   /**
    * @brief Maps elevation data for region to a grid.
    *
    * This uses connectionString passed to open method as starting point.
    */
   void mapRegion(const ossimGrect& region);

   /**
    * @brief Get height above MSL for point.
    *
    * Satisfies pure virtual ossimElevSource::getHeightAboveMSL().
    * 
    * @return Height above MSL.
    */
   virtual double getHeightAboveMSL(const ossimGpt& gpt);

   /**
    * @brief Get height above ellipsoid for point.
    *
    * Satisfies pure virtual ossimElevSource::getHeightAboveMSL().
    * 
    * @return Height above MSL.
    */
   virtual double getHeightAboveEllipsoid(const ossimGpt&);
   
   /**
    * Satisfies pure virtual ossimElevSource::pointHasCoverage
    * 
    * @return true if database has coverage for point.
    */
   virtual bool pointHasCoverage(const ossimGpt& gpt) const;


   /** @brief Initialize from keyword list. */
   virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=0);

   /** @brief Save the state to a keyword list. */
   virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=0)const;
   
   bool getAccuracyInfo(ossimElevationAccuracyInfo& info, const ossimGpt& /*gpt*/) const
   {
      info.makeNan();
      
      return false;
   }
   
   /**
    * @brief ProcessFile method.
    *
    * Satisfies pure virtual ossimFileProcessorInterface::processFile.
    *
    * This method is linked to the ossimFileWalker::walk method via a callback
    * mechanism.  It is called by the ossimFileWalk (caller).  This class
    * (callee) sets recurse and return flags accordingly to control
    * the ossimFileWalker, e.g. don't recurse, stop altogether.
    * 
    * @param file to process.
    */
   virtual void processFile(const ossimFilename& file);
   
   virtual std::ostream& print(std::ostream& out) const;

   virtual ossimObject* dup() const
   {
      ossimTiledElevationDatabase* duped = new ossimTiledElevationDatabase;
      duped->open(m_connectionString);
      return duped;
   }

protected:
   /** Protected destructor as this is derived from ossimRefenced. */
   virtual ~ossimTiledElevationDatabase();

private:

   // Private container to hold bounding rect and image handler.
   struct ossimTiledElevationEntry
   {
      /** @brief default constructor */
      ossimTiledElevationEntry();

      /** @brif Constructor that takes rectangle and chain. */
      ossimTiledElevationEntry(const ossimGrect& rect,
                               ossimRefPtr<ossimSingleImageChain> sic );

      /** Bounding rectangle in decimal degrees. */
      ossimGrect m_rect;

      /** Hold pointer to single image chain. */
      ossimRefPtr<ossimSingleImageChain> m_sic;
   };

   /**
    * @brief adds entry to the list checking for duplicates.
    */
   void addEntry(const ossimTiledElevationEntry& entry);

   /**
    * @brief Initializes m_referenceProj from the first entry.
    */
   void initializeReferenceProjection();

   /**
    * @return true if file is a directory based image and the stager should go
    * on to next directory; false if stager should continue with directory.
    */
   bool isDirectoryBasedImage(ossimRefPtr<ossimImageHandler> ih);

   /**
    * @brief Check for match of the following against the first entry of:
    *  bands, projection, scalar type and scale.
    * @returns true if good, false if not the same.
    */
   bool isCompatible(ossimImageHandler* ih,
                     ossimImageGeometry* geom,
                     ossimProjection* proj) const;

   /**
    * @brief Initialize bounding rectangle from image handler.
    *
    * Sets boundingRect to nan if ossimImageGeometry::getCornerGpts returns false.
    * 
    * @param ih Image handler.
    * @param boundingRect Initialized by method.
    */
   void getBoundingRect(ossimRefPtr<ossimImageGeometry> geom, ossimGrect& boundingRect) const;

   /** @brief Loads m_requestedRect into m_grid from m_entries. */
   void mapRegion();

   /** @brief Templated fill grid method. */
   template <class T> void fillGrid(T dummyTemplate, ossimRefPtr<ossimImageData> data);

   /** Hidden from use copy constructor */
   ossimTiledElevationDatabase(const ossimTiledElevationDatabase& copy_this);

   std::vector<ossimTiledElevationEntry> m_entries;

   /** Hold region of elevation. */
   ossimDblGrid* m_grid;

   /** Projection of the first entry.  Stored for convenience. */
   ossimRefPtr<ossimProjection> m_referenceProj;

   ossimGrect m_requestedRect;
   ossimGrect m_entryListRect;
   ossimGrect m_mappedRect; // Requested expanded to even post boundary.

   ossimFileWalker* m_fileWalker;

   TYPE_DATA 
};

#endif /* ossimTiledElevationDatabase_HEADER */