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

Иллюстрации

Показать все

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

Реферат

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[1] Аспекты настоящего изобретения относятся к пиктограммам окон и, в частности, к интерфейсу и системе манипуляции пиктограммами в администраторе окон.

УРОВЕНЬ ТЕХНИКИ

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

[3] Пользователь, который одновременно использует множество приложений, часто сталкивается с наличием на дисплее множества окон, что является причиной переполненности рабочего стола, вызывающей замешательство и раздражение от беспорядка, увиденного на дисплее. Например, на дисплее может быть такое большое количество перекрывающихся окон, что пользователю, возможно, нужно будет тратить какое-то время на нахождение желаемого окна всякий раз, когда пользователь хочет завершить работу в другом приложении. С целью облегчения этой проблемы пользователь может минимизировать размер окна или выйти из всех приложений для уменьшения беспорядка (и количества окон на дисплее). Однако если окна минимизированы, то пользователь не имеет непосредственного доступа к соответствующему приложению. Если в определенном приложении, в котором окно было минимизировано, должно быть произведено действие, пользователь должен сначала определить местонахождение желаемого окна и открыть желаемое окно после определения его местоположения. Этот процесс отнимает много времени. Аналогично, если пользователь выходит из всех приложений, чтобы очистить перегруженность рабочего стола, то приложение больше не будет активным. В этом случае, пользователь должен повторно запустить приложение для завершения желаемой задачи, и потратить еще больше времени. Кроме того, если приложение выполняет текущую функцию, эта функция не будет выполняться в то время, когда приложение не является активным.

[4] Обычно, когда окно приложения минимизировано, кнопка панели задач может отображаться на панели задач для указания того, что приложение является активным. Хотя кнопка панели задач может указывать на то, что приложение является активным, часто на кнопке панели задач имеется только иконка или название приложения. Не имея дополнительной информации, пользователю надо будет открыть окно, чтобы рассмотреть его контент. Однако, открывая и закрывая окно просто, чтобы проверить контент окна (например, чтобы установить идентичность окна), пользователь тратит время и силы, которые приводят к снижению эффективности и производительности. Эта проблема усложняется с увеличением количества активных приложений и количества окон, поскольку пользователь должен открывать и закрывать множество окон, чтобы найти желаемое.

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

РАСКРЫТИЕ ИЗОБРЕТЕНИЯ

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

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

[7] На Фиг. 1A показан пример системы реализации изобретения, которая включает в себя вычислительное устройство общего назначения в виде компьютера.

[8] На Фиг.1B-1M показана компьютерная среда общего назначения, поддерживающая один или несколько аспектов настоящего изобретения.

[9] Фиг.2A представляет собой диаграмму в виде дерева графа сцены или дисплея, иллюстрирующую пример компонентов дисплея.

[10] На Фиг.2B показаны компоненты, отображенные на дисплее в соответствии с Фиг.2A.

[11] Фиг.3A представляет собой диаграмму в виде дерева графа сцены или дисплея, показывающую примеры компонентов отображения на дисплее настоящего изобретения.

[12] На Фиг.3B показано отображение на дисплее, соответствующее Фиг.3A.

[13] На Фиг.4A и 4B показан один из примеров применения настоящего изобретения при обеспечении пиктограмм окон приложений.

[14] На Фиг.5 показано другое приложение пиктограммы настоящего изобретения, в котором пиктограммы отображены в меню ALT-TAB.

[15] Фиг.6 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса предоставления пиктограмм.

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

[16] В помощь читателю документ разделен на секции. Эти секции включают в себя следующие: Краткий обзор; Вычислительная Среда Общего Назначения; Пиктограммы.

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

КРАТКИЙ ОБЗОР

А. Статичные пиктограммы

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

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

