xmlDocPtr createXmlDoc(SHAPE *shape, RULESET *ruleset) { int i, j; xmlDocPtr doc = NULL; xmlNodePtr root_node = NULL; srid = shape->srid; // apply ruleset, set alt field name to use for osm tags for (i = 0; i < (shape->num_fields - 1); i++) { for (j = 0; j < (ruleset->num_rules - 1); j++) { if ((strcmp(getKey(&shape->fields[i]), getKey(&ruleset->rules[j])) == 0)) { setValue(&shape->fields[i], getValue(&ruleset->rules[j])); } } } doc = xmlNewDoc(BAD_CAST "1.0"); root_node = xmlNewNode(NULL, BAD_CAST "osm"); xmlNewProp(root_node, BAD_CAST "version", BAD_CAST xmlEscape("0.6")); xmlDocSetRootElement(doc, root_node); if (shape->filetype == SHPT_POINT) { buildNodes(root_node, parsePoints(shape), shape); } else if (shape->filetype == SHPT_MULTIPOINT) { // TODO fprintf(stderr, "Error: Unknown or invalid shapefile type\n"); exit(0); } else if (shape->filetype == SHPT_ARC) { parseLine(root_node, shape); } else { fprintf(stderr, "Error: Unknown or invalid shapefile type\n"); exit(0); } fprintf(stderr, "Done: processed %d records.\n", shape->num_records); return doc; }
void SculptMeshFactory::buildBlock(stk_classic::ParallelMachine parallelMach,STK_Interface & mesh, int block_index, int *block_id, int elm_start, int *elements, int *nodes_per_element, int *elem_attributes, int **elmt_node_linkage ) const { struct MeshStorageStruct *mss = get_sculpt_mesh(); // add blocks std::stringstream blockName; blockName << "eblock-" << block_id[block_index]; stk_classic::mesh::Part * block = mesh.getElementBlockPart(blockName.str()); buildNodes( parallelMach, mesh ); // read element block properties //read element connectivity information into a temporary array if(elements[block_index]) { int maximum_nodes = elements[block_index] * nodes_per_element[block_index]; elmt_node_linkage[block_index] = new int[maximum_nodes]; for(int ict = 0;ict < elements[block_index]; ict ++){ std::vector<stk_classic::mesh::EntityId> nodes(nodes_per_element[block_index]); //std::cout<<"Element id = "<<elm_start+ ict<<std::endl; //std::cout<<"Element global id = "<<mss->global_element_numbers[elm_start+ ict-1]<<std::endl; for(int nct = 0; nct < nodes_per_element[block_index]; nct++){ elmt_node_linkage[block_index][(ict*nodes_per_element[block_index])+nct] = mss->elmt_node_linkage[block_index][(ict*nodes_per_element[block_index])+nct]; nodes[nct] = mss->global_node_numbers[elmt_node_linkage[block_index][(ict*nodes_per_element[block_index])+nct]-1]; //std::cout<<" Node linkage id = "<<elmt_node_linkage[block_index][(ict*nodes_per_element[block_index])+nct]<<std::endl; //std::cout<<" Node global id = "<<nodes[nct]<<std::endl; } stk_classic::mesh::EntityId gid = mss->global_element_numbers[elm_start+ ict-1]; RCP<ElementDescriptor> ed = rcp(new ElementDescriptor(gid,nodes)); mesh.addElement(ed,block); } } else { elmt_node_linkage[block_index] = NULL; } }
/* MapEditorWindow::writeMap * Writes the current map as [name] to a wad archive and returns it *******************************************************************/ WadArchive* MapEditorWindow::writeMap(string name, bool nodes) { // Get map data entries vector<ArchiveEntry*> new_map_data; SLADEMap& map = editor.getMap(); if (mdesc_current.format == MAP_DOOM) map.writeDoomMap(new_map_data); else if (mdesc_current.format == MAP_HEXEN) map.writeHexenMap(new_map_data); else if (mdesc_current.format == MAP_UDMF) { ArchiveEntry* udmf = new ArchiveEntry("TEXTMAP"); map.writeUDMFMap(udmf); new_map_data.push_back(udmf); } else // TODO: doom64 return NULL; // Check script language bool acs = false; if (theGameConfiguration->scriptLanguage() == "acs_hexen" || theGameConfiguration->scriptLanguage() == "acs_zdoom") acs = true; // Force ACS on for Hexen map format, and off for Doom map format if (mdesc_current.format == MAP_DOOM) acs = false; if (mdesc_current.format == MAP_HEXEN) acs = true; bool dialogue = false; if (theGameConfiguration->scriptLanguage() == "usdf" || theGameConfiguration->scriptLanguage() == "zsdf") dialogue = true; // Add map data to temporary wad WadArchive* wad = new WadArchive(); wad->addNewEntry(name); // Handle fragglescript and similar content in the map header if (mdesc_current.head && mdesc_current.head->getSize() && !mdesc_current.archive) { wad->getEntry(name)->importMemChunk(mdesc_current.head->getMCData()); } for (unsigned a = 0; a < new_map_data.size(); a++) wad->addEntry(new_map_data[a]); if (acs) // BEHAVIOR wad->addEntry(panel_script_editor->compiledEntry(), "", true); if (acs && panel_script_editor->scriptEntry()->getSize() > 0) // SCRIPTS (if any) wad->addEntry(panel_script_editor->scriptEntry(), "", true); if (mdesc_current.format == MAP_UDMF) { // Add extra UDMF entries for (unsigned a = 0; a < map.udmfExtraEntries().size(); a++) wad->addEntry(map.udmfExtraEntries()[a], -1, NULL, true); wad->addNewEntry("ENDMAP"); } // Build nodes if (nodes) buildNodes(wad); // Clear current map data for (unsigned a = 0; a < map_data.size(); a++) delete map_data[a]; map_data.clear(); // Update map data for (unsigned a = 0; a < wad->numEntries(); a++) map_data.push_back(new ArchiveEntry(*(wad->getEntry(a)))); return wad; }
std::unique_ptr<View> buildMenu(const specter::Button* button) { m_openRecentMenuRoot.buildNodes(m_splash.m_vm.recentProjects()); return std::unique_ptr<View>(new specter::Menu(m_splash.rootView().viewRes(), m_splash, &m_openRecentMenuRoot)); }