21 static ossimTrace traceDebug(
"ossimVpfAnnotationFeatureInfo:debug");
31 :theName(featureName),
32 thePenColor(penColor),
33 theBrushColor(brushColor),
34 thePointRadius(pointRadius),
35 theThickness(thickness),
36 theFillEnabledFlag(false),
37 theEnabledFlag(enabledFlag),
38 theFeatureType(ossimVpfAnnotationFeatureType_UNKNOWN),
46 std::vector<ossimFontInformation> fontInfoArray;
50 if(fontInfoArray.size())
97 result = result.
combine(tempRect);
212 const char* prefix)
const 287 const char* name = kwl.
find(prefix,
"name");
288 const char* description = kwl.
find(prefix,
"description");
289 const char* enabled = kwl.
find(prefix,
"enabled");
290 const char* fillEnabled = kwl.
find(prefix,
"fill_enabled");
291 const char* thickness = kwl.
find(prefix,
"thickness");
292 const char* pointRadius = kwl.
find(prefix,
"point_radius");
293 const char* brushColor = kwl.
find(prefix,
"brush_color");
294 const char* penColor = kwl.
find(prefix,
"pen_color");
338 colorStream >> r >> g >> b;
348 colorStream >> r >> g >> b;
407 else if(downCased.
contains(
"polygon"))
523 vector<ossimString> tileIds;
526 bool isTiled =
false;
535 if(!primitiveTable.
openTable(primitiveTableName))
543 for(
ossim_uint32 idx = 0; idx < columnValues.size();++idx)
547 if(tileId != tileIds[idx].toInt())
549 tileId = tileIds[idx].toInt();
559 if(!primitiveTable.
openTable(primitiveTableName))
582 stringValuePosition);
585 if(!midPoint.hasNans())
619 std::vector<ossimPolyLine> polyLineArray;
625 vector<ossimString> tileIds;
626 bool isTiled =
false;
636 if(!primitiveTable.
openTable(primitiveTableName))
643 for(
ossim_uint32 idx = 0; idx < columnValues.size();++idx)
647 if(tileId != tileIds[idx].toInt())
649 tileId = tileIds[idx].toInt();
659 if(!primitiveTable.
openTable(primitiveTableName))
669 columnValues[idx].toInt(),
670 coordinateValuePosition,
675 polyLineArray.push_back(polyLine);
689 for (
int col = 0; col < numCols; col ++) {
705 std::vector<ossimGpt> centerPointArray;
711 vector<ossimString> tileIds;
712 bool isTiled =
false;
722 if(!primitiveTable.
openTable(primitiveTableName))
729 for(
ossim_uint32 idx = 0; idx < columnValues.size();++idx)
733 if(tileId != tileIds[idx].toInt())
735 tileId = tileIds[idx].toInt();
745 if(!primitiveTable.
openTable(primitiveTableName))
758 coordinateValuePosition,
763 for(
int i = 0; i < count; ++i)
765 if((fabs(ptArray[i].
x) <= 180.0)&&
766 (fabs(ptArray[i].
y) <= 90.0))
768 centerPointArray.push_back(
ossimGpt(ptArray[i].lat,
804 vector<ossimGeoPolygon> thePolyList;
809 vector<ossimString> tileIds;
810 bool isTiled =
false;
824 if(!primitiveTable.
openTable(primitiveTableName)||
837 for(
ossim_uint32 idx = 0; idx < columnValues.size();++idx)
841 if((tileId != tileIds[idx].toInt())||
844 tileId = tileIds[idx].toInt();
858 if(!primitiveTable.
openTable(primitiveTableName)||
871 int thisFaceId = columnValues[idx].toInt();
882 " bacause it has only " << primitiveTable.
getNumberOfRows() <<
" rows" << endl;
890 int outerStartEdge = startEdge;
900 if (thisFaceId != ringFaceId) {
905 " because it's ring (" << rngId <<
") has face " << ringFaceId <<
" and startEdgeId " << startEdge << endl;
915 int innerRingOffset = 1;
919 while (rowFaceId == thisFaceId && rngId + innerRingOffset <= rngTable.
getNumberOfRows()) {
920 startEdge =
readStartEdgeId(rngId + innerRingOffset, startEdgePosition, rngTable);
922 if (startEdge == outerStartEdge) {
927 << thisFaceId <<
" because inner ring " 928 << rngId + innerRingOffset
929 <<
" touches outer ring " << rngId << endl;
945 if(holePolygon.
size())
946 polygon.
addHole( holePolygon );
956 thePolyList.push_back(polygon);
975 for (
int col = 0; col < numCols; col ++) {
1000 coord->
x = (double)temp.
x;
1001 coord->
y = (
double)temp.
y;
1005 for (i=0; i<*count; i++)
1007 coord[i].
x = (double)ptr[i].
x;
1008 coord[i].
y = (double)ptr[i].
y;
1024 coord->
x = (double)temp.
x;
1025 coord->
y = (
double)temp.
y;
1029 for (i=0; i<*count; i++)
1031 coord[i].
x = (double)ptr[i].
x;
1032 coord[i].
y = (double)ptr[i].
y;
1053 for (i=0; i<*count; i++)
1055 coord[i].
x = ptr[i].
x;
1056 coord[i].
y = ptr[i].
y;
1077 for (i=0; i<*count; i++)
1079 coord[i].
x = ptr[i].
x;
1080 coord[i].
y = ptr[i].
y;
1169 vector < int > edges;
1170 int lastEdge = startEdgeId;
1171 edges.push_back( lastEdge );
1177 if (startNode != endNode) {
1183 int firstNode, lastNode;
1185 if (rightFace == leftFace) {
1186 if (rightEdge == leftEdge) {
1195 int nextEdge = startEdgeId;
1196 int nextLeftFace = leftFace;
1197 int nextRightFace = rightFace;
1198 int mobiusLimit = 1000;
1200 while (nextLeftFace == nextRightFace) {
1201 if (-- mobiusLimit < 0) {
1210 int thisEdge = nextEdge;
1213 if (nextEdge == thisEdge)
1215 else if (nextEdge == startEdgeId) {
1225 if (nextEdge == thisEdge) {
1230 }
else if (nextEdge == startEdgeId) {
1245 startEdgeId = nextEdge;
1246 rightFace = nextRightFace;
1247 leftFace = nextLeftFace;
1254 if (rightFace == faceId) {
1256 firstNode = startNode;
1258 }
else if (leftFace == faceId) {
1260 firstNode = endNode;
1261 lastNode = startNode;
1282 while (nextLeftFace == nextRightFace) {
1284 if (rightFace == faceId)
1289 if (lastEnd == nextStartNode)
1290 nextEdge = nextLeftEdge;
1291 else if (lastEnd == nextEndNode)
1292 nextEdge = nextRightEdge;
1300 if (lastEdge == nextEdge)
1319 lastEdge = nextEdge;
1320 edges.push_back( lastEdge );
1324 if (nextRightFace == faceId) {
1325 if (lastNode != nextStartNode) {
1332 lastEnd = nextEndNode;
1333 }
else if (nextLeftFace == faceId) {
1334 if (lastNode != nextEndNode) {
1341 lastEnd = nextStartNode;
1350 if (lastEnd == firstNode)
1356 startNode = nextStartNode;
1357 endNode = nextEndNode;
1358 rightFace = nextRightFace;
1359 leftFace = nextLeftFace;
1361 if (rightFace == faceId) {
1362 nextEdge = nextRightEdge;
1365 nextEdge = nextLeftEdge;
1366 lastNode = startNode;
1374 for (vector< int >::iterator i = edges.begin(); i != edges.end(); i++) {
1387 if (rightFace == faceId)
1389 for(
int p = 0; p < count; ++p)
1391 if((fabs(ptArray[p].
x) <= 180.0)&&
1392 (fabs(ptArray[p].
y) <= 90.0))
1394 polygon.
addPoint(ptArray[p].
y, ptArray[p].
x);
1400 for(
int p = count - 1; p >= 0; --p)
1402 if((fabs(ptArray[p].
x) <= 180.0)&&
1403 (fabs(ptArray[p].
y) <= 90.0))
1405 polygon.
addPoint(ptArray[p].
y, ptArray[p].
x);
1432 for(
int i = 0; i < count; ++i)
1434 if((fabs(ptArray[i].
x) <= 180.0)&&
1435 (fabs(ptArray[i].
y) <= 90.0))
ossimString theDescription
void free_row(row_type row, vpf_table_type table)
virtual void setShear(const ossimDpt &shear)
unsigned char getR() const
std::basic_stringstream< char > stringstream
Class for char mixed input and output memory streams.
int getNumberOfRows() const
void buildPointFeature(const ossimString &primitiveName, const ossimFilename &table, const ossimString &tableKey, const ossimFilename &primitive, const ossimString &primitiveKey)
void setEnabledFlag(bool flag)
virtual void setThickness(ossim_uint8 thickness)
ossimString thePrimitiveTableKey
Represents serializable keyword/value map.
virtual void setThickness(ossim_uint8 thickness)
virtual void setColor(ossim_uint8 r, ossim_uint8 g, ossim_uint8 b)
ossimString getTileName(ossim_int32 id) const
void readGeoPolygon(ossimGeoPolygon &polygon, int faceId, int startEdgeId, ossimVpfTable &edgTable)
const char * find(const char *key) const
ossimRgbVector theBrushColor
double nan()
Method to return ieee floating point double precision NAN.
void setR(unsigned char R)
virtual void setColor(ossim_uint8 r, ossim_uint8 g, ossim_uint8 b)
virtual void getFontInformation(vector< ossimFontInformation > &fontInformationList) const
bool contains(char aChar) const
bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
ossimIrect getBoundingProjectedRect() const
int readStartEdgeId(int rowNumber, int colNumber, ossimVpfTable &rngTable)
static ossimString toString(bool aValue)
Numeric to string methods.
void setFont(ossimFont *font)
bool openFeatureClassSchema(ossimVpfFeatureClassSchema &schema)
int getEdgeKeyId(vpf_table_type &table, row_type &row, int col)
ossimFilename thePrimitiveTable
row_type read_row(ossim_int32 row_number, vpf_table_type table)
virtual void setRotation(double rotation)
ossimVpfAnnotationFeatureType
std::vector< ossimString > getColumnValues(const ossimString &columnName) const
void setB(unsigned char B)
ossimString getFeatureTypeAsString() const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual void setThickness(ossim_uint8 thickness)
virtual bool openTable(const ossimFilename &tableName)
ossim_int32 getColumnPosition(const ossimString &columnName) const
ossimDpt * getXy(vpf_table_type table, row_type row, ossim_int32 pos, ossim_int32 *count)
int getNumberOfColumns() const
const ossimFilename & getPath() const
void setDrawingFeaturesToAnnotation()
virtual void setThickness(ossim_uint8 thickness)
bool toBool() const
String to numeric methods.
virtual void setPointSize(const ossimIpt &size)
unsigned int ossim_uint32
ossimString trim(const ossimString &valueToTrim=ossimString(" \\)) const
this will strip lead and trailing character passed in.
void addHole(const ossimGeoPolygon &polygon)
unsigned char getB() const
void addPoint(const ossimGpt &pt)
void transform(ossimImageGeometry *proj)
ossimFont * createFont(const ossimFontInformation &information) const
static ossimString downcase(const ossimString &aString)
virtual void reset() const
virtual void setColor(unsigned char r, unsigned char g, unsigned char b)
ossimFont * getDefaultFont() const
ossimVpfCoverage theCoverage
ossim_uint32 size() const
ossimString getColumnValueAsString(row_type &row, long columnNumber) const
ossimVpfAnnotationFeatureType getFeatureTypeFromString(const ossimString &featureType) const
virtual ossimObject * dup() const =0
bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
void setG(unsigned char G)
Container class that holds both 2D transform and 3D projection information for an image Only one inst...
ossimVpfAnnotationFeatureInfo(const ossimString &featureName="", const ossimRgbVector &penColor=ossimRgbVector(255, 255, 255), const ossimRgbVector &brushColor=ossimRgbVector(255, 255, 255), const ossimDpt &pointRadius=ossimDpt(1, 1), int thickness=0, bool enabledFlag=true)
vpf_table_type * getVpfTableData()
void addPoint(const ossimDpt &pt)
void * get_table_element(ossim_int32 field_number, row_type row, vpf_table_type table, void *value, ossim_int32 *count)
unsigned char getG() const
virtual void setWidthHeight(const ossimDpt &widthHeight)
RTTI_DEF1(ossimVpfAnnotationFeatureInfo, "ossimVpfAnnotationFeatureInfo", ossimObject)
virtual void setFillFlag(bool fillFlag)
static ossimFontFactoryRegistry * instance()
ossimVpfAnnotationFeatureType theFeatureType
void buildEdgFeature(const ossimFilename &table, const ossimString &tableKey, const ossimFilename &primitive, const ossimString &primitiveKey)
void buildFaceFeature(const ossimFilename &table, const ossimString &tableKey, const ossimFilename &primitive, const ossimString &primitiveKey)
~ossimVpfAnnotationFeatureInfo()
ossimFilename dirCat(const ossimFilename &file) const
void buildTxtFeature(const ossimFilename &table, const ossimString &tableKey, const ossimFilename &primitive, const ossimString &primitiveKey)
const char * c_str() const
Returns a pointer to a null-terminated array of characters representing the string's contents...
virtual void setFillFlag(bool flag)
void readEdge(ossimPolyLine &polyLine, int rowNumber, int colPosition, ossimVpfTable &edgeTable)
void readAttributes(ossimPolyLine &polyLine, ossimVpfTable &table, int row)
std::vector< ossimRefPtr< ossimGeoAnnotationObject > > theAnnotationArray
int readTableCellAsInt(int rowNumber, int colNumber, ossimVpfTable &table)
ossimRgbVector thePenColor
void drawAnnotations(ossimRgbImage *tile)
virtual void setColor(unsigned char r, unsigned char g, unsigned char b)
ossimFontInformation theFontInformation
int readRngId(int rowNumber, int colNumber, ossimVpfTable &faceTable)
ossimIrect combine(const ossimIrect &rect) const
virtual void setScale(const ossimDpt &scale)
unsigned char ossim_uint8
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)
void addAttribute(const ossimString &attribute)
void addAttribute(const ossimString &attribute)
ossimVpfLibrary * getLibrary()
bool getFeatureClassNode(const ossimString &featureClass, ossimVpfFeatureClassSchemaNode &featureClassNode) const