tahoma2d/toonz/sources/image/quantel/filequantelP.h
2016-04-20 10:24:45 +09:00

147 lines
6.3 KiB
C

#ifndef __FILEQUANTELP_H__
#define __FILEQUANTELP_H__
#include "filequantel.h"
#define QNT_PAL_FILE_SIZE 829440
#define QNT_PAL_W_FILE_SIZE 855360
#define QTL_NTSC_FILE_SIZE 699840
#define QTL_NTSC_W_FILE_SIZE 728640
#define QUANTEL_XSIZE 720
#define QNT_PAL_XSIZE QUANTEL_XSIZE
#define QNT_PAL_YSIZE 576
#define QTL_NTSC_XSIZE QUANTEL_XSIZE
#define QTL_NTSC_YSIZE 486
#define BYTESPERROW (QUANTEL_XSIZE * sizeof(short))
#define CHECK_END_OF_FILE(car) \
{ \
if ((car) == EOF) { \
printf("read error: EOF encountered\n"); \
exit = 1; \
break; \
} \
}
#define QUANTEL_GET_YUV_LINE(file_ptr, buf, xsize) \
{ \
int pixel; \
TINT32 r, g, b, y1, y2, u, v; \
\
for (pixel = ((xsize) >> 1); pixel--;) { \
u = fgetc(file_ptr); \
CHECK_END_OF_FILE(u) \
u -= 128; \
y1 = fgetc(file_ptr); \
CHECK_END_OF_FILE(y1) \
y1 -= 16; \
\
if (y1 < 0) \
y1 = 0; \
\
v = fgetc(file_ptr); \
CHECK_END_OF_FILE(v) \
v -= 128; \
y2 = fgetc(file_ptr); \
CHECK_END_OF_FILE(y2) \
y2 -= 16; \
\
if (y2 < 0) \
y2 = 0; \
\
r = 76310 * y1 + 104635 * v; \
if (r > 0xFFFFFF) \
r = 0xFFFFFF; \
if (r <= 0xFFFF) \
r = 0; \
\
g = 76310 * y1 + -25690 * u + -53294 * v; \
if (g > 0xFFFFFF) \
g = 0xFFFFFF; \
if (g <= 0xFFFF) \
g = 0; \
\
b = 76310 * y1 + 132278 * u; \
if (b > 0xFFFFFF) \
b = 0xFFFFFF; \
if (b <= 0xFFFF) \
b = 0; \
\
buf->r = (UCHAR)(r >> 16); \
buf->g = (UCHAR)(g >> 16); \
buf->b = (UCHAR)(b >> 16); \
buf->m = (UCHAR)255; \
buf++; \
\
r = 76310 * y2 + 104635 * v; \
if (r > 0xFFFFFF) \
r = 0xFFFFFF; \
if (r <= 0xFFFF) \
r = 0; \
\
g = 76310 * y2 + -25690 * u + -53294 * v; \
if (g > 0xFFFFFF) \
g = 0xFFFFFF; \
if (g <= 0xFFFF) \
g = 0; \
\
b = 76310 * y2 + 132278 * u; \
if (b > 0xFFFFFF) \
b = 0xFFFFFF; \
if (b <= 0xFFFF) \
b = 0; \
\
buf->r = (UCHAR)(r >> 16); \
buf->g = (UCHAR)(g >> 16); \
buf->b = (UCHAR)(b >> 16); \
buf->m = (UCHAR)255; \
buf++; \
} \
}
#define QUANTEL_FILL_LINE_OF_BLACK(rbuf, gbuf, bbuf, size) \
{ \
memset(rbuf, 0, (size_t)(size * sizeof(USHORT))); \
memset(gbuf, 0, (size_t)(size * sizeof(USHORT))); \
memset(bbuf, 0, (size_t)(size * sizeof(USHORT))); \
}
#define QUANTEL_FILL_LINE_OF_RGB(xmarg, xsize, rbuf, gbuf, bbuf, RGBbuf) \
{ \
int i; \
QUANTEL_FILL_LINE_OF_BLACK(rbuf, gbuf, bbuf, xmarg) \
for (i = xmarg; i < xsize + xmarg; i++) { \
rbuf[i] = (USHORT)RGBbuf->r; \
gbuf[i] = (USHORT)RGBbuf->g; \
bbuf[i] = (USHORT)RGBbuf->b; \
RGBbuf++; \
} \
QUANTEL_FILL_LINE_OF_BLACK(rbuf + i, gbuf + i, bbuf + i, xmarg) \
}
#define QUANTEL_FILL_LINE_OF_RGB2(xmarg, rbuf, gbuf, bbuf, RGBbuf) \
{ \
int i; \
QUANTEL_FILL_LINE_OF_BLACK(rbuf, gbuf, bbuf, xmarg) \
for (i = xmarg; i < (QUANTEL_XSIZE - xmarg); i++) { \
rbuf[i] = (USHORT)RGBbuf->r; \
gbuf[i] = (USHORT)RGBbuf->g; \
bbuf[i] = (USHORT)RGBbuf->b; \
RGBbuf++; \
} \
QUANTEL_FILL_LINE_OF_BLACK(rbuf + i, gbuf + i, bbuf + i, xmarg) \
}
#define QUANTEL_LIMIT(r, x) \
{ \
r = x; \
if (r > 0x00ffffff) \
r = 0x00ffffff; \
if (r <= 0x00000000) \
r = 0; \
}
#endif /* __FILEQUANTELP_H__ */