mirror of
https://github.com/sarah-walker-pcem/pcem.git
synced 2025-07-23 03:33:02 +02:00
49 lines
1.7 KiB
C++
49 lines
1.7 KiB
C++
#include "lpt_epsonlx810.h"
|
|
|
|
#include <wx/xrc/xmlres.h>
|
|
#include <wx/wfstream.h>
|
|
#include <wx/log.h>
|
|
|
|
int wx_image_save_fullpath(const char *fullpath, const char *format, unsigned char *rgba, int width, int height, int alpha) {
|
|
int x, y;
|
|
wxLogNull logNull;
|
|
wxImage image(width, height);
|
|
if (alpha) {
|
|
// these will be automatically freed
|
|
unsigned char *rgb = (unsigned char *)malloc(width * height * 3);
|
|
unsigned char *a = (unsigned char *)malloc(width * height);
|
|
for (x = 0; x < width; ++x) {
|
|
for (y = 0; y < height; ++y) {
|
|
rgb[(y * width + x) * 3 + 0] = rgba[(y * width + x) * 4 + 0];
|
|
rgb[(y * width + x) * 3 + 1] = rgba[(y * width + x) * 4 + 1];
|
|
rgb[(y * width + x) * 3 + 2] = rgba[(y * width + x) * 4 + 2];
|
|
a[y * width + x] = rgba[(y * width + x) * 4 + 3];
|
|
}
|
|
}
|
|
image.SetData(rgb);
|
|
image.SetAlpha(a);
|
|
} else
|
|
image.SetData(rgba, true);
|
|
|
|
wxImageHandler *h;
|
|
|
|
if (!strcmp(format, IMAGE_TIFF))
|
|
h = new wxTIFFHandler();
|
|
else if (!strcmp(format, IMAGE_BMP))
|
|
h = new wxBMPHandler();
|
|
else if (!strcmp(format, IMAGE_JPG))
|
|
h = new wxJPEGHandler();
|
|
else
|
|
h = new wxPNGHandler();
|
|
|
|
int res = 0;
|
|
if (h) {
|
|
wxString p(fullpath);
|
|
|
|
wxFileOutputStream stream(p);
|
|
res = h->SaveFile(&image, stream, false);
|
|
delete h;
|
|
}
|
|
|
|
return res;
|
|
} |