70 const size_t channels = s3d->
channels;
72 const int stride_from =
width;
73 const int stride_to =
width;
75 const int anaglyph_encoding[3][3] = {
83 r = anaglyph_encoding[mode][0];
84 g = anaglyph_encoding[mode][1];
85 b = anaglyph_encoding[mode][2];
94 float *to = rect_to + stride_to *
y * 3;
96 rect_left + stride_from *
y * 3,
97 rect_right + stride_from *
y * 3,
107 else if (channels == 4) {
109 float *to = rect_to + stride_to *
y * 4;
111 rect_left + stride_from *
y * 4,
112 rect_right + stride_from *
y * 4,
131 uchar *to = rect_to + stride_to *
y * 3;
133 rect_left + stride_from *
y * 3,
134 rect_right + stride_from *
y * 3,
144 else if (channels == 4) {
146 uchar *to = rect_to + stride_to *
y * 4;
148 rect_left + stride_from *
y * 4,
149 rect_right + stride_from *
y * 4,
170 const size_t channels = s3d->
channels;
172 const int stride_from =
width;
173 const int stride_to =
width;
176 const float *rect_left = s3d->
rectf.
left;
184 float *to = rect_to + stride_to *
y * channels;
185 const float *
from[2] = {
186 rect_left + stride_from *
y * channels,
187 rect_right + stride_from *
y * channels,
189 memcpy(to,
from[i],
sizeof(
float) * channels * stride_from);
197 float *to = rect_to + stride_to *
y;
198 const float *
from[2] = {
199 rect_left + stride_from *
y,
200 rect_right + stride_from *
y,
210 else if (channels == 3) {
212 float *to = rect_to + stride_to *
y * 3;
213 const float *
from[2] = {
214 rect_left + stride_from *
y * 3,
215 rect_right + stride_from *
y * 3,
225 else if (channels == 4) {
227 float *to = rect_to + stride_to *
y * channels;
228 const float *
from[2] = {
229 rect_left + stride_from *
y * channels,
230 rect_right + stride_from *
y * channels,
246 float *to = rect_to + stride_to *
y;
247 const float *
from[2] = {
248 rect_left + stride_from *
y,
249 rect_right + stride_from *
y,
259 else if (channels == 3) {
262 float *to = rect_to + stride_to *
y * 3;
263 const float *
from[2] = {
264 rect_left + stride_from *
y * 3,
265 rect_right + stride_from *
y * 3,
275 else if (channels == 4) {
278 float *to = rect_to + stride_to *
y * 4;
279 const float *
from[2] = {
280 rect_left + stride_from *
y * 4,
281 rect_right + stride_from *
y * 4,
307 uchar *to = rect_to + stride_to *
y * channels;
309 rect_left + stride_from *
y * channels,
310 rect_right + stride_from *
y * channels,
312 memcpy(to,
from[i],
sizeof(
uchar) * channels * stride_from);
320 uchar *to = rect_to + stride_to *
y;
322 rect_left + stride_from *
y,
323 rect_right + stride_from *
y,
332 else if (channels == 3) {
334 uchar *to = rect_to + stride_to *
y * 3;
336 rect_left + stride_from *
y * 3,
337 rect_right + stride_from *
y * 3,
346 else if (channels == 4) {
348 uchar *to = rect_to + stride_to *
y * 4;
350 rect_left + stride_from *
y * 4,
351 rect_right + stride_from *
y * 4,
366 uchar *to = rect_to + stride_to *
y;
368 rect_left + stride_from *
y,
369 rect_right + stride_from *
y,
379 else if (channels == 3) {
382 uchar *to = rect_to + stride_to *
y * 3;
384 rect_left + stride_from *
y * 3,
385 rect_right + stride_from *
y * 3,
395 else if (channels == 4) {
398 uchar *to = rect_to + stride_to *
y * 4;
400 rect_left + stride_from *
y * 4,
401 rect_right + stride_from *
y * 4,
426 const size_t channels = s3d->
channels;
428 const int stride_from =
width;
429 const int stride_to =
width * 2;
431 const int l = (int)crosseyed;
435 const float *rect_left = s3d->
rectf.
left;
440 float *to = rect_to + stride_to *
y * channels;
441 const float *
from[2] = {
442 rect_left + stride_from *
y * channels,
443 rect_right + stride_from *
y * channels,
446 memcpy(to,
from[
l],
sizeof(
float) * channels * stride_from);
447 memcpy(to + channels * stride_from,
from[
r],
sizeof(
float) * channels * stride_from);
456 uchar *to = rect_to + stride_to *
y * channels;
458 rect_left + stride_from *
y * channels,
459 rect_right + stride_from *
y * channels,
462 memcpy(to,
from[
l],
sizeof(
uchar) * channels * stride_from);
463 memcpy(to + channels * stride_from,
from[
r],
sizeof(
uchar) * channels * stride_from);
474 const size_t channels = s3d->
channels;
476 const int stride_from =
width;
477 const int stride_to =
width;
480 const float *rect_left = s3d->
rectf.
left;
485 float *to = rect_to + stride_to *
y * channels;
486 const float *
from[2] = {
487 rect_left + stride_from *
y * channels,
488 rect_right + stride_from *
y * channels,
491 memcpy(to,
from[1],
sizeof(
float) * channels * stride_from);
493 to + channels *
height * stride_from,
from[0],
sizeof(
float) * channels * stride_from);
502 uchar *to = rect_to + stride_to *
y * channels;
504 rect_left + stride_from *
y * channels,
505 rect_right + stride_from *
y * channels,
508 memcpy(to,
from[1],
sizeof(
uchar) * channels * stride_from);
510 to + channels *
height * stride_from,
from[0],
sizeof(
uchar) * channels * stride_from);
522 const bool is_squeezed,
550 const bool is_squeezed,
616 float *rectf,
Stereo3dFormat *s3d,
const size_t x,
const size_t y,
const size_t channels)
645 memcpy(rectf, ibuf->
rect_float,
x *
y *
sizeof(
float[4]));
650 int *rect,
Stereo3dFormat *s3d,
const size_t x,
const size_t y,
const size_t channels)
668 (
unsigned char *)rect,
678 memcpy(rect, ibuf->
rect,
x *
y *
sizeof(
unsigned int));
692 const size_t channels,
715 const size_t channels,
722 const bool is_float = im_format->
depth > 8;
729 &s3d_data, is_float,
x,
y, channels, rect_left, rect_right, r_rect,
NULL,
NULL,
NULL);
739 const size_t channels,
746 const bool is_float = im_format->
depth > 8;
753 &s3d_data, is_float,
x,
y, channels,
NULL,
NULL,
NULL, rectf_left, rectf_right, r_rectf);
766 const bool is_float = im_format->
depth > 8;
783 (
int *)ibuf_left->
rect,
784 (
int *)ibuf_right->
rect,
785 (
int *)ibuf_stereo->
rect,
828 const size_t channels = s3d->
channels;
830 const int stride_from =
width;
831 const int stride_to =
width;
833 const int anaglyph_encoding[3][3] = {
841 r = anaglyph_encoding[mode][0];
842 g = anaglyph_encoding[mode][1];
843 b = anaglyph_encoding[mode][2];
852 float *
from = rect_from + stride_from *
y * 3;
854 rect_left + stride_to *
y * 3,
855 rect_right + stride_to *
y * 3,
858 for (
x = 0;
x <
width;
x++,
from += 3, to[0] += 3, to[1] += 3) {
865 else if (channels == 4) {
867 float *
from = rect_from + stride_from *
y * 4;
869 rect_left + stride_to *
y * 4,
870 rect_right + stride_to *
y * 4,
873 for (
x = 0;
x <
width;
x++,
from += 4, to[0] += 4, to[1] += 4) {
877 to[0][3] = to[1][3] =
from[3];
889 uchar *
from = rect_from + stride_from *
y * 3;
891 rect_left + stride_to *
y * 3,
892 rect_right + stride_to *
y * 3,
895 for (
x = 0;
x <
width;
x++,
from += 3, to[0] += 3, to[1] += 3) {
902 else if (channels == 4) {
904 uchar *
from = rect_from + stride_from *
y * 4;
906 rect_left + stride_to *
y * 4,
907 rect_right + stride_to *
y * 4,
910 for (
x = 0;
x <
width;
x++,
from += 4, to[0] += 4, to[1] += 4) {
914 to[0][3] = to[1][3] =
from[3];
928 const size_t channels = s3d->
channels;
930 const int stride_from =
width;
931 const int stride_to =
width;
942 const float *
from = rect_from + stride_from *
y * channels;
944 rect_left + stride_to *
y * channels,
945 rect_right + stride_to *
y * channels,
947 memcpy(to[i],
from,
sizeof(
float) * channels * stride_to);
955 const float *
from = rect_from + stride_from *
y;
957 rect_left + stride_to *
y,
958 rect_right + stride_to *
y,
962 for (
x = 0;
x <
width;
x++,
from += 1, to[0] += 1, to[1] += 1) {
968 else if (channels == 3) {
970 const float *
from = rect_from + stride_from *
y * 3;
972 rect_left + stride_to *
y * 3,
973 rect_right + stride_to *
y * 3,
977 for (
x = 0;
x <
width;
x++,
from += 3, to[0] += 3, to[1] += 3) {
983 else if (channels == 4) {
985 const float *
from = rect_from + stride_from *
y * channels;
987 rect_left + stride_to *
y * channels,
988 rect_right + stride_to *
y * channels,
992 for (
x = 0;
x <
width;
x++,
from += 4, to[0] += 4, to[1] += 4) {
1001 if (channels == 1) {
1002 char i = (char)
swap;
1004 const float *
from = rect_from + stride_from *
y;
1006 rect_left + stride_to *
y,
1007 rect_right + stride_to *
y,
1010 for (
x = 0;
x <
width;
x++,
from += 1, to[0] += 1, to[1] += 1) {
1017 else if (channels == 3) {
1018 char i = (char)
swap;
1020 const float *
from = rect_from + stride_from *
y * 3;
1022 rect_left + stride_to *
y * 3,
1023 rect_right + stride_to *
y * 3,
1026 for (
x = 0;
x <
width;
x++,
from += 3, to[0] += 3, to[1] += 3) {
1033 else if (channels == 4) {
1034 char i = (char)
swap;
1036 const float *
from = rect_from + stride_from *
y * 4;
1038 rect_left + stride_to *
y * 4,
1039 rect_right + stride_to *
y * 4,
1042 for (
x = 0;
x <
width;
x++,
from += 4, to[0] += 4, to[1] += 4) {
1063 char i = (char)
swap;
1065 const uchar *
from = rect_from + stride_from *
y * channels;
1067 rect_left + stride_to *
y * channels,
1068 rect_right + stride_to *
y * channels,
1070 memcpy(to[i],
from,
sizeof(
uchar) * channels * stride_to);
1076 if (channels == 1) {
1078 const uchar *
from = rect_from + stride_from *
y;
1080 rect_left + stride_to *
y,
1081 rect_right + stride_to *
y,
1083 char i = (char)
swap;
1084 for (
x = 0;
x <
width;
x++,
from += 1, to[0] += 1, to[1] += 1) {
1090 else if (channels == 3) {
1092 const uchar *
from = rect_from + stride_from *
y * 3;
1094 rect_left + stride_to *
y * 3,
1095 rect_right + stride_to *
y * 3,
1097 char i = (char)
swap;
1098 for (
x = 0;
x <
width;
x++,
from += 3, to[0] += 3, to[1] += 3) {
1104 else if (channels == 4) {
1106 const uchar *
from = rect_from + stride_from *
y * 4;
1108 rect_left + stride_to *
y * 4,
1109 rect_right + stride_to *
y * 4,
1111 char i = (char)
swap;
1112 for (
x = 0;
x <
width;
x++,
from += 4, to[0] += 4, to[1] += 4) {
1121 if (channels == 1) {
1122 char i = (char)
swap;
1124 const uchar *
from = rect_from + stride_from *
y;
1126 rect_left + stride_to *
y,
1127 rect_right + stride_to *
y,
1130 for (
x = 0;
x <
width;
x++,
from += 1, to[0] += 1, to[1] += 1) {
1137 else if (channels == 3) {
1138 char i = (char)
swap;
1140 const uchar *
from = rect_from + stride_from *
y * 3;
1142 rect_left + stride_to *
y * 3,
1143 rect_right + stride_to *
y * 3,
1146 for (
x = 0;
x <
width;
x++,
from += 3, to[0] += 3, to[1] += 3) {
1153 else if (channels == 4) {
1154 char i = (char)
swap;
1156 const uchar *
from = rect_from + stride_from *
y * 4;
1158 rect_left + stride_to *
y * 4,
1159 rect_right + stride_to *
y * 4,
1162 for (
x = 0;
x <
width;
x++,
from += 4, to[0] += 4, to[1] += 4) {
1184 const size_t channels = s3d->
channels;
1186 const int stride_from =
width * 2;
1187 const int stride_to =
width;
1189 const int l = (int)crosseyed;
1198 const float *
from = rect_from + stride_from *
y * channels;
1200 rect_left + stride_to *
y * channels,
1201 rect_right + stride_to *
y * channels,
1204 memcpy(to[
l],
from,
sizeof(
float) * channels * stride_to);
1205 memcpy(to[
r],
from + channels * stride_to,
sizeof(
float) * channels * stride_to);
1215 const uchar *
from = rect_from + stride_from *
y * channels;
1217 rect_left + stride_to *
y * channels,
1218 rect_right + stride_to *
y * channels,
1221 memcpy(to[
l],
from,
sizeof(
uchar) * channels * stride_to);
1222 memcpy(to[
r],
from + channels * stride_to,
sizeof(
uchar) * channels * stride_to);
1233 const size_t channels = s3d->
channels;
1235 const int stride_from =
width;
1236 const int stride_to =
width;
1244 const float *
from = rect_from + stride_from *
y * channels;
1246 rect_left + stride_to *
y * channels,
1247 rect_right + stride_to *
y * channels,
1250 memcpy(to[1],
from,
sizeof(
float) * channels * stride_to);
1251 memcpy(to[0],
from + channels *
height * stride_to,
sizeof(
float) * channels * stride_to);
1260 const uchar *
from = rect_from + stride_from *
y * channels;
1262 rect_left + stride_to *
y * channels,
1263 rect_right + stride_to *
y * channels,
1266 memcpy(to[1],
from,
sizeof(
uchar) * channels * stride_to);
1267 memcpy(to[0],
from + channels *
height * stride_to,
sizeof(
uchar) * channels * stride_to);
1280 ImBuf *ibuf_stereo3d,
1281 ImBuf **r_ibuf_left,
1282 ImBuf **r_ibuf_right)
1285 ImBuf *ibuf_left, *ibuf_right;
1318 (
int *)ibuf_left->
rect,
1319 (
int *)ibuf_right->
rect,
1320 (
int *)ibuf_stereo3d->
rect,
1342 (
int *)ibuf_left->
zbuf,
1343 (
int *)ibuf_right->
zbuf,
1344 (
int *)ibuf_stereo3d->
zbuf,
1354 *r_ibuf_left = ibuf_left;
1355 *r_ibuf_right = ibuf_right;
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
@ S3D_SIDEBYSIDE_CROSSEYED
@ S3D_INTERLACE_CHECKERBOARD
_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 GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_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
Header file for allocimbuf.c.
bool addzbufImBuf(struct ImBuf *ibuf)
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
void IMB_freeImBuf(struct ImBuf *ibuf)
void IMB_buffer_byte_from_byte(unsigned char *rect_to, const unsigned char *rect_from, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
void IMB_buffer_float_from_float(float *rect_to, const float *rect_from, int channels_from, int profile_to, int profile_from, bool predivide, int width, int height, int stride_to, int stride_from)
bool addzbuffloatImBuf(struct ImBuf *ibuf)
void IMB_scaleImBuf_threaded(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
Contains defines and structs used throughout the imbuf module.
#define IB_PROFILE_LINEAR_RGB
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMLoop * l
void *(* MEM_mallocN)(size_t len, const char *str)
struct Stereo3DData Stereo3DData
static void imb_stereo3d_unsqueeze_ImBuf(ImBuf *ibuf, Stereo3dFormat *s3d, const size_t x, const size_t y)
static void imb_stereo3d_write_interlace(Stereo3DData *s3d, enum eStereo3dInterlaceType mode, const bool swap)
static void imb_stereo3d_squeeze_rectf(float *rectf, Stereo3dFormat *s3d, const size_t x, const size_t y, const size_t channels)
static void imb_stereo3d_squeeze_rect(int *rect, Stereo3dFormat *s3d, const size_t x, const size_t y, const size_t channels)
void IMB_ImBufFromStereo3d(Stereo3dFormat *s3d, ImBuf *ibuf_stereo3d, ImBuf **r_ibuf_left, ImBuf **r_ibuf_right)
static void imb_stereo3d_squeeze_ImBuf(ImBuf *ibuf, Stereo3dFormat *s3d, const size_t x, const size_t y)
int * IMB_stereo3d_from_rect(ImageFormatData *im_format, const size_t x, const size_t y, const size_t channels, int *rect_left, int *rect_right)
static void imb_stereo3d_read_anaglyph(Stereo3DData *s3d, enum eStereo3dAnaglyphType mode)
float * IMB_stereo3d_from_rectf(ImageFormatData *im_format, const size_t x, const size_t y, const size_t channels, float *rectf_left, float *rectf_right)
ImBuf * IMB_stereo3d_ImBuf(ImageFormatData *im_format, ImBuf *ibuf_left, ImBuf *ibuf_right)
static void imb_stereo3d_read_doit(struct Stereo3DData *s3d_data, struct Stereo3dFormat *s3d)
static void imb_stereo3d_write_anaglyph(Stereo3DData *s3d, enum eStereo3dAnaglyphType mode)
static void imb_stereo3d_read_topbottom(Stereo3DData *s3d)
void IMB_stereo3d_write_dimensions(const char mode, const bool is_squeezed, const size_t width, const size_t height, size_t *r_width, size_t *r_height)
static void imb_stereo3d_write_sidebyside(Stereo3DData *s3d, const bool crosseyed)
static void imb_stereo3d_read_sidebyside(Stereo3DData *s3d, const bool crosseyed)
static void imb_stereo3d_data_init(Stereo3DData *s3d_data, const bool is_float, const size_t x, const size_t y, const size_t channels, int *rect_left, int *rect_right, int *rect_stereo, float *rectf_left, float *rectf_right, float *rectf_stereo)
void IMB_stereo3d_read_dimensions(const char mode, const bool is_squeezed, const size_t width, const size_t height, size_t *r_width, size_t *r_height)
static void imb_stereo3d_read_interlace(Stereo3DData *s3d, enum eStereo3dInterlaceType mode, const bool swap)
static void imb_stereo3d_write_topbottom(Stereo3DData *s3d)
static void imb_stereo3d_write_doit(struct Stereo3DData *s3d_data, struct Stereo3dFormat *s3d)
struct ColorSpace * rect_colorspace
struct ColorSpace * float_colorspace
struct Stereo3DData::@670 rectf
struct Stereo3DData::@671 rect