Интерфейсы визуального объекта и графа сцены

Иллюстрации

Показать все

Изобретение относится к компьютерным системам, в частности к обработке графической и другой видеоинформации для отображения на компьютерных системах. Техническим результатом изобретения является улучшение технологии обработки графики. Этот результат достигается тем, что способ, реализуемый в вычислительной среде, в которой принимается программный код для одного или более объектов, и предназначенный для обеспечения сопряжения со структурой данных графа сцены для создания графики, содержит этапы, на которых принимают вызов функции, соответствующий программному коду на высокоуровневом языке разметки графики, на уровне визуального интерфейса прикладного программирования в формате, который обеспечивает возможность непосредственного размещения этого функционального вызова на упомянутый уровень интерфейса прикладного программирования; отвечают на вызов функции посредством модифицирования данных в графе сцены, активируют средство управления визуальными объектами для обхода графа сцены и визуализации по меньшей мере одного объекта на целевой объект визуализации и воспроизводят граф сцены на дисплее. 33 з.п. ф-лы, 21 ил.

Реферат

Область техники, к которой относится изобретение

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

Предшествующий уровень техники

Достигаются пределы традиционной модели непосредственного режима доступа к графике на компьютерных системах, частично потому что быстродействие памяти и шин отстает от прогресса центральных процессоров и/или графических процессоров. Вообще говоря, настоящая модель (например, WM_PAINT) для подготовки кадра требует обработки очень большого объема данных, чтобы не отставать от частоты регенерации аппаратных средств, когда требуются сложные графические спецэффекты. В результате, когда пытаются осуществить сложные графические спецэффекты с обычными графическими моделями, вместо завершения изменений, которые приводят к воспринимаемым визуальным спецэффектам во время следующего кадра, изменения могут добавляться к различным кадрам, вызывая результаты, которые визуально и заметно являются нежелательными.

Новая модель управления выводом графики описывается в заявках на патент США №№ 10/184 795, 10/184 796, 10/185 775, 10/401 717, 10/402 322 и 10/402 268, правообладателем которых является правообладатель настоящего изобретения и которые настоящим включены в качестве ссылки. Данная новая модель обеспечивает ряд существенных улучшений в технологии обработки графики. Например, заявка на патент США № 10/184 795, в основном, относится к системе и способу многоуровневой обработки графики, в которых компонент более высокого уровня (например, операционной системы) выполняет интенсивные в отношении вычисления аспекты построения графа сцены, обновления параметров анимации и обхода структур данных графа сцены при относительно низкой рабочей скорости, чтобы передать упрощенные структуры данных и/или графические команды на компонент нижнего уровня. Так как обработка высокого уровня существенно упрощает данные, компонент нижнего уровня может работать при большей скорости (относительно компонента высокого уровня), например со скоростью, которая соответствует частоте регенерации кадров графической подсистемы, для обработки данных в постоянные данные вывода для графической подсистемы. Когда используется анимация, вместо необходимости перерисовки всей сцены с изменениями обработка нижнего уровня может интерполировать интервалы параметров как необходимо для получения мгновенных значений, которые при визуализации обеспечивают незначительно измененную сцену для каждого кадра, обеспечивая плавную анимацию.

В заявке на патент США № 10/184 796 описывается параметризованный граф сцены, который обеспечивает изменяемые (анимированные) значения и контейнеры параметризованного графа, так что программный код, который хочет нарисовать графику (например, прикладная программа или компонент операционной системы), может селективно изменить некоторые аспекты описания графа сцены, в то же самое время оставляя другие аспекты нетронутыми. Программный код также может многократно использовать уже построенные части графа сцены, с возможно другими параметрами. Как можно понять, возможность легкого изменения внешнего представления отображаемых элементов при помощи параметризации и/или многократного использования существующих частей графа сцены обеспечивает существенный выигрыш в общей эффективности обработки графики.

