КОНВЕЙЕР РЕНДЕРИНГА РУКОПИСНОГО ВВОДА С НИЗКИМ ВРЕМЕНЕМ ЗАДЕРЖКИ
HANDWRITTEN INPUT HANDLER WITH LOW DELAY TIME

Уровень техники
[0001] Планшетное вычислительное устройство (или аналогичный тип встроенного устройства) зачастую содержит сенсорный (воспринимающий касание) экран, который обеспечивает возможность пользователю вводить в данные в устройство. Ввод данных пользователем может осуществляться с использованием пальца, мыши, стилуса (или пера) и т.п. Ввод данных от пера (или пальца) в устройство называется "рукописным вводом".
[0002] Рукописный ввода оцифровывается для того, чтобы обеспечивать возможность его обработки и манипуляции посредством вычислительного устройства, а также отображения. Это типично выполняется посредством отправки оцифрованного рукописного ввода в операционную систему на устройстве, обработки посредством процессора рукописного ввода и последующей отправки обработанного рукописного ввода в видеокарту. Видеокарта затем выполняет рендеринг рукописного ввода (который представляет собой эффект воздействия пользователя) на мониторе или дисплее.
[0003] Один недостаток современных технологий рендеринга рукописного ввода заключается во вводимом времени задержки. Перья и пальцы имеют тенденцию быть быстрыми и фактически мгновенными, тогда как рендеринг рукописного ввода имеет тенденцию запаздывать. Фактически, весь процесс рендеринга рукописного ввода может вводить время задержки, которое может составлять любое значение порядка 70-200 миллисекунд или еще больше. Это время задержки в рендеринге рукописного ввода может приводить к медленному и неудобному взаимодействию с пользователем.
[0004] В частности, это время задержки является нежелательным эффектом в том, что оно нарушает воспринимаемый барьер непосредственной манипуляции объектом. Конечно, это главным образом воспринимается в случаях, когда имеется совмещенное взаимодействие. Другими словами, когда ввод и вывод совмещены между собой (к примеру, написание с помощью стилуса на планшетном вычислительном устройстве или сенсорном экране), эффект времени задержки является наибольшим.
Сущность изобретения
[0005] Предусмотрены системы и способы для улучшения времени задержки для отображения рукописного ввода в ходе создания пользователем контента рукописного ввода с помощью стилуса, мыши, пальца (или другого ввода касанием) либо другого рисовального устройства для отслеживания требуемого местоположения для контента рукописного ввода в области отображения. Чтобы уменьшать или минимизировать время для отображения контента рукописного ввода, созданного пользователем с использованием стилуса/мыши/ввода касанием/другого устройства, может использоваться отдельный поток процесса рендеринга рукописного ввода, который работает в операционной системе и параллельно с другими потоками приложений. Когда требуется создавать контент рукописного ввода в приложении, пользовательские взаимодействия, соответствующие созданию контента рукописного ввода, могут обрабатываться посредством отдельного потока процесса рендеринга рукописного ввода. Это позволяет исключать потенциальные задержки в отображении контента рукописного ввода вследствие приложения, обрабатывающего другие события в потоке процесса. Поскольку отдельный поток процесса рендеринга рукописного ввода поддерживает связь с приложением, рендеринг контента рукописного ввода, рендеринг которого выполнялся посредством отдельного процесса рендеринга рукописного ввода, по-прежнему может выполняться с использованием контекста приложения. Это может обеспечивать возможность отображения контента рукописного ввода пользователю с оформлением, практически аналогичным оформлению, которое контент рукописного ввода может иметь после передачи контента рукописного ввода в соответствующее приложение.
[0006] Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерение идентифицировать ключевые или важнейшие признаки заявленного предмета изобретения, а также не имеет намерение изолированно использоваться в качестве помощи при определении объема заявленного предмета изобретения.
Краткое описание чертежей
[0007] Ниже подробно описывается изобретение со ссылкой на прилагаемые чертежи, на которых:
[0008] Фиг. 1 схематично показывает блок-схему последовательности операций способа для взаимосвязи между компонентами для рендеринга контента рукописного ввода с помощью влажных чернил, сформированного пользователем.
[0009] Фиг. 2 схематично показывает блок-схему последовательности операций способа для взаимосвязи между компонентами для рендеринга различных типов контента рукописного ввода.
[0010] Фиг. 3 схематично показывает блок-схему последовательности операций способа для взаимосвязи между компонентами для рендеринга контента рукописного ввода.
[0011] Фиг. 4-6 показывают потоки процессов для рендеринга различных типов контента рукописного ввода.
[0012] Фиг. 7 показывает блок-схему потока связи между процессами для передачи контента рукописного ввода между потоками процесса.
Подробное описание изобретения
Общее представление
[0013] В различных аспектах, предусмотрены системы и способы для улучшения времени задержки для отображения рукописного ввода в ходе создания пользователем контента рукописного ввода с помощью стилуса, мыши, пальца (или другого ввода касанием) либо другого рисовального устройства для отслеживания требуемого местоположения для контента рукописного ввода в области отображения. Чтобы уменьшать или минимизировать время для отображения контента рукописного ввода, созданного пользователем с использованием стилуса/мыши/ввода касанием/другого устройства, может использоваться отдельный поток процесса рендеринга рукописного ввода, который работает в операционной системе и параллельно с другими потоками приложений. Когда требуется создавать контент рукописного ввода в приложении, пользовательские взаимодействия, соответствующие созданию контента рукописного ввода, могут обрабатываться посредством отдельного потока процесса рендеринга рукописного ввода. Это позволяет исключать потенциальные задержки в отображении контента рукописного ввода вследствие приложения, обрабатывающего другие события в потоке процесса. Поскольку отдельный поток процесса рендеринга рукописного ввода поддерживает связь с приложением, рендеринг контента рукописного ввода, рендеринг которого выполнялся посредством отдельного процесса рендеринга рукописного ввода, по-прежнему может выполняться с использованием контекста приложения. Это может обеспечивать возможность отображения контента рукописного ввода пользователю с оформлением, практически аналогичным оформлению, которое контент рукописного ввода может иметь после передачи контента рукописного ввода в соответствующее приложение.
[0014] В различных аспектах, системы и способы, описанные в данном документе, также могут обеспечивать возможность непрерывного отображения нового контента рукописного ввода, созданного пользователем, в ходе перехода обработки контента рукописного ввода между потоками процесса. Когда создание данной части нового контента рукописного ввода считается завершенным, рендеринг завершенного контента может передаваться в поток процесса для соответствующего приложения. С момента, когда создание конкретной части контента рукописного ввода завершается, сложности в силу времени задержки для нового контента рукописного ввода более не представляют собой проблему. Как результат, дополнительный рендеринг может выполняться посредством потока процесса соответствующего приложения с уменьшенной или минимизированной проблемой для времени задержки в отображении завершенного контента. Чтобы дополнительно улучшать взаимодействие с пользователем, передача отображения завершенного контента из потока рендеринга рукописного ввода в соответствующий поток процесса приложения может синхронизироваться. Это может обеспечивать возможность отображения контента практически непрерывным способом при исключении периода времени, в течение которого оба потока процесса пытаются отображать контент рукописного ввода. Аспекты изобретения также могут предотвращать ситуацию, когда ни один процесс не пытается отображать контент рукописного ввода. Другими словами, в аспекте изобретения, один или другой процесс может отображать контент рукописного ввода, но не оба одновременно.
[0015] Одна из сложностей с рендерингом контента рукописного ввода, созданного пользователем, заключается в достаточно быстром отображении контента рукописного ввода, так что кажется, что действия пользователя приводят к отображению контента рукописного ввода. Выше определено, что пользователи могут воспринимать задержки в реакции на пользовательские действия для создания контента рукописного ввода, которые составляют всего приблизительно 50 миллисекунд или меньше. Когда задержка в отображении контента рукописного ввода, создаваемого пользователем, является видимой, задержка может нарушать взаимодействие с пользователем, поскольку создание контента более не может иметь ощущения создания рукописного ввода с использованием физического пера на поверхности для написания. К сожалению, попытка отображать контент рукописного ввода с использованием потока процесса для приложения, в котором создается контент рукописного ввода, может приводить к нежелательным периодам задержки. Это обусловлено этим фактом, что типовое приложение не имеет возможности приоритезировать действия, связанные с контентом рукописного ввода, в потоке процесса приложения относительно других действий, выполняемых посредством приложения.
[0016] В качестве альтернативы, рендеринг контента рукописного ввода может полностью отделяться от операционной системы. Это может обеспечивать возможность отображения нового контента рукописного ввода, созданного пользователем с использованием аппаратных и/или программных признаков, которые обходят операционную систему и вместо этого непосредственно отображают новый рукописный ввод в области отображения. После создания нового контента рукописного ввода, новый контент рукописного ввода затем передается в операционную систему, в которой могут применяться любые модификации признаков отображения таким образом, что рендеринг контента рукописного ввода выполняется в контексте, предоставленном посредством соответствующего приложения. Хотя этот тип способа может уменьшать время задержки в отображении нового контента рукописного ввода, начальное отображение нового контента рукописного ввода может отличаться от конечного рендеринга контента.
[0017] В некоторых аспектах, преимущество систем и способов, описанных в данном документе, заключается в повышении производительности компьютера, чтобы уменьшать время задержки для отображения контента рукописного ввода. Такое повышение также может приводить к расширенным возможностям работы пользователей в ходе создания контента рукописного ввода.
[0018] В различных аспектах, системы и способы, описанные в данном документе, могут обеспечивать возможность пользователю создавать ввод с помощью рукописного ввода с использованием устройства ввода, такого как стилус, сенсорный интерфейс для приема ввода касанием, мышь или другое устройство, которое может управлять перемещением курсора в области отображения. Желание пользователя создавать контент рукописного ввода может определяться или обнаруживаться на основе контекста для действий пользователя. Может задаваться контекст действия, который соответствует действиям для создания контента рукописного ввода. Контекст ввода для пользовательского действия затем может обнаруживаться и сравниваться с контекстом действия, чтобы определять то, представляет собой действие ввода или нет действие создания рукописного ввода.
[0019] Один тип контекста может представлять собой характер самого устройства ввода. Это может упоминаться в качестве модального контекста, который может обнаруживаться на основе взаимодействия стилуса с поверхностью; взаимодействия пальца или другой формы с поверхностью для ввода касанием; перемещения значка курсора (или другого идентификатора курсора) с использованием мыши; и/или любого другого удобного устройства.
[0020] Второй тип контекста может представлять собой контекст местоположения. Необязательно, вся область отображения дисплея, сенсорная поверхность, клавишная панель ввода или другой тип пользовательского интерфейса может быть готов к приему контента рукописного ввода в любое время. В этом типе опции, действия пользователя могут обнаруживаться в качестве действий создания рукописного ввода на основе просто модального контекста и/или на основе других типов контекста, отличающегося от контекста местоположения. Альтернативно, одна или более зон в пользовательском интерфейсе (к примеру, в области отображения пользовательского интерфейса) могут идентифицироваться в качестве зон, в которых может приниматься контент рукописного ввода. В этом типе опции, пользовательское действие обнаруживается в качестве действия создания рукописного ввода на основе комбинации модального контекста и контекста местоположения. Зоны для потенциального приема контента рукописного ввода могут быть предварительно заданы посредством операционной системы для устройства; предварительно заданы посредством приложения, выполняющегося на устройстве; или созданы на основе определений для одной или более зон пользователем.
[0021] Третий тип контекста может представлять собой контекст создания рукописного ввода. Одна опция может состоять в том, чтобы интерпретировать любое пользовательское действие, имеющее выбранный модальный контекст и/или контекст местоположения, в качестве действия создания рукописного ввода. Альтернативно, определение того, что пользовательское действие представляет собой действие создания рукописного ввода, может зависеть от обнаружения конкретного типа пользовательского действия, такого как один одиночное быстрое прикосновение/щелчок или двойное быстрое прикосновение/щелчок с помощью устройства ввода, чтобы инициировать создание контента рукописного ввода. Такие указанные действия могут соответствовать контексту создания рукописного ввода. Следует отметить, что контекст создания рукописного ввода может варьироваться в зависимости от того, инициировал или нет пользователь ранее создание рукописного ввода. Например, дополнительные действия пользователем, такие как перемещение устройства ввода или курсора, могут быть интерпретированы в качестве действий создания рукописного ввода после того, как создание рукописного ввода инициировано, и до тех пор, пока не будет обнаружено действие, которое завершает создание рукописного ввода, такое как снятие устройства с поверхности ввода.
[0022] Аспекты изобретения не ограничены тремя контекстами, описанными выше. Возможны другие контексты.
[0023] На основе модального контекста, контекста местоположения, контекста действия и/или любых других типов контекста, используемых для определения того, представляет собой пользовательское действие или нет действие создания рукописного ввода, действия пользовательского ввода могут тестироваться на предмет контекста, чтобы определять то, представляют собой пользовательские действия или нет действия создания рукописного ввода. Если действия ввода представляют собой действия создания рукописного ввода, действия ввода могут маршрутизироваться в отдельный поток процесса, к примеру, в поток рендеринга рукописного ввода, для рендеринга контента рукописного ввода, создаваемого пользователем. Действия, которые не удовлетворяют условиям контекста, могут передаваться в приложение и/или операционную систему для обработки в традиционном потоке процесса для обработки действий пользовательского ввода. Хотя тестирование действий ввода может вызывать краткую задержку для того, чтобы определять характер действий ввода, существенное уменьшение времени задержки может достигаться (к примеру, десятки миллисекунд) на основе использования отдельного потока процесса для рендеринга контента рукописного ввода по мере того, как он создается пользователем. Этот тип тестирования иногда может упоминаться как "тестирование столкновения". В одном аспекте изобретения, тестирование столкновения не осуществляется. Вместо этого, рукописный ввод формируется на основе контакта и отображается без тестирования столкновения (и без результирующей задержки). Если оказывается, что ввод не удовлетворяет контексту осуществления рукописного ввода, то процесс рендеринга рукописного ввода отменяется, и отображаемый рукописный ввод с помощью влажных чернил удаляется.
[0024] Одна потенциальная проблема с обработкой контента рукописного ввода в отдельном потоке процесса рендеринга рукописного ввода из базового приложения заключается в том, что новый контент рукописного ввода должен в конечном счете передаваться (или синхронизироваться) в базовое приложение. В различных аспектах, предусмотрены системы и способы, которые обеспечивают возможность осуществления этой передачи при уменьшении или минимизации изменений отображаемого контента рукописного ввода (включающих в себя временную потерю отображения) и/или уменьшении или минимизации двойного отображения контента посредством обоих потоков процесса. Это может предоставлять выгоду как по производительности устройства, так и по результирующему взаимодействию с пользователем.
Определения
[0025] В нижеприведенном пояснении, примеры систем и способов согласно изобретению могут примерно иллюстрироваться с использованием операционного окружения на основе операционного окружения Microsoft™. Дополнительно, конкретные термины используются для простоты ссылки в описании различных аспектов. Следующие явные определения предоставляются для того, чтобы помогать в понимании различных аспектов.
[0026] Рукописный ввод с помощью влажных чернил: Рукописный ввод, рендеринг которого выполняется в то время, пока черта рукописного фрагмента находится в процессе выполнения, т.е. в то время, когда контакт (например, перо) еще не снят с поверхности. В различных аспектах, рукописный ввод с помощью влажных чернил может преобразовываться или заменяться рукописным вводом с помощью полусухих чернил или рукописным вводом с помощью сухих чернил. Процесс преобразования может продолжаться в течение определенного периода времени после того, как перо снято с поверхности. Подготовленный посредством рендеринга рукописный ввод остается рукописным вводом с помощью влажных чернил до тех пор, пока не будет заменен рукописным вводом с помощью полусухих чернил или рукописным вводом с помощью сухих чернил. В различных аспектах, рендеринг рукописного ввода с помощью влажных чернил выполняется в отдельном потоке рендеринга рукописного ввода.
[0027] Рукописный ввод с помощью сухих чернил: Рукописный ввод, рендеринг которого выполняется или рендеринг которого выполняется повторно после того, как черта рукописного фрагмента завершена, либо рукописный ввод, рендеринг которого выполняется из данных рукописного ввода, загружаемых из источника (сохраненного контента рукописного ввода), отличного от ввода.
[0028] Рукописный ввод с помощью полусухих чернил: Рукописный ввод в промежуточном слое, ожидающий синхронизации со слоем рукописного ввода с помощью сухих чернил. В различных аспектах, рендеринг рукописного ввода с помощью полусухих чернил может выполняться в отдельном потоке процесса рендеринга рукописного ввода.
[0029] Синхронизация рукописных вводов с помощью влажных/сухих чернил: Механизм для того, чтобы обеспечивать возможность рендеринга и обеспечения видимости рукописного ввода с помощью сухих чернил в потоке рендеринга рукописного ввода с помощью сухих чернил и очистки рукописного ввода с помощью влажных чернил в потоке рендеринга рукописного ввода таким способом, который может обеспечивать то, что a) рукописный ввод с помощью влажных чернил не является по-прежнему видимыми, когда соответствующий рукописный ввод с помощью сухих чернил становится видимым; b) рукописный ввод с помощью влажных чернил не исчезает до того, как соответствующий рукописный ввод с помощью сухих чернил становится видимыми; и c) поток рендеринга рукописного ввода никогда не блокируется от обработки ввода и рендеринга дополнительного рукописного ввода с помощью влажных чернил.
[0030] Хост: Базовое приложение или инфраструктура, в которой часть нового контента рукописного ввода создается пользователем.
[0031] Хост-поток: Поток процесса для базового приложения или пользовательского интерфейса.
[0032] Поток рендеринга рукописного ввода: Фоновый поток (предпочтительно созданный в операционной системе), в котором ввод выбранных типов принимается и обрабатывается, чтобы выполнять рендеринг рукописного ввода с помощью влажных чернил. Следует отметить, что этот поток совместно используется посредством всех экземпляров для рендеринга рукописного ввода с помощью влажных чернил в процессе.
[0033] Поток рендеринга рукописного ввода с помощью сухих чернил: Поток, в котором данные рукописного ввода доставляются в компонент или поток рендеринга. В одном аспекте, хост-поток представляет собой поток рендеринга, но возможны другие опции, включающие в себя выделенный поток рендеринга рукописного ввода.
[0034] Перенаправление ввода: Механизм для того, чтобы регистрироваться в стеке ввода с тем, чтобы иметь ввод, совпадающий с заданными характеристиками (такой как ввод для создания рукописного ввода с помощью влажных чернил), автоматически маршрутизируемый в указанный поток вместо, по умолчанию, UI-потока. В различных аспектах, заданные характеристики могут соответствовать модальности ввода, такой как использование стилуса, пальца (или другого ввода касанием) либо другого устройства ввода, подходящего для создания рукописного ввода с помощью влажных чернил. В различных аспектах, заданные характеристики дополнительно могут указывать использование такого устройства ввода в части пользовательского интерфейса, которая задана для приема ввода с помощью рукописного ввода с помощью влажных чернил.
[0035] Диспетчер рукописного ввода: Класс среды выполнения Windows. Он предоставляет свойства и способы для того, чтобы управлять вводом, манипуляцией и обработкой (включающей в себя распознавание рукописного текста) одного или более объектов рукописного ввода.
[0036] D2D: Direct2D. Аппаратно-ускоренный двумерный графический API с немедленным режимом, который предоставляет высокопроизводительный и высококачественный рендеринг для двумерной геометрии, битовых карт и текста. Он разработан с возможностью поддерживать взаимодействие с другой технологией рендеринга, такой как DirectSD.
[0037] D3D: Direct3D. Низкоуровневый API для рисования примитивов с помощью конвейера рендеринга или выполнения параллельных операций с помощью вычислительного формирователя теней. Он маскирует различные GPU-реализации в когерентной абстракции и разработан с возможностью управлять работой специализированных графических процессоров.
[0038] DComp: DirectComposition. Компонент Windows, который предоставляет высокопроизводительное составление битовой карты с преобразованиями, эффектами и анимациями. Он может комбинировать битовые карты из множества источников и использовать диспетчер окон рабочего стола (DWM) для рендеринга на экране.
[0039] DXGI: Графическая инфраструктура Microsoft DirectX. Она управляет низкоуровневыми задачами, которые могут быть независимыми от графической среды выполнения Direct3D. Она также предоставляет общую инфраструктуру для нескольких версий DirectSD.
Поток процесса для обработки контента рукописного ввода
[0040] Фиг. 1 показывает пример потока процесса для рендеринга контента рукописного ввода с помощью влажных чернил с использованием отдельного потока процесса рендеринга рукописного ввода. В потоке процесса, показанном на фиг. 1, пользователь может использовать аппаратный компонент, такой как мышь, стилус, перо или сенсорный интерфейс (для приема ввода касанием), для того чтобы предоставлять действия ввода для создания контента рукописного ввода с помощью влажных чернил. Аппаратные средства 102 ввода могут передавать этот ввод в драйверы 104 оборудования и в конечном счете в тестер 110 ввода. Тестер ввода может оценивать контекст для действий ввода, включающий в себя характер аппаратных средств и/или местоположение внутри дисплея, ассоциированное с действиями ввода, чтобы определять то, соответствуют или нет действия ввода действиям для создания контента рукописного ввода с помощью влажных чернил.
[0041] Если пользовательские действия соответствуют созданию контента рукописного ввода с помощью влажных чернил, действия ввода отклоняются в поток 120 процесса рендеринга рукописного ввода с помощью влажных чернил. Как показано на фиг. 1, поток 120 процесса рендеринга рукописного ввода с помощью влажных чернил обрабатывает только ограниченное число действий, что позволяет уменьшать или минимизировать потенциал для задержек в обработке действия рендеринга рукописного ввода с помощью влажных чернил. Это отличается от нескольких типов действий, обрабатываемых посредством общего потока 130 пользовательского интерфейса и/или процесса приложения. Например, только относительно обработки контента рукописного ввода, поток 130 пользовательского интерфейса и/или процесса приложения может: предоставлять интерфейсы 132 прикладного программирования для общего отображения контента рукописного ввода; предоставлять интерфейсы 134 прикладного программирования для дополнительной обработки контента рукописного ввода, к примеру, распознавания рукописного текста; принимать ввод 136 для момента, когда добавлены черты рукописного фрагмента, так что результирующий контент рукописного ввода может отображаться; и обрабатывать отображение ранее созданного контента 138 рукописного ввода с помощью сухих чернил, к примеру, преобразованного в последовательную форму контента рукописного ввода.
[0042] После приема ввода с помощью рукописного ввода с помощью влажных чернил, поток 120 процесса рендеринга рукописного ввода с помощью влажных чернил может выполнять рендеринг 124 контента рукописного ввода с помощью влажных чернил и передавать подготовленный посредством рендеринга контент обратно в графические элементы обработки операционной системы, такие как модуль 150 составления. В конечном счете, подготовленный посредством рендеринга рукописный ввод с помощью влажных чернил передается в аппаратные графические элементы 160 отображения для отображения пользователю.
[0043] Система с использованием потока процесса, как показано на фиг. 1, может предоставлять множество преимуществ. Например, этот тип потока процесса может предоставлять рендеринг рукописного ввода с помощью влажных чернил с низким временем задержки, который является независимым от потока приложения/UI, т.е. ввод протекает непосредственно в фоновый поток с высоким приоритетом (поток рендеринга рукописного ввода с помощью влажных чернил, показанный на фиг. 1) и никогда не блокируется посредством действий потока UI/приложения. Необязательно, но предпочтительно, система может использовать алгоритмы Безье для рукописного ввода с помощью влажных чернил, которые хорошо работают для типов пера по умолчанию, а также прогнозирование для того, чтобы сокращать время задержки на 15 мс или более относительно традиционной системы. Эта система также может быть совместимой с моделированием давления для изменения характеристик рукописного ввода. Дополнительно, частично на основе потока процесса рендеринга рукописного ввода с помощью влажных чернил, выполняемого в операционной системе, поток процесса рендеринга рукописного ввода с помощью влажных чернил может выполнять рендеринг курсора-пера, который совпадает с атрибутами осуществления рукописного ввода (цвет, форма, размер, тип и т.д.).
[0044] Фиг. 2 показывает другой поток процесса, который включает в себя потоки процесса для отображения как рукописного ввода с помощью влажных чернил (т.е. рукописного ввода в ходе процесса создания пользователем), так и рукописного ввода с помощью сухих чернил (т.е. контента рукописного ввода, ранее введенного пользователем и/или полученного из источника данных). В потоке процесса на фиг. 1, рендеринг контента рукописного ввода, созданного пользователем, может выполняться посредством потока процесса рендеринга рукописного ввода с помощью влажных чернил после того, как заканчивается создание контента рукописного ввода. Рендеринг контента рукописного ввода с помощью сухих чернил на фиг. 1 соответствует рендерингу ранее заданного контента рукописного ввода с помощью сухих чернил, такого как контент, извлеченный из исходного файла. На фиг. 2, показаны дополнительные потоки, чтобы обеспечивать возможность передачи контента рукописного ввода, созданного пользователем, из потока процесса рендеринга рукописного ввода с помощью влажных чернил в пользовательский интерфейс/приложение/другой поток для рендеринга контента рукописного ввода с помощью сухих чернил.
[0045] На фиг. 2, поток 120 рендеринга рукописного ввода с помощью влажных чернил может обмениваться данными с потоком 130 пользовательского интерфейса (и необязательным отдельным потоком 233 рендеринга рукописного ввода с помощью сухих чернил) через компоненты, которые обмениваются данными с обоими потоками. Эти компоненты могут включать в себя компонент 242 синхронизации рукописного ввода, который синхронизирует передачу рукописного ввода с помощью влажных чернил из потока 120 рендеринга рукописного ввода с помощью влажных чернил в поток 130 пользовательского интерфейса. Компоненты также могут включать в себя диспетчер 246 фиксации, который предоставляет верификацию для компонентов в отношении того, что передача завершена. Например, диспетчер 246 фиксации может информировать поток 130 пользовательского интерфейса, когда преобразование из рукописного ввода с помощью влажных чернил в промежуточный рукописный ввод (или рукописный ввод с помощью влажных чернил) завершено посредством потока 120 рендеринга рукописного ввода с помощью влажных чернил. Аналогично, диспетчер 246 фиксации может информировать поток 120 рендеринга рукописного ввода с помощью влажных чернил, когда поток 130 пользовательского интерфейса начинает рендеринг передаваемого контента рукописного ввода с помощью сухих чернил, так что поток 120 рендеринга рукописного ввода с помощью влажных чернил может прекращать рендеринг соответствующего контента промежуточного рукописного ввода.
Взаимосвязи компонентов
[0046] Фиг. 3 показывает взаимосвязи между различными компонентами, которые могут использоваться для рендеринга созданного пользователем контента рукописного ввода (рукописного ввода с помощью влажных чернил), а также передачи рукописного ввода с помощью влажных чернил из отдельного потока рендеринга рукописного ввода в поток процесса, ассоциированный с приложением. На фиг. 3, хост-приложение 310 или другая инфраструктура (включающая в себя потенциально операционную систему) может обмениваться данными через один или более интерфейсов 320 прикладного программирования с полным модулем 330 DirectInkCore. Интерфейсы 320 прикладного программирования, показанные на фиг. 3, включают в себя интерфейсы ввода и интерфейсы обработки рукописного ввода. Когда ввод принимается посредством хоста 310, который обнаруживается в качестве ввода с помощью рукописного ввода с помощью влажных чернил (или другого типа ввода, который должен обрабатываться посредством потока процесса рендеринга рукописного ввода с помощью влажных чернил), ввод передается в модуль 330.
[0047] Объект 332 реализации DirectInkCore представляет собой контейнерный объект, который создает и координирует большинство других объектов, показанных в модуле 330. Модуль 342 упорядочения владеет потоком рендеринга рукописного ввода и реализует механизм для уведомлений между потоками, изолирующий механизм уведомлений от других компонентов. Объект 336 управления контекстом ввода представляет собой объект-приемник ввода, который регистрируется для перенаправления ввода и принимает ввод в потоке рендеринга рукописного ввода. Объект 346 синхронизации рукописных вводов представляет собой механизм синхронизации, который реализует механизм для синхронизации рукописных вводов с помощью влажных/сухих чернил. Диспетчер 352 фиксации представляет собой совместно используемый объект, который выполняет DComp-фиксации и изолирует другие компоненты от сведений из уведомления о завершении DComp-фиксации. Диспетчер 370 рендеринга отслеживает экземпляры модуля рендеринга, которые должны использоваться для влажных, полусухих и сухих слоев, и маршрутизирует запросы на рендеринг в надлежащий экземпляр модуля рендеринга. Диспетчер 370 рендеринга также может создавать экземпляры модуля рендеринга по умолчанию по мере необходимости и управляет пользовательскими экземплярами модуля рендеринга по мере необходимости. Модуль 372 рендеринга представляет собой высокоуровневый объект модуля рендеринга. Реализация 374 модуля рендеринга представляет собой низкоуровневый объект модуля рендеринга, который, с учетом поверхности/контекста, данных рукописного ввода и атрибутов рисования, выполняет фактический рендеринг. Модуль 376 моделирования рукописного ввода создает сглаженные сегменты Безье из ввода, необязательно с прогнозированием.
[0048] Объект 340 данных дерева рукописного ввода представляет собой объект данных, который создает и поддерживает визуальное DComp-поддерево, представляющее поддерево рукописного ввода для DirectInkCore-экземпляра вместе с ассоциированными данными рукописного ввода для влажных, полусухих и сухих слоев.
[0049] Фиг. 4 показывает поток данных для обработки поступления ввода, соответствующего рукописному вводу с помощью влажных чернил, и рендеринга ввода с помощью рукописного ввода с помощью влажных чернил. На фиг. 4, ввод, который идентифицируется в качестве рукописного ввода с помощью влажных чернил, доставляется посредством системного стека 410 ввода в компонент 420 управления контекстом ввода. Ввод необязательно может передаваться в любые подключаемые модули 425 ввода. Ввод также передается в компонент 430 синхронизации рукописного ввода. Синхронизация 430 рукописного ввода может передавать информацию в компонент 440 данных дерева рукописного ввода в отношении того, что создается новый контент рукописного ввода с помощью влажных чернил. Синхронизация рукописного ввода также может инструктировать диспетчеру 450 рендеринга выполнять рендеринг рукописного ввода с помощью влажных чернил. В завершение, когда ввод контента рукописного ввода завершается, синхронизация 430 рукописного ввода может уведомлять диспетчер 460 фиксации.
[0050] Фиг. 5 показывает поток данных для рендеринга промежуточного рукописного ввода или рукописного ввода с помощью полусухих чернил после завершения ввода части контента рукописного ввода пользователем. На фиг. 5, поток данных начинается, когда компонент 430 синхронизации рукописного ввода уведомляет данные 40 дерева рукописного ввода в отношении того, что создание части контента рукописного ввода завершено, так что часть контента рукописного ввода может перемещаться из состояния рукописного ввода с помощью влажных чернил в состояние промежуточного рукописного ввода. Диспетчер 450 рендеринга затем может принимать инструкцию, чтобы выполнять рендеринг завершенной части контента рукописного ввода с использованием экземпляра модуля рендеринга промежуточного рукописного ввода или рукописного ввода с помощью полусухих чернил, что позволяет экземпляру модуля рендеринга рукописного ввода с помощью влажных чернил быть подготовленным к другому событию создания контента рукописного ввода. После уведомления диспетчера 460 фиксации, в модуль 470 упорядочения может передаваться уведомление в отношении того, что рукописный ввода доступен для передачи в поток процесса рендеринга рукописного ввода с помощью сухих чернил, который управляется посредством хост-приложения или базового приложения.
[0051] Фиг. 6 показывает процесс поток для (синхронизированной) передачи рукописного ввода из потока процесса рендеринга рукописного ввода с помощью влажных чернил в поток процесса рендеринга рукописного ввода с помощью сухих чернил. На фиг. 6, синхронизация 430 рукописных вводов принимает сигнал доступности рукописного ввода из модуля 470 упорядочения. Синхронизация 430 рукописных вводов затем информирует данные 40 дерева рукописного ввода в отношении необходимости копировать контент рукописного ввода из состояния перехода от рукописного ввода с помощью полусухих чернил к рукописному вводу с помощью сухих чернил. Информация черты для рендеринга рукописного ввода в качестве рукописного ввода с помощью сухих чернил передается с использованием обратного вызова 672 по рендерингу рукописного ввода в обработчик 680 рукописного ввода. Контент рукописного ввода также передается в диспетчер 450 рендеринга для рендеринга с помощью экземпляра модуля рендеринга рукописного ввода с помощью сухих чернил. После того, как он завершается, синхронизация 430 рукописных вводов уведомляет данные 40 дерева рукописного ввода в отношении того, что версия рукописного ввода с помощь полусухих чернил контента рукописного ввода может маскироваться, так что поток рендеринга рукописного ввода с помощью влажных чернил более не обрабатывает контент рукописного ввода.
[0052] Фиг. 7 показывает поток связи между DComp-экземплярами для потока рендеринга рукописного ввода с помощью влажных чернил (рукописного ввода) и для потока рендеринга рукописного ввода с помощью сухих чернил (хост). Поток связи на фиг. 7 показывает то, как перенос рукописного ввода с помощью влажных чернил в рукописный ввод с помощью сухих чернил может синхронизироваться, чтобы уменьшать или минимизировать время, когда поток рендеринга рукописного ввода с помощью сухих чернил и поток рендеринга рукописного ввода с помощью влажных чернил пытаются отображать контент рукописного ввода при недопущении неоднородностей в отображении контента рукописного ввода.
[0053] На фиг. 7, поток 703 рендеринга рукописного ввода инициирует вызовы посредством начала процесса 710 перемещения данных по переходу от рукописного ввода с помощью влажных чернил к рукописному вводу с помощью полувлажных чернил. DComp-компонент 701 получает подтверждение через поток рендеринга рукописного ввода с вызовами 712 фиксации. Вызов 714 доступности рукописного ввода затем передается в хост-поток 706. Хост-поток 706 инициирует вызов 716 для копирования данных по переходу от рукописного ввода с помощью полусухих чернил к рукописному вводу с помощью сухих чернил, чтобы перемещать данные в дереве рукописного ввода. После того, как это копирование завершено, также выполняется вызов 718, чтобы маскировать данные рукописного ввода с помощью полусухих чернил. Переход от рукописного ввода с помощью полусухих чернил к рукописному вводу с помощью сухих чернил подтверждается через DComp-хост-поток 708 с вызовами 722 фиксации. Вызов 724 затем возвращает в поток 703 рендеринга рукописного ввода то, что перенос рукописного ввода с помощью полусухих чернил в рукописный ввод с помощью сухих чернил закончен. Рендеринг рукописного ввода с помощью полусухих чернил посредством потока рендеринга рукописного ввода с помощью влажных чернил затем очищается 726 с подтверждением через вызовы 732 фиксации. Вызов 734 относительно очистки рукописного ввода с помощью полусухих чернил затем передается в хост-поток 706.
Дополнительные примеры
[0054] После краткого описания общего представления различных вариантов осуществления изобретения, далее описывается примерное операционное окружение, подходящее для выполнения изобретения. Варианты осуществления изобретения могут описываться в общем контексте компьютерного кода или используемых компьютером инструкций, включающих в себя исполняемые компьютером инструкции, такие как программные модули, выполняемые посредством компьютера или другой машины, такой как персональное цифровое устройство или другое карманное устройство. Как правило, программные модули включают в себя алгоритмы, программы, объекты, компоненты, структуры данных и т.д., называемые "кодом", которые выполняют отдельные задачи или реализуют отдельные абстрактные типы данных. Изобретение может осуществляться на практике во множестве конфигураций системы, включающих в себя карманные устройства, бытовую электронную аппаратуру, компьютеры общего назначения, более специализированные вычислительные устройства и т. п. Изобретение также может осуществляться на практике в распределенных вычислительных окружениях, в которых задачи выполняются посредством удаленных устройств обработки, которые связаны через сеть связи.
[0055] Подходящее вычислительное устройство может включать в себя шину, которая прямо или косвенно соединяет следующие устройства: запоминающее устройство, один или более процессоров, один или более компонентов представления, порты ввода-вывода, компоненты ввода-вывода и источник питания. Шина представляет то, что может составлять одну или более шин (к примеру, адресную шину, шину данных или комбинацию вышеозначенного). Хотя различные компоненты описываются как отдельные компоненты для понятности, фактически, разделение различных компонентов не является настолько очевидным, и метафорически более точно, линии должны быть серыми и нечеткими. Например, можно считать, что компонент представления, такой как устройство отображения, должен представлять собой компонент ввода/вывода. Дополнительно, множество процессоров имеют запоминающее устройство. Различие между такими категориями, как "рабочая станция", "сервер", "переносной компьютер", "карманное устройство", "планшетный компьютер" и т.д., не проводится, поскольку все из них предполагаются в пределах объема "вычислительного устройства".
[0056] Компьютерные носители хранения данных включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители хранения данных включают в себя, но не только, оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), электронно-стираемое программируемое постоянное запоминающее устройство (EEPROM), флэш-память или другую технологию запоминающих устройств, CD-ROM, универсальные цифровые диски (DVD) или другое голографическое запоминающее устройство, магнитные кассеты, магнитную ленту, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любой другой носитель, который может использоваться для того, чтобы кодировать требуемые данные, и к которому может осуществляться доступ посредством вычислительного устройства 100. В варианте осуществления, компьютерные носители хранения данных могут выбираться из материальных компьютерных носителей хранения данных, таких как флэш-память. Эти технологии запоминающих устройств могут сохранять данные мгновенно, временно или постоянно. Компьютерное устройство хранения данных не включает в себя и исключает среды связи. Компьютерные носители хранения данных являются энергонезависимыми и исключают распространяемые сигналы данных.
[0057] С другой стороны, среды связи типично осуществляют машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как несущая или другой транспортный механизм, и включают в себя любые среды доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или более характеристик, заданных или измененных таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среды связи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (RF), инфракрасные и другие беспроводные среды.
[0058] Запоминающее устройство может включать в себя машиночитаемые носители в форме энергозависимого и/или энергонезависимого запоминающего устройства. Запоминающее устройство может быть съемным, несъемным или комбинацией означенного. Примерные аппаратные устройства включают в себя полупроводниковое запоминающее устройство, накопители на жестких дисках, накопители на оптических дисках и т.д. Вычислительное устройство может включать в себя один или более процессоров, которые считывают данные из различных объектов, таких как запоминающее устройство или компоненты ввода-вывода. Компонент(ы) представления представляют индикаторы данных пользователю или в другое устройство. Примерные компоненты представления включают в себя устройство отображения, динамик, печатающий компонент, вибрирующий компонент и т. п.
[0059] Порты ввода-вывода могут обеспечивать возможность логического соединения вычислительного устройства с другими устройствами, включающими в себя компоненты ввода-вывода, некоторые из которых могут быть встроенными. Иллюстративные компоненты могут включать в себя микрофон, джойстик, игровой планшет, спутниковую антенну, сканер, принтер, беспроводное устройство и т.д. Компоненты ввода-вывода могут включать в себя компоненты, которые принимают один или более типов ввода из множества типов ввода, таких как ввод касанием (например, касание или приближение к интерфейсу отображения, в отличие от косвенного перемещения на дисплее на основе взаимодействия с клавиатурой или мышью), ввод с помощью жестов, тактильный ввод, голосовой ввод, бесконтактный ввод, взаимодействие со вторичным устройством ввода, таким как устройства ввода, идентифицированные выше, либо любой другой удобный тип ввода.
[0060] Вычислительное устройство может включать в себя радиостанцию. Радиостанция передает и принимает радиосвязь. Вычислительное устройство может представлять собой беспроводной терминал, адаптированный с возможностью принимать связи и мультимедиа по различным беспроводным сетям. Вычислительное устройство 1100 может обмениваться данными через беспроводные протоколы, такие как множественный доступ с кодовым разделением каналов (CDMA), глобальная система мобильной связи (GSM) или множественный доступ с временным разделением каналов (TDMA), а также другие, чтобы обмениваться данными с другими устройствами. Радиосвязь может представлять собой соединение ближнего действия, соединение дальнего действия либо комбинацию соединения ближней и дальней беспроводной связи. Если упоминаются типы соединений "ближнего" и "дальнего" действия, не подразумевается то, что упоминается пространственное соотношение между двумя устройствами. Вместо этого, в общем, "дальнего действия" и "ближнего действия" упоминаются в качестве различных категорий или типов соединений (т.е. первичного соединения и вторичного соединения). Соединение ближнего действия может включать в себя Wi-Fi-соединение с устройством (например, мобильной точкой доступа), которая предоставляет доступ к сети беспроводной связи, такой как WLAN-соединение с использованием 802.11-протокола. Bluetooth-соединение с другим вычислительным устройством является вторым примером соединения ближнего действия. Соединение дальнего действия может включать в себя соединение с использованием одного или более из CDMA-, GPRS-, GSM-, TDMA- и 802.16-протоколов.
[0061] Варианты осуществления настоящего изобретения описаны относительно отдельных вариантов осуществления, которые во всех аспектах имеют намерение быть иллюстративными, а не ограничивающими. Альтернативные варианты осуществления должны становиться очевидными для специалистов в области техники, которой принадлежит настоящее изобретение, без отступления от его объема.
[0062] Вариант 1 осуществления. Способ для рендеринга контента рукописного ввода на устройстве отображения, содержащий: задание контекста действия для приема действий ввода с помощью рукописного ввода, причем контекст действия включает в себя, по меньшей мере, модальный контекст; прием, посредством приложения, действия ввода, причем действие ввода имеет контекст ввода; обнаружение принимаемого действия ввода в качестве действия создания рукописного ввода, причем принимаемое действие ввода обнаруживается в качестве действия создания рукописного ввода на основе контекста ввода, соответствующего заданному контексту действия, причем обнаруженное действие создания рукописного ввода соответствует контенту рукописного ввода; направление обнаруженного действия создания рукописного ввода в поток процесса рендеринга рукописного ввода с помощью влажных чернил, причем поток рендеринга рукописного ввода с помощью влажных чернил отличается от потока обработки приложения для приложения; рендеринг, посредством потока рендеринга рукописного ввода с помощью влажных чернил, контента рукописного ввода со временем задержки, меньшим порогового значения времени задержки; и обнаружение действия ввода, соответствующего окончанию создания рукописного ввода.
[0063] Вариант 2 осуществления. Способ по варианту 1 осуществления, дополнительно содержащий: передачу контента рукописного ввода из потока рендеринга рукописного ввода с помощью влажных чернил в поток рендеринга приложения, причем поток рендеринга приложения отличается от потока рендеринга рукописного ввода с помощью влажных чернил и необязательно отличается от потока обработки приложения; рендеринг, посредством потока рендеринга приложения, передаваемого контента рукописного ввода; и удаление контента рукописного ввода, рендеринг которого выполнялся посредством потока рендеринга рукописного ввода с помощью влажных чернил.
[0064] Вариант 3 осуществления. Способ по варианту 2 осуществления, в котором передача контента рукописного ввода из потока рендеринга рукописного ввода с помощью влажных чернил в поток рендеринга приложения содержит: преобразование контента рукописного ввода, после обнаружения действия ввода, соответствующего окончанию создания рукописного ввода, в контент промежуточного рукописного ввода; передачу контента промежуточного рукописного ввода в поток рендеринга приложения; и синхронизацию рендеринга передаваемого контента промежуточного рукописного ввода посредством потока рендеринга приложения с удалением контента рукописного ввода, рендеринг которого выполнялся посредством потока рендеринга рукописного ввода с помощью влажных чернил.
[0065] Вариант 4 осуществления. Способ по любому из вышеописанных вариантов осуществления, в котором пороговое значение времени задержки составляет приблизительно 75 миллисекунд или меньше либо приблизительно 60 миллисекунд или меньше, либо приблизительно 50 миллисекунд или меньше.
[0066] Вариант 5 осуществления. Способ по любому из вышеописанных вариантов осуществления, в котором модальный контекст содержит режим ввода из ввода с помощью пера, ввода с помощью стилуса, ввода касанием, ввода с помощью мыши или комбинации вышеозначенного.
[0067] Вариант 6 осуществления. Способ по любому из вышеописанных вариантов осуществления, в котором заданный контекст действия дополнительно содержит контекст местоположения.
[0068] Вариант 7 осуществления. Способ по варианту 6 осуществления, в котором контекст местоположения содержит зону области отображения устройства отображения, причем зона содержит меньше общей площади области отображения.
[0069] Вариант 8 осуществления. Способ по варианту 6 или 7 осуществления, в котором контекст местоположения содержит множество зон области отображения устройства отображения, или в котором контекст местоположения содержит множество зон из множества областей отображения.
[0070] Вариант 9 осуществления. Способ по любому из вышеописанных вариантов осуществления, в котором, по меньшей мере, один из контекста ввода и контекста действия дополнительно содержит одно или более свойств отображения для рукописного ввода, рендеринг которого выполнялся посредством потока рендеринга рукописного ввода с помощью влажных чернил.
[0071] Вариант 10 осуществления. Способ по п. 9, дополнительно содержащий: обнаружение изменения в одном или более свойств отображения для рукописного ввода, рендеринг которого выполнялся посредством потока рендеринга рукописного ввода с помощью влажных чернил в ходе рендеринга контента рукописного ввода посредством потока рендеринга рукописного ввода с помощью влажных чернил; и рендеринг, по меньшей мере, части контента рукописного ввода с использованием измененных одного или более свойств отображения.
[0072] Вариант 11 осуществления. Способ по варианту 10 осуществления, в котором, по меньшей мере, рендеринг части контента рукописного ввода, рендеринг которого выполнялся до обнаружения изменения в одном или более свойств отображения, выполняется с измененными одним или более свойств отображения до обнаружения действия ввода, соответствующего окончанию создания рукописного ввода.
[0073] Вариант 12 осуществления. Способ по любому из вышеописанных вариантов осуществления, в котором контекст действия дополнительно содержит контекст создания рукописного ввода.
[0074] Из вышеописанного следует заметить, что это изобретение представляет собой изобретение, оптимально адаптированное с возможностью достигать всех результатов и целей, изложенных выше, вместе с другими преимуществами, которые являются очевидными и которые являются внутренне присущими структуре.
[0075] Следует понимать, что определенные признаки и субкомбинации являются полезными и могут использоваться без ссылки на другие признаки и субкомбинации. Это предполагается и находится в пределах объема формулы изобретения.