Визуальный и пространственный графические интерфейсы

Иллюстрации

Показать все

Изобретение относится к компьютерным системам, а более конкретно к обработке графической и другой визуальной информации для отображения в компьютерных системах. Техническим результатом является предоставление достаточной информации нижележащей аппаратной платформе, так что платформа может оптимально использовать аппаратное обеспечение для рационального выполнения кода прикладной программы. Указанный результат достигается за счет того, что модель объекта позволяет разработчикам кода программы взаимодействовать согласованным образом со структурой данных графа сцены для вывода графики. С помощью интерфейсов код программы записывает графические примитивы, такие как данные геометрии, данные изображения, данные мультипликации и другие данные, в визуалы, которые представляют поверхность рисования, включая визуальные объекты проверки правильности, визуальные объекты рисования и поверхностные визуальные объекты. Код может также определять свойства преобразования, отсечения и непрозрачности на визуалах, и добавлять дочерние визуалы к другим визуалам для построения иерархического графа сцены. Диспетчер визуалов проходит граф сцены для обеспечения данных богатой графики для компонентов графики более низкого уровня. 5 н. и 73 з.п. ф-лы, 28 ил.

Реферат

ССЫЛКИ НА РОДСТВЕННЫЕ ЗАЯВКИ

Данное изобретение относится к следующим находящимся в процессе одновременного рассмотрения патентным заявкам США: регистрационный номер 10/184795 с названием «Multiple-Level Graphics Processing System and Method»; регистрационный номер 10/184796 с названием «Generic Parametrization for a Scene Graph»; регистрационный номер 10/185775 с названием «Intelligent Caching Data Structure for Immediate Mode Graphics»; каждая зарегистрирована 27 июня 2002 г.; и патентная заявка США с названием «Markup Language and Object Model for Vector Graphics» (Досье поверенного № 3480), поданные одновременно. Каждая родственная заявка передана правопреемнику данной патентной заявки и включена здесь посредством ссылки в ее целостности.

ОБЛАСТЬ ИЗОБРЕТЕНИЯ

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

ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ

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

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

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

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

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

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

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

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

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

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

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Фигура 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 - представление классов преобразования модели объекта в соответствии с аспектом данного изобретения.

ПОДРОБНОЕ ОПИСАНИЕ

ПРИМЕРНОЕ РАБОЧЕЕ ОКРУЖЕНИЕ

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

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

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

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

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

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

Компьютер 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, других программных модулей 136 и программных данных 137. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и программным данным 147 даны здесь другие номера для иллюстрации того, что они, как минимум, являются различными копиями. Пользователь может вводить команды и информацию в компьютер 110 через устройства ввода, такие как графический планшет (электронное устройство ввода графической информации) 164, микрофон 163, клавиатура 162 и указывающее устройство 161, обычно называемое мышью, шаровым указателем (трекболом) или сенсорным планшетом. Другие устройства ввода (не показано) могут включать в себя джойстик, игровую панель, спутниковую тарелку, сканер и т.п. Эти и другие устройства ввода часто подключены к процессору 120 через интерфейс 160 ввода пользователя, который подключен к системной шине, но может быть подключен другими интерфейсом и структурами шин, такими как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или другой тип устройства отображения также подключен к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. Монитор 191 может также быть интегрированным с панелью 193 сенсорного экрана и т.п., которая может вводить оцифрованный ввод, такой как рукописный текст в компьютерную систему 110 через интерфейс, такой как интерфейс 190 сенсорного экрана. Отметим, что монитор и/или панель сенсорного экрана может быть физически связан с корпусом, в который заключено вычислительное устройство 110, как, например, в персональном компьютере типа графического планшета, в котором панель 193 сенсорного экрана по существу служит как графический планшет 164. Кроме того, компьютеры, такие как вычислительное устройство 110, могут также включать в себя другие периферийные устройства вывода, такие как громкоговорители 195 и принтер 196, которые могут быть подключены через интерфейс 194 периферийных устройств вывода и т.п.

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

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

ИНТЕРФЕЙСЫ К СТРУКТУРАМ ДАННЫХ ГРАФА СЦЕНЫ

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

Фиг. 2 представляет общую, многоуровневую архитектуру 200, в которой может быть реализовано данное изобретение. Как представлено на фиг. 2, код 202 программы (например, прикладной программы или компонента операционной системы) может быть развит в данные выходного графического изображения одним или несколькими различными способами, в том числе через формирование изображения 204, через элементы 206 векторной графики и/или через вызовы функции/способа, накладываемые непосредственно на уровень 212 визуального программного интерфейса приложений (API), в соответствии с аспектом данного изобретения. В общем, формирование изображения 204 обеспечивает код 202 программы механизмом для загрузки, редактирования и сохранения изображений, например, растров. Как описано ниже, эти изображения могут использоваться другими частями системы, и также существует способ использования кода рисования примитивов для непосредственного рисования изображения. Элементы 206 векторной графики обеспечивают другой способ рисования графики (графического изображения), совместимый с остальной частью модели объекта (описанной ниже). Элементы 206 векторной графики могут быть созданы через язык разметки, который система 208 элемента/свойства и система 210 предъявителя интерпретируют для того, чтобы сделать соответствующие вызовы в визуальный уровень 212 API. Элементы 206 векторной графики, вместе с системой 208 элемента/свойства и системой 210 предъявителя, описаны в вышеупомянутой находящейся в процессе одновременного рассмотрения патентной заявке с названием «Markup Language and Object Model for Vector Graphics».

В одной реализации архитектура 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 формирования изображения осуществить требующую значительного времени или специфическую для приложения визуализацию на более высоких уровнях, и прохождения ссылок на растр к более низким уровням.

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

Как представлено на фиг. 3, визуал верхнего уровня (или корневой визуал) 302 соединен с объектом 302 диспетчера визуала, который также имеет связь (например, через идентификатор) с окном (Hwnd) 306 или подобным блоком, в которое графические данные выводятся для кода программы. VisualManager (диспетчер визуала) 304 управляет рисованием визуала верхнего уровня (и любых потомков этого визуала) в это окно 306. Фиг. 6 показывает VisualManager как один из множества других объектов 620 в модели объекта описываемой здесь графической системы.

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

public abstract class Visual: VisualComponent{public Transform Transform { get; set;}public float Opacity { get; set; }public BlendMode BlendMode { get; set;}public Geometry Clip { get; set;}public bool Show { get; set;}public HitTestResult HitTest (Point point);public bool IsDescendant (Visual visual);public static Point TransformToDescendant (Visual reference,Visual descendant,Point point);public static Point TransformFromDescendant (Visual reference,Visual descendant,Point point);Public Rect CalculateBounds(); // Освободить границыPublic Rect CalculateTightBounds(); //Public bool HitTestable {get; set; }Public bool HitTestIgnoreChildren { get; set; }Public bool HitTestFinal { get; set; }}

Как можно видеть, визуалы предлагают обслуживание (услуги) посредством обеспечения transform (преобразования), clip (отсечения), opacity (непрозрачности) и возможно других свойств, которые могут быть установлены и/или считаны через метод «get». Кроме того, визуал имеет флажки, управляющие тем, как он участвует в тестировании обращения, как описано ниже. Свойство Show используется для показа/сокрытия визуала, например, когда имеется значение "ложь", визуал является невидимым, в противном случае визуал является видимым.

Преобразование, установленное свойством transform, определяет систему координат для подграфа визуала. Система координат перед преобразованием называется системой координат pre-transform, система координат после преобразования называется системой координат post-transform, а именно визуал с преобразованием эквивалентен визуалу с узлом преобразования в качестве родителя. Фиг. 7 по существу обеспечивает пример преобразования, идентифицирующий системы координат pre-transformation и post-transformation относительно визуала. Чтобы получить (get) или установить (set) преобразован