Нативные кодеки FPC и параллельный рендеринг
Сборки FPC под Windows могут использовать HotPDFFPCCodecs.dll для TIFF, JPEG, JPEG 2000, цветовой конвертации LittleCMS, кодирования/декодирования JBIG2 и компрессии Zopfli
Мост собирается из bundled сторонних исходников репозитория со статическим C-рантаймом; используйте Lib/thirdparty/FPC/Build-Codecs.ps1, чтобы сгенерировать соответствующие бинарники Win32 или Win64
Кладите соответствующую DLL рядом с исполняемым файлом приложения; загрузчик использует этот явный путь и проверяет версию ABI, разрядность указателя и полный набор экспортов, прежде чем включить нативные кодеки
Отсутствующие или несовместимые нативные библиотеки безопасно отключают свои возможности; поддерживаемые Pascal fallback-и остаются доступны, а вызовы неподдерживаемых кодеков падают явно
Параллельный рендеринг PDF
Рендеринг страниц, упорядоченных страниц, тайлов и полос в FPC теперь использует явные worker-потоки с теми же допуском памяти, ограниченными очередями вывода, упорядоченной доставкой в поток вызывающего кода, отменой и очисткой при исключениях, что и Delphi-pipeline
Конфигурация операции, ICC-массивы и ссылки на cancellation token фиксируются в начале; каждый worker владеет своим рендерером, тогда как неизменяемые display list-ы и синхронизированные кэши разделяются
Держите документ живым и не редактируйте содержимое его страниц, пока идёт параллельный рендеринг
Потайловое декодирование JPEG 2000 также использует явные FPC worker-потоки, с эквивалентностью пикселей serial/parallel и кооперативной отменой
Проверка
Tests/FPC/Run-NativeCodecTests.ps1 прогоняет обе архитектуры, round trips нативных кодеков, отсутствующие/несовместимые DLL, редуцированное декодирование JPEG, настоящее перекрытие потоков, равенство пикселей serial/parallel, порядок callback-ов, бюджеты, отмену и восстановление после ошибок callback-ов