РЕАЛЬНОЕ ПРИСУТСТВИЕ РУКОПИСНОГО ВВОДА ДЛЯ СОТРУДНИЧЕСТВА В РЕАЛЬНОМ ВРЕМЕНИ
REAL HANDWRITING PRESENCE FOR REAL-TIME COLLABORATION

Предшествующий уровень техники
[0001] Приложения создания контента, такие как приложения блокнота, приложения обработки текстов, приложения электронных таблиц и приложения презентаций, представляют собой полезные инструменты для генерирования и поддержки контента. Эти и другие приложения создания контента все более включают в себя функциональность “рукописного ввода”, которая позволяет пользователям вводить контент и взаимодействовать с приложением (и контентом, создаваемым в нем) через использование пера или стилуса (и иногда пальцев или других объектов) способом, напоминающим письмо ручкой на бумаге.
[0002] Когда множество пользователей начинают осуществлять совместную работу (сотрудничество, коллаборацию) в реальном времени в приложении с использованием цифрового рукописного ввода (“среды цифрового рукописного ввода”), может быть проблематичным идентифицировать, какие пользователи создали какой контент.
Краткое описание сущности изобретения
[0003] Описана идентификация пользователей при сотрудничестве в реальном времени в среде рукописного ввода. Обеспечивается функция визуального указателя “присутствия рукописного ввода” для приложений создания контента с поддержкой сотрудничества в среде рукописного ввода (где рукописные росчерки вводятся в интерфейс canvas (холст для отрисовки растровой графики)).
[0004] Функция присутствия рукописного ввода не только обеспечивает визуальный указатель, в форме “указателя присутствия”, информацией о том, кто рукописно ввел некоторый контент и где пользователь рукописно ввел этот контент на хосте отрисовки, но также может определять, где на интерфейсе холста следует поместить указатель присутствия.
[0005] Функция присутствия рукописного ввода приложения создания контента с поддержкой сотрудничества включает в себя код диспетчера присутствия, который определяет область присутствия, где рисуются точки рукописного ввода, и определяет, являются ли входящие точки рукописного ввода частью одной и той же области присутствия или разных областей присутствия. Код диспетчера присутствия дополнительно определяет местоположение для указателя присутствия для каждой области присутствия и предоставляет информацию местоположения на средство визуализации (рендерер) из состава приложения создания контента, так что указатель присутствия отображается пользователю посредством графического пользовательского интерфейса приложения создания контента.
[0006] Указатель присутствия может представлять собой иконку присутствия, которая помогает указывать, что кто–то выполняет рукописный ввод в некотором местоположении экрана. В одном варианте осуществления, указатель присутствия не следует точкам рукописного ввода; напротив, указатель присутствия перемещается отдельно от точек рукописного ввода. Местоположение указателя присутствия может быть основано на определяемой области присутствия, и когда область присутствия увеличивается в размере, так что новые точки рукописного ввода удовлетворяют определенным критериям, диспетчер присутствия может скорректировать местоположение указателя присутствия для этой области присутствия.
[0007] Настоящее краткое описание сущности изобретения приведено, чтобы представить в упрощенном виде подборку концепций, которые дополнительно описаны ниже в подробном описании. Настоящее краткое описание сущности изобретения не предназначено, чтобы идентифицировать ключевые признаки или существенные признаки заявленного изобретения, а также не предназначено для использования, чтобы ограничивать объем заявленного изобретения.
Краткое описание чертежей
[0008] Фиг. 1 иллюстрирует примерную операционную среду, в которой могут выполняться различные варианты осуществления изобретения.
[0009] Фиг. 2 иллюстрирует примерную систему с приложением создания контента, поддерживающим сотрудничество, с функцией присутствия рукописного ввода.
[0010] Фиг. 3A–3B иллюстрируют примерные блок–схемы последовательностей операций процессов для обеспечения рукописного ввода, расширенного функцией присутствия рукописного ввода.
[0011] Фиг. 4A и 4B иллюстрируют примерную логику, выполняемую посредством функции присутствия рукописного ввода в соответствии с определенными примерными реализациями.
[0012] Фиг. 5A–5C иллюстрируют примерный сценарий функции присутствия рукописного ввода для сеанса сотрудничества.
[0013] Фиг. 6 иллюстрирует примерный сценарий функции присутствия рукописного ввода, где члены группы сотрудничества имеют дисплеи с разным форм–фактором.
[14] Фиг. 7 иллюстрирует компоненты вычислительного устройства, которое может использоваться в некоторых вариантах осуществления, описанных в настоящем документе.
Подробное описание
[0015] Описана идентификация пользователей при сотрудничестве в реальном времени в среде рукописного ввода. Обеспечивается функция визуального указателя “присутствия рукописного ввода” для приложений создания контента с поддержкой сотрудничества в среде рукописного ввода (где рукописные росчерки вводятся в интерфейс холста).
[0016] Различение множества пользователей в пространстве сотрудничества может быть сложной проблемой. Некоторые коллаборативные среды рукописного ввода применяют рукописный ввод разного цвета, чтобы представлять разных пользователей аналогично тому, как это выполняется в коллаборативной среде текстовой обработки (например, с использованием функции отслеживания изменений в Microsoft Word). Однако это может ограничивать способность множества пользователей создавать цветной контент в коллаборативном пространстве. Более того, поскольку интерфейс холста создает возможность рукописного ввода свободной формы, по существу, в любом месте на холсте, другие пользователи могут быть поставлены в замешательство чьим–то ответным сообщением (вводом) или могут упустить чьи–то вводы. Функция присутствия рукописного ввода не только обеспечивает визуальный указатель в форме “указателя присутствия” информацией о том, кто рукописно ввел некоторый контент и где пользователь рукописно ввел этот контент на холсте, но также может определять, где на интерфейсе холста следует поместить указатель присутствия.
[0017] Приложения создания контента представляют собой приложения программного обеспечения, в которых пользователи могут вносить информацию. Как использовано в настоящем документе, приложения создания контента направлены на визуальный контент, где пользователи могут создавать текстовый и/или основанный на изображении контент в цифровой форме. Термин “приложение создания контента” может в некоторых случаях быть синонимичен “приложению авторской разработки (авторинга) контента”, “рабочему приложению” или “инструменту авторинга контента”. Поскольку описанные системы и методы фокусируются на приложениях и инструментах, посредством которых создается авторский контент, не существует преднамеренной разницы между этими терминами, и такие термины могут использоваться взаимозаменяемым образом в настоящем документе.
[0018] Описанная функция присутствия рукописного ввода применима для приложений создания контента, которые поддерживают сотрудничество и “рукописный ввод” или “цифровой рукописный ввод”, что относится к режиму пользовательского ввода, где стилус или перо (или даже палец пользователя на сенсорном экране (тачскрине) или тачпаде или, возможно, мышь) используется, чтобы захватывать написанное от руки в его естественном виде.
[0019] Рукописный росчерк относится к набору свойств и данных точек, которые захватывает дигитайзер (преобразователь в цифровую форму), которые представляют координаты и свойства “маркировок”. Он может представлять собой набор данных, которые захватываются в одном движении пера вниз, вверх или последовательности движения. Набор данных может включать в себя параметры, такие как, но без ограничения, начало росчерка, конец росчерка, давление росчерка, наклон (например, пера) для росчерка (может также называться азимутом), направление росчерка, время и тайминг росчерка между дискретными координатами вдоль пути росчерка и цвет ‘чернил’.
[0020] Дигитайзер обычно обеспечивает набор координат на сетке, которая может использоваться, чтобы преобразовывать аналоговое движение в значения дискретных координат. Дигитайзер может быть расположен под экраном или наложен на экран или поверхность, которая может захватывать перемещение пальца, пера или стилуса (например, росчерки от руки или кистью пользователя). В зависимости от функций дигитайзера, может быть собрана информация, такая как давление, скорость движения между точками и направление движения.
[0021] При помощи цифрового рукописного ввода, пользователь может легко управлять внешним видом рукописно вводимого слова или рукописно вводимого рисунка, как в реальном мире, вследствие структуры данных (и языка) рукописных росчерков, которые применяют названные выше параметры (например, координаты, давление и т.д.). Оставаясь в форме рукописных росчерков, рукописно введенные слова, как рукописно введенные рисунки, находятся в модифицируемом формате рукописного ввода.
[0022] В приложении создания контента с поддержкой сотрудничества (и даже в сценариях без сотрудничества), рукописный росчерк может быть определен с использованием семантического события и ассоциированных метаданных, которые включают в себя свойства и данные точек. Семантическое событие может представлять собой начало, продолжение, конец, отмену, удаление, движение, агрегирование и тому подобное.
[0023] Фиг. 1 иллюстрирует примерную операционную среду, в которой могут выполняться различные варианты осуществления изобретения; и фиг. 2 иллюстрирует примерную систему с приложением создания контента, поддерживающим сотрудничество, с функцией присутствия рукописного ввода.
[0024] Со ссылкой на фиг. 1, примерная операционная среда 100 включает в себя вычислительное устройство 102 для пользователя A, запускающего приложение 104 создания контента с возможностями цифрового рукописного ввода, включающее в себя рендерер 106, который может визуализировать рукописный ввод. Диспетчер 108 присутствия включен, чтобы поддерживать реальное (живое) присутствие рукописного ввода для сотрудничества в реальном времени. Сервер 110 сотрудничества, запускающий услугу 112 сотрудничества, может поддерживать функциональность сотрудничества для приложения 104 создания контента и обеспечивать сотрудничество между множеством пользователей (например, пользователем B на вычислительном устройстве 114, пользователем C на вычислительном устройстве 116 и пользователем D на вычислительном устройстве 118). Услуга 112 сотрудничества обеспечивает возможность синхронизации информации между пользователями сеанса сотрудничества.
[0025] Вычислительное устройство 102 (как и вычислительные устройства 114, 116, 118 или другие вычислительные устройства, используемые для участия в сеансе сотрудничества) может быть воплощено как система 700, такая как описано со ссылкой на фиг. 7. Например, вычислительные устройства могут представлять собой, каждое, любое вычислительное устройство, такое как, но без ограничения, ноутбук, стационарный компьютер, планшет, персональный цифровой помощник, смартфон, смарт–телевизор, игровая консоль, носимое устройство и тому подобное.
[0026] Со ссылкой на фиг. 2, пользователь A 200 может вводить контент рукописного ввода (“рукописный ввод” 202) в приложение 104 создания контента. Рукописный ввод 202 может обрабатываться дигитайзером как рукописный росчерк 203 и визуализироваться для отображения в графическом пользовательском интерфейсе 204 посредством рендерера 106 (например, с использованием объекта 106A, который визуализирует рукописный ввод пользователей). В сеансе сотрудничества, приложение 104 создания контента является ориентированным на сотрудничество и осуществляет связь с услугой 112 сотрудничества по сети 205, чтобы передавать рукописный росчерк 203 и принимать информацию рукописного ввода от других пользователей (например, “collab ink” (рукописный ввод сотрудничества) 206A), которая может визуализироваться при помощи рендерера 106 (например, с использованием объекта 106A) как отображаемый рукописный ввод 207 в графическом пользовательском интерфейсе 204. Информация рукописного ввода может включать в себя, по меньшей мере, точку рукописного ввода для рукописного росчерка и пользовательский идентификатор пользователя, вводящего рукописный росчерк в совместно используемый холст рукописного ввода. Точка рукописного ввода может иметь структуру данных, указывающую положение и другие параметры (например, давление, цвет). В некоторых из описанных реализаций, точка рукописного ввода может также включать в себя семантическое событие.
[0027] Компоненты (вычислительные системы, ресурсы хранения и тому подобное) в операционной среде могут работать в коммуникации друг с другом по сети 205. Сеть 205 может представлять собой, но без ограничения, сотовую сеть (например, беспроводной телефон), двустороннее телефонное соединение, спутниковую сеть, Интернет, локальную сеть (LAN), глобальную сеть (WAN), сеть Wi–Fi, самоорганизующуюся (ad hoc) сеть или их комбинацию. Такие сети широко используются, чтобы соединять различные типы элементов сети, такие как концентраторы, мосты, маршрутизаторы, переключатели, серверы и шлюзы. Сеть 205 может включать в себя одну или несколько соединенных сетей (например, много–сетевую среду), включая сети общего доступа, такие как Интернет, и/или частные сети, такие как безопасная частная сеть предприятия. Доступ к сети 205 может быть обеспечен посредством одной или нескольких проводных или беспроводных сетей доступа, как будет понятно специалистам в данной области техники.
[0028] Диспетчер 108 присутствия “прослушивает” росчерки (например, точки рукописного ввода, семантические события, параметры), принимаемые приложением 104, и определяет наилучшее местоположение для помещения указателя присутствия (например, иконки присутствия). Например, диспетчер 108 присутствия может оценить ввод 206 пользовательского id и информацию рукописного ввода (UserID, Collab Ink (семантическое событие, параметры)) для семантического события (например, начала, продолжения, конца) из информации 206A рукописного ввода, определяет область присутствия для пользователя, идентифицированного посредством пользовательского id, и предлагает местоположение для указателя присутствия рукописного ввода. Это предложенное местоположение 208 предоставляется на рендерер 106, чтобы отображать иконку 209 присутствия. В различных реализациях, иконка 209 присутствия может включать в себя картинку профиля пользователя, инициалы, имя, произвольно выбранный цвет или изображение фона или выбранный пользователем цвет или изображение (или любую комбинацию этих элементов). Рендерер 106 визуализирует и анимирует указатель присутствия, например, с использованием объекта 106B, визуализирующего указатель присутствия.
[0029] Иконка присутствия помогает указать, что некто производит рукописный ввод в некоторое местоположение экрана. Иконка присутствия не должна следовать “живому” рукописному вводу (рукописному вводу, появляющемуся от сотрудничающих пользователей в реальном времени, который может отображаться как 207). Напротив, предложенное местоположение 208 для указателя присутствия может визуализироваться отдельно от визуализируемого рукописного ввода 207 (см. например, предложенное местоположение 208 с соответствующей иконкой 209 присутствия и collab ink 206 с соответствующим отображаемым рукописным вводом 207). Возможно, что иконка присутствия появляется в графическом пользовательском интерфейсе до рукописного ввода, в то же самое время, что и рукописный ввод, или (менее предпочтительно) после начала рукописного ввода. Логика появления рукописного ввода является отдельной от логики появления присутствия, например, за счет наличия отдельных объектов 106A и 106B для рендерера 106. Холст рукописного ввода позволяет осуществлять рукописный ввод в любом месте в любое время (в противоположность ограничительным линиям для печатания) и поэтому мог бы вызывать отвлекающее движение, если иконка присутствия следовала за точками рукописного ввода, которые могут находиться на выполняемых росчерках, которые пересекают друг друга с противоположных концов, но образуют связную картинку. Отделение логики рукописного ввода и логики появления присутствия может помочь избежать излишнего перескакивания иконки присутствия на полотне.
[0030] Коммуникация на/от компонентов, таких как диспетчер 108 присутствия и/или рендерер 106 и/или услуга 112 сотрудничества, может выполняться, в некоторых случаях, посредством прикладных программных интерфейсов (API). API представляет собой интерфейс, реализуемый посредством компонента программного кода или компонента аппаратных средств (далее “реализующий API компонент”), который разрешает разным компонентам программного кода или аппаратных средств (далее “вызывающий API компонент”) осуществлять доступ и использовать одну или несколько функций, способов, процедур, структур данных, классов и/или других услуг, обеспечиваемых посредством реализующего API компонента. API может определять один или несколько параметров, которые передаются между вызывающим API компонентом и реализующим API компонентом. API обычно представляет собой набор инструкций и стандартов программирования для обеспечения возможности двум или более приложениям осуществлять коммуникацию друг с другом и, при реализации по Интернету, обычно реализуется как набор сообщений запроса протокола пересылки гипертекста (HTTP) и специфицированного формата или структуры для сообщений ответа в соответствии с архитектурой REST (передачи репрезентативного представления) или SOAP (простого протокола доступа к объектам). Для услуги сотрудничества, коммуникация является двунаправленной и поэтому может быть реализована с использованием HTTP/2, WebSocket и других двунаправленных протоколов.
[0031] Фиг. 3A–3B иллюстрируют примерные блок–схемы последовательностей операций процессов для обеспечения рукописного ввода, расширенного функцией присутствия рукописного ввода; фиг. 4A и 4B иллюстрируют примерную логику, выполняемую посредством функции присутствия рукописного ввода в соответствии с определенными примерными реализациями; и фиг. 5A–5C иллюстрируют примерный сценарий функции присутствия рукописного ввода для сеанса сотрудничества. В проиллюстрированном сценарии, приложение 500 создания контента для первого пользователя 502 находится в состоянии с совместно используемым холстом 510. Как проиллюстрировано на фиг. 5A и описано со ссылкой на фиг. 3A, участие некоторого числа пользователей может, опционально, быть представлено с использованием общих указателей 520 присутствия. Например, со ссылкой на фиг. 3A, в процессе 300, пользовательский идентификатор(ы) для любого пользователя, участвующего в совместно используемом холсте рукописного ввода (например, совместно используемом хосте 510), может приниматься (302) функцией присутствия рукописного ввода для приложения 500 создания контента в вычислительном устройстве первого пользователя. Функция присутствия рукописного ввода может получать (304) пользовательскую информацию, ассоциированную с принятым пользовательским идентификатором(ами). Это может быть дополнено, например, коммуникацией со службой каталога. Общие указатели 520 присутствия могут указывать пользователей, которые просматривают совместно используемый холст 510 и не обязательно ограничены пользователями, которые производят или будут производить рукописный ввод на совместно используемом холсте 510.
[0032] Общие указатели 520 присутствия, например, в форме иконок могут визуализироваться (306) в боковой панели или меню. По меньшей мере некоторая из пользовательской информации может отображаться для каждого пользователя, участвующего в совместно используемом холсте 510 рукописного ввода. Хотя общие иконки 520 описаны как генерируемые и администрируемые функцией присутствия рукописного ввода, процесс 300 для общих иконок 520 может выполняться отдельно. Например, процесс 300 может представлять с собой часть приложения ориентированного на сотрудничество создания контента. В других случаях, включение общих иконок 520 (и процесс 300) представляет собой часть функции присутствия рукописного ввода, но только не выполняется той же самой функцией, что и определяющая местоположение для указателя 208 присутствия.
[0033] Со ссылкой на фиг. 5B и 3B, в проиллюстрированном сценарии, один из участников сотрудничества рукописно ввел контент в совместно используемый холст 510 посредством своего пользовательского устройства (не показано). Функция присутствия рукописного ввода приложения 500 создания контента может принимать (310) по меньшей мере точку рукописного ввода для рукописного росчерка и пользовательский идентификатор пользователя, вводящего рукописный росчерк на совместно используемый холст 410, определять (312) область присутствия для пользователя и предлагать (314) местоположение для указателя присутствия рукописного ввода в рендерер на основе определения. Рендерер принимает информацию от диспетчера (например, 108) присутствия. Информация может включать в себя то, где следует поместить иконку и кто является пользователем. Рендерер затем вызывает иконку 522 присутствия на поверхность. Кроме того, диспетчер 108 присутствия может информировать рендерер, чтобы обновить местоположение иконки присутствия, а также информировать рендерер, чтобы удалить более раннюю иконку.
[0034] Диспетчер 108 присутствия или рендерер присутствия (например, объект 106B) может получать пользовательскую информацию, ассоциированную с принятым пользовательским идентификатором(ами). Это может быть осуществлено, например, посредством коммуникации со службой каталога. Например, когда рендереру предписано (диспетчером присутствия) нарисовать иконку присутствия в предложенном местоположении (например, предложенном местоположении 208 на фиг. 2), рендерер (например, объект 206B на фиг. 2) проверяет, доступна ли пользовательская информация. Если нет, рендерер обеспечивает временную иконку с произвольно выбранным подходящим цветом фона, и рендерер асинхронно пытается получить пользовательскую информацию (имя, изображение профиля и т.д.). Когда информация извлечена, эта информация может кэшироваться, так что для любых будущих запросов пользовательской информации (в том же самом сеансе), информация может быстро извлекаться при помощи рендерера. Этот кэш может быть очищен при регистрации выхода пользователя из сеанса совместно используемого холста. Тот же самый процесс может также, в некоторых случаях, выполняться для общих иконок 520, упомянутых выше.
[0035] Каждый идентификатор присутствия может иметь свою собственную уникальную идентификацию. Например, иконка идентификатора присутствия сама может иметь свою собственную идентификацию, а также пользовательский ID, который ассоциирован с ней. Диспетчер присутствия может сообщать идентификатор указателя и пользовательский ID на рендерер вместе с предложенным местоположением. Таким образом, пользователь, который производит рукописный ввод в верхнем правом углу экрана и в нижнем левом углу экрана в то же самое время, может быть представлен двумя разными иконками присутствия для того же самого пользователя. Разумеется, один пользователь может иметь множество иконок присутствия на одной странице.
[0036] Область присутствия относится к части отображения, которое содержит группу рукописных росчерков (и другого близкого контента), которые были введены конкретным пользователем. Область присутствия основана на близости контента. Например, область присутствия может быть основана на ограничивающей рамке принятых точек рукописного ввода. Ограничивающая рамка представляет собой прямоугольник или другую назначенную форму, которая ограничивает росчерк. Ограничивающая рамка может рассматриваться как наиболее компактный квадрат, помещенный вокруг чего–то (однако, некоторые реализации могут добавлять некоторую область). Если два разных пользователя производят рукописный ввод в одной и той же области, существуют две области присутствия для каждого пользователя. В некоторых случаях, если новая точка рукописного ввода оказывается находящейся в двух разных областях присутствия, принадлежащих одному и тому же пользователю, то диспетчер присутствия может выбрать наилучшую область присутствия на основе, например, местоположения или времени последнего росчерка (или его точки), который был добавлен в каждую область присутствия. Разумеется, может существовать множество областей присутствия для пользователя, которые могли бы перекрываться или находиться близко друг к другу. Диспетчер присутствия может сделать выбор между областями присутствия (для назначения точки рукописного ввода) на основе расстояния от последнего росчерка в пределах этой области присутствия, на основе результатов из анализа рукописного ввода, на основе времени (которая область присутствия была последней областью присутствия, которая поглотила росчерк) или их комбинации.
[0037] Расстояния между точками рукописного ввода являются одним способом, которым диспетчер присутствия определяет, находится ли контент в одной и той же области присутствия (и поэтому иконка может оставаться в предложенном местоположении). Однако, когда ширина полосы обработки достаточно велика, чтобы стало возможным анализировать рукописный ввод в пределах времени, которое требуется для визуализации рукописного ввода в реальном времени, анализ рукописного ввода мог бы выполняться, чтобы определить группы рукописных росчерков. Например, анализ рукописного ввода может использоваться, чтобы идентифицировать буквы, слова, предложения, абзацы и/или рисунки из рукописных росчерков. Анализ рукописного ввода может использовать характеристики рукописных росчерков (например, вес, направление, давление, цвет и тому подобное) и в некоторых случаях контекст, чтобы определять группы росчерков.
[0038] Код диспетчера присутствия (например, диспетчера 108 присутствия), при исполнении вычислительным устройством пользователя, может определять, находятся или нет другие рукописные росчерки, ассоциированные с пользовательским идентификатором, на совместно используемом холсте рукописного ввода, определять, находится/находятся или нет новый рукописный росчерк(и) в пределах предопределенного расстояния от предыдущего рукописного росчерка (и/или определенной области присутствия), и определять время с момента, когда был введен последний росчерк. Когда поступает рукописный росчерк от одного пользователя, код (диспетчера присутствия) может определять, расположены ли рукописные росчерки/точки достаточно близко друг к другу, чтобы рассматриваться как часть одной и той же 'области присутствия'. Рукописные росчерки, принятые приложением ориентированного на сотрудничество создания контента, включают в себя по меньшей мере событие начала и событие конца. Если существует множество точек, которые поступают в ту же самую область/участок, иконка присутствия не двигается, поскольку, в некоторых вариантах осуществления, иконка должна появиться в одном месте, в то время как пользователь пишет слово. Диспетчер присутствия может определять, что росчерки очень близки друг к другу (или использовать анализ рукописного ввода) и требуется только одна иконка присутствия, поскольку существует кластер росчерков на близком расстоянии.
[0039] В одной реализации, принятая информация рукописного ввода (например, рукописного ввода collab ink 206A) рассматривается как находящаяся в одной и той же области присутствия для конкретного пользователя, если новые точки рукописного ввода находятся около определенного расстояния (например, 1,5 дюйма) от существующей области присутствия, в направлении x или y. Если не имеется существующей области присутствия для пользователя, то область присутствия основана на ограничивающей рамке точек живого (в реальном времени) рукописного ввода. На основе описанного подхода, если один и тот же пользователь производит рукописный ввод в двух 'разных областях экрана' (с точки зрения пользователя), две иконки присутствия появятся для каждой области присутствия, чтобы привлечь внимание к этим отдельным областям и указать, кто производит рукописный ввод.
[0040] Например, как проиллюстрировано на фиг. 4A, когда информация рукописного ввода (например, пользовательский Id и Collab ink 206 согласно фиг. 2) принята (например, в операции 310 согласно фиг. 3B), диспетчер присутствия (например, 108) может определять (401), ассоциированы ли другие рукописные росчерки с пользовательским идентификатором. Если не существует других рукописных росчерков, принятых ранее этим пользователем, диспетчер присутствия может идентифицировать (402) предложенное местоположение для иконки присутствия как находящееся в пределах определенного расстояния от первой точки рукописного ввода рукописного росчерка. Если существуют другие рукописные росчерки, принятые этим пользователем, диспетчер присутствия может определять (403), находится ли точка рукописного ввода в пределах предопределенного расстояния росчерка, имеющего иконку присутствия. Если существует точка рукописного ввода в пределах предопределенного расстояния, диспетчеру присутствия не требуется обновлять (404) местоположение иконки присутствия для рендерера. Если не существует точки рукописного ввода в пределах предопределенного расстояния, то диспетчер присутствия может идентифицировать (405) предложенное местоположение для иконки присутствия как находящееся в пределах определенного расстояния от первой точки рукописного ввода рукописного росчерка.
[0041] В качестве другого примера операций 312 и 314, как проиллюстрировано на фиг. 4B, когда рукописные росчерки приняты (например, после операции 310), диспетчер присутствия (например, 108) может определять (410), имеется или нет какая–либо существующая область присутствия, ассоциированная с принятым пользовательским Id. В некоторых случаях, операция 410 может выполняться путем идентификации, сохранен ли идентификатор указателя присутствия для конкретного пользовательского идентификатора. В некоторых случаях, операция 410 может выполняться посредством идентификации, существуют ли какие–либо точки рукописного ввода, ассоциированные с конкретным пользовательским идентификатором, которые были приняты и отображены в пределах предопределенного интервала времени. В некоторых случаях, может выполняться комбинация этих этапов.
[0042] Если не имеется существующей области присутствия, диспетчер присутствия создает новую область (412) присутствия. Создание новой области (412) присутствия может включать в себя идентификацию ограничивающей рамки принятой точки рукописного ввода. Ограничивающая рамка может определять новую область присутствия. После определения предложенного местоположения, диспетчер присутствия осуществляет связь с рендерером, чтобы поместить указатель присутствия на некотором предопределенном расстоянии от первой точки (414) рукописного ввода. Если имеется существующая область присутствия, диспетчер присутствия определяет, является ли новая точка рукописного ввода частью какой–либо из существующих областей (416) присутствия. В некоторых случаях, операция 416 включает в себя определение, находится ли точка рукописного ввода в пределах предопределенного расстояния от одной или нескольких точек рукописного ввода в существующей области присутствия или от указателя присутствия рукописного ввода для этой существующей области присутствия. В некоторых случаях, операция 416 включает в себя выполнение анализа рукописного ввода, чтобы определить, связана ли точка рукописного ввода с предыдущей точкой рукописного ввода, анализ рукописного ввода идентифицирует одно или несколько из букв, слов, предложений, абзацев или рисунков. В некоторых случаях, операция 416 представляет собой комбинацию этих процессов.
[0043] Если определено, что новый рукописный ввод не является частью какой–либо существующей области присутствия, диспетчер присутствия создает новую область (412) присутствия и после определения предложенного местоположения осуществляет связь с рендерером, чтобы поместить указатель присутствия на некотором предопределенном расстоянии от первой точки (414) рукописного ввода. Однако если определено, что новый рукописный ввод представляет собой часть существующей области присутствия, диспетчер присутствия может определять, находится ли рукописный ввод в пределах предопределенного расстояния от указателя (418) области присутствия. Если диспетчер присутствия определяет, что рукописный ввод не находится в пределах предопределенного расстояния от указателя области присутствия, диспетчер присутствия обновляет положение указателя (420) присутствия и осуществляет связь с новым предложенным местоположением рендерера. Например, указатель присутствия может сообщать соответствующий идентификатор указателя и пользовательский ID на рендерер вместе с предложенным новым местоположением. Если диспетчер присутствия определяет, что рукописный ввод находится в пределах предопределенного расстояния от указателя области присутствия, то не выполняется обновление для изменения местоположения указателя (422) присутствия.
[0044] Со ссылкой на фиг. 5C, в проиллюстрированном сценарии, на основе принятых рукописных росчерков, иконка 522 присутствия переместилась из первого местоположения 523 во второе местоположение 524. Как показано на виде согласно фиг. 5C, могут быть включены дополнительные указания того, кто пишет. Например, общие иконки 520A присутствия пользователя могут применять визуальный указатель (например, подсвечивание, изменение цвета и т.д.), или маркер 526 может отображаться на иконке 520A присутствия, чтобы способствовать определению, кто является активным участником, в противоположность участнику, который только просматривает совместно используемый холст 510.
[0045] Как упомянуто выше, диспетчер (например, 108) присутствия предоставляет предложенное местоположение на рендерер (например, объект 106B). В некоторых реализациях, код рендеринга рендерера может перемещать или иным образом корректировать иконку присутствия, чтобы учитывать размер иконки или другие факторы в отношении отображения.
[0046] В одной реализации, предложенное первое местоположение присутствия указателя присутствия представляет собой верхний левый угол первой точки в области присутствия. Поскольку первое положение указателя присутствия представляет собой первую точку, последовательное местоположение точек не имеет сильного влияния на наилучшее положение иконки присутствия. В некоторых случаях, в частности, когда контекст указывает, что используются языки, которые записываются справа налево, первое местоположение присутствия указателя присутствия может представлять собой верхний правый угол области присутствия.
[0047] Если область присутствия начинает становиться большей, то может быть выбрано другое местоположение для указателя присутствия. В качестве конкретного примера, если новые точки рукописного ввода для конкретной области присутствия находятся на расстоянии 600 пикселов от предыдущего предложенного местоположения, то указатель присутствия может быть перемещен ближе к новым точкам реального рукописного ввода. Разумеется, должно быть понятно, что возможны другие местоположения, разрешение и размеры.
[0048] Диспетчер присутствия может также осуществлять связь с рендерером, чтобы перемещать иконку присутствия (или другой визуальный указатель), когда условия удовлетворяют событию перемещения. В некоторых реализациях, когда событие конца (например, семантическое событие “конца”) принимается для текущего рукописного росчерка, счетчик может запускаться на x секунд (где x представляет собой число секунд). Если никакие новые точки не появляются в этой области присутствия к концу отсчета счетчика, диспетчер присутствия может определить, что условия удовлетворяют событию удаления, и указатель присутствия следует удалить. Если новая точка текущего рукописного ввода принята диспетчером присутствия, то отсчет счетчика погашается. Это должно дать иллюзию исчезновения указателя присутствия спустя x секунд после того, как пользователь (функции) реального рукописного ввода остановил рукописный ввод в этой области. Если не имеется точек текущего рукописного ввода, поступающих в область присутствия (нет даже события конца) в течение предопределенной величины времени, то иконка присутствия может также сама удаляться (например, диспетчер присутствия может определять, что условие удовлетворяет событию удаления). В некоторых случаях, диспетчер присутствия осуществляет удаление иконки присутствия путем сообщения соответствующего идентификатора указателя и пользовательского ID на рендерер вместе с командой удалить иконку присутствия, идентифицированную соответствующим идентификатором указателя.
[0049] Фиг. 6 иллюстрирует примерный сценарий функции присутствия рукописного ввода, где члены группы сотрудничества имеют дисплеи с разным форм–фактором. Со ссылкой на фиг. 6, первый пользователь 602A может осуществлять сотрудничество на совместно используемом холсте с использованием одного приложения 600A создания контента, и второй пользователь 604A может осуществлять сотрудничество на совместно используемом холсте с использованием другого приложения 600B создания контента, которое имеет больший холст просмотра. Первый пользователь, второй пользователь и третий пользователь показаны рисующими на совместно используемом холсте. Иконка 606 присутствия для третьего пользователя показана в окне просмотра приложения 600A создания контента для первого пользователя 602A и окне просмотра приложения 600B создания контента для второго пользователя 604. Второй пользователь может видеть иконку 602 присутствия первого пользователя 602A посредством области, где первый пользователь 602A пишет на холсте. Однако, из–за разницы в размере окон просмотра, первый пользователь не может видеть записи второго пользователя (например, контент 620). Рендерер для приложения 600A создания контента может представлять местоположение вне экрана посредством вне–экранного указателя 610 с иконкой 604 присутствия второго пользователя 604A.
[0050] Вне–экранный указатель 610 может подходить к краю экрана, чтобы указывать, что некто пишет вне экрана. В некоторых случаях, иконка присутствия могла бы выявлять высказывание, что некто производит рукописный ввод прямо сейчас, и она могла бы иметь функциональность, позволяющую пользователю кликнуть по ней и переместиться туда, где некто произвел рукописный ввод. Диспетчер присутствия может обеспечивать информацию местоположения, чтобы облегчить действие для перемещения в местоположение написания. Например, в ответ на прием указания выбора иконки присутствия (например, касание), пользователю может предоставляться опция выполнить навигацию к текущему рукописному вводу. Рендерер может в некоторых случаях обеспечивать текстовую или графическую информацию в пределах просматриваемой области, чтобы передать, что нечто записывается вне просматриваемой области. Местоположение этого сообщения может находиться на границе просматриваемой области и/или в месте или вокруг общего указателя присутствия пользователя (например, 520 на фиг. 5A).
[0051] Фиг. 7 иллюстрирует компоненты вычислительного устройства, которые могут использоваться в некоторых вариантах осуществления, описанных в настоящем документе.
[0052] Со ссылкой на фиг. 7, система 700 может представлять вычислительное устройство, такое как, но без ограничения, персональный компьютер, считывающее устройство, мобильное устройство, персональный цифровой ассистент, носимый компьютер, смартфон, планшет, портативный компьютер (ноутбук или нетбук), игровое устройство или консоль, развлекательное устройство, гибридный компьютер, настольный компьютер, смарт–телевизор или электронную белую доску или тачскрин с большим форм–фактором. Соответственно, больше или меньше элементов, описанных в отношении системы 700, могут быть включены, чтобы реализовывать конкретное вычислительное устройство.
[0053] Система 700 включает в себя систему 705 обработки из одного или нескольких процессоров для преобразования или управления данными в соответствии с инструкциями программного обеспечения 710, хранящимися на системе 715 хранения.
[0054] Примеры процессоров системы 705 обработки включают в себя универсальные центральные процессоры, графические процессоры, специализированные процессоры и логические устройства, а также любой другой тип устройства обработки, их комбинации или вариации. Система 705 обработки может представлять собой или может быть включена в однокристальную систему (SoC) вместе с одним или несколькими другими компонентами, такими как компоненты сетевой связности, датчики, компоненты отображения видео.
[0055] Программное обеспечение 710 может быть реализовано в программных инструкциях и помимо прочих функций может, при исполнении системой 700 в общем или системой 705 обработки в частности, управлять системой 700 или одним или несколькими процессорами системы 705 обработки, чтобы работать, как описано в настоящем документе.
[0056] Программное обеспечение 710 может включать в себя операционную систему 718 и прикладные программы, такие как приложение 720 создания контента, которое включает в себя признак присутствия рукописного ввода для сотрудничества в реальном времени, как описано в настоящем документе. Операционные системы устройства обычно управляют и координируют функции различных компонентов в вычислительном устройстве, обеспечивая более легкий способ для приложений соединиться с интерфейсами более низкого уровня подобно сетевому интерфейсу. Следует отметить, что операционная система может быть реализована как обычным образом на вычислительном устройстве, так и на уровнях виртуализации программного обеспечения, работающих поверх обычной операционной системы (OS) устройства. Виртуализированные уровни OS, не изображенные на фиг. 7, могут пониматься как дополнительные, вложенные группы в пределах пространства операционной системы, содержащие, каждая, OS, прикладные программы и API.
[0057] Система 715 хранения может содержать любые считываемые компьютером носители хранения, считываемые системой 705 обработки и способные хранить программное обеспечение 710, включая приложение 720 создания контента.
[0058] Система 715 хранения может включать в себя энергозависимые и энергонезависимые блоки памяти, съемные и несъемные носители, реализуемые посредством любого способа или технологии для хранения информации, такие как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Примеры носителей хранения системы 715 хранения включают в себя память с произвольным доступом, постоянную память, магнитные диски, оптические диски, CD, DVD, флэш–память, магнитные кассеты, магнитную ленту, устройства хранения на магнитном диске или другие устройства магнитного хранения или любые другие подходящие носители хранения. В любом случае носитель хранения не является переходным распространяющимся сигналом.
[0059] Система 715 хранения может быть реализована как одно устройство хранения, но может также быть реализована на множестве устройств или подсистем хранения, совместно расположенных или распределенных относительно друг друга. Система 715 хранения может включать в себя дополнительные элементы, такие как контроллер, способные осуществлять связь с системой 705 обработки.
[0060] Система может дополнительно включать в себя систему 730 пользовательского интерфейса, которая может включать в себя устройства и компоненты ввода/вывода (I/O), которые обеспечивают возможность коммуникации между пользователем и системой 700. Система 730 пользовательского интерфейса может включать в себя устройства ввода, такие как мышь, трекпад, клавиатура, сенсорное устройство для приема жеста касания от пользователя, дигитайзер, ассоциированный со стилусом или экраном, устройство ввода движения для обнаружения жестов не–касания и других движений пользователя, микрофон для обнаружения речи и устройства ввода других типов и ассоциированные с ними элементы обработки, способные принимать пользовательский ввод.
[0061] Система 730 пользовательского интерфейса может также включать в себя устройства вывода, такие как экран(ы) отображения, динамики, осязательные устройства для тактильной обратной связи и устройства вывода других типов. В некоторых случаях, устройства ввода и вывода могут комбинироваться в одном устройстве, таком как дисплей с сенсорным экраном, который отображает изображения и принимает жест касания и рукописный ввод пользователя. Сенсорный экран (который может быть ассоциирован с дисплеем или образовывать его часть) представляет собой устройство ввода, сконфигурированное, чтобы обнаруживать наличие и местоположение касания. Сенсорный экран может представлять собой резистивный, емкостной сенсорный экран, сенсорный экран поверхностных акустических волн, инфракрасный сенсорный экран, сенсорный экран оптического изображения, сенсорный экран дисперсного сигнала, сенсорный экран распознавания акустического импульса или может использовать любую другую технологию сенсорного экрана. В некоторых вариантах осуществления, сенсорный экран встроен поверх дисплея как прозрачный слой, чтобы позволять пользователю использовать одно или несколько касаний, чтобы взаимодействовать с объектами или другой информацией, представленной на дисплее.
[0062] Визуальный вывод может отображаться на дисплее (не показан) самыми разными способами, представляя элементы графического пользовательского интерфейса, текст, изображения, видео, уведомления, виртуальные кнопки, виртуальные клавиатуры или информацию какой–либо другого типа, которая может быть представлена в визуальной форме.
[0063] Система 730 пользовательского интерфейса может также включать в себя программное обеспечение пользовательского интерфейса и ассоциированное программное обеспечение (например, для чипов графики и устройств ввода), исполняемое посредством OS при поддержке различных пользовательских устройств ввода и вывода. Ассоциированное программное обеспечение осуществляет поддержку OS в коммуникации событий аппаратных средств пользовательского интерфейса на прикладные программы с использованием определенных механизмов. Система 730 пользовательского интерфейса, включающая в себя программное обеспечение пользовательского интерфейса, может поддерживать графический пользовательский интерфейс, естественный пользовательский интерфейс или любой другой тип пользовательского интерфейса. Например, интерфейсы холста с присутствием рукописного ввода для описанного здесь приложения 720 создания контента могут быть представлены через систему 730 пользовательского интерфейса.
[0064] Сетевой интерфейс 740 может включать в себя соединения связи и устройства, которые обеспечивают возможность связи с другими вычислительными системами по одной или нескольким сетям связи (не показаны). Примеры соединений и устройств, которые совместно обеспечивают возможность связи между системами, могут включать в себя карты сетевых интерфейсов, антенны, усилители мощности, RF схемы, приемопередатчики и другие схемы связи. Соединения и устройства могут осуществлять связь по коммуникационным средам (таким как металл, стекло, воздух или любые другие подходящие коммуникационные среды), чтобы обмениваться сообщениями с другими вычислительными системами или сетями систем. Передачи на/от коммуникационного интерфейса управляются посредством OS, которая информирует приложения о коммуникационных событиях при необходимости.
[0065] Определенные методы, изложенные в настоящем документе в отношении приложения создания контента и/или диспетчера присутствия и/или рендерера, могут быть описаны в общем контексте исполняемых компьютером инструкций, таких как программные модули, исполняемые одним или несколькими процессорами аппаратных средств. Обычно, программные модули включают в себя стандартные программы, программы, объекты, компоненты и структуры данных, которые выполняют конкретные задачи или реализуют конкретные типы абстрактных данных.
[0066] Альтернативно или дополнительно, функциональность, способы и процессы, описанные в настоящем документе, могут быть реализованы, по меньшей мере частично, посредством одного или нескольких модулей аппаратных средств (или логических компонентов). Например, модули аппаратных средств могут включать в себя, но без ограничения, чипы специализированной интегральной схемы (ASIC), программируемые вентильные матрицы (FPGA), однокристальные системы (SoC), сложные программируемые логические устройства (CPLD) и другие программируемые логические устройства, известные сейчас или разработанные позже. Когда модули аппаратных средств активированы, модули аппаратных средств выполняют функциональность, способы и процессы, включенные в модули аппаратных средств.
[0067] Варианты осуществления могут быть реализованы как компьютерный процесс, вычислительная система или как продукт производства, такой как компьютерный программный продукт или считываемый компьютером носитель. Некоторые способы и процессы, описанные в настоящем документе, могут быть воплощены как программное обеспечение, код и/или данные, которые могут храниться на одном или нескольких носителях хранения. Некоторые варианты осуществления изобретения предусматривают использование машины в форме компьютерной системы, в которой набор инструкций во время исполнения может побуждать систему выполнять любую одну или несколько из методологий, рассмотренных выше. Некоторые компьютерные программные продукты могут представлять собой один или несколько считываемых компьютером носителей хранения, считываемых компьютерной системой (и исполняемых системой обработки) и кодирующих компьютерную программу инструкций для исполнения компьютерного процесса. Следует понимать, что, как использовано в настоящем документе, ни в каком случае термины “носители хранения”, “считываемые компьютером носители информации” или “считываемый компьютером носитель информации” не включают в себя переходные распространяющиеся сигналы.
[0068] Хотя заявленное изобретение описано на языке, специфическом для структурных свойств и/или действий, следует понимать, что объем заявленного изобретения, определяемый прилагаемой формулой изобретения, не обязательно ограничен конкретными признаками или действиями, описанными выше, если только не определено иное или это отрицается. Напротив, конкретные признаки и действия, описанные выше, раскрыты в качестве примеров реализации формулы изобретения, и предполагается, что другие эквивалентные признаки и действия входят в объем формулы изобретения.