Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 42


Несколько слов о польской нотации. В ней операции записываются слева направо. Знак операции следует за операндами. Появление знака операции означает, что нужно произвести следующие действия: взять два последних операнда; произвести с ними требующуюся операцию; записать результат на место последних двух операндов. Фактически польская нотация описывает действия таким образом, словно операнды и операции находятся в стеке, для чего, собственно, эта польская нотация и была изобретена.

Обозначив знак операции как Ор, в польской нотации действия с би­тами можно записать таким образом: PSOp

Это говорит о необходимости взять пиксель патерны и прорисовывае­мого  bitmap'a  и   произвести   над  ними   операцию.   Если   в   операции участвуют три операнда, то получим: DPSOplOp2

Что мы должны сделать в этом случае? Правильно, сначала произве­сти действие, определяемое Opl, с битами патерны и прорисовываемым bitmap'oM, после этого произвести Ор2 с полученным результатом и битами действительного контекста. Ничего сложного здесь нет.

Каждый код растровой операции представляется 32-битным целым. Старшее слово кода представляет собой индекс битовой операции, млад­шее - код операции. Как определяется индекс операции?

Давайте представим, что нам необходимо определить индекс растро­вой операции, определяемой в польской нотации записью DPSxx. Попут­но можно определить и индекс операции PSx. Запишем друг под другом ОПРЕДЕЛЕННЫЕ значения Р, S

и D, а под ними - результаты побитовых операций PSx и DPSxx:

48

1

1

 

1

 

1

 

0

 

0

 

0

 

0

 

1

 

1

 

0

 

0

 

1

 

1

 

0

 

0

 

i

 

0

 

1

 

0

 

1

 

0

 

1

 

0

 

x         0

 

0

 

1

 

1

 

1

 

1

 

0

 

0

 

'Sxx 1

 

0

 

0

 

1

 

0

 

1

 

1

 

0

 

<


Начало  Назад  Вперед



Книжный магазин