56 #define HEADER_SIZE 512
64 #define ILUM(r, g, b) ((int)(RINTLUM * (r) + GINTLUM * (g) + BINTLUM * (b)) >> 8)
71 #define CHANOFFSET(z) (3 - (z))
74 #define BPPMASK 0x00ff
76 #define ITYPE_RLE 0x0100
77 #define ISRLE(type) (((type)&0xff00) == ITYPE_RLE)
79 #define BPP(type) ((type)&BPPMASK)
80 #define RLE(bpp) (ITYPE_RLE | (bpp))
91 #define MFILE_DATA(inf) ((void)0, ((inf)->_file_data + (inf)->_file_offset))
92 #define MFILE_STEP(inf, step) \
94 (inf)->_file_offset += step; \
97 #define MFILE_SEEK(inf, pos) \
99 (inf)->_file_offset = pos; \
104 #define DIRTY_FLAG_EOF (1 << 0)
105 #define DIRTY_FLAG_ENCODING (1 << 1)
121 float *optr,
const float *optr_end,
const uchar *iptr,
const uchar *iptr_end,
int z);
148 return ((
uint)buf[0] << 24) + ((
uint)buf[1] << 16) + ((
uint)buf[2] << 8) + ((
uint)buf[3] << 0);
157 fwrite(buf, 2, 1, outf);
164 buf[0] = (val >> 24);
165 buf[1] = (val >> 16);
168 return fwrite(buf, 4, 1, outf);
173 memset(image, 0,
sizeof(
IMAGE));
186 fwrite(&
t,
sizeof(
IMAGE), 1, outf);
187 fseek(outf, 0, SEEK_SET);
197 return fwrite(
"no name", 8, 1, outf);
231 len = ibuf->
x * ibuf->
y;
241 #define GS(x) (((uchar *)(x))[0] << 8 | ((uchar *)(x))[1])
244 #define GSS(x) (((uchar *)(x))[1] << 8 | ((uchar *)(x))[0])
263 float *fbase, *fptr =
NULL;
267 MFileOffset _inf_data = {mem, 0}, *inf = &_inf_data;
269 int bpp, rle, cur, badorder;
271 uchar dirty_flag = 0;
288 fprintf(stderr,
"longimagedata: bad magic number in image file\n");
294 if (!
ELEM(bpp, 1, 2)) {
295 fprintf(stderr,
"longimagedata: image must have 1 or 2 byte per pix chan\n");
299 fprintf(stderr,
"longimagedata: channels over 8 not supported\n");
303 const int xsize = image.
xsize;
304 const int ysize = image.
ysize;
305 const int zsize = image.
zsize;
316 size_t tablen = (size_t)ysize * (
size_t)zsize *
sizeof(int);
322 #define MFILE_CAPACITY_AT_PTR_OK_OR_FAIL(p) \
323 if (UNLIKELY((p) > mem_end)) { \
324 dirty_flag |= DIRTY_FLAG_EOF; \
331 readtab(inf, starttab, tablen);
332 readtab(inf, lengthtab, tablen);
337 for (
size_t y = 0;
y < ysize;
y++) {
338 for (
size_t z = 0;
z < zsize;
z++) {
339 if (starttab[
y +
z * ysize] < cur) {
343 cur = starttab[
y +
z * ysize];
363 for (
size_t z = 0;
z < zsize;
z++) {
365 for (
size_t y = 0;
y < ysize;
y++) {
370 uint *lptr_next = lptr + xsize;
380 for (
size_t y = 0;
y < ysize;
y++) {
382 uint *lptr_next = lptr + xsize;
383 uint *zptr_next = zptr + xsize;
385 for (
size_t z = 0;
z < zsize;
z++) {
393 (
uchar *)lptr, (
uchar *)lptr_next, rledat, rledat_next, 3 -
z);
397 (
uchar *)zptr, (
uchar *)zptr_next, rledat, rledat_next, 7 -
z);
415 for (
size_t z = 0;
z < zsize;
z++) {
417 for (
size_t y = 0;
y < ysize;
y++) {
423 float *fptr_next = fptr + (xsize * 4);
424 dirty_flag |=
expandrow2(fptr, fptr_next, rledat, rledat_next, 3 -
z);
431 float *fptr_next = fptr + (xsize * 4);
433 for (
size_t y = 0;
y < ysize;
y++) {
435 for (
size_t z = 0;
z < zsize;
z++) {
441 dirty_flag |=
expandrow2(fptr, fptr_next, rledat, rledat_next, 3 -
z);
447 #undef MFILE_CAPACITY_AT_PTR_OK_OR_FAIL
458 #define MFILE_CAPACITY_AT_PTR_OK_OR_FAIL(p) \
459 if (UNLIKELY((p) > mem_end)) { \
460 dirty_flag |= DIRTY_FLAG_EOF; \
461 goto fail_uncompressed; \
469 goto fail_uncompressed;
481 for (
size_t z = 0;
z < zsize;
z++) {
490 for (
size_t y = 0;
y < ysize;
y++) {
491 const uchar *rledat_next = rledat + xsize;
492 const int z_ofs = 3 -
z;
495 rledat = rledat_next;
504 goto fail_uncompressed;
512 for (
size_t z = 0;
z < zsize;
z++) {
516 for (
size_t y = 0;
y < ysize;
y++) {
517 const uchar *rledat_next = rledat + xsize * 2;
518 const int z_ofs = 3 -
z;
521 rledat = rledat_next;
526 #undef MFILE_CAPACITY_AT_PTR_OK_OR_FAIL
536 if (image.
zsize == 1) {
538 for (
size_t x = (
size_t)ibuf->
x * (size_t)ibuf->
y;
x > 0;
x--) {
544 else if (image.
zsize == 2) {
547 for (
size_t x = (
size_t)ibuf->
x * (size_t)ibuf->
y;
x > 0;
x--) {
553 else if (image.
zsize == 3) {
556 for (
size_t x = (
size_t)ibuf->
x * (size_t)ibuf->
y;
x > 0;
x--) {
564 if (image.
zsize == 1) {
566 for (
size_t x = (
size_t)ibuf->
x * (size_t)ibuf->
y;
x > 0;
x--) {
568 fbase[1] = fbase[2] = fbase[3];
572 else if (image.
zsize == 2) {
575 for (
size_t x = (
size_t)ibuf->
x * (size_t)ibuf->
y;
x > 0;
x--) {
577 fbase[1] = fbase[2] = fbase[3];
581 else if (image.
zsize == 3) {
584 for (
size_t x = (
size_t)ibuf->
x * (size_t)ibuf->
y;
x > 0;
x--) {
596 fprintf(stderr,
"longimagedata: corrupt file content (%d)\n", dirty_flag);
624 *lptr = ((cptr[0] << 8) | (cptr[1] << 0)) / (
float)0xFFFF;
631 float *optr,
const float *optr_end,
const uchar *iptr,
const uchar *iptr_end,
int z)
636 #define EXPAND_CAPACITY_AT_INPUT_OK_OR_FAIL(iptr_next) \
637 if (UNLIKELY(iptr_next > iptr_end)) { \
642 #define EXPAND_CAPACITY_AT_OUTPUT_OK_OR_FAIL(optr_next) \
643 if (UNLIKELY(optr_next > optr_end)) { \
651 const uchar *iptr_next = iptr + 2;
653 pixel = (iptr[0] << 8) | (iptr[1] << 0);
656 if (!(
count = (pixel & 0x7f))) {
659 const float *optr_next = optr +
count;
662 iptr_next = iptr + (
count * 2);
665 optr[0 * 4] = ((iptr[0] << 8) | (iptr[1] << 0)) / (
float)0xFFFF;
666 optr[1 * 4] = ((iptr[2] << 8) | (iptr[3] << 0)) / (
float)0xFFFF;
667 optr[2 * 4] = ((iptr[4] << 8) | (iptr[5] << 0)) / (
float)0xFFFF;
668 optr[3 * 4] = ((iptr[6] << 8) | (iptr[7] << 0)) / (
float)0xFFFF;
669 optr[4 * 4] = ((iptr[8] << 8) | (iptr[9] << 0)) / (
float)0xFFFF;
670 optr[5 * 4] = ((iptr[10] << 8) | (iptr[11] << 0)) / (
float)0xFFFF;
671 optr[6 * 4] = ((iptr[12] << 8) | (iptr[13] << 0)) / (
float)0xFFFF;
672 optr[7 * 4] = ((iptr[14] << 8) | (iptr[15] << 0)) / (
float)0xFFFF;
678 *optr = ((iptr[0] << 8) | (iptr[1] << 0)) / (
float)0xFFFF;
685 iptr_next = iptr + 2;
687 pixel_f = ((iptr[0] << 8) | (iptr[1] << 0)) / (
float)0xFFFF;
691 optr[0 * 4] = pixel_f;
692 optr[1 * 4] = pixel_f;
693 optr[2 * 4] = pixel_f;
694 optr[3 * 4] = pixel_f;
695 optr[4 * 4] = pixel_f;
696 optr[5 * 4] = pixel_f;
697 optr[6 * 4] = pixel_f;
698 optr[7 * 4] = pixel_f;
712 #undef EXPAND_CAPACITY_AT_INPUT_OK_OR_FAIL
713 #undef EXPAND_CAPACITY_AT_OUTPUT_OK_OR_FAIL
723 #define EXPAND_CAPACITY_AT_INPUT_OK_OR_FAIL(iptr_next) \
724 if (UNLIKELY(iptr_next > iptr_end)) { \
729 #define EXPAND_CAPACITY_AT_OUTPUT_OK_OR_FAIL(optr_next) \
730 if (UNLIKELY(optr_next > optr_end)) { \
738 const uchar *iptr_next = iptr + 1;
742 if (!(
count = (pixel & 0x7f))) {
745 const uchar *optr_next = optr + ((int)
count * 4);
749 iptr_next = iptr +
count;
752 optr[0 * 4] = iptr[0];
753 optr[1 * 4] = iptr[1];
754 optr[2 * 4] = iptr[2];
755 optr[3 * 4] = iptr[3];
756 optr[4 * 4] = iptr[4];
757 optr[5 * 4] = iptr[5];
758 optr[6 * 4] = iptr[6];
759 optr[7 * 4] = iptr[7];
771 iptr_next = iptr + 1;
797 #undef EXPAND_CAPACITY_AT_INPUT_OK_OR_FAIL
798 #undef EXPAND_CAPACITY_AT_OUTPUT_OK_OR_FAIL
820 uint *starttab, *lengthtab;
823 int rlebuflen, goodwrite;
831 tablen = ysize * zsize *
sizeof(int);
836 rlebuflen = 1.05 * xsize + 10;
840 memset(image, 0,
sizeof(
IMAGE));
849 image->
xsize = xsize;
850 image->
ysize = ysize;
851 image->
zsize = zsize;
858 for (
y = 0;
y < ysize;
y++) {
859 for (
z = 0;
z < zsize;
z++) {
869 else if (
z < 8 && zptr) {
873 if (
len > rlebuflen) {
874 fprintf(stderr,
"output_iris: rlebuf is too small - bad poop\n");
877 goodwrite *= fwrite(rlebuf,
len, 1, outf);
878 starttab[
y +
z * ysize] =
pos;
879 lengthtab[
y +
z * ysize] =
len;
889 goodwrite *=
writetab(outf, starttab, tablen);
890 goodwrite *=
writetab(outf, lengthtab, tablen);
901 fprintf(stderr,
"output_iris: not enough space for image!!\n");
919 uchar *iptr, *ibufend, *sptr, *optr;
925 ibufend = iptr + cnt * 4;
928 while (iptr < ibufend) {
931 while ((iptr < ibufend) && ((iptr[-8] != iptr[-4]) || (iptr[-4] != iptr[0]))) {
935 count = (iptr - sptr) / 4;
939 *optr++ = 0x80 | todo;
941 optr[0] = sptr[0 * 4];
942 optr[1] = sptr[1 * 4];
943 optr[2] = sptr[2 * 4];
944 optr[3] = sptr[3 * 4];
945 optr[4] = sptr[4 * 4];
946 optr[5] = sptr[5 * 4];
947 optr[6] = sptr[6 * 4];
948 optr[7] = sptr[7 * 4];
962 while ((iptr < ibufend) && (*iptr == cc)) {
965 count = (iptr - sptr) / 4;
974 return optr - (
uchar *)rlebuf;
981 zsize = (ibuf->
planes + 7) >> 3;
File and directory operations.
FILE * BLI_fopen(const char *filename, const char *mode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble z
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
@ COLOR_ROLE_DEFAULT_BYTE
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
void IMB_rect_from_float(struct ImBuf *ibuf)
void IMB_convert_rgba_to_abgr(struct ImBuf *ibuf)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set IMAGE
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void colorspace_set_default_role(char *colorspace, int size, int role)
static int writetab(FILE *outf, uint *tab, int len)
#define DIRTY_FLAG_ENCODING
struct ImBuf * imb_loadiris(const uchar *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE])
bool imb_saveiris(struct ImBuf *ibuf, const char *filepath, int flags)
static void interleaverow(uchar *lptr, const uchar *cptr, int z, int n)
struct MFileOffset MFileOffset
bool imb_is_a_iris(const uchar *mem, size_t size)
static int expandrow2(float *optr, const float *optr_end, const uchar *iptr, const uchar *iptr_end, int z)
static void putshort(FILE *outf, ushort val)
static uint getlong(MFileOffset *mofs)
#define EXPAND_CAPACITY_AT_OUTPUT_OK_OR_FAIL(optr_next)
static void lumrow(const uchar *rgbptr, uchar *lumptr, int n)
static int writeheader(FILE *outf, IMAGE *image)
static int expandrow(uchar *optr, const uchar *optr_end, const uchar *iptr, const uchar *iptr_end, int z)
static bool output_iris(uint *lptr, int xsize, int ysize, int zsize, const char *name, int *zptr)
static ushort getshort(MFileOffset *inf)
#define MFILE_STEP(inf, step)
static void test_endian_zbuf(struct ImBuf *ibuf)
static void readtab(MFileOffset *inf, uint *tab, int len)
static void interleaverow2(float *lptr, const uchar *cptr, int z, int n)
BLI_STATIC_ASSERT(sizeof(IMAGE)==HEADER_SIZE, "Invalid header size")
static int compressrow(uchar *lbuf, uchar *rlebuf, int z, int cnt)
#define MFILE_CAPACITY_AT_PTR_OK_OR_FAIL(p)
static int putlong(FILE *outf, uint val)
#define EXPAND_CAPACITY_AT_INPUT_OK_OR_FAIL(iptr_next)
#define MFILE_SEEK(inf, pos)
static void readheader(MFileOffset *inf, IMAGE *image)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
char name[IMB_FILENAME_SIZE]