В заявке на патент США № 10/185 775, в основном, описывается структура данных кэширования и связанные с ней механизмы для хранения визуальной информации при помощи объектов и данных в графе сцены. Структура данных, в основном, сопоставляется с механизмами, которые интеллектуально управляют тем, как визуальная информация в них заполняется и используется. Например, если конкретно не запрашивается прикладной программой, большая часть информации, хранимой в структуре данных, не имеет внешней ссылки на нее, что позволяет данную информацию оптимизировать или обрабатывать другим образом. Как можно понять, это обеспечивает эффективность и сохранение ресурсов, например, данные в структуре данных кэша могут быть обработаны в другой формат, который является более компактным и/или уменьшает потребность в последующей многократной обработке, такой как растр или результат другой постобработки.

Хотя вышеупомянутые улучшения обеспечивают существенный эффект в технологии обработки графики, все еще существует потребность в методе эффективного использования непосредственным образом программами данной улучшенной графической модели и других связанных с ней улучшений. Требуется комплексная, тем не менее непосредственная модель для программ, чтобы использовать многие признаки и возможности обработки графики, обеспечиваемые улучшенной графической моделью, и, таким образом, выводить эффективным образом сложную графику и аудиовизуальные данные.

Краткое изложение сущности изобретения

Вкратце, в настоящем изобретении предлагается объектная модель и интерфейс прикладного программирования (ИПП, API) для доступа к данной объектной модели таким образом, который дает возможность разработчикам программного кода согласованно обеспечивать сопряжение со структурой данных графа сцены для создания графики. Базовым объектом в модели и наборе ИПП является визуальный объект, который представляет виртуальную поверхность для пользователя; при этом граф сцены строится из визуальных объектов. Такие визуальные объекты (Visual) включают в себя контейнерные визуальные объекты, удерживаемые визуальные объекты, визуальные объекты рисования и другие визуальные объекты. Сами Visual могут хранить объекты ресурса, такие как объекты отсечения, объекты преобразования и т. д., и некоторый тип Visual (например, DrawingVisual, RetainedVisual) может хранить списки инструкций рисования, которые могут ссылаться на объекты ресурса, такие как изображения, кисти и/или градиенты.

Большинство объектов ресурса в графе сцены являются неизменными после их создания, т. е., если они создаются, то они не могут быть изменены. Для тех объектов, которые разработчик хочет легко изменять, изменчивость обеспечивается изменяемым узором и реализацией, как описано в совместно рассматриваемой заявке на патент США, названной «Changeable Class and Pattern to Provide Selective Mutability in Computer Programming Environments» (Изменяемый класс и модель для получения селективной изменчивости в среде программирования для компьютеров), поданной одновременно с данной заявкой, правообладателем которой является правообладатель настоящего изобретения и которая включена в данную заявку посредством ссылки.

При помощи интерфейсов прикладного программирования программный код записывает графические примитивы, такие как данные геометрической формы, данные изображения, данные анимации и другие данные, в визуальные объекты. Например, программный код записывает графические примитивы, такие как инструкции «нарисовать линию», инструкции «нарисовать геометрическую форму», инструкции «нарисовать растр» и т. д., в визуальные объекты. Эти инструкции рисования часто объединяются со сложными данными, аналогичными данным геометрической формы, которые описывают, как рисуется траектория, и они также могут ссылаться на ресурсы, подобные растрам, видео и т. п.

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

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

Визуальные объекты рисования открываются при помощи запроса на открытие, который возвращает контекст рисования (например, ссылку на объект контекста рисования) вызывающей стороне. Вообще говоря, контекст рисования представляет собой временный вспомогательный объект, который используется для заполнения визуального объекта. Программный код затем использует контекст рисования для добавления графических примитивов к визуальному объекту. Запрос на открытие может стирать содержимое (потомков) визуального объекта, или запрос на добавление может использоваться для открытия визуального объекта для добавления к данному текущему визуальному объекту. В дополнение к приему статических значений в качестве параметров рисования контекст рисования может заполняться объектами анимации.

