Нанесение чернил в реальном времени

Иллюстрации

Показать все

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

Реферат

Информация о родственных заявках

Настоящая заявка притязает на приоритет заявки США № 0/513591, поданной 24 октября 2003 г., озаглавленной «Tablet Platform Controls and APIs» (Элементы управления и интерфейс прикладного программирования (ИПП) планшетной платформы), содержимое которой специально включено в данный документ посредством ссылки.

Уровень техники изобретения

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

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

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

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

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

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

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

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

Эти и другие аспекты рассматриваются в отношении фигур и относящегося к ним описания.

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

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

на фиг.1В-1М изображена вычислительная среда общего назначения, поддерживающая один или несколько аспектов настоящего изобретения.

На фиг.2 изображен дисплей для основанной на стило системы ввода согласно аспектам настоящего изобретения.

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

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

На фиг.5 изображен режим объекта, который может поддерживать аспекты настоящего изобретения.

На фиг.6 изображена система для манипулирования электронными чернилами согласно аспектам настоящего изобретения.

На фиг.7 изображена система для манипулирования электронными чернилами согласно аспектам настоящего изобретения.

На фиг.8А и 8В изображены различные подходы для использования входной очереди и выходной очереди согласно аспектам настоящего изобретения.

На фиг.9 и 10 изображены способы создания и использования систем для манипулирования чернилами согласно аспектам настоящего изобретения.

На фиг.11 изображена система с протоколом для предупреждения объекта сбора чернил согласно аспектам настоящего изобретения.

На фиг.12 изображена система с дополнительной очередью согласно аспектам настоящего изобретения.

На фиг.13 изображена система с разделенными компонентами стило реального времени согласно аспектам настоящего изобретения.

На фиг.14 показано, как глубоко распознаватель жестов может искать жесты согласно аспектам настоящего изобретения.

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

На фиг.16 изображен управляемый и неуправляемый код согласно аспектам настоящего изобретения.

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

На фиг.18 и 19 изображены различные системы для манипулирования данными пера согласно аспектам настоящего изобретения.

На фиг.20 изображена очередь согласно аспектам настоящего изобретения.

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

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

Данный документ разделен на разделы, чтобы оказать помощь читателю. Данные разделы включают в себя: Характеристики чернил, Термины, Вычислительная среда общего назначения, Обзор нанесения чернил в реальном времени, Объектная модель, Динамическая визуализация и влажные чернила, Распознавание жестов, Синхронные и асинхронные процессы, Каскадирование, Модификация коллекции динамически подключаемых модулей, Распространение ошибок, Управляемые/неуправляемые иллюстрации, Наборы и потоки данных, Синхронизация данных и Интерфейсы прикладного программирования.

Характеристики чернил

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

Электронные чернила (или чернила) относятся к захвату и отображению электронной информации, захваченной, когда пользователь использует основанное на стило устройство ввода. Электронные чернила относятся к последовательности или любой произвольной коллекции штрихов, где каждый штрих состоит из последовательности точек. Штрихи могут быть нарисованы или собраны одновременно или могут быть нарисованы или собраны в независимые моменты времени и позициях и по независимым причинам. Точки могут быть представлены с использованием множества известных методов, включая прямоугольную систему координат (X, Y), полярную систему координат (r, θ) и другие методы, известные в технике. Электронные чернила могут включать в себя представление свойств реальных чернил, включая давление, угол, скорость, цвет, размер стило и непрозрачность чернил. Электронные чернила дополнительно могут включать в себя другие свойства, включая порядок того, как чернила наносились на страницу (растровый шаблон слева направо, затем вниз для большинства западных языков), временную метку (указывающую, когда наносились чернила), указание автора чернил и создающее устройство (по меньшей мере одно из идентификатора машины, на которой были нарисованы чернила, или идентификатора пера, используемого для нанесения чернил) среди другой информации.

Термины

