void OGRDXFDataSource::ReadLayerDefinition() { char szLineBuf[257]; int nCode; std::map<CPLString,CPLString> oLayerProperties; CPLString osLayerName = ""; oLayerProperties["Hidden"] = "0"; while( (nCode = ReadValue( szLineBuf, sizeof(szLineBuf) )) > 0 ) { switch( nCode ) { case 2: osLayerName = ACTextUnescape(szLineBuf,GetEncoding()); oLayerProperties["Exists"] = "1"; break; case 6: oLayerProperties["Linetype"] = ACTextUnescape(szLineBuf, GetEncoding()); break; case 62: oLayerProperties["Color"] = szLineBuf; if( atoi(szLineBuf) < 0 ) // Is layer off? oLayerProperties["Hidden"] = "1"; break; case 70: oLayerProperties["Flags"] = szLineBuf; if( atoi(szLineBuf) & 0x01 ) // Is layer frozen? oLayerProperties["Hidden"] = "1"; break; case 370: case 39: oLayerProperties["LineWeight"] = szLineBuf; break; default: break; } } if( oLayerProperties.size() > 0 ) oLayerTable[osLayerName] = oLayerProperties; if( nCode == 0 ) UnreadValue(); }
void OGRDXFDataSource::ReadLineTypeDefinition() { char szLineBuf[257]; int nCode; CPLString osLineTypeName; CPLString osLineTypeDef; while( (nCode = ReadValue( szLineBuf, sizeof(szLineBuf) )) > 0 ) { switch( nCode ) { case 2: osLineTypeName = ACTextUnescape(szLineBuf,GetEncoding()); break; case 49: { if( osLineTypeDef != "" ) osLineTypeDef += " "; if( szLineBuf[0] == '-' ) osLineTypeDef += szLineBuf+1; else osLineTypeDef += szLineBuf; osLineTypeDef += "g"; } break; default: break; } } if( osLineTypeDef != "" ) oLineTypeTable[osLineTypeName] = osLineTypeDef; if( nCode == 0 ) UnreadValue(); }
CPLString OGRDWGLayer::TextUnescape( OdString oString ) { return ACTextUnescape( (const char *) oString, poDS->GetEncoding() ); }