Удерживаемый визуальный объект работает аналогично визуальному объекту рисования за исключением того, что его содержимое рисования заполняется, когда система запрашивает, чтобы он был заполнен, вместо заполнения его при помощи программного кода. Например, если содержимое конкретного визуального объекта потребуется при визуализации сцены, система вызывает IRetainedVisual.Render для закрашивания содержимого Visual, заменяя любое содержимое, которое уже находится в памяти.

Таким образом, различные типы примитивов могут быть нарисованы в визуальном объекте, используя контекст рисования, включающий в себя геометрическую форму, данные изображения и видеоданные. Геометрическая форма представляет собой тип класса, который определяет каркас векторной графики без контура или закрашивания, например прямоугольник. Каждый объект геометрической формы соответствует простой форме (LineGeometry, EllipseGeometry, RectangleGeometry), сложной одиночной форме (PathGeometry) или списку таких форм (GeometryList) с заданной операцией комбинирования (например, объединение, пересечение и т. д.). Эти объекты образуют иерархию класса. Также существуют сокращения для рисования часто используемых типов геометрической формы, такие как метод DrawRectangle.

Когда рисуется геометрическая форма, может задаваться кисть или перо. Объект кисти определяет, как графически закрасить плоскость, и существует иерархия классов объектов кистей. Перо также имеет кисть, заданную для него, описывающую, как закрашивать обведенную по контуру область. Специальный тип объекта кисти (VisualBrush) может ссылаться на визуальный объект для определения того, как должна рисоваться данная кисть. Кисть рисования делает возможным закрашивать форму или управлять комбинацией других форм и кистей.

Другие достоинства и преимущества станут очевидны из последующего подробного описания, рассматриваемого совместно с чертежами, на которых

Перечень фигур чертежей

фиг.1 - блок-схема, представляющая примерную компьютерную систему, в которую может быть встроено настоящее изобретение;

фиг.2 - блок-схема, представляющая, в основном, графическую многоуровневую архитектуру, в которую может быть встроено настоящее изобретение;

фиг.3 - представление графа сцены визуальных объектов и сопоставленные компоненты для обработки графа сцены, например, посредством обхода графа сцены для получения графических команд и других данных согласно аспекту настоящего изобретения;

фиг.4 - представление графа сцены визуальных объектов проверки достоверности, визуальных объектов рисования и ассоциированных списков инструкций, созданных согласно аспекту настоящего изобретения;

фиг.5 - представление класса визуального объекта объектной модели согласно аспекту настоящего изобретения;

фиг.6 - представление различных других объектов объектной модели согласно аспекту настоящего изобретения;

фиг.7 - представление иерархии классов преобразования согласно аспекту настоящего изобретения;

фиг.8 и 9 - представление преобразований данных визуального объекта при масштабировании геометрической формы и неравномерном масштабировании, соответственно, согласно аспекту настоящего изобретения;

фиг.10 - представление классов геометрических форм объектной модели согласно аспекту настоящего изобретения;

фиг.11 - представление структуры PathGeometry согласно аспекту настоящего изобретения;

фиг.12 - представление графа сцены визуальных объектов и списков инструкций, показывающих примерную графику, созданную примитивами, согласно аспекту настоящего изобретения;

фиг.13 - представление классов кистей объектной модели согласно аспекту настоящего изобретения;

фиг.14 и 15 - представление визуализированной графики, происходящей из данных в объекте кисти линейного градиента, согласно аспекту настоящего изобретения;

фиг.16 - представление визуализированной графики, происходящей из данных в объекте кисти радиального градиента, согласно аспекту настоящего изобретения;

фиг.17 - представление визуализированного объекта кисти с девятью ячейками сетки согласно аспекту настоящего изобретения;

