Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Функция
Функция
Есть вот такая функция:
function RGBColor(ColorNum: Byte): Byte;
begin
RGBColor := (((Header.Palette[ColorNum].Red div 85) and 1) shl 5) +
(((Header.Palette[ColorNum].Red div 85) and 2) shl 1) +
(((Header.Palette[ColorNum].Green div 85) and 1) shl 4) +
(((Header.Palette[ColorNum].Green div 85) and 2) shl 0) +
(((Header.Palette[ColorNum].Blue div 85) and 1) shl 3) +
(((Header.Palette[ColorNum].Blue div 85) and 2) shr 1);
end;
Используется в программе открытия изображений PCX. Используется вот где:
begin
Regs.AX := $0010;
Intr($10, Regs);
for i := 0 to 15 do
begin
Regs.AH := $10;
Regs.AL := 0;
Regs.BL := i;
Regs.BH := RGBColor(i);
Intr($10, Regs);
end;

Я не понимаю зачем она здесь нужна и что вообще делает. Помогите, пожалуйста разобраться, если сможете. Буду очень благодарна.

1 | Автор: Yana_ | 2010-11-26, 22:00   |  Репутация: [ + 0 ]
судя по всему она представляет значения цвета и ,судя по связке shl, and, shr - в двоичном виде.

If you can't make it GOOD make it LOOK GOOD. B.Gates
2 | Автор: DoVe | 2010-11-26, 23:32   |  Репутация: [ + 48 ]
А зачем делить на 85? и 1...сдвиг на 5? Как Вы думаете, можно ли обойтись без этой функции вообще?
3 | Автор: Yana_ | 2010-11-26, 23:56   |  Репутация: [ + 0 ]
почему делят на 85 не знаю, shl shr делают поразрядный сдвиг влево\вправо на заданное число бит.
обойтись без функции этой думаю нельзя, т.к. она из трех значений RGB комбинирует одно общее, которое в даьнейшем будет однозначно идентифицировать цвет.


If you can't make it GOOD make it LOOK GOOD. B.Gates
4 | Автор: DoVe | 2010-11-27, 00:19   |  Репутация: [ + 48 ]


If you can't make it GOOD make it LOOK GOOD. B.Gates
4 | Автор: DoVe | 2010-11-27, 00:19   |  Репутация: [ + 48 ]
блин! Вот зараза эта функция)))
5 | Автор: Yana_ | 2010-11-27, 00:28   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » Паскаль » Функция
Страница 1 из 11
Поиск: