tahoma2d/toonz/sources/common/tiio/bmp/filebmp.h
Rozhuk Ivan a7b6545028 Add FreeBSD (tested) and other BSD systems (not tested) to build and run.
I fail to build TIFF code: it requires access to libtiff internals but it
unavailable with libtiff prom ports. Probably pre build form
thirdparty/tiff-4.0.3 should fix this, but I don't check this.
Tiff code disabled for work but available in options.

I fail with SSE2 too, there is some mess with class initialization:
TRaster32P rout32 = rout; have no idea how to fix it.
If some one want to play with it, then try to build with
CFLAGS+= -DUSE_SSE2 -DDWORD=uint32_t -D_aligned_malloc=aligned_alloc -D_aligned_free=free
on non windows system.

FarmServer::queryHwInfo() - now uses TSystem::***() to collect system info,
to avoid code duplication.

Add pthread as required lib.
2021-08-31 11:10:48 -04:00

97 lines
2.2 KiB
C

#pragma once
#ifndef __FILEBMP_INCLUDED__
#define __FILEBMP_INCLUDED__
#ifdef __cplusplus
extern "C" {
#endif
/*
#if defined(_WIN32)
typedef struct {unsigned char b,g,r,m;} LPIXEL;
#elif defined(__sgi)
typedef struct { unsigned char m,b,g,r; } LPIXEL;
#elif defined(LINUX) || defined(FREEBSD)
typedef struct { unsigned char r,g,b,m; } LPIXEL;
#else
#error Not yet implemented
#endif
*/
enum BMP_ERROR_CODE {
OK,
UNSUPPORTED_BMP_FORMAT = -1,
OUT_OF_MEMORY = -2,
UNEXPECTED_EOF = -3,
CANT_OPEN_FILE = -4,
WRITE_ERROR = -5
};
typedef const wchar_t *MYSTRING;
int writebmp(const MYSTRING filename, int xsize, int ysize, void *buffer,
int bpp);
int readbmp(const MYSTRING filename, int *xsize, int *ysize, void **buffer);
int readbmpregion(const MYSTRING fname, void **pimg, int x1, int y1, int x2,
int y2, int scale);
int readbmp_size(const MYSTRING fname, int *lx, int *ly);
int readbmp_bbox(const MYSTRING fname, int *x0, int *y0, int *x1, int *y1);
typedef enum {
BMP_NONE,
BMP_BW,
BMP_GREY16,
BMP_GREY16C,
BMP_GREY256,
BMP_GREY256C,
BMP_CMAPPED16,
BMP_CMAPPED16C,
BMP_CMAPPED256,
BMP_CMAPPED256C,
BMP_RGB
} BMP_SUBTYPE;
typedef struct {
UINT bfSize;
UINT bfOffBits;
UINT biSize;
UINT biWidth;
UINT biHeight;
UINT biPlanes;
UINT biBitCount;
UINT biCompression;
UINT biSizeImage;
UINT biXPelsPerMeter;
UINT biYPelsPerMeter;
UINT biClrUsed;
UINT biClrImportant;
UINT biFilesize;
UINT biPad;
} BMP_HEADER;
int load_bmp_header(FILE *fp, BMP_HEADER **pHd);
int write_bmp_header(FILE *fp, BMP_HEADER *hd);
void release_bmp_header(BMP_HEADER *hd);
int write_bmp_palette(FILE *fp, int nc, UCHAR *b, UCHAR *g, UCHAR *r);
int make_bmp_palette(int colors, int grey, UCHAR *r, UCHAR *g, UCHAR *b);
/*BMP_SUBTYPE
bmp_get_colorstyle(IMAGE *img);*/
int error_checking_bmp(BMP_HEADER *hd);
int read_bmp_line(FILE *fp, void *line, UINT w, UINT h, UCHAR **mp,
BMP_SUBTYPE type);
int write_bmp_line(FILE *fp, void *line_buffer, UINT w, UINT row, UCHAR *mp,
BMP_SUBTYPE type);
int skip_bmp_lines(FILE *fp, UINT w, UINT rows, int whence, BMP_SUBTYPE type);
#define BMP_WIN_OS2_OLD 12
#ifdef __cplusplus
}
#endif
#endif