[20] Компьютерные операционные системы используют уровень программного обеспечения, ответственный за управление объектами пользовательского интерфейса, такие как пиктограммы, и предоставления услуг пользовательского интерфейса для приложений программного обеспечения. Уровень программного обеспечения может называться администратором окон рабочего стола (DWM). Логика визуализации, направление входных событий и интерфейсы прикладного программирования (API) администратора окон рабочего стола (DWM) все вместе воплощают пользовательскую политику интерфейса, которая, в свою очередь, определяет полное восприятие пользователем операционной системы. При визуализации рабочего стола DWM обычно обрабатывает обновления экрана, такие как перемещение окон, путем координации отрисовки непосредственно на экране дисплея. Следовательно, если перекрывающее окно закрывают или отодвигают, заново отображенное расположенное снизу окно или рабочий стол должно быть перерисовано. Это замедляет процесс, при котором напрасно расходуются время и ресурсы. Также, если на дисплее окна нарисованы непосредственно в конкретном положении и в конкретной конфигурации, как это обычно бывает, соответствующее изображение окна устанавливается в конкретном положении и конфигурации. Модификации положения или конфигурации окна потребуют большого расхода ресурсов для перерисовки изображения.

В. Динамические пиктограммы

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

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

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

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

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

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

[27] В другом аспекте настоящего изобретения пиктограмма или альтернативная версия окна приложения может быть отображена на дисплее при необходимости. Например, зависание курсора над кнопкой панели задач может вызывать отображение пиктограммы окна приложения. В одном из примеров пиктограмма представляет собой динамическую пиктограмму и может изменяться при изменении исходного окна приложения. Например, изменения, сделанные в окне приложения, отображаются в динамической пиктограмме, соответствующей окну приложения. Такие изменения, например, могут отражаться в динамической пиктограмме в реальном масштабе времени.

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

[29] В другом аспекте настоящего изобретения предоставлены система и способ для подготовки окон без вывода на экран. Затем может быть выполнена композиция окон на экране, таким образом экономя компьютерные ресурсы. Кроме того, подготовка окон без вывода на экран и композиция окон на экране предоставляет возможность для функционирования пиктограммы, как описано в настоящем изобретении.

ВЫЧИСЛИТЕЛЬНАЯ СРЕДА ОБЩЕГО НАЗНАЧЕНИЯ

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

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

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

[33] Компьютер 110 обычно включает в себя множество читаемых компьютером сред. Читаемая компьютером среда включает в себя энергозависимую и энергонезависимую среду, съемную и несъемную среду. В качестве неограничивающего примера читаемые компьютером среды могут содержать компьютерные носители информации и среду для передачи данных и включают в себя без ограничения RAM, ROM, EEPROM, флэш-память или другую технологию памяти, CD-ROM, цифровые универсальные диски (DVD) или другое оптическое дисковое устройство хранения, магнитные кассеты, магнитную ленту, магнитное дисковое устройство хранения или другие магнитные устройства хранения, или любую другую среду, которая может использоваться для хранения желаемой информации и которая может быть доступна компьютеру 110. Среды для передачи данных обычно реализуют читаемые компьютером инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая, или другой механизм передачи, и включают в себя любые среды передачи информации. Термин "модулированный сигнал данных" означает сигнал, который имеет один или несколько наборов характеристик или измененный таким образом, чтобы кодировать информацию в сигнал. В качестве неограничивающего примера среда для передачи данных включают в себя проводные среды, такие как проводная сеть или непосредственное проводное соединение, и беспроводные среды, такие как акустические, радиочастотные, инфракрасные и другие беспроводные среды. Комбинации любых из вышеперечисленных сред также должны быть включены в объем читаемых компьютером сред.

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

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

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

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

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

[39] Очевидно, что показанные сетевые соединения являются иллюстративными, и могут использоваться другие средства установки линий связи между компьютерами. Предполагается наличие любого из хорошо известных протоколов, таких как TCP/IP, Ethernet, FTP, HTTP и т.п., и система может работать в конфигурации клиент-сервер, давая возможность пользователю извлекать веб-страницы из веб-сервера. Для отображения и манипуляции данными на веб-страницах может использоваться любой из различных обычных web-браузеров.

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

