Private-Bookers
Графика для Windows средствами DirectDraw
вернуться

Трухильо Стэн

Шрифт:

• GetPalette

• SetPalette

Функция SetPalette присоединяет к поверхности экземпляр интерфейса DirectDrawPalette (о нем речь пойдет ниже). Функция GetPalette применяется для получения указателя на палитру, присоединенную ранее.

Палитру можно присоединить к любой поверхности, однако действовать она будет лишь в том случае, если поверхность является первичной. Палитра, присоединенная к первичной поверхности, управляет палитрой видеокарты. 

Интерфейс DirectDrawPalette

Интерфейс DirectDrawPalette предназначен для работы с палитровыми видеорежимами и поверхностями. Несмотря на то что в Windows поддерживается ряд видеорежимов с глубиной пикселей менее 8 бит, DirectDraw поддерживает лишь 8-битные палитровые режимы.

Экземпляры интерфейса DirectDrawPalette создаются функцией CreatePalette интерфейса DirectDraw. Функция CreatePalette получает набор флагов, определяющих тип палитры.

Интерфейс DirectDrawPalette содержит всего три функции:

• GetCaps

• GetEntries

• SetEntries

Функция GetCaps определяет возможности палитры. В числе получаемых сведений — количество элементов палитры, поддержка палитрой вертикальной синхронизации и (в случае 8-битной палитры) возможность заполнения всех 256 элементов.

Для заполнения палитры используется функция SetEntries. Содержимое палитры чаще всего берется из файла. Тем не менее значения элементов палитры можно рассчитать и занести в палитру во время выполнения программы. Функция GetEntries возвращает значения элементов, ранее занесенных в палитру.

Экземпляры интерфейса DirectDrawPalette присоединяются к поверхности функцией SetPalette интерфейса DirectDrawSurface. Палитровая анимация выполняется либо присоединением разных палитр к первичной поверхности, либо изменением содержимого палитры функцией SetEntries. 

Интерфейс DirectDrawClipper

Интерфейс DirectDrawClipper предназначен для поддержки отсечения. Чтобы выполнить отсечение, следует присоединить объект отсечения к поверхности и использовать ее в качестве приемника блиттинга.

Экземпляры интерфейса DirectDrawClipper создаются функцией CreateClipper интерфейса DirectDraw. Интерфейс DirectDrawClipper содержит следующие функции:

• SetHWnd

• GetHWnd

• IsClipListChanged

• SetClipList

• GetClipList

Объекты отсечения обычно используются для ограничения вывода, необходимого при работе приложений DirectDraw в окне. Объект отсечения гарантирует, что при выполнении блиттинга будет учитываться присутствие на рабочем столе других окон. Например, если окно приложения будет полностью или частично закрыто другим окном, объект отсечения позаботится о том, чтобы содержимое верхнего окна не было испорчено приложением DirectDraw.

Отсечение для рабочего стола активизируется функцией SetHWnd. Функция SetHWnd присоединяет объект отсечения к логическому номеру (handle) окна. В результате инициируется взаимодействие Windows с объектом отсечения. Объект отсечения получает уведомления обо всех изменениях окон на рабочем столе и действует соответствующим образом. Функция GetHWnd определяет, к какому логическому номеру окна присоединен заданный объект отсечения (и присоединен ли он вообще). Функция IsClipListChanged определяет, был ли внутренний список отсечений изменен вследствие изменений на рабочем столе.

Функции SetClipList и GetClipList упрощают нестандартное использование интерфейса DirectDrawClipper. Функция SetClipList определяет набор прямоугольных областей, для которых разрешено выполнение блиттинга. Функция GetClipList извлекает внутренние данные объекта отсечения.

После того как экземпляр DirectDrawClipper будет присоединен к поверхности, происходит автоматическое отсечение операций блиттинга, выполняемых функциями Blt, BltBatch и UpdateOverlay. Обратите внимание на то, что в список не входит функция BltFast. Для нее отсечение не поддерживается. 

Дополнительные интерфейсы DirectDraw

Строго говоря, DirectDraw содержит еще три интерфейса, не рассмотренных нами:

• DDVideoPortContainer

• DirectDrawColorControl

• DirectDrawVideoPort

Эти интерфейсы, появившиеся в DirectX 5, предназначены для низкоуровневого управления видеопортами. Точнее, они предоставляют средства для потоковой пересылки «живого видео» на поверхности DirectDraw. Хотя с их помощью можно организовать в приложениях DirectDraw поддержку работы с видео, это не рекомендуется, за исключением случаев, когда высокоуровневые видео-API не отвечают вашим потребностям. В книге эти интерфейсы не рассматриваются.

  • Читать дальше
  • 1
  • ...
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • ...

Private-Bookers - русскоязычная библиотека для чтения онлайн. Здесь удобно открывать книги с телефона и ПК, возвращаться к сохраненной странице и держать любимые произведения под рукой. Материалы добавляются пользователями; если считаете, что ваши права нарушены, воспользуйтесь формой обратной связи.

Полезные ссылки

  • Моя полка