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:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user