void nsSprocketLayout::AddSmallestSize(nsSize& aSize, const nsSize& aSizeToAdd, bool aIsHorizontal) { if (aIsHorizontal) AddCoord(aSize.width, aSizeToAdd.width); else AddCoord(aSize.height, aSizeToAdd.height); SetSmallestSize(aSize, aSizeToAdd, aIsHorizontal); }
void CSPrimMultiBox::AddBox(int initBox) { ClearOverlap(); if ((initBox<0) || (((initBox+1)*6)>(int)vCoords.size())) { for (unsigned int i=0;i<6;++i) AddCoord(0.0); } else for (unsigned int i=0;i<6;++i) vCoords.push_back(new ParameterScalar(vCoords.at(6*initBox+i))); }
void ILI1Reader::AddField(OGRILI1Layer* layer, IOM_BASKET model, IOM_OBJECT obj) { const char* typenam = "Reference"; if (EQUAL(iom_getobjecttag(obj),"iom04.metamodel.LocalAttribute")) typenam = GetTypeName(model, obj); //CPLDebug( "OGR_ILI", "Field %s: %s", iom_getattrvalue(obj, "name"), typenam); if (EQUAL(typenam, "iom04.metamodel.SurfaceType")) { OGRILI1Layer* polyLayer = AddGeomTable(layer->GetLayerDefn()->GetName(), iom_getattrvalue(obj, "name"), wkbPolygon); layer->SetSurfacePolyLayer(polyLayer); //TODO: add line attributes to geometry } else if (EQUAL(typenam, "iom04.metamodel.AreaType")) { IOM_OBJECT controlPointDomain = GetAttrObj(model, GetTypeObj(model, obj), "controlPointDomain"); if (controlPointDomain) { AddCoord(layer, model, obj, GetTypeObj(model, controlPointDomain)); layer->GetLayerDefn()->SetGeomType(wkbPoint); } OGRILI1Layer* areaLineLayer = AddGeomTable(layer->GetLayerDefn()->GetName(), iom_getattrvalue(obj, "name"), wkbMultiLineString); #ifdef POLYGONIZE_AREAS OGRILI1Layer* areaLayer = new OGRILI1Layer(CPLSPrintf("%s__Areas",layer->GetLayerDefn()->GetName()), NULL, 0, wkbPolygon, NULL); AddLayer(areaLayer); areaLayer->SetAreaLayers(layer, areaLineLayer); #endif } else if (EQUAL(typenam, "iom04.metamodel.PolylineType") ) { layer->GetLayerDefn()->SetGeomType(wkbMultiLineString); } else if (EQUAL(typenam, "iom04.metamodel.CoordType")) { AddCoord(layer, model, obj, GetTypeObj(model, obj)); if (layer->GetLayerDefn()->GetGeomType() == wkbUnknown) layer->GetLayerDefn()->SetGeomType(wkbPoint); } else if (EQUAL(typenam, "iom04.metamodel.NumericType") ) { OGRFieldDefn fieldDef(iom_getattrvalue(obj, "name"), OFTReal); layer->GetLayerDefn()->AddFieldDefn(&fieldDef); } else if (EQUAL(typenam, "iom04.metamodel.EnumerationType") ) { OGRFieldDefn fieldDef(iom_getattrvalue(obj, "name"), OFTInteger); layer->GetLayerDefn()->AddFieldDefn(&fieldDef); } else { OGRFieldDefn fieldDef(iom_getattrvalue(obj, "name"), OFTString); layer->GetLayerDefn()->AddFieldDefn(&fieldDef); } }
bool TSpawnPoint::GuardarSpawn(int x, int y, int z) { //guarda as coords no historico, retorna false se ja houver um igual int i = 0; while (i < n_spawns && ( spawns_anteriores[i].x != x || spawns_anteriores[i].y != y || spawns_anteriores[i].z != z) ) i++; if (i < n_spawns) return false; //encontrou um spawn igual na lista de historico //armazena o novo spawnpoint no historico AddCoord(x, y, z); AddCoord(x + 1, y, z); AddCoord(x + 1, y, z + 1); AddCoord(x + 1, y, z - 1); AddCoord(x, y, z + 1); AddCoord(x - 1, y, z + 1); AddCoord(x - 1, y, z); AddCoord(x - 1, y, z - 1); AddCoord(x, y, z - 1); return true; }
void AddFieldDefinitions(NodeVector oArcLineTypes) { for (NodeVector::const_iterator it = oFields.begin(); it != oFields.end(); ++it) { if (*it == NULL) continue; const char* psName = CPLGetXMLValue( *it, "Name", NULL ); const char* psTypeRef = CPLGetXMLValue( *it, "Type.REF", NULL ); if (psTypeRef == NULL) //Assoc Role AddField(psName, OFTString); //FIXME: numeric? else { CPLXMLNode* psElementNode = oTidLookup[psTypeRef]; const char* typeName = psElementNode->pszValue; if (EQUAL(typeName, "IlisMeta07.ModelData.TextType")) { //Kind Text,MText AddField(psName, OFTString); } else if (EQUAL(typeName, "IlisMeta07.ModelData.EnumType")) { AddField(psName, (iliVersion == 1) ? OFTInteger : OFTString); } else if (EQUAL(typeName, "IlisMeta07.ModelData.BooleanType")) { AddField(psName, OFTString); //?? } else if (EQUAL(typeName, "IlisMeta07.ModelData.NumType")) { //// Unit INTERLIS.ANYUNIT, INTERLIS.TIME, INTERLIS.h, INTERLIS.min, INTERLIS.s, INTERLIS.M, INTERLIS.d AddField(psName, OFTReal); } else if (EQUAL(typeName, "IlisMeta07.ModelData.BlackboxType")) { AddField(psName, OFTString); } else if (EQUAL(typeName, "IlisMeta07.ModelData.FormattedType")) { AddField(psName, GetFormattedType(*it)); } else if (EQUAL(typeName, "IlisMeta07.ModelData.MultiValue")) { //min -> Multiplicity/IlisMeta07.ModelData.Multiplicity/Min //max -> Multiplicity/IlisMeta07.ModelData.Multiplicity/Max const char* psClassRef = CPLGetXMLValue( psElementNode, "BaseType.REF", NULL ); if (psClassRef) { IliClass* psParentClass = oClasses[oTidLookup[psClassRef]]; poStructFieldInfos[psName] = psParentClass->GetName(); CPLDebug( "OGR_ILI", "Register table %s for struct field '%s'", poStructFieldInfos[psName].c_str(), psName); /* Option: Embed fields if max == 1 CPLDebug( "OGR_ILI", "Adding embedded struct members of MultiValue field '%s' from Class %s", psName, psClassRef); AddFieldDefinitions(psParentClass->oFields); */ } } else if (EQUAL(typeName, "IlisMeta07.ModelData.CoordType")) { AddCoord(psName, psElementNode); } else if (EQUAL(typeName, "IlisMeta07.ModelData.LineType")) { const char* psKind = CPLGetXMLValue( psElementNode, "Kind", NULL ); poGeomFieldInfos[psName].iliGeomType = psKind; bool isLinearType = (std::find(oArcLineTypes.begin(), oArcLineTypes.end(), psElementNode) == oArcLineTypes.end()); bool linearGeom = isLinearType || CSLTestBoolean(CPLGetConfigOption("OGR_STROKE_CURVE", "FALSE")); OGRwkbGeometryType multiLineType = linearGeom ? wkbMultiLineString : wkbMultiCurve; OGRwkbGeometryType polyType = linearGeom ? wkbPolygon : wkbCurvePolygon; if (iliVersion == 1) { if (EQUAL(psKind, "Area")) { CPLString lineLayerName = GetName() + CPLString("_") + psName; AddGeomTable(lineLayerName, psName, multiLineType); //Add geometry field for polygonized areas AddGeomField(psName, wkbPolygon); //We add the area helper point geometry after polygon //for better behaviour of clients with limited multi geometry support CPLString areaPointGeomName = psName + CPLString("__Point"); AddCoord(areaPointGeomName, psElementNode); } else if (EQUAL(psKind, "Surface")) { CPLString geomLayerName = GetName() + CPLString("_") + psName; AddGeomTable(geomLayerName, psName, multiLineType, true); AddGeomField(psName, polyType); } else { // Polyline, DirectedPolyline AddGeomField(psName, multiLineType); } } else { if (EQUAL(psKind, "Area") || EQUAL(psKind, "Surface")) { AddGeomField(psName, polyType); } else { // Polyline, DirectedPolyline AddGeomField(psName, multiLineType); } } } else { //ClassRefType CPLError(CE_Warning, CPLE_NotSupported, "Field '%s' of class %s has unsupported type %s", psName, GetName(), typeName); } } } }
/*------------------------------------------------------------------*/ lib *scanLLA(lib *l,char *s, int n) { int i,j=0; char *ss[8]; char p[128]; lib *ll; strncpy(p,s,127); p[127]=0; i=strscan(p,ss,',',8); if(i<3) { strncpy(p,s,127); p[127]=0; i=strscan(p,ss,' ',8); } if(i<3) return(NULL); if(!l) { l=makelib(); copylib(LL,l); } if(!l->ltype) { l->ltype=addtype(TYPE_TG); l->txt=l->ltype->typtxt; auto_ntyp(&l); } if(i>3) j=*ss[3]; if(n || !l->x || j=='+') AddCoord(l,0,0,0); l->xc->x=atof(ss[0]); l->xc->y=atof(ss[1]); l->xc->z=atof(ss[2]); if(coordtx) Utm2Lla(l,l); else { l->xc->x *= M_PI/180.0; l->xc->y *= M_PI/180.0; } l->xc->t=Time; if(i==6) { l->xc->muzzle=atoi(ss[4]); l->xc->refp=atoi(ss[5]); } else { l->xc->muzzle=0; ll=copylib(l,ll=makelib()); LlaToCorr(l,ll,OBP,NULL,EL_AZ_R); l->xc->refp = ScaleAngle(ll->xc->y + maxmils/2,maxmils,MR10,eof)+0.5; freelib(ll); } return(l); }