You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.1 KiB
C
127 lines
4.1 KiB
C
#ifndef __AMSCIMGLIB4_H__
|
|
#define __AMSCIMGLIB4_H__
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <math.h>
|
|
|
|
#ifdef _WIN32
|
|
#ifdef EXPORT_AMSCIMGLIB4
|
|
#define AMSCIMGLIB4_API __declspec(dllexport)
|
|
#else
|
|
#define AMSCIMGLIB4_API __declspec(dllimport)
|
|
#endif
|
|
#else
|
|
//#define AMSCPPDLL_API __attribute__((visibility("default")))
|
|
#define AMSCIMGLIB4_API
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
AMSCIMGLIB4_API int amscppdlltemplate_exportedtestfn(int a, int b);
|
|
|
|
static const int amscimglib4_success = 0;
|
|
static const int amscimglib4_failure = -1;
|
|
|
|
static const int amscimglib4_type_unknown = -1;
|
|
static const int amscimglib4_type_bmp = 1;
|
|
static const int amscimglib4_type_png = 2;
|
|
static const int amscimglib4_type_jpg = 3;
|
|
|
|
|
|
|
|
// Main Dynamic Image Structure
|
|
//bytebuf contans RGBARGBA information in the following order:
|
|
//to access pixel [I,J] color C, [I+J*sizex]*4+C
|
|
typedef struct amscimglib4_image
|
|
{
|
|
int sizex;
|
|
int sizey;
|
|
unsigned char *data; //size 4*sizex*sizey, [color + I*4 + J*4*sizex]
|
|
} amscimglib4_image;
|
|
|
|
typedef struct amscimglib4_pixel
|
|
{
|
|
unsigned char R;
|
|
unsigned char G;
|
|
unsigned char B;
|
|
unsigned char A;
|
|
} amscimglib4_pixel;
|
|
|
|
// commonly known as an opaque pointer pattern or PIMPL pattern (Pointer to IMPLementation) for memory management.
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_image_new(amscimglib4_image **imgptr, int _sizex, int _sizey);
|
|
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_image_delete(amscimglib4_image **imgptr);
|
|
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_image_resize(amscimglib4_image *imgptr, int _sizex, int _sizey);
|
|
|
|
//sets all pixels in the image to (0,0,0,0)
|
|
AMSCIMGLIB4_API void amscimglib4_image_clear(amscimglib4_image *imgptr);
|
|
|
|
//copies an image from one image struct to another
|
|
//resizes imgto
|
|
AMSCIMGLIB4_API int amscimglib4_image_copy(amscimglib4_image *imgto, const amscimglib4_image *imgfrom);
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_set_pixel_RGBA(amscimglib4_image *img, int x, int y,
|
|
unsigned char R, unsigned char G, unsigned char B, unsigned char A);
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_get_pixel_RGBA(amscimglib4_image *img, int x, int y,
|
|
unsigned char *R, unsigned char *G, unsigned char *B, unsigned char *A);
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_set_pixel(amscimglib4_image *img, int x, int y,
|
|
const amscimglib4_pixel px);
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_get_pixel(amscimglib4_image *img, int x, int y,
|
|
amscimglib4_pixel *px);
|
|
|
|
|
|
|
|
//////////////////////////////////////////////
|
|
// Some limited image manipulation routines //
|
|
//////////////////////////////////////////////
|
|
|
|
//transposes an image
|
|
AMSCIMGLIB4_API int amscimglib4_transpose_image(amscimglib4_image *img);
|
|
|
|
AMSCIMGLIB4_API void amscimglib4_image_flipx(amscimglib4_image *img);
|
|
AMSCIMGLIB4_API void amscimglib4_image_flipy(amscimglib4_image *img);
|
|
|
|
//////////////////////////////////////////////////
|
|
// Routines to load and save image file formats //
|
|
//////////////////////////////////////////////////
|
|
|
|
AMSCIMGLIB4_API int amscimglib4_magic_type(const char *fname);
|
|
|
|
AMSCIMGLIB4_API void amscimglib4_readimage(const char *fname, amscimglib4_image *img);
|
|
|
|
//writes an image to a file
|
|
// amscimglib4_type_bmp - write as a BMP
|
|
// amscimglib4_type_jpg - write as a JPG
|
|
// anything else - default is PNG
|
|
AMSCIMGLIB4_API void amscimglib4_writeimage_select(const char *fname, amscimglib4_image *img, int formatspec);
|
|
|
|
//writes to a file of a given type based on filename extension
|
|
AMSCIMGLIB4_API void amscimglib4_writeimage(const char *fname, amscimglib4_image *img);
|
|
|
|
AMSCIMGLIB4_API void amscimglib4_readimage_bmp(const char *fname, amscimglib4_image *img);
|
|
AMSCIMGLIB4_API void amscimglib4_writeimage_bmp(const char *fname, amscimglib4_image *img);
|
|
|
|
AMSCIMGLIB4_API void amscimglib4_readimage_png(const char *fname, amscimglib4_image *img);
|
|
AMSCIMGLIB4_API void amscimglib4_writeimage_png(const char *fname, amscimglib4_image *img);
|
|
|
|
AMSCIMGLIB4_API void amscimglib4_readimage_jpeg(const char *fname, amscimglib4_image *img);
|
|
AMSCIMGLIB4_API void amscimglib4_writeimage_jpeg(const char *fname, amscimglib4_image *img, int quality);
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}; // end extern "C"
|
|
#endif
|
|
|
|
#endif |