/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
contrib/python/Pillow/py3/libImaging/PcdDecode.c
74 строки
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 uncompressed PCD image data. * * history: * 96-05-10 fl Created * 96-05-18 fl New tables * 97-01-25 fl Use PhotoYCC unpacker * * notes: * This driver supports uncompressed PCD modes only * (resolutions up to 768x512). * * Copyright (c) Fredrik Lundh 1996-97. * Copyright (c) Secret Labs AB 1997. * * See the README file for information on usage and redistribution. */ #include "Imaging.h" int ImagingPcdDecode(Imaging im, ImagingCodecState state, UINT8 *buf, Py_ssize_t bytes) { int x; int chunk; UINT8 *out; UINT8 *ptr; ptr = buf; chunk = 3 * state->xsize; for (;;) { /* We need data for two full lines before we can do anything */ if (bytes < chunk) { return ptr - buf; } /* Unpack first line */ out = state->buffer; for (x = 0; x < state->xsize; x++) { out[0] = ptr[x]; out[1] = ptr[(x + 4 * state->xsize) / 2]; out[2] = ptr[(x + 5 * state->xsize) / 2]; out += 3; } state->shuffle((UINT8 *)im->image[state->y], state->buffer, state->xsize); if (++state->y >= state->ysize) { return -1; /* This can hardly happen */ } /* Unpack second line */ out = state->buffer; for (x = 0; x < state->xsize; x++) { out[0] = ptr[x + state->xsize]; out[1] = ptr[(x + 4 * state->xsize) / 2]; out[2] = ptr[(x + 5 * state->xsize) / 2]; out += 3; } state->shuffle((UINT8 *)im->image[state->y], state->buffer, state->xsize); if (++state->y >= state->ysize) { return -1; } ptr += chunk; bytes -= chunk; } }