{Kopie ímages mit Palette using Spitzentiefen 1, 4 oder 8}
Verfahren TChunkIDAT.CopyInterlacedPalette148 (const Durchlauf: Byte;
Src, DEST, Transport {$IFDEF Store16bits}, Extra {$ENDIF}: pChar);
const
BitTable: Reihe [1..8] der ganzer Zahl = ($1, $3, 0, $F, 0, 0, 0, $FF);
StartBit: Reihe [1..8] der ganzer Zahl = (7, 0, 0, 4, 0, 0, 0, 0);
var
CurBit, Spalte: Ganze Zahl;
Dest2: PChar;
anfangen
{Erste Spalte erhalten und in Schleife hereinkommen}
Spalte: = ColumnStart [Durchlauf];
Wiederholung
{Kopiendaten}
CurBit: = StartBit [Header.BitDepth];
Wiederholung
{Zeiger auf Pixelbytegrenzen justieren}
Dest2: = pChar (Longint (DEST) + (Header.BitDepth * Spalte) Div. 8);
{Kopiendaten}
{$IFDEF VER210}
Dest2^: = Dest2^ oder
(((Byte (Src^) shr CurBit) und BitTable [Header.BitDepth])
shl (StartBit [Header.BitDepth] - (Spalte * Header.BitDepth Umb. 8))); /// < - Wanze using Delphi 2010….
{$else}
Byte (Dest2^): = Byte (Dest2^) oder
(((Byte (Src^) shr CurBit) und BitTable [Header.BitDepth])
shl (StartBit [Header.BitDepth] - (Spalte * Header.BitDepth Umb. 8)));
{$endif}
{Bewegung zur folgenden Spalte}
Inc. (Spalte, ColumnIncrement [Durchlauf]);
{Liest folgende Spitzen}
Dezember (CurBit, Header.BitDepth);
bis CurBit < 0;
{Bewegung zum folgenden Byte in der Quelle}
Inc. (Src);
bis Spalte >= ImageWidth;
Ende;
|