фиг.18 - представление визуализированной графики, происходящей из различных значений растягивания, согласно аспекту настоящего изобретения;

фиг.19 - представление визуализированной графики, происходящей из различных значений элемента мозаики, согласно аспекту настоящего изобретения;

фиг.20 - представление сетки и преобразованной сетки, происходящей из данных в объекте кисти визуального объекта, согласно аспекту настоящего изобретения;

фиг.21 - представление сетки и преобразованной сетки с визуализированной графикой в ней, нарисованной из визуального объекта, согласно аспекту настоящего изобретения.

Подробное описание

Примерная рабочая среда

На фиг.1 изображен пример подходящей среды 100 вычислительной системы, в которой может быть реализовано изобретение. Среда 100 вычислительной системы является только одним примером подходящей вычислительной среды и, как подразумевается, не предполагает никаких ограничений в отношении объема использования или функциональных возможностей изобретения. Вычислительная среда 100 также не должна интерпретироваться, как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, изображенных в примерной рабочей среде 100.

Изобретение может работать с многочисленными другими средами или конфигурациями вычислительных систем общего назначения или специального назначения. Примеры общеизвестных вычислительных систем, сред и/или конфигураций, которые могут быть подходящими для использования с изобретением, включают в себя, но не в ограничительном смысле, персональные компьютеры, серверные компьютеры, карманные или портативные компьютеры, планшетные устройства, мультипроцессорные системы, микропроцессорные системы, телевизионные приставки, программируемую бытовую электронику, сетевые персональные компьютеры (ПК, PC), мини-компьютеры, универсальные компьютеры (мейнфреймы), распределенные вычислительные среды, которые включают в себя любую из вышеупомянутых систем или устройств, и т. д.

Изобретение может быть описано в общем контексте машиноисполняемых инструкций, таких как программные модули, исполняемые компьютером. В общих чертах, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т. п., которые выполняют конкретные задачи или реализуют определенные абстрактные типы данных. Изобретение также может применяться в распределенных вычислительных средах, в которых задачи выполняются удаленными устройствами обработки данных, которые связаны через сеть связи. В распределенной вычислительной среде программные модули могут быть расположены на носителях данных как локальных, так и удаленных компьютеров, включая в себя запоминающие устройства.

С ссылкой на фиг.1, примерная система для осуществления изобретения включает в себя вычислительное устройство общего назначения в виде компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле, блок 120 обработки данных (процессов), системную память 130 и системную шину 121, которая соединяет различные компоненты системы, включая системную память, с блоком 120 обработки данных. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую из многочисленных шинных архитектур. В качестве примера и не ограничения, такие архитектуры включают в себя шину архитектуры промышленного стандарта (ISA), шину микроканальной архитектуры (MCA), шину расширенной ISA (EISA), локальную шину ассоциации по стандартам в области видеоэлектроники (VESA), шину ускоренного графического порта (AGP) и шину межсоединений периферийных компонентов (PCI), также известную как шина расширения.

Компьютер 110 обычно включает в себя многочисленные машиночитаемые носители. Машиночитаемыми носителями могут быть любые доступные носители, к которым компьютер 110 может осуществлять доступ, и они включают в себя как энергозависимые, так и энергонезависимые носители, как съемные, так и несъемные носители. В качестве примера и не ограничения, машиночитаемые носители могут содержать носители данных компьютера и среды передачи данных. Носители данных компьютера включают в себя как энергозависимые, так и энергонезависимые, как съемные, так и несъемные носители, выполненные по любому методу или технологии для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Носители данных компьютера включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ, RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое программируемое ПЗУ (ЭСППЗУ, EEPROM), флэш-память или память другой технологии, компакт-диск, цифровой многофункциональный диск (DVD) или другое запоминающее устройство на оптическом диске, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, или любой другой носитель, который может использоваться для хранения требуемой информации и к которому компьютер 110 может осуществлять доступ. Среды передачи данных обычно воплощают машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном данными сигнале, таком как несущая волна или другой транспортный механизм, и включают в себя любую среду доставки информации. Термин «модулированный данными сигнал» означает сигнал, в котором одна или несколько из его характеристик установлены или изменены так, что обеспечивается кодирование информации в этом сигнале. В качестве примера и не ограничения, среда передачи данных включает в себя проводную среду, такую как проводная сеть или прямое проводное соединение, и беспроводную среду, такую как акустическая, радиочастотная (РЧ), инфракрасная или другая беспроводная среда. Комбинации любых из вышеприведенных сред и носителей также охватываются понятием «машиночитаемый носитель».

