Icon-O-Matic: fix filename length limitation

The code was using B_OS_NAME_LENGTH instead of B_FILE_NAME_LENGTH.
Use of BString allows to put the different sizes in a loop.
This commit is contained in:
Adrien Destugues
2020-08-02 17:27:49 +02:00
parent 1bad1ff34a
commit e4c945bd5a
@@ -10,47 +10,40 @@
#include <stdio.h>
#include <String.h>
#include "BitmapExporter.h"
// constructor
BitmapSetSaver::BitmapSetSaver(const entry_ref& ref)
: FileSaver(ref)
{
}
// destructor
BitmapSetSaver::~BitmapSetSaver()
{
}
// Save
status_t
BitmapSetSaver::Save(Document* document)
{
entry_ref actualRef(fRef);
char name[B_OS_NAME_LENGTH];
BString name;
// 64x64
snprintf(name, sizeof(name), "%s_64.png", fRef.name);
actualRef.set_name(name);
Exporter* exporter = new BitmapExporter(64);
exporter->SetSelfDestroy(true);
exporter->Export(document, actualRef);
int sizes[] = { 64, 32, 16 };
// 16x16
snprintf(name, sizeof(name), "%s_16.png", fRef.name);
actualRef.set_name(name);
exporter = new BitmapExporter(16);
exporter->SetSelfDestroy(true);
exporter->Export(document, actualRef);
// 32x32
snprintf(name, sizeof(name), "%s_32.png", fRef.name);
actualRef.set_name(name);
exporter = new BitmapExporter(32);
exporter->SetSelfDestroy(true);
exporter->Export(document, actualRef);
for (size_t i = 0; i < B_COUNT_OF(sizes); i++) {
name.SetToFormat("%s_%d.png", fRef.name, sizes[i]);
actualRef.set_name(name.String());
Exporter* exporter = new BitmapExporter(sizes[i]);
exporter->SetSelfDestroy(true);
exporter->Export(document, actualRef);
}
return B_OK;
}