⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vpdftiff.pas

📁 生成PDF文档的控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
function LibTiffDelphiVersion: AnsiString;
procedure TIFFReadRGBAImageSwapRB(Width, Height: Cardinal; Memory: Pointer); forward;
function TIFFGetVersion: PAnsiChar; cdecl; external;
function TIFFFindCODEC(Scheme: Word): PTIFFCodec; cdecl; external;
function TIFFRegisterCODEC(Scheme: Word; Name: PAnsiChar; InitMethod: TIFFInitMethod): PTIFFCodec; cdecl; external;
procedure TIFFUnRegisterCODEC(c: PTIFFCodec); cdecl; external;
function TIFFIsCODECConfigured(Scheme: Word): Integer; cdecl; external;
function TIFFGetConfiguredCODECs: PTIFFCodec; cdecl; external;
function TIFFOpen(const Name: AnsiString; const Mode: AnsiString): PTIFF;
function TIFFOpenStream(const Stream: TStream; const Mode: AnsiString): PTIFF;
function TIFFClientOpen(Name: PAnsiChar; Mode: PAnsiChar; ClientData: Cardinal;
  ReadProc: TIFFReadWriteProc;
  WriteProc: TIFFReadWriteProc;
  SeekProc: TIFFSeekProc;
  CloseProc: TIFFCloseProc;
  SizeProc: TIFFSizeProc;
  MapProc: TIFFMapFileProc;
  UnmapProc: TIFFUnmapFileProc): PTIFF; cdecl; external;