Системная память 130 включает в себя носитель данных компьютера в виде энергозависимой и/или энергонезависимой памяти, такой как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система 133 ввода/вывода (BIOS), содержащая базовые процедуры, которые способствуют передаче информации между элементами в компьютере 110, например, во время запуска, обычно хранится в ПЗУ 131. ОЗУ 132 обычно содержит данные и/или программные модули, к которым осуществляется непосредственный доступ и/или которые в настоящий момент обрабатываются блоком 120 обработки данных. В качестве примера и не ограничения, на фиг.1 изображена операционная система 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.

Компьютер 110 также может включать в себя другие съемные/несъемные, энергозависимые/энергонезависимые носители данных компьютера. Только в качестве примера, на фиг.1 изображен накопитель 141 на жестких дисках, который считывает или записывает на несъемные энергонезависимые магнитные носители, магнитный дисковод 151, который считывает или записывает на съемный энергонезависимый магнитный диск 152, и оптический дисковод 155, который считывает или записывает на съемный энергонезависимый оптический диск 156, такой как компакт-диск или другой оптический носитель. Другие съемные/несъемные, энергозависимые/энергонезависимые носители данных компьютера, которые могут использоваться в примерной рабочей среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флэш-памяти, цифровые многофункциональные диски, цифровую видеоленту, твердотельное ОЗУ, твердотельное ПЗУ и т.п. Накопитель 141 на жестких дисках обычно подсоединяется к системной шине 121 при помощи интерфейса несъемной памяти, такого как интерфейс 140, а магнитный дисковод 151 и оптический дисковод 155 обычно подсоединяются к системной шине 121 при помощи интерфейса съемной памяти, такого как интерфейс 150.

Накопители и дисководы и связанные с ними носители данных компьютера, описанные выше и изображенные на фиг.1, обеспечивают хранение машиночитаемых инструкций, структур данных, программных модулей и других данных для компьютера 110. На фиг.1, например, накопитель 141 на жестких дисках изображен как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Следует отметить, что данные компоненты могут быть или теми же самыми, или могут быть отличными от операционной системы 134, прикладных программ 135, других программных модулей 136 и данных 137 программ. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ даны другие номера в данной заявке для иллюстрации того, что, как минимум, они представляют собой другие копии. Пользователь может вводить команды и информацию в компьютер 110 при помощи устройств ввода, таких как планшет (электронный цифровой преобразователь) 164, микрофон 163, клавиатура 162 и указательное устройство 161, обычно упоминаемое как мышь, шаровой манипулятор или сенсорная панель. Другие устройства ввода (не показаны) могут включать в себя джойстик, игровой планшет, антенну спутниковой связи, сканер и т. п. Эти и другие устройства ввода часто подключаются к блоку 120 обработки данных при помощи интерфейса 160 ввода пользователем, который соединен с системной шиной, но могут подключаться при помощи других интерфейсов и шинных структур, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или устройство отображения другого типа также подключается к системной шине 121 при помощи интерфейса, такого как видеоинтерфейс 190. Монитор 191 также может быть интегрирован с панелью 193 с сенсорным экраном или аналогичным устройством, которое может вводить оцифрованный ввод, такой как рукописный текст, в компьютерную систему 110 при помощи интерфейса, такого как интерфейс 192 сенсорного экрана. Следует отметить, что монитор и/или панель с сенсорным экраном физически могут быть объединены с корпусом, в котором находится вычислительное устройство 110, как, например, в персональном компьютере планшетного типа, в котором панель 193 с сенсорным экраном служит, по существу, в качестве планшета 164. Кроме того, компьютеры, такие как вычислительное устройство 110, также могут включать в себя другие периферийные устройства вывода, такие как громкоговорители 195 и принтер 196, которые могут подключаться при помощи периферийного интерфейса 194 вывода или т. п.

Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, такими как удаленный компьютер 180. Удаленным компьютером 180 может быть персональный компьютер, сервер, маршрутизатор, сетевой ПК, одноранговое устройство или другой общий сетевой узел, и он обычно включает в себя многие или все из элементов, описанных выше в отношении компьютера 110, хотя только запоминающее устройство 181 было показано на фиг.1. Логические соединения, изображенные на фиг.1, включают в себя локальную сеть (ЛС, LAN) 171 и глобальную сеть (ГС, WAN) 173, но также могут включать в себя другие сети. Такие сетевые среды являются общепринятыми в офисах, компьютерных сетях масштаба предприятия, интрасетях и Интернете.

