Интерфейс IHPDFDecodedBitmapHandle
Даёт неизменяемый доступ с подсчётом ссылок к хранилищу декодированного изображения, которое разделяют cache загруженных изображений, ожидающие singleflight и рендереры
Объявление
IHPDFDecodedBitmapHandle = interface
function GetWidth: Integer;
function GetHeight: Integer;
function GetPixelFormat: TPixelFormat;
function GetByteSize: Int64;
function CreateBitmapCopy: TBitmap;
procedure StretchDraw(DestinationDC: HDC;
const Destination: TRect; StretchMode: Integer);
end;
Владение
Интерфейс удерживает декодированное хранилище живым независимо от вытеснения и инвалидации cache и уничтожения документа
Подсчёт ссылок потокобезопасен, а общий изменяемый TBitmap наружу не выдаётся
Отрисовка и копии
StretchDraw рисует из неизменяемого общего хранилища, не создавая bitmap во владении вызывающего, и сериализует доступ к базовому GDI-ресурсу
CreateBitmapCopy возвращает изолированный TBitmap во владении вызывающего для API, которым нужны изменяемые пиксели
Связанные API
THotPDF.AcquireLoadedImageStream · THotPDF.AcquireLoadedImageRegionAtResolution · Шардированный cache декодирования загруженных изображений