GL Studio C++ Runtime API
dnc_util.h
Go to the documentation of this file.
1 /*! \file
2  \brief DNC related utility data types and constants
3 
4  \par Copyright Information
5 
6  Copyright (c) 2017 The DiSTI Corporation.<br>
7  11301 Corporate Blvd; Suite 100<br>
8  Orlando, Florida 32817<br>
9  USA<br>
10  <br>
11  All rights reserved.<br>
12 
13  This Software contains proprietary trade secrets of DiSTI and may not be
14 reproduced, in whole or part, in any form, or by any means of electronic,
15 mechanical, or otherwise, without the written permission of DiSTI. Said
16 permission may be derived through the purchase of applicable DiSTI product
17 licenses which detail the distribution rights of this content and any
18 Derivative Works based on this or other copyrighted DiSTI Software.
19 
20  NO WARRANTY. THE SOFTWARE IS PROVIDED "AS-IS," WITHOUT WARRANTY OF ANY KIND,
21 AND ANY USE OF THIS SOFTWARE PRODUCT IS AT YOUR OWN RISK. TO THE MAXIMUM EXTENT
22 PERMITTED BY APPLICABLE LAW, DISTI AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES
23 AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
24 IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY AND/OR FITNESS FOR A
25 PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO THE SOFTWARE.
26 
27  LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW,
28 IN NO EVENT SHALL DISTI OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
29 INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION,
30 DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
31 INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR
32 INABILITY TO USE THE SOFTWARE, EVEN IF DISTI HAS BEEN ADVISED OF THE POSSIBILITY
33 OF SUCH DAMAGES. DISTI'S ENTIRE LIABILITY AND YOUR EXCLUSIVE REMEDY SHALL NOT
34 EXCEED FIVE DOLLARS (US$5.00).
35 
36  The aforementioned terms and restrictions are governed by the laws of the
37 State of Florida and the United States of America.
38 
39 */
40 #ifndef _DNC_UTIL_H
41 #define _DNC_UTIL_H
42 
43 #include <math.h>
44 #if defined( _WIN32 )
45 # include <windows.h>
46 #else
47 # define CALLBACK
48 #endif // _WIN32
49 #include "gls_font_base.h"
50 #include "vpf_data_value.h"
51 #include "vpf_util.h"
52 #include <GL/gl.h>
53 #include <GL/glu.h>
54 
55 namespace disti
56 {
57 // forward ref
58 class GlsFontRenderer;
59 class DNCFacePrimTable;
60 class DNCRingTable;
61 class DNCEdgePrimTable;
62 
63 /** collection of DNC related utility data types and constants */
64 class DNCUtil
65 {
66 public:
67  static const char* const NOTES_JOIN_TABLE_EXT; /**< file extension for notes join table file */
68  static const char* const FEATURE_ID_COLUMN_NAME; /**< column name for feature ID */
69  static const char* const RAT_ID_COLUMN_NAME; /**< column name for related attribute table ID */
70  static const char* const FAC_ID_COLUMN_NAME; /**< column name of face id in an area join table */
71 
72  static const char* const CULTURAL_LANDMARKS_COVERAGE_NAME; /**< name of "Cultural Landmarks" coverage */
73  static const char* const EARTH_COVER_COVERAGE_NAME; /**< name of "Earth Cover" coverage */
74  static const char* const ENVIRONMENT_COVERAGE_NAME; /**< name of "Environment" coverage */
75  static const char* const HYDROGRAPHY_COVERAGE_NAME; /**< name of "Hydrography" coverage */
76  static const char* const INLAND_WATERWAYS_COVERAGE_NAME; /**< name of "Inland Waterways" coverage */
77  static const char* const LAND_COVER_COVERAGE_NAME; /**< name of "Land Cover" coverage */
78  static const char* const AIDS_TO_NAVIGATION_COVERAGE_NAME; /**< name of "Aids to Navigation" coverage */
79  static const char* const OBSTRUCTIONS_COVERAGE_NAME; /**< name of "Obstructions" coverage */
80  static const char* const PORT_FACILITIES_COVERAGE_NAME; /**< name of "Port Facilities" coverage */
81  static const char* const RELIEF_COVERAGE_NAME; /**< name of "Relief" coverage */
82  static const char* const DATA_QUALITY_COVERAGE_NAME; /**< name of "Data Quality" coverage */
83  static const char* const COASTLINE_COUNTRIES_COVERAGE_NAME; /**< name of "Coastline/Countries" coverage */
84  static const char* const LIMITS_COVERAGE_NAME; /**< name of "Limits" coverage */
85 
86  static const char* const ADMIN_LINE_FEATURE_NAME; /**< name of "Administrative lines" line features */
87  static const char* const AERO_POINT_FEATURE_NAME; /**< name of "Aeronautical Points" point features */
88  static const char* const AQUEDCT_LINE_FEATURE_NAME; /**< name of "Aqueduct lines" line features */
89  static const char* const BARRIER_LINE_FEATURE_NAME; /**< name of "Barrier lines" line features */
90  static const char* const BERTH_POINT_FEATURE_NAME; /**< name of "Berth points" point features */
91  static const char* const BOTCHAR_POINT_FEATURE_NAME; /**< name of "Bottom Characteristic Point Features" point features */
92  static const char* const BOUNDRY_LINE_FEATURE_NAME; /**< name of "Boundary" line features */
93  static const char* const BRIDGE_AREA_FEATURE_NAME; /**< name of "Bridge" area features */
94  static const char* const BRIDGE_LINE_FEATURE_NAME; /**< name of "Bridge/Overpass" line features */
95  static const char* const BRIDGSP_AREA_FEATURE_NAME; /**< name of "Bridge Span" area features */
96  static const char* const BRIDGSP_LINE_FEATURE_NAME; /**< name of "Bridge Span" line features */
97  static const char* const BUILDNG_AREA_FEATURE_NAME; /**< name of "Building Areas" area features */
98  static const char* const BUILDNG_POINT_FEATURE_NAME; /**< name of "Building points" point features */
99  static const char* const BUILTUP_POINT_FEATURE_NAME; /**< name of "Built-up area points" point features */
100  static const char* const BUOYBCN_POINT_FEATURE_NAME; /**< name of "Buoy/Beacon Point Feature Table" point features */
101  static const char* const CALLIN_POINT_FEATURE_NAME; /**< name of "Calling In points" point features */
102  static const char* const CANAL_AREA_FEATURE_NAME; /**< name of "Canal areas" area features */
103  static const char* const CANAL_LINE_FEATURE_NAME; /**< name of "Canal lines" line features */
104  static const char* const COAST_LINE_FEATURE_NAME; /**< name of "Coastline lines" line features */
105  static const char* const COMM_POINT_FEATURE_NAME; /**< name of "Communications points" point features */
106  static const char* const CURRDIA_POINT_FEATURE_NAME; /**< name of "Current Diagram Points" point features */
107  static const char* const CURRFL_POINT_FEATURE_NAME; /**< name of "Current Flow Points" point features */
108  static const char* const DAM_LINE_FEATURE_NAME; /**< name of "Dam lines" line features */
109  static const char* const DANGER_AREA_FEATURE_NAME; /**< name of "Discolored Water/Foul Ground" area features */
110  static const char* const DANGER_POINT_FEATURE_NAME; /**< name of "Breakers/Discolored Water" point features */
111  static const char* const DQY_AREA_FEATURE_NAME; /**< name of "Data Quality Areas" area features */
112  static const char* const ECR_AREA_FEATURE_NAME; /**< name of "Earth Cover areas" area features */
113  static const char* const ECR_TEXT_FEATURE_NAME; /**< name of "Earth Cover texts" text features */
114  static const char* const EMBANK_AREA_FEATURE_NAME; /**< name of "Embankment areas" area features */
115  static const char* const ENV_AREA_FEATURE_NAME; /**< name of "Environment Areas" area features */
116  static const char* const FENCE_LINE_FEATURE_NAME; /**< name of "Fence lines" line features */
117  static const char* const FISHHAT_AREA_FEATURE_NAME; /**< name of "Fish Hatchery" area features */
118  static const char* const FORESHO_AREA_FEATURE_NAME; /**< name of "Foreshore areas" area features */
119  static const char* const FORESHO_LINE_FEATURE_NAME; /**< name of "Foreshore lines" line features */
120  static const char* const FORESHO_POINT_FEATURE_NAME; /**< name of "Foreshore points" point features */
121  static const char* const HAZARD_AREA_FEATURE_NAME; /**< name of "Underwater Danger/Wreck" area features */
122  static const char* const HAZARD_LINE_FEATURE_NAME; /**< name of "Cable/Breakers" line features */
123  static const char* const HAZARD_POINT_FEATURE_NAME; /**< name of "Underwater Danger/Rock/Wreck" point features */
124  static const char* const HYD_AREA_FEATURE_NAME; /**< name of "Hydrography Area Features" area features */
125  static const char* const HYD_LINE_FEATURE_NAME; /**< name of "Hydrography Line Features" line features */
126  static const char* const INDUST_AREA_FEATURE_NAME; /**< name of "Industry areas" area features */
127  static const char* const INDUST_POINT_FEATURE_NAME; /**< name of "Industry points" point features */
128  static const char* const ISLAND_POINT_FEATURE_NAME; /**< name of "Island points" point features */
129  static const char* const LAKE_AREA_FEATURE_NAME; /**< name of "Lake areas" area features */
130  static const char* const LANDING_AREA_FEATURE_NAME; /**< name of "Landing areas" area features */
131  static const char* const LANDING_POINT_FEATURE_NAME; /**< name of "Landing points" point features */
132  static const char* const LANDMRK_AREA_FEATURE_NAME; /**< name of "Landmark areas" area features */
133  static const char* const LANDMRK_POINT_FEATURE_NAME; /**< name of "Landmark points" point features */
134  static const char* const LCR_LINE_FEATURE_NAME; /**< name of "Land Cover lines" line features */
135  static const char* const LEADING_LINE_FEATURE_NAME; /**< name of "Leading Lines" line features */
136  static const char* const LIGHTS_LINE_FEATURE_NAME; /**< name of "Lights Line Feature Table" line features */
137  static const char* const LIGHTS_POINT_FEATURE_NAME; /**< name of "Lights Point Feature Table" point features */
138  static const char* const LIMBNDY_AREA_FEATURE_NAME; /**< name of "Limit Boundaries" area features */
139  static const char* const LIMBNDY_LINE_FEATURE_NAME; /**< name of "Limit Boundaries" line features */
140  static const char* const LOADING_AREA_FEATURE_NAME; /**< name of "Offshore Loading Facility" area features */
141  static const char* const LOADING_POINT_FEATURE_NAME; /**< name of "Loading Points" point features */
142  static const char* const MARITIM_LINE_FEATURE_NAME; /**< name of "Maritime Area" line features */
143  static const char* const MARITIM_AREA_FEATURE_NAME; /**< name of "Maritime Area" area features */
144  static const char* const MARKER_POINT_FEATURE_NAME; /**< name of "Marker Point Feature Table" point features */
145  static const char* const MISCIWY_AREA_FEATURE_NAME; /**< name of "Miscellaneous Inland Waterways areas" area features */
146  static const char* const MOORING_POINT_FEATURE_NAME; /**< name of "Mooring points" point features */
147  static const char* const OBSTRUC_AREA_FEATURE_NAME; /**< name of "Obstruction Areas" area features */
148  static const char* const OBSTRUC_POINT_FEATURE_NAME; /**< name of "Obstruction Points" point features */
149  static const char* const ORCHARD_AREA_FEATURE_NAME; /**< name of "Orchard" area features */
150  static const char* const PARK_AREA_FEATURE_NAME; /**< name of "Park areas" area features */
151  static const char* const PARK_LINE_FEATURE_NAME; /**< name of "Park lines" line features */
152  static const char* const PIER_AREA_FEATURE_NAME; /**< name of "Pier areas" area features */
153  static const char* const PIER_LINE_FEATURE_NAME; /**< name of "Pier lines" line features */
154  static const char* const PIPE_LINE_FEATURE_NAME; /**< name of "Pipeline Lines" line features */
155  static const char* const POWER_LINE_FEATURE_NAME; /**< name of "Power lines" line features */
156  static const char* const POWER_POINT_FEATURE_NAME; /**< name of "Power points" point features */
157  static const char* const RAILRD_LINE_FEATURE_NAME; /**< name of "Railroad lines" line features */
158  static const char* const REEF_AREA_FEATURE_NAME; /**< name of "Reef Areas" area features */
159  static const char* const REL_LINE_FEATURE_NAME; /**< name of "Relief lines" line features */
160  static const char* const REL_POINT_FEATURE_NAME; /**< name of "Relief points" point features */
161  static const char* const RIVER_AREA_FEATURE_NAME; /**< name of "River areas" area features */
162  static const char* const RIVER_LINE_FEATURE_NAME; /**< name of "River lines" line features */
163  static const char* const ROUTE_AREA_FEATURE_NAME; /**< name of "Route Maritime" area features */
164  static const char* const ROUTE_LINE_FEATURE_NAME; /**< name of "Route Maritime" line features */
165  static const char* const RUINS_AREA_FEATURE_NAME; /**< name of "Ruins areas" area features */
166  static const char* const RUINS_POINT_FEATURE_NAME; /**< name of "Ruins" point features */
167  static const char* const SEAWALL_LINE_FEATURE_NAME; /**< name of "Seawall lines" line features */
168  static const char* const SECTOR_AREA_FEATURE_NAME; /**< name of "Sector Areas" area features */
169  static const char* const SNOWICE_AREA_FEATURE_NAME; /**< name of "Snow/Ice" area features */
170  static const char* const SNOWICE_POINT_FEATURE_NAME; /**< name of "Snow/Ice" point features */
171  static const char* const SOUND_POINT_FEATURE_NAME; /**< name of "Soundings Point Features" point features */
172  static const char* const STRUCTR_AREA_FEATURE_NAME; /**< name of "Structure areas" area features */
173  static const char* const STRUCTR_LINE_FEATURE_NAME; /**< name of "Structure lines" line features */
174  static const char* const TIDE_POINT_FEATURE_NAME; /**< name of "Tide Points" point features */
175  static const char* const TRANS_AREA_FEATURE_NAME; /**< name of "Transportation Areas" area features */
176  static const char* const TRANS_LINE_FEATURE_NAME; /**< name of "Transportation lines" line features */
177  static const char* const TREE_AREA_FEATURE_NAME; /**< name of "Tree areas" area features */
178  static const char* const TREE_POINT_FEATURE_NAME; /**< name of "Tree points" point features */
179  static const char* const TUNNEL_LINE_FEATURE_NAME; /**< name of "Tunnel Lines" line features */
180  static const char* const VOLCANO_AREA_FEATURE_NAME; /**< name of "Volcano" area features */
181 
182  static const char* const BROWSE_LIB_AREA_FEAT_NAME; /**< name of browse library area features in the browse lib coverage */
183  static const char* const BROWSE_LIB_AREA_FEAT_TABLE_NAME; /**< name of browse library area features table in the browse lib coverage */
184  static const char* const BROWSE_LIB_AREA_JOIN_TABLE_NAME; /**< name of browse library area join table in the browse lib coverage */
185  static const char* const BROWSE_LIB_AREA_JOIN_TABLE_KEY; /**< name of key column in area join table in the browse lib coverage */
186 
187  /** lat lon aligned region */
188  struct GeoRegion
189  {
190  VPFUtil::Coord2DLong swCorner; /**< southwest corner */
191  VPFUtil::Coord2DLong neCorner; /**< northeast corner */
192  };
193 
194  /** helper struct for storing/inputing edge vertices in a format suitable for the glu Tessellator */
196  {
197  GLdouble* verts; /**< array of ( x,y,z ) verts else NULL */
198 
199  /** Ctor - single coordinate edge
200  * \param x x coordinate
201  * \param y y coordinate
202  * \param z z coordinate
203  */
204  GLdoubleEdge( const double x, const double y, const double z )
205  {
206  // allocate one vert
207  verts = new GLdouble[ 3u ];
208  // store vert
209  if( NULL != verts )
210  {
211  verts[ 0u ] = x;
212  verts[ 1u ] = y;
213  verts[ 2u ] = z;
214  }
215  }
216 
217  /** Ctor
218  * \param edgCoords edge coordinates for new edge ( must be array of VPFUtil::DATA_TYPE_2D_COORD_SHORT )
219  * \param reverseCoords true to store edge coordinates in reverse order else false
220  */
221  GLdoubleEdge( const VPFDataValue& edgCoords, const bool reverseCoords )
222  {
223  // get number of coords in edge and allocate array for verts
224  const unsigned int numCoords = edgCoords.GetValueCount();
225  verts = new GLdouble[ numCoords * 3u ];
226  if( NULL != verts )
227  {
228  // get array of 2D coords from edgCoords
229  const VPFUtil::Coord2DShort* const coords = edgCoords.GetCoord2DShortValues();
230 
231  // store in reverse direction?
232  if( reverseCoords )
233  {
234  // store new verts
235  for( unsigned int coordIndex = numCoords, vertIndex = 0u; coordIndex > 0u; --coordIndex )
236  {
237  verts[ vertIndex++ ] = coords[ coordIndex - 1u ].x;
238  verts[ vertIndex++ ] = coords[ coordIndex - 1u ].y;
239  verts[ vertIndex++ ] = 0.0;
240  }
241  }
242  else
243  {
244  // store new verts in forward direction
245  for( unsigned int coordIndex = 0u, vertIndex = 0u; coordIndex < numCoords; ++coordIndex )
246  {
247  verts[ vertIndex++ ] = coords[ coordIndex ].x;
248  verts[ vertIndex++ ] = coords[ coordIndex ].y;
249  verts[ vertIndex++ ] = 0.0;
250  }
251  }
252  }
253  }
254 
255  /** Dtor */
257  {
258  // kill verts as needed
259  if( NULL != verts )
260  {
261  delete[] verts;
262  verts = NULL;
263  }
264  }
265  };
266 
267  /** array of GLdoubleEdge pointers */
269 
270  /** one triangle of an area ( CCW winding ) */
271  struct Tri
272  {
273  VPFUtil::Coord2DLong p1; /**< first point of tri */
274  VPFUtil::Coord2DLong p2; /**< second point of tri */
275  VPFUtil::Coord2DLong p3; /**< third point of tri */
276 
277  /** Get the area of the triangle
278  * \return area of the triangle
279  */
280  inline double GetArea( void ) const
281  {
282  // Heron's formula
283  const double a = sqrt( ( ( p1.x - p2.x ) * ( p1.x - p2.x ) ) + ( ( p1.y - p2.y ) * ( p1.y - p2.y ) ) );
284  const double b = sqrt( ( ( p2.x - p3.x ) * ( p2.x - p3.x ) ) + ( ( p2.y - p3.y ) * ( p2.y - p3.y ) ) );
285  const double c = sqrt( ( ( p3.x - p1.x ) * ( p3.x - p1.x ) ) + ( ( p3.y - p1.y ) * ( p3.y - p1.y ) ) );
286  const double s = ( ( a + b + c ) / 2.0 );
287  return ( sqrt( s * ( s - a ) * ( s - b ) * ( s - c ) ) );
288  }
289 
290  /** Determine if the given point falls within the triangle. NOTE: algorithm requires that triangle
291  * is wound CCW
292  * \param p point in question
293  * \return true if point falls within triangle else false
294  */
295  inline bool PointTest( const VPFUtil::Coord2DLong& p ) const
296  {
297  return ( ( ( ( p.x - p1.x ) * ( -p3.y + p1.y ) + ( p.y - p1.y ) * ( p3.x - p1.x ) ) < 0.0 ) && ( ( ( p.x - p2.x ) * ( -p1.y + p2.y ) + ( p.y - p2.y ) * ( p1.x - p2.x ) ) <= 0.0 ) && ( ( ( p.x - p2.x ) * ( -p3.y + p2.y ) + ( p.y - p2.y ) * ( p3.x - p2.x ) ) >= 0.0 ) );
298  }
299  };
300 
301  /** array of triangle pointers */
303 
304  /** font renderer helper class for rendering text features */
306  {
307  public:
308  /** Ctor
309  * \param font font to render else NULL for default font
310  * \param forceUpload true to force the font texture to be uploaded to GL (if it is not already uploaded)
311  */
312  FontRenderer( GlsFontBase* font, const bool forceUpload );
313 
314  /** Dtor */
315  ~FontRenderer();
316 
317  /** Get the font attached to the renderer */
318  GlsFontBase* GetFont( void ) { return ( _font ); }
319 
320  /** Initializes the font to begin rendering characters. This will set up
321  * Open GL texture modes, bind the font's texture, set up minification
322  * and magnification filters, etc. This must be called before
323  * using any of the Render methods draw characters.
324  */
325  void InitRendering( void );
326 
327  /** Restores the Open GL state as it was before the call to InitRendering.
328  * This should be called after all characters have been rendered using
329  * the Render methods.
330  */
331  void TermRendering( void );
332 
333  /** Render a single proportional character
334  * NOTE: assumes that a glBegin( GL_QUADS ) has been called
335  * \param c character to render
336  * \param pen_position_x x position of lower left of character
337  * \param pen_position_y y position of lower left of character
338  * \param char_size_ratio_x x size ratio
339  * \param char_size_ratio_y y size ration
340  * \param scale character scale
341  * \param fgColor color for character
342  */
343  void RenderProportionalChar( const GlsFontBase::Char_t c, const float pen_position_x, const float pen_position_y,
344  const float char_size_ratio_x, const float char_size_ratio_y,
345  const GLfloat scale, const glsColor& fgColor );
346 
347  protected:
348  GlsFontRenderer* _fontRenderer; /**< gls font renderer */
349  GlsFontBase* _font; /**< font being rendered */
350 
351  private:
352  // Disable implicit generated members
353  FontRenderer& operator=( const FontRenderer& rhs );
354  FontRenderer( const FontRenderer& src );
355  };
356 
357  /** encapsulates an array of Feature and Attribute Coding Catalog codes ( see MIL-PRF-89023 ) describing
358  * the set of FACC codes used by a feature class*/
359  class FACCArray
360  {
361  public:
362  /** a FACC array entry */
363  struct FACC
364  {
365  char facc[ VPFUtil::FACC_CODE_LENGTH + 1u ]; /**< FACC code (plus one for terminator) */
366  unsigned int faccIndex; /**< zero based index into value descriptor table for facc code */
367 
368  /** Ctor
369  * \param newFacc facc code
370  * \param newFaccIndex zero based index into value descriptor table for facc code
371  */
372  FACC( const char* const newFacc, const unsigned int newFaccIndex )
373  {
374  // copy facc code
375  facc[ 0u ] = '\0';
376  if( NULL != newFacc )
377  {
378  // copy the string
379  for( unsigned int i = 0; i < VPFUtil::FACC_CODE_LENGTH; i++ )
380  {
381  facc[ i ] = newFacc[ i ];
382  }
383  // force terminator
384  facc[ VPFUtil::FACC_CODE_LENGTH ] = '\0';
385  }
386 
387  // copy index
388  faccIndex = newFaccIndex;
389  }
390  };
391 
392  /** Ctor */
393  FACCArray( void ){};
394 
395  /** Dtor */
397 
398  /** Determine if the array is valid
399  * \return true if valid else false
400  */
401  bool IsValid( void ) const { return ( _faccs.IsValid() ); }
402 
403  /** Get the number of FACC codes in the array
404  * \return number of FACC codes in the array
405  */
406  unsigned int GetCount( void ) const { return ( _faccs.GetCount() ); }
407 
408  /** Insert a FACC code into the array
409  * \param facc code to insert (deep copied into array)
410  * \param faccIndex zero based index into value descriptor table for facc code
411  * \return true if success else false
412  */
413  bool InsertFACC( const char* const facc, const unsigned int faccIndex );
414 
415  /** Determine if the given FACC code is in the array
416  * \param facc code in question
417  * \return FACC if found else NULL
418  */
419  const FACC* FindFACC( const char* const facc ) const;
420 
421  /** Get the FACC code at the given index
422  * \param faccIndex zero based index into array ( < GetCount() )
423  * \return facc code else NULL
424  */
425  const FACC* GetFACC( const unsigned int faccIndex ) const { return ( _faccs.GetPointer( faccIndex ) ); }
426 
427  protected:
428  VPFUtil::PointerArray<FACC> _faccs; /**< array of FACC pointers */
429 
430  private:
431  // Disable implicit generated members
432  FACCArray& operator=( const FACCArray& rhs );
433  FACCArray( const FACCArray& src );
434  };
435 
436  /** helper class for a fixed value string */
437  class DNCString
438  {
439  public:
440  /** Ctor - deep copy given string - NOTE: string will be initialized to "" if src == NULL
441  * \param src source string to copy
442  * \param trimTrailingWS [optional, defaults to true] true to trim trailing whitespace when copying src else false
443  */
444  DNCString( const char* const src, const bool trimTrailingWS = true );
445 
446  /** Dtor */
447  ~DNCString();
448 
449  /** Determine if the string is valid
450  * \return true if valid else false
451  */
452  bool IsValid( void ) const { return ( _isValid ); }
453 
454  /** Get the string buffer (const)
455  * \return string buffer (const) else NULL
456  */
457  operator const char*(void)const { return ( _str ); }
458 
459  protected:
460  VPFUtil::WarningBool _isValid; /**< true if string is valid else false */
461  char* _str; /**< allocated string buffer else NULL */
462 
463  private:
464  // Disable implicit generated members
465  DNCString& operator=( const DNCString& rhs );
466  DNCString( const DNCString& src );
467  };
468 
469  /** encapsulates the results of a map query */
471  {
472  public:
473  /** description of a feature in the query results */
475  {
476  public:
477  /** encapsulates a feature attribute name and its value */
479  {
480  public:
481  /** Ctor
482  * \param attribName name of feature attribute
483  * \param attribVal value of feature attribute
484  */
485  AttributePair( const char* const attribName, const char* const attribVal );
486 
487  /** Dtor */
488  ~AttributePair();
489 
490  /** Determine if the attribute pair is valid
491  * \return true if valid else false
492  */
493  bool IsValid( void ) const { return ( _isValid ); }
494 
495  /** Get the name of the feature attribute
496  * \return name of the feature attribute
497  */
498  const char* GetName( void ) const { return ( _attribName ); }
499 
500  /** Get the value of the feature attribure
501  * \return value of the feature attribure
502  */
503  const char* GetValue( void ) const { return ( _attribVal ); }
504 
505  protected:
506  VPFUtil::WarningBool _isValid; /**< true if attribute pair is valid else false */
507  const DNCString _attribName; /**< name of feature attribute */
508  const DNCString _attribVal; /**< value of feature attribute */
509 
510  private:
511  // Disable implicit generated members
512  AttributePair& operator=( const AttributePair& rhs );
513  AttributePair( const AttributePair& src );
514  };
515 
516  /** Ctor
517  * \param covName name of coverage that contains this feature
518  * \param featClassName name of feature class that contains this feature
519  * \param faccCode FACC code for feature else NULL if feature does not use FACC codes
520  * \param featIndex zero based index into feature class for this feature
521  * \param featureName name of feature
522  * \param featureType type of feature
523  * \param location location of feature
524  */
525  FeatureDescription( const char* const covName, const char* const featClassName, const char* const faccCode,
526  const unsigned int featIndex, const char* const featureName, const VPFUtil::FeatureType featureType, const VPFUtil::Coord2DShort& location );
527 
528  /** Dtor */
530 
531  /** Determine if the feature description is valid
532  * \return true if valid else false
533  */
534  bool IsValid( void ) const { return ( _isValid ); }
535 
536  /** Get the name of the coverage that contains this feature
537  * \return name of the coverage that contains this feature
538  */
539  const char* GetCoverageName( void ) const { return ( _covName ); }
540 
541  /** Get the name of the feature class that contains this feature
542  * \return name of the feature class that contains this feature
543  */
544  const char* GetFeatureClassName( void ) const { return ( _featClassName ); }
545 
546  /** Get the FACC code for feature else "" if feature does not use FACC codes
547  * \return FACC code for feature else "" if feature does not use FACC codes
548  */
549  const char* GetFACCCode( void ) const { return ( _faccCode ); }
550 
551  /** Get the zero based index into feature class for this feature
552  * \return zero based index into feature class for this feature
553  */
554  unsigned int GetFeatureIndex( void ) const { return ( _featIndex ); }
555 
556  /** Get the name of the feature
557  * \return name of the feature
558  */
559  const char* GetFeatureName( void ) const { return ( _featureName ); }
560 
561  /** Get the type of the feature
562  * \return type of the feature
563  */
564  VPFUtil::FeatureType GetFeatureType( void ) const { return ( _featureType ); }
565 
566  /** Get the location of the feature (lon/lat)
567  * \return location of the feature (lon/lat)
568  */
569  VPFUtil::Coord2DShort GetLocation( void ) const { return ( _location ); }
570 
571  /** Get the number of attribute pairs in this feature description
572  * \return number of attribute pairs in this feature description
573  */
574  unsigned int GetAttributePairCount( void ) const;
575 
576  /** Get an attribute pair from this description
577  * \param attribPairNum zero based index to desired attribute pair ( < GetAttributePairCount() )
578  * \return desired attribute pair else NULL
579  */
580  const AttributePair* GetAttributePair( const unsigned int attribPairNum ) const;
581 
582  /** add an attribute pair to this description. NOTE: FeatureDescription does not deep copy the attribute pair and owns the
583  * attribute pair if this method returns success
584  * \param attributePair attribute description
585  * \return true if success else false
586  */
587  bool AddAttributePair( AttributePair* const attributePair );
588 
589  protected:
590  /** array of attribute pairs */
592 
593  VPFUtil::WarningBool _isValid; /**< true if feature description is valid else false */
594  const DNCString _covName; /**< name of coverage that contains this feature */
595  const DNCString _featClassName; /**< name of feature class that contains this feature */
596  const DNCString _faccCode; /**< FACC code for feature else "" if feature does not use FACC codes */
597  const unsigned int _featIndex; /**< zero based index into feature class for this feature */
598  const DNCString _featureName; /**< name of feature */
599  const VPFUtil::FeatureType _featureType; /**< feature type */
600  const VPFUtil::Coord2DShort _location; /**< location of feature (lon/lat) */
601  AttributePairArray _attributePairs; /**< array of attribute pairs */
602 
603  private:
604  // Disable implicit generated members
605  FeatureDescription& operator=( const FeatureDescription& rhs );
607  };
608 
609  /** Ctor
610  * \param libNum zero based library index into database for library containing results
611  * \param libName name of library that contains results
612  */
613  QueryResults( const unsigned int libNum, const char* const libName );
614 
615  /** Dtor */
616  ~QueryResults();
617 
618  /** Determine if the results are valid
619  * \return true if valid else false
620  */
621  bool IsValid( void ) const { return ( _isValid ); }
622 
623  /** Get the zero based library index into database for library containing results
624  * \return zero based library index into database for library containing results
625  */
626  unsigned int GetLibraryNumber( void ) const { return ( _libNum ); }
627 
628  /** Get the name of library that contains results
629  * \return name of library that contains results
630  */
631  const char* GetLibraryName( void ) const { return ( _libName ); }
632 
633  /** Get the number of feature descriptions in the results
634  * \return number of feature descriptions in the results
635  */
636  unsigned int GetFeatureDescriptionCount( void ) const;
637 
638  /** Get a feature description in the results
639  * \param featDescIndex zero based index to desired description ( < GetFeatureDescriptionCount() )
640  * \return desired feature description else NULL
641  */
642  const FeatureDescription* GetFeatureDescription( const unsigned int featDescIndex ) const;
643 
644  /** Add the given feature description to the results. NOTE: QueryResults does not deep copy the description and owns the
645  * description if this method returns success
646  * \param featureDescription description in question
647  * \return true if success else false
648  */
649  bool AddFeatureDescription( FeatureDescription* const featureDescription );
650 
651  protected:
652  /** array of FeatureDescription pointers */
654 
655  VPFUtil::WarningBool _isValid; /**< true if results are valid else false */
656  const unsigned int _libNum; /**< zero based library index into database for library containing results */
657  const DNCString _libName; /**< name of library that contains results */
658  FeatureDescriptionArray _featureDescriptions; /**< array of feature descriptions */
659 
660  private:
661  // Disable implicit generated members
662  QueryResults& operator=( const QueryResults& rhs );
663  QueryResults( const QueryResults& src );
664  };
665 
666  /** Tesselate an area using the given tessellator
667  * \param tess tessellator to use
668  * \param facID face ID corresponding to area to tessellate
669  * \param facPrimTable face primitive table containing face corresponding to area to tessellate
670  * \param ringTable ring table describing face corresponding to area
671  * \param edgPrimTable edge primitive table describing edges corresponding to rings in face
672  * \param polyData blind data to be passed to tessellator callbacks else NULL to allow this routine to manage the
673  * blind data by creating a GLdoubleEdgeArray instance and automatically configuring the tessellator to
674  * use DNCUtilTessCombine as its tessellator combine function. If polyData is not NULL, the caller
675  * must configure the tessellator with its own combine function
676  */
677  static void TessellateArea( GLUtesselator* tess, const unsigned int facID, const DNCFacePrimTable& facPrimTable,
678  const DNCRingTable& ringTable, const DNCEdgePrimTable& edgPrimTable, void* const polyData );
679 };
680 
681 /** tessellator combine function
682  * \param coords new location of coordinate
683  * \param vertex_data vertex data that contributed to the new coord
684  * \param weight weights for vertex data
685  * \param outData [out] receives newly allocated vertex for new coordinate
686  * \param polygon_data blind data handed to gluTessBeginPolygon, will be an instance of
687  * GLdoubleEdgeArray for holding edges for current polygon being tesselated
688  */
689 void CALLBACK DNCUtilTessCombine( GLdouble coords[ 3 ], void* vertex_data[ 4 ], GLfloat weight[ 4 ], void** outData, void* polygon_data );
690 
691 /** deubg only code for verifying that a triangle is wound CCW
692  * \param tri triangle in question
693  * \return true if CCW else false
694  */
695 #if defined( GLS_DEBUG )
696 static inline bool isCCW( const DNCUtil::Tri& tri )
697 {
698  const VPFUtil::Coord3DLong v = { ( tri.p2.x - tri.p1.x ), ( tri.p2.y - tri.p1.y ), 0.0 };
699  const VPFUtil::Coord3DLong w = { ( tri.p3.x - tri.p1.x ), ( tri.p3.y - tri.p1.y ), 0.0 };
700 
701  const VPFUtil::Coord3DLong crossProd = { ( v.y * w.z ) - ( v.z * w.y ),
702  ( v.z * w.x ) - ( v.x * w.z ),
703  ( v.x * w.y ) - ( v.y * w.x ) };
704 
705  return ( crossProd.z >= 0 );
706 }
707 #endif // _DEBUG
708 
709 } // end namespace disti
710 
711 #endif // _DNC_UTIL_H
static const char *const BOUNDRY_LINE_FEATURE_NAME
Definition: dnc_util.h:92
static const char *const BUILTUP_POINT_FEATURE_NAME
Definition: dnc_util.h:99
GLdoubleEdge(const double x, const double y, const double z)
Definition: dnc_util.h:204
static const char *const FISHHAT_AREA_FEATURE_NAME
Definition: dnc_util.h:117
static const char *const CANAL_AREA_FEATURE_NAME
Definition: dnc_util.h:102
static const char *const LCR_LINE_FEATURE_NAME
Definition: dnc_util.h:134
VPFUtil::Coord2DLong neCorner
Definition: dnc_util.h:191
DNCString(const char *const src, const bool trimTrailingWS=true)
static const char *const ROUTE_AREA_FEATURE_NAME
Definition: dnc_util.h:163
static const char *const INDUST_AREA_FEATURE_NAME
Definition: dnc_util.h:126
const FACC * GetFACC(const unsigned int faccIndex) const
Definition: dnc_util.h:425
static const char *const CURRDIA_POINT_FEATURE_NAME
Definition: dnc_util.h:106
static const char *const RIVER_AREA_FEATURE_NAME
Definition: dnc_util.h:161
~FACCArray()
Definition: dnc_util.h:396
static const char *const FORESHO_AREA_FEATURE_NAME
Definition: dnc_util.h:118
static const char *const BARRIER_LINE_FEATURE_NAME
Definition: dnc_util.h:89
bool IsValid(void) const
Definition: dnc_util.h:401
static const char *const LIGHTS_LINE_FEATURE_NAME
Definition: dnc_util.h:136
GLdoubleEdge(const VPFDataValue &edgCoords, const bool reverseCoords)
Definition: dnc_util.h:221
unsigned int GetFeatureDescriptionCount(void) const
static const char *const FEATURE_ID_COLUMN_NAME
Definition: dnc_util.h:68
static const char *const MOORING_POINT_FEATURE_NAME
Definition: dnc_util.h:146
AttributePair(const char *const attribName, const char *const attribVal)
static const char *const LANDMRK_POINT_FEATURE_NAME
Definition: dnc_util.h:133
static const char *const FORESHO_POINT_FEATURE_NAME
Definition: dnc_util.h:120
FeatureType
Definition: vpf_util.h:173
bool AddAttributePair(AttributePair *const attributePair)
bool IsValid(void) const
Definition: dnc_util.h:621
const unsigned int _featIndex
Definition: dnc_util.h:597
static const char *const SNOWICE_AREA_FEATURE_NAME
Definition: dnc_util.h:169
static const char *const REL_POINT_FEATURE_NAME
Definition: dnc_util.h:160
const VPFUtil::Coord2DShort * GetCoord2DShortValues(void) const
Definition: vpf_data_value.h:201
Definition: dnc_util.h:188
const VPFUtil::Coord2DShort _location
Definition: dnc_util.h:600
bool IsValid(void) const
Definition: dnc_util.h:493
static const char *const VOLCANO_AREA_FEATURE_NAME
Definition: dnc_util.h:180
static const char *const PIPE_LINE_FEATURE_NAME
Definition: dnc_util.h:154
bool InsertFACC(const char *const facc, const unsigned int faccIndex)
Util functions for VPF.
static const char *const BRIDGE_LINE_FEATURE_NAME
Definition: dnc_util.h:94
static const char *const HYD_LINE_FEATURE_NAME
Definition: dnc_util.h:125
VPFUtil::PointerArray< FACC > _faccs
Definition: dnc_util.h:428
The disti::GlsFontBase class and related classes.
static const char *const HAZARD_AREA_FEATURE_NAME
Definition: dnc_util.h:121
VPFUtil::Coord2DLong p2
Definition: dnc_util.h:274
Definition: dnc_util.h:470
static const char *const BRIDGSP_LINE_FEATURE_NAME
Definition: dnc_util.h:96
const DNCString _featClassName
Definition: dnc_util.h:595
VPFUtil::PointerArray< Tri > TriArray
Definition: dnc_util.h:302
static const char *const TRANS_AREA_FEATURE_NAME
Definition: dnc_util.h:175
static const char *const OBSTRUCTIONS_COVERAGE_NAME
Definition: dnc_util.h:79
const char * GetValue(void) const
Definition: dnc_util.h:503
Definition: dnc_util.h:195
bool IsValid(void) const
Definition: dnc_util.h:534
void RenderProportionalChar(const GlsFontBase::Char_t c, const float pen_position_x, const float pen_position_y, const float char_size_ratio_x, const float char_size_ratio_y, const GLfloat scale, const glsColor &fgColor)
static const char *const INLAND_WATERWAYS_COVERAGE_NAME
Definition: dnc_util.h:76
static const char *const BROWSE_LIB_AREA_FEAT_NAME
Definition: dnc_util.h:182
bool PointTest(const VPFUtil::Coord2DLong &p) const
Definition: dnc_util.h:295
static const char *const TRANS_LINE_FEATURE_NAME
Definition: dnc_util.h:176
static const char *const REL_LINE_FEATURE_NAME
Definition: dnc_util.h:159
const DNCString _attribVal
Definition: dnc_util.h:508
static const char *const PIER_LINE_FEATURE_NAME
Definition: dnc_util.h:153
static const char *const LOADING_POINT_FEATURE_NAME
Definition: dnc_util.h:141
static const char *const LIMBNDY_LINE_FEATURE_NAME
Definition: dnc_util.h:139
static const char *const EMBANK_AREA_FEATURE_NAME
Definition: dnc_util.h:114
Definition: dnc_util.h:305
Definition: dnc_util.h:437
GlsFontRenderer * _fontRenderer
Definition: dnc_util.h:348
static const char *const DANGER_POINT_FEATURE_NAME
Definition: dnc_util.h:110
static const char *const RUINS_AREA_FEATURE_NAME
Definition: dnc_util.h:165
VPFUtil::Coord2DShort GetLocation(void) const
Definition: dnc_util.h:569
FACC(const char *const newFacc, const unsigned int newFaccIndex)
Definition: dnc_util.h:372
bool AddFeatureDescription(FeatureDescription *const featureDescription)
Definition: vpf_util.h:199
static const char *const HAZARD_POINT_FEATURE_NAME
Definition: dnc_util.h:123
static const char *const MISCIWY_AREA_FEATURE_NAME
Definition: dnc_util.h:145
static const char *const TREE_POINT_FEATURE_NAME
Definition: dnc_util.h:178
const AttributePair * GetAttributePair(const unsigned int attribPairNum) const
static const char *const FAC_ID_COLUMN_NAME
Definition: dnc_util.h:70
static const char *const ENV_AREA_FEATURE_NAME
Definition: dnc_util.h:115
static const char *const NOTES_JOIN_TABLE_EXT
Definition: dnc_util.h:67
const DNCString _libName
Definition: dnc_util.h:657
VPFUtil::WarningBool _isValid
Definition: dnc_util.h:655
static const char *const AIDS_TO_NAVIGATION_COVERAGE_NAME
Definition: dnc_util.h:78
static const char *const LANDING_POINT_FEATURE_NAME
Definition: dnc_util.h:131
VPFUtil::Coord2DLong p1
Definition: dnc_util.h:273
void DNCUtilTessCombine(GLdouble coords[3], void *vertex_data[4], GLfloat weight[4], void **outData, void *polygon_data)
static const char *const COAST_LINE_FEATURE_NAME
Definition: dnc_util.h:104
static const char *const CANAL_LINE_FEATURE_NAME
Definition: dnc_util.h:103
VPFUtil::WarningBool _isValid
Definition: dnc_util.h:506
static const char *const LANDING_AREA_FEATURE_NAME
Definition: dnc_util.h:130
const char * GetFeatureName(void) const
Definition: dnc_util.h:559
double GetArea(void) const
Definition: dnc_util.h:280
static const char *const BROWSE_LIB_AREA_JOIN_TABLE_NAME
Definition: dnc_util.h:184
static const char *const LAKE_AREA_FEATURE_NAME
Definition: dnc_util.h:129
static const char *const BROWSE_LIB_AREA_JOIN_TABLE_KEY
Definition: dnc_util.h:185
unsigned int GetValueCount(void) const
Definition: vpf_data_value.h:89
static const char *const MARKER_POINT_FEATURE_NAME
Definition: dnc_util.h:144
const char * GetCoverageName(void) const
Definition: dnc_util.h:539
GLdouble * verts
Definition: dnc_util.h:197
static const char *const TIDE_POINT_FEATURE_NAME
Definition: dnc_util.h:174
static const char *const ENVIRONMENT_COVERAGE_NAME
Definition: dnc_util.h:74
static const char *const DANGER_AREA_FEATURE_NAME
Definition: dnc_util.h:109
unsigned int GetFeatureIndex(void) const
Definition: dnc_util.h:554
static const char *const SEAWALL_LINE_FEATURE_NAME
Definition: dnc_util.h:167
static const char *const PARK_LINE_FEATURE_NAME
Definition: dnc_util.h:151
static const char *const ORCHARD_AREA_FEATURE_NAME
Definition: dnc_util.h:149
static const char *const INDUST_POINT_FEATURE_NAME
Definition: dnc_util.h:127
Definition: vpf_data_value.h:51
VPFUtil::WarningBool _isValid
Definition: dnc_util.h:460
GlsFontBase * GetFont(void)
Definition: dnc_util.h:318
unsigned int faccIndex
Definition: dnc_util.h:366
static const char *const CALLIN_POINT_FEATURE_NAME
Definition: dnc_util.h:101
const char * GetFACCCode(void) const
Definition: dnc_util.h:549
FeatureDescription(const char *const covName, const char *const featClassName, const char *const faccCode, const unsigned int featIndex, const char *const featureName, const VPFUtil::FeatureType featureType, const VPFUtil::Coord2DShort &location)
static const char *const BRIDGE_AREA_FEATURE_NAME
Definition: dnc_util.h:93
Definition: gls_font_renderer.h:85
static const char *const MARITIM_AREA_FEATURE_NAME
Definition: dnc_util.h:143
char facc[VPFUtil::FACC_CODE_LENGTH+1u]
Definition: dnc_util.h:365
static const char *const SECTOR_AREA_FEATURE_NAME
Definition: dnc_util.h:168
static const char *const AERO_POINT_FEATURE_NAME
Definition: dnc_util.h:87
const char * GetLibraryName(void) const
Definition: dnc_util.h:631
Definition: dnc_util.h:271
static const char *const LIMBNDY_AREA_FEATURE_NAME
Definition: dnc_util.h:138
static const char *const ADMIN_LINE_FEATURE_NAME
Definition: dnc_util.h:86
const char * GetName(void) const
Definition: dnc_util.h:498
Definition: dnc_util.h:64
static const char *const EARTH_COVER_COVERAGE_NAME
Definition: dnc_util.h:73
const DNCString _faccCode
Definition: dnc_util.h:596
static const char *const TREE_AREA_FEATURE_NAME
Definition: dnc_util.h:177
static const char *const POWER_LINE_FEATURE_NAME
Definition: dnc_util.h:155
Definition: vpf_util.h:193
static const char *const SOUND_POINT_FEATURE_NAME
Definition: dnc_util.h:171
static const char *const TUNNEL_LINE_FEATURE_NAME
Definition: dnc_util.h:179
const unsigned int _libNum
Definition: dnc_util.h:656
static const char *const HYD_AREA_FEATURE_NAME
Definition: dnc_util.h:124
static const char *const BRIDGSP_AREA_FEATURE_NAME
Definition: dnc_util.h:95
QueryResults(const unsigned int libNum, const char *const libName)
static void TessellateArea(GLUtesselator *tess, const unsigned int facID, const DNCFacePrimTable &facPrimTable, const DNCRingTable &ringTable, const DNCEdgePrimTable &edgPrimTable, void *const polyData)
static const char *const MARITIM_LINE_FEATURE_NAME
Definition: dnc_util.h:142
VPFUtil::FeatureType GetFeatureType(void) const
Definition: dnc_util.h:564
const DNCString _attribName
Definition: dnc_util.h:507
const FACC * FindFACC(const char *const facc) const
char * _str
Definition: dnc_util.h:461
const char * GetFeatureClassName(void) const
Definition: dnc_util.h:544
VPFUtil::PointerArray< FeatureDescription > FeatureDescriptionArray
Definition: dnc_util.h:653
FACCArray(void)
Definition: dnc_util.h:393
static const char *const RELIEF_COVERAGE_NAME
Definition: dnc_util.h:81
static const char *const STRUCTR_LINE_FEATURE_NAME
Definition: dnc_util.h:173
Definition: gls_color.h:53
FontRenderer(GlsFontBase *font, const bool forceUpload)
static const char *const BOTCHAR_POINT_FEATURE_NAME
Definition: dnc_util.h:91
VPFUtil::PointerArray< AttributePair > AttributePairArray
Definition: dnc_util.h:591
static const char *const ROUTE_LINE_FEATURE_NAME
Definition: dnc_util.h:164
static const char *const LOADING_AREA_FEATURE_NAME
Definition: dnc_util.h:140
static const char *const BUILDNG_POINT_FEATURE_NAME
Definition: dnc_util.h:98
static const char *const LANDMRK_AREA_FEATURE_NAME
Definition: dnc_util.h:132
static const char *const RAILRD_LINE_FEATURE_NAME
Definition: dnc_util.h:157
unsigned int GetCount(void) const
Definition: dnc_util.h:406
const DNCString _featureName
Definition: dnc_util.h:598
Definition: vpf_util.h:272
FeatureDescriptionArray _featureDescriptions
Definition: dnc_util.h:658
bool IsValid(void) const
Definition: dnc_util.h:452
static const char *const LAND_COVER_COVERAGE_NAME
Definition: dnc_util.h:77
static const char *const COMM_POINT_FEATURE_NAME
Definition: dnc_util.h:105
static const char *const FENCE_LINE_FEATURE_NAME
Definition: dnc_util.h:116
The VPFDataValue class.
static const char *const HAZARD_LINE_FEATURE_NAME
Definition: dnc_util.h:122
Definition: vpf_util.h:211
static const char *const OBSTRUC_POINT_FEATURE_NAME
Definition: dnc_util.h:148
static const char *const RIVER_LINE_FEATURE_NAME
Definition: dnc_util.h:162
const FeatureDescription * GetFeatureDescription(const unsigned int featDescIndex) const
const VPFUtil::FeatureType _featureType
Definition: dnc_util.h:599
static const char *const COASTLINE_COUNTRIES_COVERAGE_NAME
Definition: dnc_util.h:83
static const char *const STRUCTR_AREA_FEATURE_NAME
Definition: dnc_util.h:172
GlsFontBase * _font
Definition: dnc_util.h:349
VPFUtil::PointerArray< GLdoubleEdge > GLdoubleEdgeArray
Definition: dnc_util.h:268
static const char *const CULTURAL_LANDMARKS_COVERAGE_NAME
Definition: dnc_util.h:72
unsigned int GetLibraryNumber(void) const
Definition: dnc_util.h:626
static const char *const OBSTRUC_AREA_FEATURE_NAME
Definition: dnc_util.h:147
VPFUtil::WarningBool _isValid
Definition: dnc_util.h:593
static const char *const RUINS_POINT_FEATURE_NAME
Definition: dnc_util.h:166
static const char *const PORT_FACILITIES_COVERAGE_NAME
Definition: dnc_util.h:80
static const char *const FORESHO_LINE_FEATURE_NAME
Definition: dnc_util.h:119
static const char *const DQY_AREA_FEATURE_NAME
Definition: dnc_util.h:111
static const char *const ECR_AREA_FEATURE_NAME
Definition: dnc_util.h:112
static const char *const LIGHTS_POINT_FEATURE_NAME
Definition: dnc_util.h:137
static const char *const BROWSE_LIB_AREA_FEAT_TABLE_NAME
Definition: dnc_util.h:183
Definition: dnc_util.h:363
static const char *const BERTH_POINT_FEATURE_NAME
Definition: dnc_util.h:90
Definition: dnc_util.h:359
static const char *const DATA_QUALITY_COVERAGE_NAME
Definition: dnc_util.h:82
static const char *const ISLAND_POINT_FEATURE_NAME
Definition: dnc_util.h:128
static const char *const SNOWICE_POINT_FEATURE_NAME
Definition: dnc_util.h:170
const DNCString _covName
Definition: dnc_util.h:594
static const char *const PARK_AREA_FEATURE_NAME
Definition: dnc_util.h:150
static const char *const AQUEDCT_LINE_FEATURE_NAME
Definition: dnc_util.h:88
static const char *const ECR_TEXT_FEATURE_NAME
Definition: dnc_util.h:113
static const char *const REEF_AREA_FEATURE_NAME
Definition: dnc_util.h:158
~GLdoubleEdge()
Definition: dnc_util.h:256
static const char *const DAM_LINE_FEATURE_NAME
Definition: dnc_util.h:108
VPFUtil::Coord2DLong swCorner
Definition: dnc_util.h:190
static const char *const LEADING_LINE_FEATURE_NAME
Definition: dnc_util.h:135
static const char *const HYDROGRAPHY_COVERAGE_NAME
Definition: dnc_util.h:75
static const char *const BUILDNG_AREA_FEATURE_NAME
Definition: dnc_util.h:97
static const char *const PIER_AREA_FEATURE_NAME
Definition: dnc_util.h:152
static const char *const RAT_ID_COLUMN_NAME
Definition: dnc_util.h:69
Definition: bmpimage.h:46
static const char *const POWER_POINT_FEATURE_NAME
Definition: dnc_util.h:156
VPFUtil::Coord2DLong p3
Definition: dnc_util.h:275
static const char *const LIMITS_COVERAGE_NAME
Definition: dnc_util.h:84
static const char *const BUOYBCN_POINT_FEATURE_NAME
Definition: dnc_util.h:100
AttributePairArray _attributePairs
Definition: dnc_util.h:601
static const char *const CURRFL_POINT_FEATURE_NAME
Definition: dnc_util.h:107
Definition: gls_font_base.h:85