При использовании в сетевой среде ЛС компьютер 110 подключается к ЛС 171 при помощи сетевого интерфейса или адаптера 170. При использовании в сетевой среде ГС компьютер 110 обычно включает в себя модем 172 или другое средство для установления связи по ГС 173, такой как Интернет. Модем 172, который может быть внутренним или внешним, может подключаться к системной шине 121 при помощи интерфейса 160 ввода пользователем или другого подходящего механизма. В сетевой среде программные модули, описанные в отношении компьютера 110, или их части, могут храниться на удаленном запоминающем устройстве. В качестве примера и не ограничения, на фиг.1 изображены удаленные прикладные программы 185, постоянно находящиеся на устройстве 181 хранения. Понятно, что показанные сетевые соединения являются примерными, и может использоваться другое средство для установления линии связи между компьютерами.

Интерфейсы для структур данных графа сцены

Один аспект настоящего изобретения относится, в основном, к обеспечению программному коду, такому как прикладная программа или компонент операционной системы, возможности передавать инструкции рисования и другую информацию (например, растры изображения) графическим компонентам для визуализации графического вывода на системном дисплее. С этой целью в настоящем изобретении предусматривается ряд определенных функций и методов, например в виде интерфейсов прикладного программирования (ИПП) для объектной модели, которые дают возможность программам заполнять граф сцены структурами данных, графическими примитивами (командами) и другими относящимися к графике данными. При обработке граф сцены дает в результате графику, отображаемую на экране.

Фиг.2 представляет общую многоуровневую архитектуру 200, в которой может быть реализовано настоящее изобретение. Как представлено на фиг.2, программный код 202 (например, прикладная программа, или компонент операционной системы, или т. п.) может быть разработан для вывода графических данных одним или несколькими различными образами, включая посредством формирования 204 изображения, при помощи элементов 206 векторной графики и/или при помощи вызовов функции/метода, размещаемых непосредственно на уровне 212 визуального интерфейса прикладного программирования (ИПП), согласно аспекту настоящего изобретения. Вообще говоря, формирование 204 изображения предусматривает программный код 202 с механизмом для загрузки, редактирования и сохранения изображений, например растров. Как описано ниже, эти изображения могут использоваться другими частями системы, и также существует возможность использовать код рисования примитивов для непосредственного рисования изображения. Элементы 206 векторной графики обеспечивают другой путь рисования графики, согласующийся с остальной объектной моделью (описанной ниже). Элементы 206 векторной графики могут быть созданы при помощи языка разметки, который система 208 элементов/свойств и система 210 разбивки интерпретируют для выполнения соответствующих вызовов на уровне 212 визуального ИПП. Элементы 206 векторной графики, вместе с системой 208 элементов/свойств и системой 210 разбивки, описываются в заявке на патент США № 10/401 717.

