РАСШИРЕНИЕ ФУНКЦИОНАЛЬНОСТИ ПРОСМОТРА ПРИЛОЖЕНИЯ
ENHANCING APPLICATION BROWSING FUNCTIONALITY

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
[0001] С развитием технологий, пользователи компьютеров и других устройств ожидают большую величину гибкости в том, как они просматривают документы. В устаревших компьютерных устройствах отображения информация была представлена в виде строк текста на экране. Когда экран заполнялся текстом, этот текст прокручивался вверх по экрану, чтобы освободить место для нового текста. В конце концов, верхняя строка прокручивалась за пределы экрана и становилась невосстановимой. Более поздние разработки позволяли осуществлять вертикальное прокручивание под управлением пользователя, которое позволяло пользователю прокручивать текст вверх и вниз, чтобы привести его в и за пределы поля зрения.
[0002] В настоящее время, многие пользовательские интерфейсы делают возможной дополнительную гибкость, например горизонтальную прокрутку и изменение масштаба. Однако многие существующие приложения не поддерживают эти дополнительные формы гибкости просмотра. Кроме того, некоторые новые приложения (например, некоторые веб-приложения на основе Java) обеспечивают зоны просмотра, которые обладают только функциональностью простой вертикальной прокрутки. Пользователи привыкли к более широким возможностям просмотра, таким как изменение масштаба, а также вертикальная и горизонтальная прокрутка и желают использовать эти возможности даже с приложениями, которые не обеспечивают эти возможности по умолчанию.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Различные возможности просмотра, такие как изменение масштаба, могут быть обеспечены приложению через использование адаптера. Приложение, например веб-приложение, которое доступно через браузер, может отображать поле просмотра, которое обладает возможностью прокрутки. Поле просмотра может быть использовано для показа некоторого базового контента (например, текста, изображений и т.д.) пользователю. Чтобы добавить дополнительные возможности, такие как изменение масштаба, к пользовательскому взаимодействию, адаптер просмотра управляет приложением для сбора пикселей, которые отображаются через поле просмотра. Как только адаптер получает эти пиксели, он может масштабировать упомянутые пиксели до любого размера и может разместить эти пиксели в документ, который может быть показан пользователю в качестве наложения на поле просмотра.
[0004] Для того чтобы обеспечить пользователю впечатление того, что дополнительные возможности, такие как изменение масштаба, были добавлены к пользовательскому взаимодействию, адаптер перехватывает жесты пользователя (например, перемещение мыши влево и вправо, чтобы указать изменение масштаба) и использует эти жесты, чтобы решать, какой контент показать пользователю. Затем адаптер использует второй экземпляр приложения для сбора соответствующих пикселей из этого контента (или собирает пиксели с упреждением, прогнозируя пользовательские команды) и помещает упомянутые пиксели в документ. Адаптер заменяет документом, который он создал, базовый контент, который был бы отображен приложением в противном случае. Так, например, если приложение обычно показывает пользователю текстовый документ, адаптер осуществляет наложение изображения документа, которое создано адаптером, на первоначальное поле просмотра, так что пользователь видит этот документ вместо первоначального текстового документа. Этот документ может содержать увеличенные или уменьшенные представления различных областей первоначального контента.
[0005] Поскольку адаптер собирает пиксели посредством «приведения в действие» приложения, как если бы адаптер был реальным пользователем, адаптер пытается узнать положение полосы прокрутки в приложении, чтобы он мог выдавать соответствующие команды прокрутки для сбора пикселей. В одном примере, адаптер узнает положение полосы прокрутки через метаданные, предоставляемые приложением. В другом примере приложение узнает положение полосы прокрутки посредством наблюдения - например, осуществляя наблюдение за взаимодействием пользователя с приложением, чтобы увидеть, какие действия побуждают поле просмотра к прокрутке.
[0006] Кроме того, адаптер может использовать приложение для сбора и хранения пикселей таким образом, который увеличивает пользовательское восприятие скорости и снижает использование памяти. Например, если пользователь выступает в роли выполняющего панорамирование в некотором направлении в документе, адаптер может с упреждением собирать соответствующие пиксели дальше по этому направлению в базовом контенте, тем самым прогнозируя команды, которые пользователь еще не выдал. Посредством заблаговременного обладания соответствующими пикселями, уменьшается время ожидания для пользователя, тем самым увеличивается пользовательское восприятие времени отклика приложения. Кроме того, как только пиксели размещены в документе, приложение может очистить хранимые пиксели, чтобы сохранить место, если оказывается, что пиксели представляют области документа, которые вряд ли будут запрошены пользователем.
[0007] Это краткое изложение сущности изобретения приведено для представления подборки концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Это краткое изложение сущности изобретения не предназначено для идентификации ключевых признаков или существенных признаков заявленного изобретения, и не должно быть использовано для ограничения объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0008] Фиг.1 представляет собой блок-схему примерного интерфейса приложения, в котором доступна прокрутка.
[0009] Фиг.2 представляет собой блок-схему примерного сценария, в котором обеспечивается поддержка для расширения функциональности просмотра.
[0010] Фиг.3 представляет собой блок-схему примерного сценария, в котором первоначальный контент заменяется заменяющим документом.
[0011] Фиг.4 представляет собой блок-схему последовательности операций примерного процесса, в котором некоторая функциональность просмотра может быть обеспечена приложению.
[0012] Фиг.5 представляет собой блок-схему последовательности операций примерного процесса обнаружения на основе наблюдений.
[0013] Фиг.6 представляет собой блок-схему примерных компонентов, которые могут быть использованы в связи с реализациями изобретения, описанными в данном документе.
ПОДРОБНОЕ ОПИСАНИЕ
[0014] Зачастую пользователи хотели бы иметь гибкость в том, как они просматривают документы. С развитием технологий пользовательские интерфейсы вмещают в себя все больше и больше гибкости. В первые дни появления компьютеров текст представлялся пользователю на экране в последовательности строк. Когда экран заполнялся, более старые строки уходили за пределы верхней части страницы и становились невосстановимыми. В последующих инновациях была введена вертикальная прокрутка, чтобы позволить пользователю перемещаться вверх и вниз в документе. Горизонтальная прокрутка также была введена в качестве альтернативы переносу слов, тем самым обеспечивая способ показа строки, которая слишком широка, чтобы уместиться на одном экране.
[0015] Как правило, зона, которая является прокручиваемой, обеспечивает зону, в которой пользователь может задавать, желает ли пользователь перемещаться вверх или вниз в документе (или влево, или вправо, в случае горизонтальной прокрутки). Эта зона обычно включает в себя полосу прокрутки или «бегунок», который пользователь может перемещать вверх или вниз (или влево, или вправо) чтобы указать, куда он или она желает осуществлять перемещение.
[0016] В дополнение к прокрутке, пользователи часто хотят обладать возможностью увеличения и уменьшения масштаба при просмотре контента. Однако некоторые приложения обеспечивают возможность прокрутки, но не возможность изменения масштаба. Настоящее изобретение может быть использовано для реализации функциональности изменения масштаба в приложении, которое предоставляет функциональность прокрутки. Для того чтобы дополнить функциональность просмотра существующего приложения, адаптер просмотра перехватывает жесты пользователя и другие команды для того, чтобы определить, что пользователь пытается сделать. Например, пользователь может перемещать мышь вправо или влево относительно поля просмотра, тем самым указывая, что пользователь желает увеличить или уменьшить масштаб. Поскольку функциональность изменения масштаба не может быть реализована в самом приложении, адаптер перехватывает эти жесты, получает надлежащим образом масштабированный контент и отвечает на команды, посредством отображения масштабированного контента на поле просмотра приложения.
[0017] Для получения надлежащим образом масштабированного контента и для обеспечения этого контента приложению, адаптер может выполнять действия следующим образом. Для любого заданного приложения, которое обеспечивает просмотр базового документа, адаптер может «приводить в действие» приложение, посредством взаимодействия с возможностью прокрутки, которой обладает приложение. Взаимодействия адаптера с приложением могут не быть непосредственно видимыми пользователю, однако приложение может использовать эти взаимодействия для получения контента, чтобы показывать пользователю. Адаптер может использовать возможности прокрутки приложения, например, для прокрутки вверх и вниз (или, возможно, влево и вправо) в документе. Причина того, что адаптер просмотра осуществляет навигацию по документу таким образом состоит в том, чтобы собирать различные части документа. Например, предположим, что только одна десятая документа может уместиться в поле просмотра единовременно. Если пользователь (через соответствующий жест изменения масштаба) указывает, что он хочет видеть уменьшенное представление документа, которое содержит пять значимых блоков просмотра документа, адаптер может использовать его управление приложением для прокрутки через документ и сбора пяти значимых блоков просмотра этого документа. Адаптер может затем уменьшать информацию, которую он собрал, так что она умещается в одно поле просмотра. Для того, чтобы сделать уменьшенную версию видимой пользователю, адаптер может вставить уменьшенную версию в виртуальный документ, которым управляет адаптер. Таким образом, адаптер вставляет уменьшенное представление базового документа в виртуальный документ и затем предоставляет пользователю этот виртуальный документ. Например, адаптер может накладывать представление виртуального документа на поле просмотра приложения таким образом, что пользователь видит виртуальный документ в поле просмотра.
[0018] Адаптер может использовать некоторые методы для сбора и хранения информации о документе. Например, адаптер может обеспечивать множество различных уровней масштаба, на которых осуществляется просмотр документа, но может не желать хранить весь документ на всех уровнях масштаба. Таким образом, адаптер может собирать части документа в ответ на запрос пользователя касаемо конкретных уровней масштаба, или может прогнозировать то, какие зоны документа пользователь будет просматривать далее, прежде чем пользователь фактически выдаст команды для просмотра этой зоны документа. Например, если пользователь просматривает документ на конкретном уровне масштаба и выступает в роли выполняющего прокрутку или панорамирование вверх, адаптер может прогнозировать, что пользователь будет продолжать осуществлять прокрутку вверх, и будет собирать информацию выше в документе до того, как пользователь фактически запросит ее. Кроме того, адаптер может сохранять место посредством отбрасывания частей документа, которые пользователь уже просмотрел и переместился за пределы зоны просмотра.
[0019] Для того чтобы определить то, как «приводить в действие» приложение, адаптер может попытаться узнать, где находятся элементы управления приложения. Один из способов узнать, где находятся элементы управления приложения, заключается в том, чтобы изучить метаданные, предоставляемые приложением. Например, приложение может обеспечивать метаданные, которые указывают, где расположена прокручиваемая зона просмотра и ее полоса прокрутки. Или, в качестве еще одного примера, адаптер может получать положение прокручиваемой зоны просмотра и полосы прокрутки посредством наблюдения за пользовательским поведением и действиями, предпринимаемыми приложением в ответ на это поведение. Например, типичное поведение, указывающее положение полосы прокрутки, представляет собой: сначала пользователь щелкает на бегунке прокрутки; затем ничего не происходит; затем пользователь начинает перемещать бегунок вверх или вниз; и затем контент в зоне просмотра перемещается вверх или вниз в направлении упомянутого бегунка. Наблюдая за этой схемой, адаптер может обнаруживать наличие прокручиваемой зоны просмотра и положение полосы прокрутки. В другом примере, если пользователь щелкает мышкой и затем наблюдается прокрутка, этот шаблон имеет тенденцию к указанию того, что пользователь выполнил щелчок по полосе прокрутки в месте, отличном от места бегунка (Изложенное выше описывает некоторые методы для обнаружения вертикальной полосы прокрутки, но аналогичные методы могут быть использованы для обнаружения горизонтальной полосы прокрутки).
[0020] Переходя теперь к чертежам, фиг.1 показывает пример интерфейса приложения, в котором доступна прокрутка. Окно 102 обеспечивает пользовательский интерфейс программы 104. Например, программа 104, интерфейс которой обеспечивается через окно 102, может быть браузером, который обрабатывает информацию, такую как язык гипертекстовой разметки (HTML) и код Java для отображения некоторого вида контента. Окно 102 может обладать нормальными элементами управления, которыми обладают окна, такими как элементы управления 106, которые позволяют пользователю скрывать, изменять размер и закрыть окно 102.
[0021] В окне 102, программой 104 могут быть отображены различные типы контента. Одним примером такого контента является поле 108 просмотра, которое позволяет некоторому базовому контенту 110 быть отображенным. В этом примере контент 110, который должен быть отображен, представляет собой знакомый текстовый контент «Lorem ipsum», при том, что любой тип контента (например, текст, изображения и т.д.) может быть отображен через поле 108 просмотра. Например, когда браузер используется для доступа к некоторому типу контента, контент, к которому осуществляется доступ, может быть серверным приложением, которое обеспечивает код HTML или Java, который побуждает браузер к отображению поля 108 просмотра, и это также побуждает контент 110 к отображению через поле 108 просмотра. Контент 110 может быть составлен из одного или нескольких компонентов, таких как исходный текстовый файл 112, шрифты 114 и изображения 116. Например, контент 110, показанный в поле 108 просмотра, может быть газетной статьей, которая содержит текст и изображения. Контент показывается через пиксели, отображаемые через поле 108 просмотра. Конкретные пиксели, которые показаны, содержат текст и графику. Пиксели, которые представляют графику, извлекаются из изображений 116. Пиксели, которые представляют текст, извлекаются из исходного текстового файла 112 и шрифтов 114, т.е. исходный текстовый файл 112 указывает, какие символы должны быть отрисованы, и шрифты 114 указывают, как эти символы будут возникать.
[0022] Поле 108 просмотра обеспечивает элементы управления, посредством которых можно осуществлять прокрутку по контенту 110 вертикально и/или горизонтально. Например, вдоль правого и нижнего краев поля 108 просмотра расположены два прямоугольника 118 и 120, которые используются для направления прокрутки контента 110 в поле 108 просмотра. Прямоугольники 118 и 120 содержат полосы прокрутки, или бегунки 122 и 124, которые позволяют пользователю осуществлять прокрутку вверх и вниз (бегунком 122) и/или вправо и влево (бегунком 124). Эта функциональность прокрутки может быть обеспечена серверным приложением, которое обеспечивает поле 108 просмотра (В некоторых примерах, поле 108 просмотра может обеспечивать только вертикальную прокрутку или только горизонтальную прокрутку. Методы, описанные в данном документе, могут быть использованы для расширения функциональности просмотра для обеспечения прокрутки в измерении, в котором по умолчанию поле 108 просмотра не обеспечивает прокрутку).
[0023] Одна функция просмотра, которую пользователь может захотеть выполнить, представляет собой изменение масштаба или масштабирование. Хотя возможность прокрутки позволяет пользователю перемещать контент 110 вверх или вниз в поле 108 просмотра, прокрутка не позволяет пользователю сделать контент большим (чтобы увидеть меньшее количество контента более подробно), или сделать контент меньшим (чтобы увидеть большее количество контента менее подробно). Существуют различные способы того, как пользователь может указывать функции, такие как «увеличение масштаба» или «уменьшение масштаба» с использованием мыши. Например, пользователь может перетащить указатель мыши вправо, чтобы указать увеличение масштаба, или влево, чтобы указать уменьшение масштаба. Хотя такие жесты могут быть выполнены пользователем, поле 108 просмотра может не обеспечивать поддержку для этих жестов по умолчанию. Методы, обеспеченные в данном документе, могут быть использованы для обеспечения такой поддержки, чтобы пользователь мог увеличивать и уменьшать масштаб по контенту (или выполнять любую другую соответствующую манипуляцию просмотра) даже если такую поддержку не обеспечивают по умолчанию приложением, через которое просматривают контент.
[0024] На фиг.2 показан пример того, каким образом обеспечивать поддержку для расширения функциональности просмотра. Серверное приложение обеспечивает поле 108 просмотра, которое обеспечивает доступ к некоторому базовому контенту (например, тексту, шрифтам, изображениям и т.д.), и программу (например, браузер), открытую в окне 102, которое обеспечивает представление этого поля просмотра пользователю. Дополнительно, поле 108 просмотра может обеспечивать бегунки 122 и 124, которые позволяют выполнять вертикальную и/или горизонтальную прокрутку (или, как отмечалось выше, поле 108 просмотра может обеспечивать прокрутку только в одном измерении). Эти компоненты являются подобными таковым, показанным на фиг.1. Экземпляр 202 приложения представляет собой экземпляр приложения, с которым взаимодействует пользователь. Например, система может открывать окно браузера, чтобы позволить пользователю взаимодействовать с экземпляром 202 приложения. Однако, адаптер 206 просмотра может также взаимодействовать с приложением 202 таким образом, который не является видимым пользователю, как указано отчерченной пунктирной линией интерфейса экземпляра 202 приложения.
[0025] В частности, когда пользователь взаимодействует с экземпляром 202 приложения через окно 102, адаптер 206 просмотра перехватывает команды 208, выданные пользователем. Например, если пользователь выполняет жесты, такие как жесты влево или вправо, описанные выше (указывающие функции увеличения масштаба и уменьшения масштаба), эти жесты могут быть интерпретированы как команды 208, и адаптер 206 просмотра может перехватывать эти команды 208. Один способ, посредством которого адаптер 206 просмотра может перехватывать эти команды, состоит в наблюдении за взаимодействиями клавиатурой и мышью в окне 102 всякий раз, когда окно 102 имеет фокус (Под «имеющим фокус» обычно понимается то, что окно является активным, т.е. подразумевается ввод клавиатурой и мышью в этот момент времени как являющийся направленным в окно, которое имеет фокус, в отличие от некоторого другого окна.)
[0026] Независимо от манеры, которой адаптер 206 просмотра перехватывает команды, как только адаптер 206 просмотра получает команды 208, он может интерпретировать команды, чтобы определить, что пользователь пытается просмотреть. Например, движение влево может быть интерпретировано в качестве того, что пользователь желает уменьшить масштаб, тем самым видеть меньше контента, но более крупное изображение этого контента. Адаптер 206 просмотра затем может попытаться получить контент, который пользователь желает видеть. Адаптер 206 просмотра получает этот контент, манипулируя полем 210 просмотра в приложении. Поле 210 просмотра может обеспечивать бегунки 212 и 214, которые позволяют просмотру контента в поле 210 просмотра находиться под управлением. Контент, который должен быть отображен в поле 210 просмотра, представляет собой тот же контент 110, который отображается в поле 108 просмотра по фиг.1. Адаптер 206 просмотра управляет просмотром контента 110 посредством управления бегунками 212 и 214. Следует отметить, что выполняется адаптером 206 просмотра манипуляция просмотром внутри поля 210 просмотра может иметь место «за кулисами» в том смысле, что эта манипуляцию фактически не отображается непосредственно пользователю. Например, движение стрелок и прокрутка контента в поле 210 просмотра могут не появляться ни в каком окне приложения рабочего стола. Скорее, адаптер 206 просмотра просто осуществляет работу с входным буфером приложения таким образом, что приложение считает, что оно принимает такой же вид команд, которые пользователь может обеспечивать через клавиатуру или мышку.
[0027] Посредством работы с элементами управления приложения, адаптер 206 просмотра обладает возможностью просмотра различных частей базового контента 110. Адаптер просмотра собирает пиксели 216, которые представляют контент 110. Например, если контент 110 содержит текст, то пиксели 216 являются пикселями, которые представляют символы этого текста, отрисованные в некотором шрифте. Если контент 110 содержит изображения, то пиксели 216 являются пикселями, которые представляют эти изображения.
[0028] Когда адаптер 206 просмотра собрал пиксели 216, адаптер 206 просмотра использует эти пиксели для создания заменяющего документа 218. Заменяющий документ 218 является «заменяющим» в том смысле, что он подменяет первоначальный контент 110, который пользователь пытается просмотреть с помощью экземпляра 202 приложения. Следует напомнить, что пользователь создал экземпляр 202 приложения для просмотра базового контента 110. Как описано выше, адаптер 206 просмотра взаимодействует с экземпляром 202 приложения для того, чтобы собирать пиксели, которые представляют контент 110. Адаптер 206 просмотра затем компонует эти пиксели способами, которые следуют командам пользователя. Например, если пользователь указал, что он хотел бы увеличить масштаб в некоторой части текста (в которой функция изменения масштаба не поддерживается полем 108 просмотра по умолчанию), то адаптер 206 просмотра создает увеличенное представление этого текста. Для того чтобы создать это увеличенное представление, адаптер 206 просмотра использует экземпляр 202 приложения для сбора пикселей, которые представляют часть текста, на которой пользователь хотел бы изменить масштаб, и затем увеличивает представление до соответствующего масштаба. Это увеличенное представление затем помещается в документ. Адаптер 206 просмотра затем может накладывать изображение документа поверх поля просмотра, что в противном случае будет видимым пользователю (то есть поверх поля 108 просмотра). Как правило, экземпляр 202 приложения будет представлять контент 110 через поле 108 просмотра. Однако поскольку адаптер 206 просмотра накладывает на поле 108 просмотра изображение заменяющего документа 218, пользователь видит заменяющий документ 218 в месте, в котором пользователь ожидает видеть контент 110, тем самым создавая иллюзию, что пользователь изменил масштаб по контенту 110, как если бы механизмы для этого существовали в поле 108 просмотра. Как видно, текст контента 110 появляется большим в поле 108 просмотра (или, точнее, в наложении поверх поля 108 просмотра), чем в поле 210 просмотра, указывая, что заменяющий документ 218 представляет представление с измененным масштабом этого текста, который отображается пользователю.
[0029] На фиг.3 показано, как первоначальный контент 110 заменяется заменяющим документом 218. Как обсуждалось выше, экземпляр 202 приложения обычно создается для контента 110 просмотра, который приложение отображает пользователю через поле 108 просмотра. Однако, когда используют адаптер 206 просмотра, адаптер просмотра накладывает изображение заменяющего документа 218 поверх поля 108 просмотра, тем самым приводя к тому, что заменяющий документ является видимым вместо контента 110 (как указано знаками «XX» по линии между контентом 110 и полем 108 просмотра). Управление контентом заменяющего документа 218 осуществляется адаптером 206 просмотра. Адаптер 206 просмотра заполняет заменяющий документ 218 пикселями 216, которые собрал адаптер 206 просмотра посредством управления экземпляром 202 приложения для того, чтобы собирать эти пиксели из контента 110. Следовательно, когда пользователь видит контент в поле 108 просмотра, пользователь видит контент, который адаптер 206 просмотра поставил в заменяющий документ 218, а не первоначальный контент 110. Таким образом, адаптер 206 просмотра может увеличивать, уменьшать или иначе трансформировать внешний вид контента 110 для показа пользователю в соответствии с командами пользователя - лишь бы адаптер 206 просмотра мог собирать этот контент каким-либо образом. Адаптер 206 просмотра собирает контент, как описано выше, посредством «приведения в действие» приложения таким образом, чтобы собирать пиксели, которые он хочет поместить в заменяющий документ 218.
[0030] На фиг.4 показан, в форме последовательности операций, примерный процесс, в котором некоторая функциональность просмотра (например, изменение масштаба) может быть обеспечена приложению. Прежде чем перейти к описанию фиг.4 отметим, что схемы последовательности операций, содержащиеся в данном документе (и на фиг.4, и на фиг.5) описаны в качестве примера со ссылкой на компоненты, показанные на фиг.1-3, несмотря на то, что эти процессы могут быть осуществлены в любой системе и не ограничиваются сценариями, показанными на фиг.1-3. Дополнительно, каждая из схем последовательности операций на фиг.4 и 5 показывает пример, в котором этапы процесса выполняются в конкретном порядке, как указано линиями, соединяющими блоки, но различные этапы, показанные на этих диаграммах, могут быть выполнены в любом порядке, либо в любой комбинации или субкомбинации.
[0031] На этапе 402 запускают приложение. Например, пользователь может активировать программу браузера, описанную выше по тексту, и может использовать браузер для доступа к приложению, которое обеспечивает поле просмотра в окне браузера. На этапе 404 обнаруживают полосу прокрутки в поле просмотра. Например, поле просмотра может обеспечивать только вертикальную прокрутку, в случае с которой обнаруживают вертикальную полосу прокрутки. Или, как отмечалось выше по тексту, поле просмотра может обеспечивать как вертикальную, так и горизонтальную полосы прокрутки, и обе из них могут быть обнаружены.
[0032] Обнаружение полосы (полос) прокрутки может быть выполнено различными способами. Например, приложение, которое обеспечивает поле просмотра, также может обеспечивать метаданные 406, указывающие положение поля просмотра и его полосы (полос) прокрутки. В другом примере, может быть выполнено обнаружение 408 на основе наблюдений по пользовательскому интерфейсу, в котором возникает поле просмотра для того, чтобы обнаруживать поле просмотра и/или его полосы прокрутки. Один из способов, которым может быть выполнено это обнаружением на основе наблюдений, является следующее, показанное на фиг.5. Во-первых, обнаруживают (на этапе 502), что пользователь щелкнул кнопку мыши (или кнопку на другом типе указывающего устройства, например панели для касания). Затем, обнаруживают (на этапе 504), что после щелчка кнопкой мыши ничего не произошло на экране в результате этого щелка. Затем обнаруживают (на этапе 506), что пользователь начал перемещать мышь. Затем обнаруживают (на этапе 508), что прокрутка возникла в ответ на перемещение мышки - т.е. что что-то на экране начинает прокручиваться, когда пользователь перемещает мышь. Эта последовательность действий имеет тенденцию к указанию того, что пользователь использовал мышь для работы с бегунком полосы прокрутки, поскольку наблюдаемые действия согласуются с пользователем, работающим с бегунком. Используя эти наблюдения, выводят положения поля просмотра и бегунка.
[0033] Возвращаясь теперь к фиг.4, на этапе 412 приложение потребляет первоначальный контент, для просмотра которого пользователь использовал приложение. Например, если пользователь собирается использовать приложение для просмотра контента 110 (показанного на фиг.1), то приложение потребляет контент 110. Приложение может потреблять контент 110 под руководством адаптера 206 просмотра (показанного на фиг.2). В то время как адаптер просмотра направляет представление контента 110, адаптер просмотра собирает пиксели из документа (на этапе 414). На этапе 416 адаптер просмотра вставляет пиксели в заменяющий документ. На этапе 418 контент из заменяющего документа накладывают поверх поля просмотра приложения так, чтобы оказалось, что приложение показывает пользователю контент из заменяющего документа. Например, адаптер просмотра может создавать наложение поверх положения поля просмотра в приложении и может отображать контент из заменяющего документа в этом наложении.
[0034] Следует отметить, что когда адаптер просмотра использует приложение для сбора пикселей, он может делать это различными способами и в ответ на различные сигналы. Например, адаптер просмотра может собирать пиксели из базового контента в ответ на конкретные действия пользователем. То есть, если пользователь запрашивает уменьшение масштаба, адаптер просмотра может использовать приложение для манипулирования базовым контентом и сбора нескольких значимых полей просмотра пикселей, так что представление с увеличенным масштабом нескольких значимых полей контента может быть показано пользователю. Однако, в другом примере, адаптер просмотра пытается прогнозировать, что запросит пользователь. Например, если пользователь осуществляет панорамирование по контенту в некотором направлении (например, вправо), то адаптер просмотра может предполагать, что пользователь будет продолжать панорамирование по контенту в этом направлении и таким образом может попытаться собрать части контента далее в этом направлении до того, как пользователь фактически выполнит панорамирование на такое расстояние, основываясь на предсказании, что пользователь будет осуществлять панорамирование дальше в этом направлении когда-нибудь в ближайшем будущем. Дополнительно адаптер просмотра может хранить пиксели из базового контента на различных уровнях детализации, при прогнозе увеличения или уменьшения масштаба пользователем в том же самом положении контента. Например, если пользователь осуществляет панорамирование к конкретному положению в документе и затем останавливает панорамирование, пользователь может увеличивать или уменьшать масштаб в этом положении так, что адаптер просмотра может строить изображения документа на нескольких различных уровнях масштаба при прогнозе, что пользователь будет фактически увеличивать или уменьшать масштаб в этом положении. Система может хранить разные различные представления контента на различных уровнях масштаба некоторое время и также может удалять сохраненные представления, когда спрогнозировано, что сохраненные представления вряд ли будут использованы в ближайшем будущем. Посредством предварительного вычисления представлений контента при прогнозе пользовательских команд, которые еще не были выданы, можно увеличить восприятие характеристик за счет возможности быстрого обеспечения представлений после того, как они запрошены. Дополнительно, посредством удаления представлений, относительно которых адаптер просмотра считает, что они вряд ли будут использоваться в ближайшем будущем, уменьшается величина места, используемого для хранения представлений.
[0035] На фиг.6 показан пример среды, в которой аспекты изобретения, описанные в данном документе, могут быть реализованы.
[0036] Компьютер 600 включает в себя один или несколько процессоров 602 и один или несколько компонентов 604 памяти данных. Процессоры (процессор) 602 обычно являются микропроцессорами, такими как те, которые нашли применение в персональном настольном или переносном компьютере, сервере, карманном компьютере или в другом виде вычислительного устройства. Компоненты (компонент) 604 памяти данных являются компонентами, которые способны хранить данные либо в краткосрочном, либо в долгосрочном периоде. Примеры компонентов (компонента) 604 памяти данных включают в себя жесткие диски, съемные диски (включающие в себя оптические и магнитные диски), энергозависимую и энергонезависимую оперативную память (RAM), постоянную память (ROM), флэш-память, магнитные ленты и т.п. Компоненты (компонент) памяти данных являются примерами считываемых компьютером носителей хранения информации. Компьютер 600 может содержать, или быть ассоциированным с устройством 612 отображения, которое может быть монитором на основе катодно-лучевой трубки (CRT), монитором жидкокристаллического устройства отображения (LCD) или любым другим типом монитора.
[0037] Программное обеспечение может быть сохранено в компоненте (компонентах) 604 памяти данных и может исполняться на одном или нескольких процессорах (процессоре) 602. Примером такого программного обеспечения является программное обеспечение 606 адаптации просмотра, которое может реализовывать некоторую или всю из функциональности, описанную выше в связи с фиг.1-5, несмотря на то, что любой тип программного обеспечения может быть использован. Программное обеспечение 606 может быть реализовано, например, через один или несколько компонентов, которые могут быть компонентами в распределенной системе, отдельные файлы, отдельные функции, отдельные объекты, отдельные строки кода и т.д. Персональный компьютер, в котором программа, сохраненная на жестком диске, загружается в RAM и исполняется на процессоре (процессорах) компьютера, является типичным примером сценария, изображенного на фиг.6, несмотря на то, что изобретение, описанное в данном документе, не ограничивается этим примером.
[0038] Изобретение, описанное в данном документе, может быть реализовано в качестве программного обеспечения, которое хранится в одном или более из компонентов (компоненте) 604 памяти данных и которое исполняется на одном или нескольких процессорах (процессоре) 602. В качестве другого примера, изобретение может быть реализовано в виде инструкций, которые хранятся на одном или нескольких считываемых компьютером носителях информации (Материальные носители, такие как оптические диски или магнитные диски, являются примерами носителя хранения информации). Такие инструкции, при их исполнении компьютером или другой машиной, могут побуждать компьютер или другую машину к выполнению одного или нескольких действий способа. Инструкции для выполнения действий могут быть сохранены на одном носителе или могут быть распределены по множеству носителей, так что инструкции могут появляться в совокупности на одном или нескольких считываемых компьютером носителях информации, независимо от того, находятся ли все из этих инструкций на одном и том же носителе.
[0039] Кроме того, любые действия, описанные в данном документе (независимо от того, показаны ли на схеме), могут быть выполнены процессором (например, одним или несколькими процессорами 602) как часть способа. Таким образом, если действия A, B и C описаны в данном документе, то может быть выполнен способ, который содержит действия A, B и C. Кроме того, если действия A, B и C описаны в данном документе, то может быть выполнен способ, который содержит использование процессора для выполнения действий A, B и C.
[0040] В одном примере среды, компьютер 600 может быть соединен с возможностью связи с одним или несколькими устройствами через сеть 608. Компьютер 610, который может быть аналогичным по структуре компьютеру 600, представляет собой пример устройства, которое может быть соединено с компьютером 600, несмотря на то, что таким же образом могут быть соединены другие типы устройств.
[0041] Несмотря на то, что изобретение может быть описано на языке, характерном для структурных признаков и/или методологических действий, следует понимать, что объем изобретения, определяемый приложенной формулой изобретения, не обязательно ограничен конкретными признаками или действиями, описанными выше по тексту. Наоборот, конкретные признаки и действия, описанные выше по тексту, раскрыты в качестве примерных форм реализации формулы изобретения.