TEST(File, SeveralSizes) { she::ScopedHandle<she::System> system(she::CreateSystem()); // Register all possible image formats. FileFormatsManager::instance().registerAllFormats(); std::vector<char> fn(256); for (int w=10; w<=10+503*2; w+=503) { for (int h=10; h<=10+503*2; h+=503) { //std::sprintf(&fn[0], "test_%dx%d.ase", w, h); std::sprintf(&fn[0], "test.ase"); { UniquePtr<Document> doc(Document::createBasicDocument(IMAGE_INDEXED, w, h, 256)); doc->setFilename(&fn[0]); // Random pixels LayerImage* layer = dynamic_cast<LayerImage*>(doc->getSprite()->getFolder()->getFirstLayer()); ASSERT_TRUE(layer != NULL); Image* image = doc->getSprite()->getStock()->getImage(layer->getCel(FrameNumber(0))->getImage()); std::srand(w*h); int c = std::rand()%256; for (int y=0; y<h; y++) { for (int x=0; x<w; x++) { image_putpixel_fast<IndexedTraits>(image, x, y, c); if ((std::rand()&4) == 0) c = std::rand()%256; } } save_document(doc); } { UniquePtr<Document> doc(load_document(&fn[0])); ASSERT_EQ(w, doc->getSprite()->getWidth()); ASSERT_EQ(h, doc->getSprite()->getHeight()); // Same random pixels (see the seed) LayerImage* layer = dynamic_cast<LayerImage*>(doc->getSprite()->getFolder()->getFirstLayer()); ASSERT_TRUE(layer != NULL); Image* image = doc->getSprite()->getStock()->getImage(layer->getCel(FrameNumber(0))->getImage()); std::srand(w*h); int c = std::rand()%256; for (int y=0; y<h; y++) { for (int x=0; x<w; x++) { ASSERT_EQ(c, image_getpixel_fast<IndexedTraits>(image, x, y)); if ((std::rand()&4) == 0) c = std::rand()%256; } } } } } }
//сохраняем все документы bool CController::save_all() { bool result = false; for (int type = ORDER; type < QUANTITY_TYPES; type++) { result = save_document((DocumentType)type); } return result; }