В одной реализации многоуровневая архитектура 200 графики включает в себя ядро 214 компоновки и анимации высокого уровня, которое включает в себя или иным образом ассоциировано со структурой 216 данных кэширования. Структура 216 данных кэширования содержит граф сцены, содержащий иерархически расположенные объекты, управление которыми осуществляется согласно определенной объектной модели, как описано ниже. Вообще говоря, уровень 212 визуального ИПП обеспечивает программный код 202 (и систему 210 разбивки) интерфейсом к структуре 216 данных кэширования, включая возможность создания объектов, открытия и закрытия объектов для предоставления им данных, и т. д. Другими словами, средство 214 компоновки и анимации высокого уровня предоставляет уровень 212 ИПП объединенной среды, посредством которого разработчики могут выразить намерения в отношении графики и среды для отображения графической информации и предоставления нижележащей платформе достаточной информации, так чтобы эта платформа могла оптимизировать использование аппаратных средств для программного кода. Например, нижележащая платформа будет ответственна за кэширование, согласование ресурсов и интеграцию сред.

В одной реализации средство 214 компоновки и анимации высокого уровня пропускает поток инструкций и, возможно, другие данные (например, указатели на растры) на быстродействующее средство 218 компоновки и анимации нижнего уровня. Как используется в данной заявке, термины «высокого уровня» и «нижнего уровня» аналогичны терминам, используемым в других вычислительных алгоритмах, в которых, вообще говоря, чем ниже программный компонент находится относительно компонентов более высокого уровня, тем ближе этот компонент к аппаратным средствам. Таким образом, например, графическая информация, посылаемая от средства 214 компоновки и анимации высокого уровня, может приниматься ядром 218 компоновки и анимации нижнего уровня, где эта информация используется для посылки графических данных на графическую подсистему, включающую в себя аппаратные средства 222.

Средство 214 компоновки и анимации высокого уровня совместно с программным кодом 202 строит граф сцены, чтобы представлять графическую сцену, обеспечиваемую программным кодом 202. Например, каждый элемент, подлежащий рисованию, может загружаться при помощи инструкций рисования, которые система может кэшировать в структуре 216 данных графа сцены. Как описано ниже, существует несколько различных путей задания этой структуры 216 данных и того, что рисуется. Далее, средство 214 компоновки и анимации высокого уровня интегрируется с системами 220 синхронизации и анимации для обеспечения декларативного (или другого) управления анимацией (например, интервалами анимации) и управления синхронизацией. Следует отметить, что система анимации дает возможность направлять значения анимации, по существу, куда угодно в системе, включая, например, уровень 208 элементов/свойств, внутри уровня 212 визуального ИПП, и в любом из других ресурсов. Система синхронизации предоставлена на уровнях элементов и визуальных объектов.

Средство 218 компоновки и анимации нижнего уровня управляет компоновкой, анимацией и визуализацией сцены, которая затем предоставляется графической подсистеме 222. Средство 218 нижнего уровня компонует визуализацию для сцен многочисленных прикладных программ и с компонентами визуализации выполняет фактическую визуализацию графики на экране. Следует отметить, однако, что иногда может быть необходимым и/или выгодным, чтобы некоторые визуализации происходили на более высоких уровнях. Например, хотя служба нижних уровней запрашивается от многочисленных прикладных программ, более высокие уровни реализуются на основе одной прикладной программы, посредством чего возможно при помощи средств 204 формирования изображения выполнять отнимающую много времени или характерную для прикладной программы визуализацию на более высоких уровнях и передавать ссылки на растр более нижним уровням.