[41] Абстрактно, интерфейс программирования может быть рассмотрен в общем, как показано на Фиг.1B или Фиг.1C. На Фиг.1B показан интерфейс Интерфейс_1 в виде канала, через который осуществляется связь между первым и вторым сегментом кода. На Фиг.1C показан интерфейс как содержащий объекты интерфейсов I1 и I2 (которые могут быть или могут не быть частью первого и второго сегментов кода), что позволяет первому и второму сегментам кода системы осуществлять связь через среду М. С точки зрения Фиг.1C можно рассматривать объекты интерфейсов I1 и I2 как отдельные интерфейсы одной и той же системы, и можно считать, что объекты I1 и I2 плюс среда М составляют интерфейс. Хотя на Фиг.1B и 1C показан двунаправленный поток и интерфейсы с каждой стороны потока, конкретные реализации могут иметь поток информации только в одном направлении (или не иметь никакого потока информации, как описано ниже) или могут иметь объект интерфейса только на одной стороне. В качестве неограничивающего примера термины, такие как интерфейс прикладного программирования (API), точка ввода, метод, функция, подпрограмма, вызов удаленной процедуры и интерфейс объектной модели программных компонентов (COM) охвачены в пределах определения интерфейса программирования.

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

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

РАЗЛОЖЕНИЕ

[44] Осуществление связи одного сегмента кода с другим может осуществляться косвенно путем разбивки линии связи на множество дискретных линий связи. Это схематично изображено на Фиг.1D и 1E. Как показано, некоторые интерфейсы могут быть описаны в терминах делимых наборов функциональных возможностей. Таким образом, функциональные возможности интерфейса по Фиг.1B и 1C могут быть разложены для достижения того же результата, который, с математической точки зрения, может быть представлен как 24, или 2 по 2 по 2 по 3 раза. Соответственно, как показано на Фиг.1D, функция, предоставляемая интерфейсом Интерфейс_1, может быть подразделена таким образом, чтобы преобразовать линии связи интерфейса во множество интерфейсов: Интерфейс_1A, Интерфейс_1B, Интерфейс_1C и т.д., достигая того же самого результата. Как показано на Фиг.1Е, функция, предоставляемая интерфейсом I1, может быть подразделена на множество интерфейсов I1a, I1b, I1c и т.д. для достижения того же самого результата. Аналогично, интерфейс I2 второго сегмента кода, который принимает информацию от первого сегмента кода, может быть разложен на множество интерфейсов I2a, I2b, I2c, и т.д. При разложении количество интерфейсов, включенных в 1-ый сегмент кода, не должны соответствовать количеству интерфейсов, включенных во 2-ой сегмент кода. В любом из случаев по Фиг.1D и 1E функциональность интерфейсов Интерфейс_1 и I1 остается той же самой что и на Фиг.1B и 1C, соответственно. Разложение интерфейсов может также соответствовать ассоциативным, коммутативным и другим математическим свойствам так, что разложение может быть трудно определяемым. Например, упорядочивание операций может быть неважным, и, следовательно, функция, выполняемая интерфейсом, может быть заранее до достижения интерфейса выполнена другой частью кода или интерфейса или выполнена отдельным компонентом системы. Более того, специалисту в области программирования может быть очевидным существование множества способов создания запросов различных функций, которые достигают того же самого результата.

ПЕРЕОПРЕДЕЛЕНИЕ

