Язык разметки и объектная модель для векторной графики

Иллюстрации

Показать все

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

Реферат

Настоящее изобретение связано со следующими совместно рассматриваемыми заявками на патент США: 10/184,795, под названием «Система и способ многоуровневой обработки графики» [Multi-Level Graphics Processing system and Method], 10/184,796 под названием «Родовая параметризация для графа сцены» [Generic Parameterization for Scene Graph], 10/185,775 под названием «Интеллектуальная структура данных кэширования для графики прямого режима» [Intelligent Caching Data Structure for Immediate Mode Graphics], поданные 27 июня 2002г., и заявкой на патент США под названием «Интерфейсы визуалов и графов сцены» [Visual and Scene Graph Interfaces], (зарегистрирована у поверенного под №3470), поданной одновременно с ними. Права каждой связанной заявки принадлежат заявителю настоящей патентной заявки.

Область изобретения

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

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

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

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

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

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

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

Сущность изобретения

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

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

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

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

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

Краткое описание чертежей

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

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

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

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

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

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

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

Фиг. 8А и 8В - представления трансформаций данных визуала в геометрическом масштабе и неоднородном масштабе соответственно, в соответствии с аспектом настоящего изобретения.

Фиг. 9А-9С - блок-схемы объектов «визуал поверхности» и других визуалов и компонентов в соответствии с аспектом настоящего изобретения.

Фиг. 10А и 10В - диаграммы, представляющие объекты «визуал HWnd» в соответствии с аспектом настоящего изобретения.

Фиг.11 - диаграмма многослойного объекта «визуал» в соответствии с аспектом настоящего изобретения.

Фиг.12 - представление классов геометрии объектной модели в соответствии с аспектом настоящего изобретения.

Фиг.13 - представление структуры PathGeometry («геометрия пути») в соответствии с аспектом настоящего изобретения.

Фиг.14 - представление графа сцены, состоящего из визуалов и примитивов рисования, где показана иллюстративная графика, созданная примитивами, в соответствии с аспектом настоящего изобретения.

Фиг.15 - представление классов кисти объектной модели в соответствии с аспектом настоящего изобретения.

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

Фиг.17 - представление визуализированной графики, полученной из данных в объекте «кисть с радиальным градиентом», в соответствии с аспектом настоящего изобретения.

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

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

Фиг.20 - последовательность операций, представляющая, в общем виде, логику для интерпретации визуала, в том числе объекта «кисть», позволяющую генерировать графику, в соответствии с аспектом настоящего изобретения.

Фиг.21 - представление сетки и трансформированной сетки, полученной из данных в объекте «кисть визуала», в соответствии с аспектом настоящего изобретения.

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

Фиг.23 - представление визуализированного объекта «кисть с девятиячеечной сеткой» в соответствии с аспектом настоящего изобретения.

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

Фиг.25 - представление классов элемента в объектной модели элементов в соответствии с аспектом настоящего изобретения.

Фиг.26 - представление компонентов для интерпретации кода языка разметки для взаимодействия с уровнем API визуалов в соответствии с аспектом настоящего изобретения.

Фиг.27 - представление отсечения посредством пути геометрии в соответствии с аспектом настоящего изобретения.

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

Иллюстративная операционная среда

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

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

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

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

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

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

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

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

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

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

Архитектура графики

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

На фиг.2 в общем виде представлена многоуровневая архитектура 200, пригодная для реализации настоящего изобретения. Согласно фиг.2 можно разработать программный код 202 (например, прикладную программу или компонент операционной системы и пр.), позволяющий выводить графические данные одним или несколькими разными способами, в том числе посредством построения изображения 204, посредством элементов векторной графики 206 и/или посредством вызовов функции/метода, размещенной/ого непосредственно на уровне 212 программного интерфейса приложения (API) визуалов. Непосредственное взаимодействие с уровнем API дополнительно описано в вышеупомянутой совместно рассматриваемой патентной заявке под названием «Интерфейсы визуалов и графов сцены».