Согласно аспекту настоящего изобретения визуальный интерфейс прикладного программирования (ИПП) обеспечивает группу объектов, которые определяют дерево визуальных объектов согласно аспекту настоящего изобретения. Дерево визуальных объектов представляет структуру данных, которая может быть визуализирована графической системой на носителе (экран, принтер или поверхность). При визуализации данные дерева визуальных объектов представляют собой «сцену», которую видит зритель. Визуальные объекты (или просто Visual) содержат и управляют другими графическими объектами, которые составляют нарисованную сцену, подобную геометрическим формам, примитивам, кистям, цветовым градиентам и анимации.

Хотя настоящее изобретение также обеспечивает доступ к службам рисования и визуализации на более высоком уровне абстракции, используя более знакомую систему объектов и свойств, и предусматривает объекты векторной графики на уровне разметки при помощи языка разметки (с кодовым названием «XAML» (расширяемый язык разметки приложений)), визуальный ИПП представляет наибольший интерес для разработчиков, которые хотят большего управления над функциональными возможностями рисования, чем они могут легко получить с использованием системы свойств или разметки.

На фиг.3 и 4 показаны примерные графы 300 и 400 сцены, соответственно, включающие в себя базовый объект, упоминаемый как Visual. Визуальные объекты, или просто Visual, представляют собой контейнеры для графического содержимого, такого как линии, текст и изображения. Как представлено в наследовании объектов классов визуальных объектов на фиг.5, существует несколько различных визуальных объектов, включая ContainerVisual, который представляет собой Visual, который не содержит непосредственно графическое содержимое, но содержит порожденные объекты DrawingVisual. Порожденные объекты DrawingVisual добавляются к ContainerVisual, а не к другим объектам DrawingVisual. Это дает возможность разработчику выполнять изменения и устанавливать свойства на индивидуальных визуальных объектах без повторного создания и затем повторной визуализации всего контекста рисования, в то же самое время также разрешая доступ к свойствам отсечения и преобразования на контейнерном объекте. Объекты ContainerVisual могут быть вложенными.

DrawingVisual представляет собой Visual, который может содержать графическое содержимое. Данный Visual предоставляет ряд методов рисования. Порожденные объекты DrawingVisual организованы в пространство с отсчетом от нуля и упорядоченностью по z-координате. RetainedVisual представляет собой Visual, который вводит «удерживаемый поток инструкций», который может использоваться для рисования. Простым языком, RetainedVisual дает возможность разработчику удерживать содержимое визуального объекта и перерисовывать его только тогда, когда это необходимо. Можно использовать RetainedVisual императивно, аналогично DrawingVisual, при помощи вызова RenderOpen и использования возвращаемого DrawingContext для рисования. RetainedVisual обеспечивает функциональную возможность обратного вызова проверки достоверности и метод InvalidateVisual. Чтобы использовать функциональную возможность проверки достоверности, пользователь выполняет интерфейс IRetainedRender на RetainedVisual или классе, который является производным от него.

Ссылаясь на фиг.5, еще одним визуальным объектом является HwndVisual 505, который представляет собой Visual, используемый для обеспечения унаследованного управления или окна Microsoft® Win32® в качестве порожденного визуального объекта внутри визуальной сцены графа сцены. Более конкретно, унаследованные программы будут по-прежнему работать при помощи метода WM_PAINT (или аналогичного), который рисует в порожденном HWnd (или аналогичном), основываясь на предшествующей графической технологии. Для поддержки таких программ в новой модели обработки графики HwndVisual дает возможность Hwnd входить в состав графа сцены и перемещаться при изменении позиции порождающего визуального объекта. Также допустимы другие типы визуальных объектов, такие как трехмерные (3D) визуальные объекты, которые дают возможность организовать связь между двухмерным и трехмерным миром, например вид, подобный полученному камерой, возможен при помощи двумерного визуального объекта, имеющего вид в трехмерный мир.

Как показано на фиг.3, VisualManager (менеджер визуальных объектов) 304 содержит объект, который связывает дерево визуальных объектов с но