OGRFeature* OGRXPlaneGSLayer::AddFeature(const char* pszNavaidID, const char* pszAptICAO, const char* pszRwyNum, double dfLat, double dfLon, double dfEle, double dfFreq, double dfRange, double dfTrueHeading, double dfSlope) { int nCount = 0; OGRFeature* poFeature = new OGRFeature(poFeatureDefn); poFeature->SetGeometryDirectly( new OGRPoint( dfLon, dfLat ) ); poFeature->SetField( nCount++, pszNavaidID ); poFeature->SetField( nCount++, pszAptICAO ); poFeature->SetField( nCount++, pszRwyNum ); poFeature->SetField( nCount++, dfEle ); poFeature->SetField( nCount++, dfFreq ); poFeature->SetField( nCount++, dfRange ); poFeature->SetField( nCount++, dfTrueHeading ); poFeature->SetField( nCount++, dfSlope ); RegisterFeature(poFeature); return poFeature; }
OGRFeature* OGRXPlaneDMELayer::AddFeature(const char* pszNavaidID, const char* pszNavaidName, const char* pszSubType, double dfLat, double dfLon, double dfEle, double dfFreq, double dfRange, double dfBias) { int nCount = 0; OGRFeature* poFeature = new OGRFeature(poFeatureDefn); poFeature->SetGeometryDirectly( new OGRPoint( dfLon, dfLat ) ); poFeature->SetField( nCount++, pszNavaidID ); poFeature->SetField( nCount++, pszNavaidName ); poFeature->SetField( nCount++, pszSubType ); poFeature->SetField( nCount++, dfEle ); poFeature->SetField( nCount++, dfFreq ); poFeature->SetField( nCount++, dfRange ); poFeature->SetField( nCount++, dfBias ); RegisterFeature(poFeature); return poFeature; }
int CJabberProto::AddFeatures(LPCTSTR szFeatures) { if (!szFeatures) return false; mir_cslockfull lck(m_csLists); BOOL ret = true; LPCTSTR szFeat = szFeatures; while (szFeat[0]) { JabberFeatCapPairDynamic *fcp = FindFeature(szFeat); // if someone is trying to add one of core features, RegisterFeature() will return false, so we don't have to perform this check here if (!fcp) { // if the feature is not registered yet if (!RegisterFeature(szFeat, NULL)) ret = false; else fcp = FindFeature(szFeat); // update fcp after RegisterFeature() } if (fcp) m_uEnabledFeatCapsDynamic |= fcp->jcbCap; else ret = false; szFeat += lstrlen(szFeat) + 1; } lck.unlock(); if (m_bJabberOnline) SendPresence(m_iStatus, true); return ret; }
OGRFeature* OGRXPlaneAirwaySegmentLayer::AddFeature(const char* pszAirwaySegmentName, const char* pszFirstPointName, const char* pszSecondPointName, double dfLat1, double dfLon1, double dfLat2, double dfLon2, int bIsHigh, int nBaseFL, int nTopFL) { int nCount = 0; OGRFeature* poFeature = new OGRFeature(poFeatureDefn); if (fabs(dfLon1 - dfLon2) < 270) { OGRLineString* lineString = new OGRLineString(); lineString->addPoint(dfLon1, dfLat1); lineString->addPoint(dfLon2, dfLat2); poFeature->SetGeometryDirectly( lineString ); } else { /* Crossing antemeridian */ OGRMultiLineString* multiLineString = new OGRMultiLineString(); OGRLineString* lineString1 = new OGRLineString(); OGRLineString* lineString2 = new OGRLineString(); double dfLatInt; lineString1->addPoint(dfLon1, dfLat1); if (dfLon1 < dfLon2) { dfLatInt = dfLat1 + (dfLat2 - dfLat1) * (-180 - dfLon1) / ((dfLon2 - 360) - dfLon1); lineString1->addPoint(-180, dfLatInt); lineString2->addPoint(180, dfLatInt); } else { dfLatInt = dfLat1 + (dfLat2 - dfLat1) * (180 - dfLon1) / ((dfLon2 + 360) - dfLon1); lineString1->addPoint(180, dfLatInt); lineString2->addPoint(-180, dfLatInt); } lineString2->addPoint(dfLon2, dfLat2); multiLineString->addGeometryDirectly( lineString1 ); multiLineString->addGeometryDirectly( lineString2 ); poFeature->SetGeometryDirectly( multiLineString ); } poFeature->SetField( nCount++, pszAirwaySegmentName ); poFeature->SetField( nCount++, pszFirstPointName ); poFeature->SetField( nCount++, pszSecondPointName ); poFeature->SetField( nCount++, bIsHigh ); poFeature->SetField( nCount++, nBaseFL ); poFeature->SetField( nCount++, nTopFL ); RegisterFeature(poFeature); return poFeature; }
OGRFeature* OGRXPlaneFIXLayer::AddFeature(const char* pszFixName, double dfLat, double dfLon) { int nCount = 0; OGRFeature* poFeature = new OGRFeature(poFeatureDefn); poFeature->SetGeometryDirectly( new OGRPoint( dfLon, dfLat ) ); poFeature->SetField( nCount++, pszFixName ); RegisterFeature(poFeature); return poFeature; }
OGRFeature* OGRXPlaneMarkerLayer::AddFeature(const char* pszAptICAO, const char* pszRwyNum, const char* pszSubType, double dfLat, double dfLon, double dfEle, double dfTrueHeading) { int nCount = 0; OGRFeature* poFeature = new OGRFeature(poFeatureDefn); poFeature->SetGeometryDirectly( new OGRPoint( dfLon, dfLat ) ); poFeature->SetField( nCount++, pszAptICAO ); poFeature->SetField( nCount++, pszRwyNum ); poFeature->SetField( nCount++, pszSubType ); poFeature->SetField( nCount++, dfEle ); poFeature->SetField( nCount++, dfTrueHeading ); RegisterFeature(poFeature); return poFeature; }
OGRFeature* OGRXPlaneAirwayIntersectionLayer::AddFeature(const char* pszIntersectionName, double dfLat, double dfLon) { OGRFeature* poFeature = new OGRFeature(poFeatureDefn); poFeature->SetGeometryDirectly( new OGRPoint( dfLon, dfLat ) ); poFeature->SetField( 0, pszIntersectionName ); if (CPLHashSetLookup(poSet, poFeature) == NULL) { CPLHashSetInsert(poSet, poFeature->Clone()); RegisterFeature(poFeature); return poFeature; } else { delete poFeature; return NULL; } }