В общем случае построение изображения 204 обеспечивает программный код 202 механизмом загрузки, редактирования и сохранения изображений, например растровых изображений. Эти изображения могут быть использованы другими частями системы, и также имеется способ использования кода рисования примитива для непосредственного рисования изображения.

Согласно аспекту настоящего изобретения элементы векторной графики 206 обеспечивают другой способ рисования графики, согласованный с остатком объектной модели (описанный ниже). Элементы векторной графики 206 можно создавать с помощью языка разметки, который система 208 элементов/свойств и система 210 презентаторов обрабатывают, чтобы осуществить надлежащие вызовы уровню 212 API визуалов. Как описано ниже со ссылкой на фиг.26, в целом элементы 206 векторной графики анализируются в объекты объектной модели, из которой происходит рисование графа сцены, которые могут быть предоставлены графу сцены посредством уровня элементов с помощью системы 208 элементов/свойств и системы 210 презентаторов, или могут обеспечиваться более эффективным способом на уровне ресурсов, что также описано ниже.

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

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

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

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

Объектная модель графа сцены

Согласно описанному ниже модель визуализации совместно используется высокоуровневыми, управляемыми элементами 206 векторной графики и низкоуровневыми объектами, созданными посредством уровня 212 API визуала, используемыми в структуре 216 данных графа сцены. Это обеспечивает значительную степень корреляции между высокоуровневыми элементами согласно настоящему изобретению и низкоуровневыми объектами. Ниже описана одна реализация объектной модели графа сцены.

На фиг. 3 и 4 показаны иллюстративные графы сцены 300 и 400 соответственно, базовый объект которых называется визуалом. В целом, визуал представляет собой объект, представляющий пользователю виртуальную поверхность и имеющий визуальное представление на экране дисплея. Согласно фиг.5 визуал базового класса обеспечивает базовые функции для визуалов других типов, т.е. класс 500 визуалов является абстрактным базовым классом, порождающим типы визуалов (например, 501-506).

Согласно фиг.3 визуал 302 верхнего уровня (корневой визуал) связан с объектом 304 «менеджер визуалов», который также имеет связь (например, посредством описателя) с окном 306 (HWnd) или аналогичным модулем, в котором графические данные выводятся для программного кода. Менеджер 304 визуалов управляет рисованием визуала верхнего уровня (и любых потомков этого визуала) в этом окне 306. На фиг.6 менеджер визуалов показан как один из ряда других объектов 620 в объектной модели описанной здесь графической системы.

Для рисования менеджер 304 визуалов обрабатывает (например, обходит или передает) граф сцены согласно расписанию, заданному диспетчером 308, и передает команды графики и другие данные низкоуровневому компоненту 218 (фиг.2) для его соответствующего окна 306, что в общих чертах описано в патентных заявках США №№ 10/184,795, 10/184,796 и 10/185,775. Обработка графа сцены обычно планируется диспетчером 308 на частоте, более низкой по сравнению с частотой обновления низкоуровневого компонента 218 и/или графической подсистемы 222. На фиг.3 показано несколько дочерних визуалов 310-315, организованных в иерархическом порядке под визуалом 302 верхнего уровня (корневым визуалом), некоторые из которых представлены как заполненные контекстами рисования 316, 317 (показанными в виде пунктирных прямоугольников, что выражает их временный характер) и связанные со списками 318 и 319 команд соответственно, содержащими, например, примитивы рисования и другие визуалы. Визуалы также могут содержать другую информацию свойств, что показано в нижеследующем иллюстративном классе визуалов:

Трансформация (преобразование), установленная свойством «трансформация», задает систему координат для подграфа визуала. Система координат до трансформации называется предтрансформационной системой координат, а после трансформации - посттрансформационной системой координат, т.е. визуал с трансформацией эквивалентен визуалу, имеющему узел трансформации в качестве родителя. На фиг.7 в общем виде представлен пример трансформации, идентифицирующий предтрансформационную и посттрансформационную системы координат по отношению к визуалу. Чтобы получить или установить трансформацию визуала, можно использовать свойство «трансформация» (Transform).

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