class= " lineNumbers "
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:
|
class=
class= " id= " codeSnippet838347 {ímages экземпляра с палитрой using битовые глубины 1, 4 или 8}
процедура TChunkIDAT.CopyInterlacedPalette148 (пропуск const: Байт;
Src, Dest, Trans {$IFDEF Store16bits}, экстренный {$ENDIF}: pChar);
const
BitTable: Блок [1..8] интежера = ($1, $3, 0, $F, 0, 0, 0, $FF);
StartBit: Блок [1..8] интежера = (7, 0, 0, 4, 0, 0, 0, 0);
var
CurBit, Col: Интежер;
Dest2: PChar;
начните
{Получите первую колонку и войдите в петлю}
Col: = ColumnStart [пропуск];
повторение
{Данные по экземпляра}
CurBit: = StartBit [Header.BitDepth];
повторение
{Отрегулируйте указатель к пределам байта пиксела}
Dest2: = pChar (Longint (Dest) + (Header.BitDepth * Col) div 8);
{Данные по экземпляра}
{$IFDEF VER210}
Dest2^: = Dest2^ или
(((shr CurBit байта (Src^)) и BitTable [Header.BitDepth])
shl (StartBit [Header.BitDepth] - (Col * mod Header.BitDepth 8))); /// < - черепашка using Делфи 2010….
{$else}
Байт (Dest2^): = байт (Dest2^) или
(((shr CurBit байта (Src^)) и BitTable [Header.BitDepth])
shl (StartBit [Header.BitDepth] - (Col * mod Header.BitDepth 8)));
{$endif}
{Движение к следующей колонке}
inc (Col, ColumnIncrement [пропуск]);
{Прочитает следующие биты}
декабрь (CurBit, Header.BitDepth);
до CurBit < 0;
{Движение к следующему байту в источнике}
inc (Src);
до >= ImageWidth Col;
конец;
|