Integração de biblioteca C multiplataforma

Visão geral

O HotPDF usa HPDFCLibs.pas como ponte Pascal entre Delphi e os ficheiros objeto C ligados estaticamente usados por HPDFZLib.pas, HPDFJpeg.pas e HPDFTiff.pas. A unit expõe os símbolos de execução que essas bibliotecas esperam, mantendo uma única camada de declarações Pascal consistente para builds Win32 e Win64

Funcionalidades principais

  • Ponte de runtime partilhada para zlib-ng em modo compatível com zlib, despacho SIMD de runtime de 64 bits do zlib-ng, libjpeg-turbo 3.1.90 com objectos SIMD NASM e libtiff 4.7.1
  • Cobertura de auxiliares de memória, stdio, string/caracteres e alguns auxiliares de matemática/runtime
  • Ponte de malloc, free, realloc e calloc com alinhamento de 32 bytes para buffers nativos amigáveis a SIMD
  • Compatibilidade Win32 com objetos OMF zlib-ng compilados com bcc32c e objetos OMF JPEG/TIFF compilados com bcc32 a partir de Lib\thirdparty\Win32
  • Compatibilidade Win64 com ficheiros obj COFF64 de Lib\thirdparty\Win64 e objetos COFF zlib-ng de Lib\thirdparty\Win64x
  • Tipos auxiliares de tamanho de ponteiro e stubs Pascal para símbolos que o linker do Delphi não consegue importar directamente

Backend JPEG de alto desempenho

Os fluxos de trabalho JPEG standard são suportados por libjpeg-turbo 3.1.90 através da API clássica compatível com libjpeg exposta por HPDFJpeg.pas. As compilações de objectos Win32, Win64 e Win64x incluem os objectos relevantes de aceleração SIMD NASM, e o mesmo conjunto de objectos empacotado também está disponível para a camada de integração TIFF para tratamento de TIFF comprimido com JPEG

Notas da ponte zlib-ng

Os streams de imagem Flate em Win64 usam uma pequena ponte C em torno da compressão one-shot de zlib-ng. A ponte mantém os tipos nativos de comprimento de zlib-ng dentro de C enquanto preserva os comprimentos de buffer de 32 bits expostos ao Pascal do HotPDF e o comportamento de compressão máxima

As compilações de objectos zlib-ng Win64x e MSVC Win64 de diagnóstico incluem implementações com despacho em tempo de execução para SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ e AVX2 com alternativas genéricas. O Win32 mantém os objectos OMF genéricos de zlib-ng para compatibilidade com bcc32c, enquanto o caminho JPEG/TIFF de Win32 continua a usar objectos OMF clássicos do bcc32

Grupos de funções suportados

  • Memory Management: malloc, free, realloc, calloc with 32-byte aligned allocation
  • File and Stream Operations: fopen, fclose, fputc, fread, fwrite, fflush, ferror
  • String and Character Functions: strcpy, sprintf, memcpy, memmove, memset, tolower, toupper, towlower, towupper, getenv, atoi
  • Runtime Helpers: ftol, setjmp, log, snprintf, memcmp

Suporte de arquitectura

  • Win32: wrappers Pascal e auxiliares suportados por WinAPI que correspondem aos objetos OMF bcc32c e bcc32 ligados por todas as versões Delphi Win32 suportadas
  • Win64: msvcrt.dll imports plus small helper stubs required by the MSVC-generated COFF64 objects
  • Tipos comuns: PtrInt and PtrUInt keep pointer-sized declarations aligned across both targets

Ver também