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 <stdio.h>
#include <String.h>
#include "BitmapExporter.h" #include "BitmapExporter.h"
// constructor // constructor
BitmapSetSaver::BitmapSetSaver(const entry_ref& ref) BitmapSetSaver::BitmapSetSaver(const entry_ref& ref)
: FileSaver(ref) : FileSaver(ref)
{ {
} }
// destructor // destructor
BitmapSetSaver::~BitmapSetSaver() BitmapSetSaver::~BitmapSetSaver()
{ {
} }
// Save // Save
status_t status_t
BitmapSetSaver::Save(Document* document) BitmapSetSaver::Save(Document* document)
{ {
entry_ref actualRef(fRef); entry_ref actualRef(fRef);
char name[B_OS_NAME_LENGTH]; BString name;
// 64x64 int sizes[] = { 64, 32, 16 };
snprintf(name, sizeof(name), "%s_64.png", fRef.name);
actualRef.set_name(name); for (size_t i = 0; i < B_COUNT_OF(sizes); i++) {
Exporter* exporter = new BitmapExporter(64); name.SetToFormat("%s_%d.png", fRef.name, sizes[i]);
exporter->SetSelfDestroy(true); actualRef.set_name(name.String());
exporter->Export(document, actualRef); Exporter* exporter = new BitmapExporter(sizes[i]);
// 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->SetSelfDestroy(true);
exporter->Export(document, actualRef); exporter->Export(document, actualRef);
}
return B_OK; return B_OK;
} }