procedure TIFFCleanup(Handle: PTIFF); cdecl; external;
procedure TIFFClose(Handle: PTIFF); cdecl; external;
function TIFFFileno(Handle: PTIFF): Integer; cdecl; external;
function TIFFSetFileno(Handle: PTIFF; Newvalue: Integer): Integer; cdecl; external;
function TIFFClientdata(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFSetClientdata(Handle: PTIFF; Newvalue: Cardinal): Cardinal; cdecl; external;
function TIFFGetMode(Handle: PTIFF): Integer; cdecl; external;
function TIFFSetMode(Handle: PTIFF; Mode: Integer): Integer; cdecl; external;
function TIFFFileName(Handle: PTIFF): Pointer; cdecl; external;
function TIFFSetFileName(Handle: PTIFF; Name: PAnsiChar): PAnsiChar; cdecl; external;
function TIFFGetReadProc(Handle: PTIFF): TIFFReadWriteProc; cdecl; external;
function TIFFGetWriteProc(Handle: PTIFF): TIFFReadWriteProc; cdecl; external;
function TIFFGetSeekProc(Handle: PTIFF): TIFFSeekProc; cdecl; external;
function TIFFGetCloseProc(Handle: PTIFF): TIFFCloseProc; cdecl; external;
function TIFFGetSizeProc(Handle: PTIFF): TIFFSizeProc; cdecl; external;
{$IFNDEF VOLDVERSION}
procedure TIFFError(Module: Pointer; Fmt: Pointer); cdecl; external; varargs;
procedure TIFFWarning(Module: Pointer; Fmt: Pointer); cdecl; external; varargs;
{$ELSE}
procedure TIFFError(Module: Pointer; Fmt: Pointer); cdecl; external;
procedure TIFFWarning(Module: Pointer; Fmt: Pointer); cdecl; external;
{$ENDIF}
function TIFFSetErrorHandler(Handler: TIFFErrorHandler): TIFFErrorHandler; cdecl; external;
function LibTiffDelphiGetErrorHandler: LibTiffDelphiErrorHandler;
function LibTiffDelphiSetErrorHandler(Handler: LibTiffDelphiErrorHandler): LibTiffDelphiErrorHandler;
function TIFFSetWarningHandler(Handler: TIFFErrorHandler): TIFFErrorHandler; cdecl; external;
function LibTiffDelphiGetWarningHandler: LibTiffDelphiErrorHandler;
function LibTiffDelphiSetWarningHandler(Handler: LibTiffDelphiErrorHandler): LibTiffDelphiErrorHandler;
function TIFFSetTagExtender(Extender: TIFFExtendProc): TIFFExtendProc; cdecl; external;
function TIFFFlush(Handle: PTIFF): Integer; cdecl; external;
function TIFFFlushData(Handle: PTIFF): Integer; cdecl; external;
function TIFFReadDirectory(Handle: PTIFF): Integer; cdecl; external;
function TIFFCurrentDirectory(Handle: PTIFF): Word; cdecl; external;
function TIFFCurrentDirOffset(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFLastDirectory(Handle: PTIFF): Integer; cdecl; external;
function TIFFNumberOfDirectories(Handle: PTIFF): Word; cdecl; external;
function TIFFSetDirectory(Handle: PTIFF; Dirn: Word): Integer; cdecl; external;
function TIFFSetSubDirectory(Handle: PTIFF; Diroff: Cardinal): Integer; cdecl; external;
function TIFFCreateDirectory(Handle: PTIFF): Integer; cdecl; external;
function TIFFWriteDirectory(Handle: PTIFF): Integer; cdecl; external;
function TIFFUnlinkDirectory(handle: PTIFF; Dirn: Word): Integer; cdecl; external;
procedure TIFFPrintDirectory(Handle: PTIFF; Fd: Pointer; Flags: Integer); cdecl; external;
{$IFNDEF VOLDVERSION}
function TIFFGetField(Handle: PTIFF; Tag: Cardinal): Integer; cdecl; external; varargs;
function TIFFGetFieldDefaulted(Handle: PTIFF; Tag: Cardinal): Integer; cdecl; external; varargs;
function TIFFSetField(Handle: PTIFF; Tag: Cardinal): Integer; cdecl; external; varargs;
{$ELSE}
function TIFFGetField(Handle: PTIFF; Tag: Cardinal; var Value: Cardinal): Integer; cdecl; external;
function TIFFGetFieldDefaulted(Handle: PTIFF; Tag: Cardinal; var Value: Cardinal): Integer; cdecl; external;
function TIFFSetField(Handle: PTIFF; Tag: Cardinal; var Value: Cardinal): Integer; cdecl; external;
{$ENDIF}
function TIFFVGetField(Handle: PTIFF; Tag: Cardinal; Ap: Pointer): Integer; cdecl; external;
function TIFFVSetField(Handle: PTIFF; Tag: Cardinal; Ap: Pointer): Integer; cdecl; external;
function TIFFIsBigEndian(Handle: PTIFF): Integer; cdecl; external;
function TIFFIsTiled(Handle: PTIFF): Integer; cdecl; external;
function TIFFIsByteSwapped(Handle: PTIFF): Integer; cdecl; external;
function TIFFIsUpSampled(Handle: PTIFF): Integer; cdecl; external;
function TIFFIsMSB2LSB(Handle: PTIFF): Integer; cdecl; external;
function TIFFGetTagListCount(Handle: PTIFF): Integer; cdecl; external;
function TIFFGetTagListEntry(Handle: PTIFF; TagIndex: Integer): Cardinal; cdecl; external;
procedure TIFFMergeFieldInfo(Handle: PTIFF; Info: PTIFFFieldInfo; N: Integer); cdecl; external;
function TIFFFindFieldInfo(Handle: PTIFF; Tag: Cardinal; Dt: Integer): PTIFFFieldInfo; cdecl; external;
function TIFFFindFieldInfoByName(Handle: PTIFF; FIeldName: PAnsiChar; Dt: Integer): PTIFFFieldInfo; cdecl; external;
function TIFFFieldWithTag(Handle: PTIFF; Tag: Cardinal): PTIFFFieldInfo; cdecl; external;
function TIFFFieldWithName(Handle: PTIFF; FieldName: PAnsiChar): PTIFFFieldInfo; cdecl; external;
function TIFFDataWidth(DataType: Integer): Integer; cdecl; external;
function TIFFReadRGBAImage(Handle: PTIFF; RWidth, RHeight: Cardinal; Raster: Pointer; Stop: Integer): Integer; cdecl; external;
function TIFFReadRGBAImageOriented(Handle: PTIFF; RWidth, RHeight: Cardinal; Raster: Pointer; Orientation: Integer; Stop: Integer): Integer; cdecl; external;
function TIFFReadRGBAStrip(Handle: PTIFF; Row: Cardinal; Raster: Pointer): Integer; cdecl; external;
function TIFFReadRGBATile(Handle: PTIFF; Col, Row: Cardinal; Raster: Pointer): Integer; cdecl; external;
function TIFFRGBAImageOk(Handle: PTIFF; Emsg: PAnsiChar): Integer; cdecl; external;
function TIFFRGBAImageBegin(Img: PTIFFRGBAImage; Handle: PTIFF; Stop: Integer; Emsg: PAnsiChar): Integer; cdecl; external;
function TIFFRGBAImageGet(Img: PTIFFRGBAImage; Raster: Pointer; W, H: Cardinal): Integer; cdecl; external;
procedure TIFFRGBAImageEnd(Img: PTIFFRGBAImage); cdecl; external;
function TIFFCurrentRow(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFStripSize(Handle: PTIFF): Integer; cdecl; external;
function TIFFRawStripSize(Handle: PTIFF; Strip: Cardinal): Integer; cdecl; external;
function TIFFVStripSize(Handle: PTIFF; NRows: Cardinal): Integer; cdecl; external;
function TIFFDefaultStripSize(Handle: PTIFF; Request: Cardinal): Cardinal; cdecl; external;
function TIFFNumberOfStrips(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFComputeStrip(Handle: PTIFF; Row: Cardinal; Sample: Word): Cardinal; cdecl; external;
function TIFFReadRawStrip(Handle: PTIFF; Strip: Cardinal; Buf: Pointer; Size: Integer): Integer; cdecl; external;
function TIFFReadEncodedStrip(Handle: PTIFF; Strip: Cardinal; Buf: Pointer; Size: Integer): Integer; cdecl; external;
function TIFFWriteRawStrip(Handle: PTIFF; Strip: Cardinal; Data: Pointer; Cc: Integer): Integer; cdecl; external;
function TIFFWriteEncodedStrip(Handle: PTIFF; Strip: Cardinal; Data: Pointer; Cc: Integer): Integer; cdecl; external;
function TIFFCurrentStrip(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFTileSize(Handle: PTIFF): Integer; cdecl; external;
function TIFFTileRowSize(Handle: PTIFF): Integer; cdecl; external;
function TIFFVTileSize(Handle: PTIFF; NRows: Cardinal): Integer; cdecl; external;
procedure TIFFDefaultTileSize(Handle: PTIFF; Tw: PCardinal; Th: PCardinal); cdecl; external;
function TIFFNumberOfTiles(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFComputeTile(Handle: PTIFF; X, Y, Z: Cardinal; S: Word): Cardinal; cdecl; external;
function TIFFReadRawTile(Handle: PTIFF; Tile: Cardinal; Buf: Pointer; Size: Integer): Integer; cdecl; external;
function TIFFReadEncodedTile(Handle: PTIFF; Tile: Cardinal; Buf: Pointer; Size: Integer): Integer; cdecl; external;
function TIFFWriteRawTile(Handle: PTIFF; Tile: Cardinal; Data: Pointer; Cc: Integer): Integer; cdecl; external;
function TIFFWriteEncodedTile(Handle: PTIFF; Tile: Cardinal; Data: Pointer; Cc: Integer): Integer; cdecl; external;
function TIFFCurrentTile(Handle: PTIFF): Cardinal; cdecl; external;
function TIFFScanlineSize(Handle: PTIFF): Integer; cdecl; external;
function TIFFRasterScanlineSize(Handle: PTIFF): Integer; cdecl; external;
function TIFFReadScanline(Handle: PTIFF; Buf: Pointer; Row: Cardinal; Sample: Word): Integer; cdecl; external;
function TIFFWriteScanline(Handle: PTIFF; Buf: Pointer; Row: Cardinal; Sample: Word): Integer; cdecl; external;
procedure TIFFSetWriteOffset(Handle: PTIFF; Off: Cardinal); cdecl; external;
procedure TIFFSwabShort(Wp: PWord); cdecl; external;
procedure TIFFSwabLong(Lp: PCardinal); cdecl; external;
procedure TIFFSwabDouble(Dp: PDouble); cdecl; external;
procedure TIFFSwabArrayOfShort(Wp: PWord; N: Cardinal); cdecl; external;
procedure TIFFSwabArrayOfLong(Lp: PCardinal; N: Cardinal); cdecl; external;
procedure TIFFSwabArrayOfDouble(Dp: PDouble; N: Cardinal); cdecl; external;
procedure TIFFReverseBits(Cp: Pointer; N: Cardinal); cdecl; external;
function TIFFGetBitRevTable(Reversed: Integer): Pointer; cdecl; external;
function _TIFFmalloc(s: Longint): Pointer; cdecl;
function _TIFFrealloc(p: Pointer; s: Longint): Pointer; cdecl;
procedure _TIFFfree(p: Pointer); cdecl;

implementation

uses
  Math, VPDFCLibs, VPDFJpegLib, VPDFZLib;

type

  TQsortCompare = function(a, b: Pointer): Integer; cdecl;
  TBsearchFcmp = function(a: Pointer; b: Pointer): Integer; cdecl;

function floor(x: Double): Double; cdecl; forward;

function pow(x: Double; y: Double): Double; cdecl; forward;

function sqrt(x: Double): Double; cdecl; forward;

function atan2(y: Double; x: Double): Double; cdecl; forward;

function exp(x: Double): Double; cdecl; forward;

function log(x: Double): Double; cdecl; forward;

function fabs(x: Double): Double; cdecl; forward;

function rand: Integer; cdecl; forward;

function strlen(s: Pointer): Cardinal; cdecl; forward;
{$IFNDEF VOLDVERSION}
function strcmp(a: Pointer; b: Pointer): Integer; cdecl; forward;
{$ENDIF}

function strncmp(a: Pointer; b: Pointer; c: Longint): Integer; cdecl; forward;

procedure qsort(base: Pointer; num: Cardinal; width: Cardinal; compare: TQSortCompare); cdecl; forward;

function bsearch(key: Pointer; base: Pointer; nelem: Cardinal; width: Cardinal; fcmp: TBsearchFcmp): Pointer; cdecl; forward;

function memmove(dest: Pointer; src: Pointer; n: Cardinal): Pointer; cdecl; forward;

function strchr(s: Pointer; c: Integer): Pointer; cdecl; forward;

procedure _TIFFmemcpy(d: Pointer; s: Pointer; c: Longint); cdecl; forward;

procedure _TIFFmemset(p: Pointer; v: Integer; c: Longint); cdecl; forward;

function _TIFFmemcmp(buf1: Pointer; buf2: Pointer; count: Cardinal): Integer; cdecl; forward;

var

  _TIFFwarningHandler: TIFFErrorHandler;
  _TIFFerrorHandler: TIFFErrorHandler;
  FLibTiffDelphiWarningHandler: LibTiffDelphiErrorHandler;
  FLibTiffDelphiErrorHandler: LibTiffDelphiErrorHandler;

function fabs(x: Double): Double;
begin
  if x < 0 then
    Result := -x
  else
    Result := x;
end;

function atan2(y: Double; x: Double): Double;
begin
  Result := ArcTan2(y, x);
end;

function rand: Integer; cdecl;
begin
  Result := Trunc(Random * ($7FFF + 1));
end;

function sqrt(x: Double): Double; cdecl;
begin
  Result := System.Sqrt(x);
end;

function log(x: Double): Double; cdecl;
begin
  Result := Ln(x);
end;

function exp(x: Double): Double; cdecl;
begin
  Result := System.Exp(x);
end;

function strchr(s: Pointer; c: Integer): Pointer; cdecl;
begin
  Result := s;
  while True do
  begin
    if PByte(Result)^ = c then exit;
    if PByte(Result)^ = 0 then
    begin
      Result := nil;
      exit;
    end;
    Inc(PByte(Result));
  end;
end;

function memmove(dest: Pointer; src: Pointer; n: Cardinal): Pointer; cdecl;
begin
  MoveMemory(dest, src, n);
  Result := dest;
end;

function _TIFFmemcmp(buf1: Pointer; buf2: Pointer; count: Cardinal): Integer; cdecl;
var
  ma, mb: PByte;
  n: Integer;
begin
  ma := buf1;
  mb := buf2;
  n := 0;
  while Cardinal(n) < Count do
  begin
    if ma^ <> mb^ then
    begin
      if ma^ < mb^ then
        Result := -1
      else
        Result := 1;
      exit;
    end;
    Inc(ma);
    Inc(mb);
    Inc(n);
  end;
  Result := 0;
end;

procedure _TIFFmemset(p: Pointer; v: Integer; c: Longint); cdecl;
begin
  FillMemory(p, c, v);
end;

function bsearch(key: Pointer; base: Pointer; nelem: Cardinal; width: Cardinal; fcmp: TBsearchFcmp): Pointer; cdecl;
begin
  raise Exception.Create('Bsearch - should presumably not occur');
end;

procedure qsort(base: Pointer; num: Cardinal; width: Cardinal; compare: TQSortCompare); cdecl;
var
  m: Pointer;
  n: Integer;
  o: Pointer;
  oa, ob, oc: Integer;
  p: Integer;
begin
  if num < 2 then exit;
  GetMem(m, num * width);
  if compare(base, Pointer(Cardinal(base) + width)) <= 0 then
    CopyMemory(m, base, (width shl 1))
  else
  begin
    CopyMemory(m, Pointer(Cardinal(base) + width), width);
    CopyMemory(Pointer(Cardinal(m) + width), base, width);
  end;
  n := 2;
  while Cardinal(n) < num do
  begin
    o := Pointer(Cardinal(base) + Cardinal(n) * width);
    if compare(m, o) >= 0 then
      ob := 0
    else
    begin
      oa := 0;
      ob := n;
      while oa + 1 < ob do
      begin
        oc := ((oa + ob) shr 1);
        p := compare(Pointer(Cardinal(m) + Cardinal(oc) * width), o);
        if p < 0 then
          oa := oc
        else if p = 0 then
        begin
          ob := oc;
          break;
        end
        else
          ob := oc;
      end;
    end;
    if ob = 0 then
    begin
      MoveMemory(Pointer(Cardinal(m) + width), m, Cardinal(n) * width);
      CopyMemory(m, o, width);
    end
    else if ob = n then
      CopyMemory(Pointer(Cardinal(m) + Cardinal(n) * width), o, width)
    else
    begin
      MoveMemory(Pointer(Cardinal(m) + Cardinal(ob + 1) * width), Pointer(Cardinal(m) + Cardinal(ob) * width),
        Cardinal(n - ob) * width);
      CopyMemory(Pointer(Cardinal(m) + Cardinal(ob) * width), o, width);
    end;
    Inc(n);
  end;
  CopyMemory(base, m, num * width);
  FreeMem(m, num * width);
end;

function _TIFFrealloc(p: Pointer; s: Longint): Pointer; cdecl;
var
  m: TMemoryManager;
begin
  GetMemoryManager(m);
  if p = nil then
    Result := m.GetMem(s)
  else
    Result := m.ReallocMem(p, s);
end;

function strncmp(a: Pointer; b: Pointer; c: Longint): Integer; cdecl;
var
  ma, mb: PByte;
  n: Integer;
begin
  ma := a;
  mb := b;
  n := 0;
  while n < c do
  begin
    if ma^ <> mb^ then
    begin
      if ma^ < mb^ then
        Result := -1
      else
        Result := 1;
      exit;
    end;
    if ma^ = 0 then
    begin
      Result := 0;
      exit;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -