Система и способ для унифицированной машины компоновки в системе обработки графики

Иллюстрации

Показать все

Изобретение относится к системам графического и видеоаппаратного обеспечения, а именно представляет собой систему и способ для унифицированной машины компоновки, которая, в общем, комбинирует ранее отдельные службы компоновки. Техническим результатом является уменьшение дублирования кода, улучшение тестового покрытия и упрощение введения функциональных возможностей, таких как способность к взаимодействию унаследованных окон, удаленная связь и обеспечение интерфейса множественных документов. Это достигается тем, что система содержит визуальную систему, которая принимает вызовы от программы или оконного администратора рабочего стола для построения иерархической структуры данных. А также система содержит унифицированную машину компоновки, которая принимает команды от визуальной системы и строит структуру данных компоновщика в ответ на команды для предоставления графического вывода. Унифицированная машина компоновки предоставляет службу компоновки, используемую как внутри процесса в соединении с интерфейсами прикладного программирования (API), так и на рабочем столе в качестве компоновщика рабочего стола. 2 н. и 20 з.п. ф-лы, 6 ил.

Реферат

Уровень техники

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

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

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

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

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

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

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

Раскрытие изобретения

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

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

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

Фиг. 2 представляет общую, многоуровневую архитектуру для API машины компоновки в соответствии с настоящим изобретением.

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

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

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

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

Осуществление изобретения

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

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

Иллюстративная вычислительная среда

Фиг. 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, флэш-память или другую технологию памяти, CD-ROM, универсальные цифровые диски (DVD) или другое оптическое дисковое хранилище, магнитные кассеты, магнитную ленту, магнитное дисковое хранилище или другие магнитные хранящие устройства, или любой другой носитель, который может использоваться для хранения требуемой информации и к которому компьютер 100 может осуществлять доступ. Носители связи обычно реализуют машинно-читаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущее колебание или другой транспортный механизм, и включают в себя любые носители доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или более своих характеристик установленными или измененными таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, носители связи включают в себя проводные носители, такие как проводная сеть или прямое проводное соединение, и беспроводные носители, такие как акустические, RF, инфракрасные и другие беспроводные носители. Комбинации любого из вышеописанного также должны быть включены в объем машинно-читаемых носителей.

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

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

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

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

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

Иллюстративная архитектура графики

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

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

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

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

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

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

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

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

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

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

Как представлено на фиг. 3, альтернативно или в дополнение к локально отображаемому выводу, компоновщик 218 (или что-то аналогичное ему) может предоставлять инструкции воспроизведения и анимации в соответствующем формате низкоуровневому коду 230 печати для отправки данных фиксированного изображения принтеру 232 или подобному, и/или может предоставлять инструкции воспроизведения и интервалы простой анимации в соответствующем формате низкоуровневому терминальному транспортному серверу 236 для передачи удаленным машинам 238. Отметим, что более богатая информация также может передаваться через сеть, например может быть желательно, чтобы удаленная машина обрабатывала эффекты наведения (rollover) мыши локально, без какого-либо сетевого трафика.

Иллюстративный вариант осуществления

Фиг. 4 показывает архитектуру общего вида для использования унифицированной машины компоновки в соответствии с настоящим изобретением. Архитектура унифицированной машины компоновки включает в себя главную таблицу 402 ресурсов, дерево 404 визуальных объектов, интерфейс 406 устройства компоновки, очередь 408 изменений, очередь 410 извещений, дерево 412 компоновки и подчиненную таблицу 414 ресурсов.

Архитектура унифицированной машины компоновки логически разделена на два слоя: верхний слой, или клиентский слой 401 (т.е. визуальная система), включает в себя дерево 404 визуальных объектов (т.е. иерархическую структуру данных), которое является первичным клиентом унифицированной машины компоновки, и нижний слой является унифицированной машиной 420 компоновки как таковой. Дерево 404 визуальных объектов обеспечивает взаимодействие между унифицированной машиной компоновки с ее основным клиентом и взаимодействие между таблицами ресурсов (например, 402, 414), поддерживаемых клиентом и унифицированной машиной компоновки.

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

В качестве примера, взаимодействие между клиентским слоем 401 и унифицированной машиной 420 компоновки, так же как администрирование ресурсов, описывается ниже для ситуации, когда приложение является клиентом. Дерево 404 визуальных объектов осуществляет представление сцены приложения или документа, которое должно отображаться. Эта сцена может быть очень большой и, возможно, намного больше, чем то, что видно в текущее время. Содержимое каждого визуального объекта (например, 405) определяется списком инструкций воспроизведения или RenderData и ресурсами, которые он использует, такими как геометрия, точки, перья, кисть, изображения и т.д. Администрирование этих ресурсов осуществляется главной таблицей 402 ресурсов, которая содержит данные, независимые от устройства и разрешения, для каждого ресурса и, в некоторых случаях, коллекцию или формы, зависящие от ресурсов. Главная таблица 402 ресурсов отвечает за управление временем жизни ресурсов (например, посредством подсчета ссылок).

Никакая информация о дереве визуальных объектов (например, 404) или ресурсах не передается унифицированной машине 420 компоновки до тех пор, пока дерево визуальных объектов должно отображаться. Когда дерево визуальных объектов (например, 404) ассоциировано с целевым объектом воспроизведения, дерево визуальных объектов отправляет представление этого дерева вместе с соответствующими ресурсами унифицированной машине 420 компоновки. Эта передача является асинхронной через очередь 408 изменений из интерфейса 406 устройства компоновки. Только потенциально видимое подмножество дерева 404 визуальных объектов, указываемое здесь собирательно как дерево 412 компоновки (т.е. структура данных компоновщика), представляется