[45] В некоторых случаях, можно проигнорировать, добавить или переопределить некоторые аспекты (например, параметры) интерфейса программирования, тем не менее достигая намеченного результата. Это показано на Фиг.1F и 1G. Например, предположим, что интерфейс Интерфейс_1 по Фиг.1B включает в себя вызов функции Square (входные данные, точность, выходные данные) (функция возведения в квадрат), вызов, который включает в себя три параметра, входные данные, точность, выходные данные, и которая вызывается из 1-ого сегмента кода во 2-ой сегмент кода. Если средний параметр, точность, в данном сценарии не представляет интереса, как показано на Фиг.1F, его с таким же успехом можно проигнорировать или даже заменить бессмысленным (в этой ситуации) параметром. Также можно добавить дополнительный, незначимый параметр. Так или иначе, функция возведения в квадрат может быть достигнута, при условии, что выходные данные выдаются после того, как входные данные были возведены в квадрат вторым сегментом кода. Точность может быть очень значимым параметром при дальнейшей обработке или в другой части вычислительной системы; однако, после узнавания того, как установлено, что точность не является необходимой для конкретной операции возведения, она может быть заменена или проигнорирована. Например, вместо того, чтобы передавать реальное значение точности, можно передавать бессмысленную величину, такую как дата рождения, не влияя неблагоприятным образом на результат. Аналогично, как показано на Фиг.1G, интерфейс I1 заменен интерфейсом I1', переопределенный с целью игнорирования или добавления параметров к интерфейсу. Аналогично интерфейс I2 может быть переопределен как интерфейс I2', переопределенный для игнорирования ненужных параметров, или параметров, которые могут быть обработаны в другом месте. Суть этого заключается в том, что в некоторых случаях интерфейс программирования может включать в себя аспекты, такие как параметры, которые не являются необходимыми для некоторой цели, и поэтому они могут быть проигнорированы или переопределены или обработаны в другом месте для других целей.

ЛИНЕЙНОЕ КОДИРОВАНИЕ

[46] Также возможно слияние некоторых или всех функциональных возможностей двух отдельных модулей кода таким образом, что "интерфейс" между ними изменяет форму. Например, функциональные возможности по Фиг.1B и 1C могут быть преобразованы в функциональные возможности по Фиг.1H и 1I, соответственно. На Фиг.1H предыдущие 1-ый и 2-ой сегменты кода по Фиг.1B слиты в модуль, содержащий оба сегмента. В этом случае, сегменты кода могут все еще осуществлять связь друг с другом, но интерфейс может быть адаптирован к виду, который является более подходящим для единичного модуля. Таким образом, например, может отсутствовать необходимость в формальных операторах Call и Return, но подобная обработка, или ответ(ответы) в соответствии с интерфейсом Интерфейс_1 нем не менее может иметь место. Аналогично, как показано на Фиг.1I, часть (или весь) интерфейса I2 по Фиг.1C может быть линейно записан в интерфейсе I1, формируя интерфейс I1". Как показано, интерфейс I2, разделен на I2a и I2b, и часть интерфейса, I2a кодирована линейно с интерфейсом I1, формируя интерфейс I1". В качестве конкретного примера, предположим, что интерфейс, I1 по Фиг.1C выполняет вызов функции возведения в квадрат (входные данные, выходные данные), который получает интерфейс I2, который после обработки значения, пришедшего в виде входных данных (для вычисления результата возведения в квадрат) во второй сегмент кода, передает назад результат возведения в квадрат в виде выходных данных. В этом случае, обработка, выполняемая вторым сегментом кода (возведения в квадрат входных данных), может быть выполнена первым сегментом кода без вызова интерфейса.

РАЗДЕЛЕНИЕ

[47] Осуществление связи одного сегмента кода с другим может быть достигнуто косвенно, разделением линии связи на множество дискретных линий связи. Это схематично показано на Фиг.1J и 1K. Как показано на Фиг.1J, предоставлены одна или несколько частей кода (интерфейс(интерфейсы) Разделения, так как они разделяют функциональные возможности и/или функции интерфейса от исходного интерфейса), для преобразования линий связи первого интерфейса, Интерфейс_1, для согласования с другим интерфейсом, в этом случае интерфейсами Интерфейс2A, Интерфейс2В и Интерфейс2С. Это мо