mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-01 14:43:55 +00:00
80 lines
1.7 KiB
C
80 lines
1.7 KiB
C
#include "io.h"
|
|
// #include "os.h"
|
|
// #include "bmp_io_c.h"
|
|
#include "png_io_c.h"
|
|
#include <stdio.h> /* For fputs() */
|
|
#include <string.h> /* For strcmp() */
|
|
#include <ctype.h> /* For tolower() */
|
|
|
|
const char *getExtension(const char *fname, size_t len)
|
|
{
|
|
if (fname == NULL || len <= 0) return NULL;
|
|
|
|
while (--len > 0 && fname[len] != '.' && fname[len] != '\0')
|
|
;
|
|
|
|
return fname + len + 1;
|
|
}
|
|
|
|
MMImageType imageTypeFromExtension(const char *extension)
|
|
{
|
|
char ext[4];
|
|
const size_t maxlen = sizeof(ext) / sizeof(ext[0]);
|
|
size_t i;
|
|
|
|
for (i = 0; extension[i] != '\0'; ++i) {
|
|
if (i >= maxlen) return kInvalidImageType;
|
|
ext[i] = tolower(extension[i]);
|
|
}
|
|
ext[i] = '\0';
|
|
|
|
if (strcmp(ext, "png") == 0) {
|
|
return kPNGImageType;
|
|
} else if (strcmp(ext, "bmp") == 0) {
|
|
return kBMPImageType;
|
|
} else {
|
|
return kInvalidImageType;
|
|
}
|
|
}
|
|
|
|
MMBitmapRef newMMBitmapFromFile(const char *path,
|
|
MMImageType type,
|
|
MMIOError *err)
|
|
{
|
|
switch (type) {
|
|
case kBMPImageType:
|
|
return newMMBitmapFromBMP(path, err);
|
|
case kPNGImageType:
|
|
return newMMBitmapFromPNG(path, err);
|
|
default:
|
|
if (err != NULL) *err = kMMIOUnsupportedTypeError;
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
int saveMMBitmapToFile(MMBitmapRef bitmap,
|
|
const char *path,
|
|
MMImageType type)
|
|
{
|
|
switch (type) {
|
|
case kBMPImageType:
|
|
return saveMMBitmapAsBMP(bitmap, path);
|
|
case kPNGImageType:
|
|
return saveMMBitmapAsPNG(bitmap, path);
|
|
default:
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
const char *MMIOErrorString(MMImageType type, MMIOError error)
|
|
{
|
|
switch (type) {
|
|
case kBMPImageType:
|
|
return MMBMPReadErrorString(error);
|
|
case kPNGImageType:
|
|
return MMPNGReadErrorString(error);
|
|
default:
|
|
return "Unsupported image type";
|
|
}
|
|
}
|