1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
|
" codeBody "
" notpretty " {ímages van het Exemplaar met palet die beetjediepten 1, 4 of 8 gebruiken}
procedure TChunkIDAT.CopyInterlacedPalette148 (const Pas: Byte;
Src, Dest, trans {$IFDEF Store16bits}, extra {$ENDIF}: pChar);
const
BitTable: Serie [1..8] van Geheel = ($1, $3, 0, $F, 0, 0, 0, $FF);
StartBit: Serie [1..8] van Geheel = (7, 0, 0, 4, 0, 0, 0, 0);
var
CurBit, Col.: Geheel;
Dest2: PChar;
begin
{Krijg eerste kolom en ga in lijn binnen}
Col.: = ColumnStart [Pas];
herhaal
{De gegevens van het Exemplaar}
CurBit: = StartBit [Header.BitDepth];
herhaal
{Pas wijzer aan de grenzen van de pixelbyte} aan
Dest2: = pChar (Longint (Dest) + (* Col. Header.BitDepth) afd. 8);
{De gegevens van het Exemplaar}
{$IFDEF VER210}
Dest2^: = Dest2^ of
(((Byte (Src^) shr CurBit) en BitTable [Header.BitDepth])
shl (StartBit [Header.BitDepth] - (Col. * Header.BitDepth mod. 8))); /// < - insect die Delphi 2010 gebruiken….
{$else}
Byte (Dest2^): = Byte (Dest2^) of
(((Byte (Src^) shr CurBit) en BitTable [Header.BitDepth])
shl (StartBit [Header.BitDepth] - (Col. * Header.BitDepth mod. 8)));
{$endif}
{Beweging aan volgende kolom}
n.v. (Col., ColumnIncrement [Pas]);
{Volgende beetjes zal lezen}
Dec (CurBit, Header.BitDepth);
tot CurBit < 0;
{Beweging aan volgende byte in bron}
n.v. (Src);
tot Col. >= ImageWidth;
eind;
|