//-------------------------------------------------------------- // create a brush const mgBrush* mgGenSurface::createBrush( const mgColor& color) { mgString key; //=-= key.format("brush-%x", colorPixel(color)); mgResource* value = findResource(key); if (value != NULL) return (mgBrush*) value; mgBrush* brush = new mgBrush(color); brush->m_key = key; saveResource(brush); return brush; }
//-------------------------------------------------------------- // create an icon const mgIcon* mgGenSurface::createIcon( const char* fileName) { mgString key; key.format("icon-%s", (const char*) fileName); mgResource* value = findResource(key); if (value != NULL) return (mgIcon*) value; // create the icon mgIcon* icon = new mgIcon(); // =-= load fileName); icon->m_key = key; saveResource(icon); return icon; }
//-------------------------------------------------------------- // create pen from color const mgPen* mgGenSurface::createPen( double thick, const mgColor& color) { mgString key; //=-= key.format("pen-%x,%d", colorPixel(color), (int) (thick*100)); mgResource* value = findResource(key); if (value != NULL) return (mgPen*) value; // create the pen mgPen* pen = new mgPen(thick, color); pen->m_key = key; saveResource(pen); return pen; }
static void extractResources(pe_ctx_t *ctx, const NODE_PERES *node) { assert(node != NULL); int count = 0; while (node->lastNode != NULL) { node = node->lastNode; } while (node != NULL) { if (node->nodeType != RDT_DATA_ENTRY) { node = node->nextNode; continue; } count++; saveResource(ctx, node); node = node->nextNode; } }
void SaveManager::saveWorld(const World& world, QString savingPath) { QFile fileXml(savingPath); // Ouverture du fichier en écriture et en texte. (sort de la fonction si le fichier ne s'ouvre pas) if(!fileXml.open(QFile::WriteOnly | QFile::Text)) { std::cerr << "failed to open file: " << savingPath.toStdString() << std::endl; return; } QXmlStreamWriter writer(&fileXml); // Active l'indentation automatique du fichier XML pour une meilleur visibilite writer.setAutoFormatting(true); // Insert la norme de codification du fichier XML : writer.writeStartDocument(); writer.writeStartElement("World"); writer.writeTextElement("x", QString::number(world.getSizeX())); writer.writeTextElement("y", QString::number(world.getSizeY())); writer.writeTextElement("age", QString::number(world.getWorldAge())); writer.writeTextElement("generationNumber", QString::number(world.getGenerationNumber())); for(auto entity:world.getCopyOfEntities()) { if(auto r = std::dynamic_pointer_cast<Resource>(entity)) { saveResource(r,writer); } else if(auto a = std::dynamic_pointer_cast<Animal>(entity)) { saveAnimal(a,writer); } } writer.writeEndElement();//World writer.writeEndDocument(); fileXml.close(); }
//-------------------------------------------------------------- // create font const mgFont* mgGenSurface::createFont( const char* faceName, int size, BOOL bold, BOOL italic) { // construct name used for hashtable keys mgString key; key.format("font-%s-%d%s%s", (const char*) faceName, size, bold?"-B":"", italic?"-I":""); // if found, we're done mgResource* value = findResource(key); if (value != NULL) return (mgFont*) value; // create font and add to cache mgGenFont* font = new mgGenFont(this, faceName, size, bold, italic); font->m_key = key; saveResource(font); return font; }