Чернила Последовательность или набор штрихов со свойствами. Последовательность штрихов может включать в себя штрихи в упорядоченной форме. Последовательность может упорядочиваться по времени захвата или по тому, где штрихи появляются на странице, или в объединенных случаях автором чернил. Возможны другие порядки. Набор штрихов может включать в себя последовательности штрихов, или неупорядоченные штрихи, или любую их комбинацию. Далее, некоторые свойства могут быть уникальными для каждого штриха или точки в штрихе (например, давление, скорость, угол и т.п.). Эти свойства могут запоминаться на уровне штриха или точки и не на уровне чернил.
Объект чернил Структура данных, хранящая чернила со свойствами или без них.
Штрих Последовательность или набор захваченных точек. Например, при визуализации последовательность точек может соединяться прямыми линиями. Альтернативно, штрих может быть представлен как точка и вектор в направлении следующей точки. Вкратце, предполагается, что штрих охватывает любое представление точек или отрезков, относящихся к чернилам, независимо от лежащего в основе представления точек и/или того, что соединяет точки.
Точка Информация, определяющая позицию в пространстве. Например, точки могут определяться относительно пространства захвата (например, точки на дигитайзере), пространства виртуальных чернил (координаты в пространстве, в которое помещаются захваченные точки) и/или пространства отображения (точки или пикселы устройства отображения).
Документ Любой электронный файл, который имеет просматриваемое представление и содержимое. Документ может включать в себя веб-страницу, документ по обработке текста, страницу для записей или блокнот, электронную таблицу, визуальную презентацию, запись в базе данных, файлы с изображением и их комбинации.
RealTimeStylus Стило реального времени представляет собой объект, который предоставляет события стило реального времени по данному описанию окна в данном прямоугольнике ввода окна. Стило реального времени также может рассматриваться как инфраструктура, к которой необходимо добавлять объекты подключаемых модулей, которые манипулируют дополнительными функциями. Объекты подключаемых модулей могут добавляться и удаляться, когда изменяются требуемые функциональные возможности стило реального времени. ИПП для стило реального времени может упоминаться как стило реального времени (СРВ). СРВ может представлять собой компонент ИПП ядра, к которому разработчики могут привязывать другие функции. СРВ упаковывает необработанные данные, поступающие от служб пера, и подает данные на первый объект подключаемого модуля (если есть какой-либо). Стило реального времени может иметь один или несколько интерфейсов. В случае двух интерфейсов ими могут быть синхронный интерфейс и асинхронный интерфейс. Эти интерфейсы обеспечивают позиции, с которыми могут соединяться подключаемые модули, для стило реального времени. Эти интерфейсы предназначены только для целей иллюстрации. Также могут использоваться другие интерфейсы.
Чернила реальноговремени Чернила реального времени представляют собой иллюзию, что чернила вытекают из пишущего элемента стило. Предшествующие подходы делали попытку связать существенные этапы обработки с визуализацией чернил, таким образом замедляя отображение вновь принимаемых штрихов. Чернила реального времени делают попытку протолкнуть вновь принимаемые штрихи на дисплей, когда они принимаются, и делают попытку разделить этапы обработки в реальном времени и отображение в реальном времени, чтобы они работали вместе, таким образом быстрее отображая чернила пользователю.
ПодключаемыйМодуль Подключаемый модуль представляет собой функциональный компонент, который может быть добавлен к объекту стило реального времени. Если подключаемый модуль присоединяется к синхронному интерфейсу объекта стило реального времени, он может упоминаться как синхронный подключаемый модуль. Если подключаемый модуль присоединяется к асинхронному интерфейсу объекта стило реального времени, он может упоминаться как асинхронный подключаемый модуль.
Служба пера Компонент системной службы, который выполняет сопряжение с аппаратным драйвером дигитайзера и обеспечивает необработанные «пакетные» данные, которые были предварительно интерпретированы в стандартные «пакетные» и связанные структуры, вместе с другими уведомлениями независимо от сбора чернил, которые все еще имеют отношение к функциональным возможностям планшета (например, TabletAdded/Removed, StylusButtonUp/Down и т.д. Службы пера обеспечивают первичный механизм для пакетов, подлежащих манипулированию коллекцией подключаемых модулей.
Коллекцияподключаемыхмодулей Коллекция подключаемых модулей в одной или нескольких группах, которые присоединяются к СРВ. Где существуют две коллекции, они могут ассоциироваться с синхронными и асинхронными интерфейсами СРВ соответственно. Каждая коллекция может исполняться по порядку. Где существуют две или более коллекций, они могут исполняться независимо друг от друга, так как они могут присоединяться к различным интерфейсам СРВ (или нескольким СРВ). Данные возвращаются к СРВ после манипулирования каждым подключаемым модулем. Порядок подключаемых модулей в коллекции может оказывать влияние на выходной результат коллекции.
Цепочкаподключаемыхмодулей Цепочка подключаемых модулей, где каждая группировка подключаемых модулей соединяется последовательно. В данном случае данные прокладывают свой путь через каждый подключаемый модуль в цепочке перед возвратом в СРВ. Цепочка также может упоминаться как «гирляндная цепочка» подключаемых модулей. Порядок подключаемых модулей в цепочке или гирляндной цепочке может оказывать влияние на выходной результат цепочки.
ВходнаяОчередь Временно хранящая очередь для пакетов или объектов, которые генерируются коллекцией синхронных подключаемых модулей или цепочкой подключаемых модулей для повторной обработки коллекцией синхронных подключаемых модулей или цепочкой подключаемых модулей. Вкратце, коллекция синхронных подключаемых модулей или цепочка подключаемых модулей может проталкивать объекты во входную очередь.
Динамическая визуализация Инкрементный процесс рисования чернил, когда перо касается экрана. Когда перо движется по дигитайзеру, сзади на экране остается след «чернил». Эффект выглядит, как если бы чернила вытекали из пера, когда оно рисует. Чернила рисуются участками, по мере того как принимаются данные. Визуализация также может иметь дополнительные применяемые эффекты, такие как устранение ступенчатости и т.п.
СтатическаяВизуализация Процесс визуализации всего штриха чернил за один раз. Данные уже доступны до того, как чернила будут нарисованы, и весь штрих будет нарисован как единое целое. Статическая визуализация также может иметь дополнительные применяемые эффекты, такие как сглаживание Безье и устранение ступенчатости.
Динамический визуализатор Разработчик может необязательно создать экземпляр динамического визуализатора для автоматического обеспечения высокоэффективной визуализации пакетных данных в реальном времени на поверхности визуализации ГПИ. Возможны динамические визуализаторы для других поверхностей визуализации, подобно DirectX или графопостроителю, с использованием такого же определения интерфейса, что и ГПИ-центрический DynamicRenderer, предусмотренный как часть реализации аспектов настоящего изобретения.
РаспознавательЖестов Разработчик может необязательно создать экземпляр распознавателя жестов для выполнения распознавания в реальном времени штрихов и сообщения, когда один или несколько штрихов составляют жест, в котором разработчик выразил заинтересованность. Распознаватель жестов, если он используется, может быть размещен в синхронной или асинхронной коллекции или цепочке.
Выходная очередь Если пакетные данные прошли через коллекцию или цепочку объектов (и, потенциально, были модифицированы), они копируются в выходную очередь, где СРВ посылает их в коллекцию асинхронных подключаемых модулей или цепочку.
InkCollectingObject Описывает объект асинхронного подключаемого модуля, который накапливает и хранит данные чернил, представленные стило реального времени.
ICO Объект сбора чернил, который может быть в асинхронной коллекции или цепочке. Он принимает данные от выходной очереди.

Вычислительная среда общего назначения

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

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

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

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

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

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

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

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

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

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

Понятно, что показанные сетевые подключения являются примерными и могут использоваться другие средства установления линии связи между компьютерами. Предполагается существование любых из многочисленных общеизвестных протоколов, таких как протокол управления передачей/протокол Интернета (ПУП/ПИ), Эзернет, протокол передачи файлов (ППФ), протокол передачи гипертекста (ППГТ) и т.п., и система может работать в конфигурации клиент-сервер, позволяющей пользователю извлекать веб-страницы с веб-сервера. Могут использоваться любые из многочисленных обычных веб-браузеров для отображения и манипулирования данными на веб-страницах.

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

Теоретически, интерфейс программирования может рассматриваться, в общем, как показано на фиг.1В или фиг.1С. На фиг.1В изображен интерфейс Interface1 в виде канала, по которому происходит передача первого и второго сегментов кода. На фиг.1С изображен интерфейс, содержащий объекты I1 и I2 интерфейса (которые могут быть или могут не быть частью первого и второго сегментов кода), которые дают возможность первому и второму сегментам кода системы передаваться при помощи носителя М. С учетом фиг.1С можно рассматривать объекты I1 и I2 интерфейса как отдельные интерфейсы одной и той же системы, и также можно считать, что объекты I1 и I2 плюс носитель М составляют интерфейс. Хотя на фиг.1В и 1С показан двунаправленный поток и интерфейсы на каждой стороне потока, определенные реализации могут иметь поток информации только в одном направлении (или отсутствие потока информации, как описано ниже) или могут иметь объект интерфейса только на одной стороне. В качестве примера, и не ограничения, термины, такие как интерфейс прикладного программирования (ИПП), точка входа, метод, функция, подпрограмма, удаленный вызов процедуры и интерфейс модели компонентных объектов (МКО), охватываются определением интерфейса программирования.

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

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

А. Разложение на элементарные операции

Передача между одним сегментом кода и другим может осуществляться косвенно разбиением передачи на множество дискретных передач. Это схематически описывается на фиг.1D и 1Е. Как показано, некоторые интерфейсы могут описываться на языке делимых наборов функциональных возможностей. Таким образом, функциональные возможности по фиг.1В и 1С могут быть разложены на элементарные операции для достижения такого же результата, точно так же как можно математически получить 24, 2 умножив на 2, умножив на 3, умножив на 2. Следовательно, как изображено на фиг.1D, функция, представляемая интерфейсом Interface1, может быть разделена для преобразования передачи интерфейса на множества интерфейсов Interface1A, Interface1B, Interface1C и т.д., в то же время достигая такого же результата. Как изображено на фиг.1Е, функция, представляемая интерфейсом I1, может быть разделена на множество интерфейсов I1a, I1b, I1c и т.д., в то же время достигая такого же результата. Аналогично, интерфейс I2 второго сегмента кода, который принимает информацию от первого сегмента кода, может быть разложен на множество интерфейсов I2a, I2b, I2c и т.д. При разложении на элементарные операции количество интерфейсов, включенных в 1-й сегмент кода, необязательно совпадает с количеством интерфейсов, включенных во 2-й сегмент кода. В обоих случаях по фиг.1D и 1Е функциональная сущность интерфейсов Interface1 и I1 остается такой же, что и на фиг.1В и 1С соответственно. Разложение на элементарные операции интерфейсов также может подчиняться ассоциативным, коммутативным и другим математическим свойствам, так что разложение на элементарные операции может быть трудным для распознавания. Например, порядок операций может не иметь значения, и, следовательно, функция, выполняемая интерфейсом, может выполняться задолго до достижения интерфейса, другой частью кода или интерфейсом или выполняться отдельным компонентом системы. Кроме того, для специалиста в области программирования может быть понятно, что существует множество путей выполнения различных вызовов функции, которые достигают одинакового результата.

В. Переопределение

В некоторых случая