/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/python/Pillow/py3/libImaging/RawDecode.c
91 строка
2 KB
Anton Myagkov
Update ydb version to 24.4 (#4579)
07 фев 2026, 11:59
Не верифицирован
07 фев 2026, 11:59
2c21cae
Код
Авторство
О чём код?
/* * The Python Imaging Library. * $Id$ * * decoder for raw (uncompressed) image data * * history: * 96-03-07 fl rewritten * * Copyright (c) Fredrik Lundh 1996. * Copyright (c) Secret Labs AB 1997. * * See the README file for information on usage and redistribution. */ #include "Imaging.h" #include "Raw.h" int ImagingRawDecode(Imaging im, ImagingCodecState state, UINT8 *buf, Py_ssize_t bytes) { enum { LINE = 1, SKIP }; RAWSTATE *rawstate = state->context; UINT8 *ptr; if (state->state == 0) { /* Initialize context variables */ /* get size of image data and padding */ state->bytes = (state->xsize * state->bits + 7) / 8; if (rawstate->stride) { rawstate->skip = rawstate->stride - state->bytes; if (rawstate->skip < 0) { state->errcode = IMAGING_CODEC_CONFIG; return -1; } } else { rawstate->skip = 0; } /* check image orientation */ if (state->ystep < 0) { state->y = state->ysize - 1; state->ystep = -1; } else { state->ystep = 1; } state->state = LINE; } ptr = buf; for (;;) { if (state->state == SKIP) { /* Skip padding between lines */ if (bytes < rawstate->skip) { return ptr - buf; } ptr += rawstate->skip; bytes -= rawstate->skip; state->state = LINE; } if (bytes < state->bytes) { return ptr - buf; } /* Unpack data */ state->shuffle( (UINT8 *)im->image[state->y + state->yoff] + state->xoff * im->pixelsize, ptr, state->xsize); ptr += state->bytes; bytes -= state->bytes; state->y += state->ystep; if (state->y < 0 || state->y >= state->ysize) { /* End of file (errcode = 0) */ return -1; } state->state = SKIP; } }