Add an option in "Export Sprite Sheet" to open the generated sprite sheet

This commit is contained in:
David Capello 2015-03-19 10:17:40 -03:00
parent 62b9f30f92
commit 63485449f6
5 changed files with 21 additions and 3 deletions

View File

@ -147,6 +147,7 @@
<option id="best_fit" type="bool" default="false" />
<option id="texture_filename" type="std::string" />
<option id="data_filename" type="std::string" />
<option id="open_generated" type="bool" default="false" />
</section>
</document>

View File

@ -24,6 +24,8 @@
<check id="data_enabled" text="JSON Data:" />
<button id="data_filename" cell_hspan="3" />
<check id="open_generated" text="Open generated sprite sheet" cell_hspan="4" />
<hbox cell_hspan="4">
<boxfiller />
<hbox homogeneous="true">

View File

@ -434,7 +434,7 @@ void App::initialize(const AppOptions& options)
if (trim)
m_exporter->setTrimCels(true);
m_exporter->exportSheet();
base::UniquePtr<Document> spriteSheet(m_exporter->exportSheet());
m_exporter.reset(NULL);
PRINTF("Export sprite sheet: Done\n");

View File

@ -121,6 +121,8 @@ public:
if (m_docPref.spriteSheet.type() != app::gen::SpriteSheetType::NONE)
sheetType()->setSelectedItemIndex((int)m_docPref.spriteSheet.type()-1);
openGenerated()->setSelected(m_docPref.spriteSheet.openGenerated());
for (int i=2; i<=8192; i*=2) {
std::string value = base::convert_to<std::string>(i);
if (i >= m_sprite->width()) fitWidth()->addItem(value);
@ -210,6 +212,10 @@ public:
return std::string();
}
bool openGeneratedValue() {
return openGenerated()->isSelected();
}
protected:
void onSheetTypeChange() {
@ -369,6 +375,7 @@ void ExportSpriteSheetCommand::onExecute(Context* context)
docPref.spriteSheet.bestFit(window.bestFitValue());
docPref.spriteSheet.textureFilename(window.filenameValue());
docPref.spriteSheet.dataFilename(window.dataFilenameValue());
docPref.spriteSheet.openGenerated(window.openGeneratedValue());
}
m_type = docPref.spriteSheet.type();
@ -418,11 +425,19 @@ void ExportSpriteSheetCommand::onExecute(Context* context)
exporter.setTextureHeight(sheet_h);
exporter.setTexturePack(true);
exporter.addDocument(document);
exporter.exportSheet();
base::UniquePtr<Document> newDocument(exporter.exportSheet());
if (!newDocument)
return;
StatusBar* statusbar = StatusBar::instance();
if (statusbar)
statusbar->showTip(1000, "Sprite Sheet Generated");
if (docPref.spriteSheet.openGenerated()) {
newDocument->setContext(context);
newDocument.release();
}
}
Command* CommandFactory::createExportSpriteSheetCommand()

View File

@ -95,7 +95,7 @@ namespace app {
m_documents.push_back(Item(document, layer));
}
void exportSheet();
Document* exportSheet();
private:
class Sample;