СПОСОБ ФОРМИРОВАНИЯ ТЕКСТОВОГО КУРСОРА В ПОЛЕ РЕДАКТИРОВАНИЯ ИНТЕРФЕЙСА ПОЛЬЗОВАТЕЛЯ
METHOD OF GENERATING A TEXT CURSOR IN A USER INTERFACE EDITING FIELD

Изобретение относится к области обработки или генерации данных изображения и может быть использовано в пользовательских интерфейсах компьютерных программ, предусматривающих ввод текста и его редактирование.
Ввод и редактирование текста может осуществляться как в текстовых редакторах (текстовых процессорах), работающих с многострочными документами, так и в поисковых системах, которые работают только с одной строкой.
Известен курсор в интерфейсе пользователя - элемент графического интерфейса, который указывает на объект, с которым будет производиться взаимодействие с помощью клавиатуры, мыши или другого устройства управления
(https://ru.wikipedia.org/wiki/%D0%9A%D1%83%D1%80%D1%81%D0%BE%D1%80, дата размещения сведений в электронной среде 16.04.2019).
Текстовый курсор предназначен для обозначения места, куда будет вставлен введенный с клавиатуры текст. Курсор обычно выполняют мигающим для того, чтобы его можно было быстро найти в тексте - неподвижный курсор может оказаться трудноразличимым в большом тексте. Наиболее распространенная форма курсора в современных интерфейсах пользователя - вертикальная черта, по высоте соответствующая высоте строки текста и располагающаяся в начале знакоместа вводимого символа. В некоторых случаях используются другие виды курсора: прямоугольник шириной в знакоместо, охватывающий следующий знак, символ подчеркивания или другой символ. К примеру, в компьютерах ZX-Spectrum в качестве курсора использовалась заглавная латинская буква в знакоместе (см. там же, прототип).
В настоящее время существует устойчивое мнение о том, что ширина курсора является величиной постоянной и не может превышать ширины одного знакоместа.
Этим обусловлено его трудноразличимость в текстовой строке и, особенно, в многострочных документах, что является недостатком известных способов формирования курсоров. По мнению заявителя, способ формирования курсора в современных редакторах текста, например, в ms word (https://studfile.net/preview/5170593/page:31/, дата размещения сведений в электронной среде 10.02.2016), который заключается в формировании мигающей вертикальной черты шириной не более двух пикселей, является наихудшим из возможных способов.
Заявитель предлагает технические решения (см. независимые пункты №1, №2 и №6 формулы изобретения) формирования текстового курсора в поле редактирования интерфейса пользователя, объединенные общим изобретательским замыслом, обеспечивающим возможность формирования текстового курсора длиной более одного знакоместа. Причем техническое решение, изложенное в пункте №6 формулы изобретения, позволяет формировать курсор длиной не менее половины длины поля редактирования.
Общий изобретательский замысел также состоит в том, что длину курсора заявитель предлагает сделать переменной величиной, которая находится в определенной функциональной зависимости от расположения курсора в поле редактирования.
Техническим результатом данного изобретения является увеличение длины текстового курсора для облегчения его заметности.
Данный технический результат достигается за счет того, что либо заранее определяют любую фиксированную длину курсора, находящуюся в пределах от одного знакоместа до максимального возможного их числа в поле редактирования, которая может уменьшаться при приближении первой границы курсора к началу поля ввода текста, либо длина курсора является с самого начала переменной величиной, зависящей от позиции расположения первой границы курсора, устанавливаемой в позицию требуемого расположения курсора. Некоторые функции данной зависимости описаны ниже.
Изобретение иллюстрируют следующие графические изображения:
фиг. 1 - формирование курсора способом согласно пункту №1 формулы изобретения длиной курсора, равной трем знакоместам;
фиг. 2 - формирование курсора способом по пункту №4, в котором вторую границу курсора располагают в начале текущего слова;
фиг. 3 - формирование курсора способом по пункту №5 формулы изобретения, в котором вторую границу курсора располагают в начале поля редактирования;
фиг. 4 - формирование курсора способом по пункту №6 формулы изобретения, в котором вторую границу курсора располагают в конце поля редактирования;
фиг. 5 - формирование курсора способом по пункту №6 формулы изобретения, в котором вторую границу курсора располагают в начале поля редактирования.
Термины, определения и сокращения, используемые в данном описании изобретения.
Слово
Набор символов, ограниченный пробелами, если набор символов находится в середине строки.
Набор символов, ограниченный пробелом справа, если набор символов расположен в начале строки.
Набор символов, ограниченный пробелом слева, если набор символов расположен в конце строки.
Набор символов, единственный в строке.
Поле редактирования
Прямоугольник, заполненный цветом фона (обычно - белым), а при получении фокуса ввода в нем появляется курсор, приглашая ввести текст в поле или его редактировать (см.
https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5, дата размещения сведений в электронной среде 11.08.2018).
Поле редактирования может иметь горизонтальное или вертикальное расположение в зависимости от использования пользователем направления письма.
Символы, вводимые в поле редактирования, располагаются последовательно друг за другом в позициях с определенными номерами. Первый символ располагается в первой позиции, второй - во второй и так далее по возрастанию номера позиции. Кроме того, место символа в поле редактирования можно определить как число пикселей от начала поля и до первого пикселя данного символа включительно.
Поле является не только графическим изображением прямоугольника на экране дисплея компьютера. Оно содержит выведенную на него информацию, которая хранится в памяти компьютера и может редактироваться пользователем.
Сокращение: «поле»
Синоним: «строка» или «столбец»
Исходный цвет фона поля редактирования
Цвет поля редактирования заданный разработчиком интерфейса пользователя или выбранный пользователем из заранее определенного перечня возможных вариантов, предоставленных пользователю разработчиком интерфейса пользователя.
Исходный цвет фона поля редактирования является контрастным по отношению к цвету символов, выводимых в данное поле.
Исходный цвет шрифта выводимого текста
Цвет шрифта заданный разработчиком интерфейса пользователя или выбранный пользователем из заранее определенного перечня возможных вариантов, предоставленных пользователю разработчиком интерфейса пользователя.
Исходный цвет шрифта является контрастным по отношению к цвету фона поля редактирования.
Пиксель
Наименьший логический элемент двумерного цифрового изображения в растровой графике, или (физический) элемент матрицы дисплеев, формирующих изображение. Пиксель представляет собой неделимый объект прямоугольной или круглой формы, характеризуемый определенным цветом.
Направление ввода текста
Одно из направлений ввода текста - слева направо, справа налево или сверху вниз.
Позиция требуемого расположения курсора
Позиция поля редактирования, в которую пользователь хочет установить курсор путем нажатия на одну из клавиш клавиатуры, таких как «стрелка влево», «стрелка вправо», «Delete», «BackSpace» и так далее, или с помощью манипулятора мышь (далее по тексту «мышь») или с помощью другого аналогичного устройства.
Текстовый курсор
В данном изобретении текстовый курсор может быть двух видов.
а) Область прямоугольной формы, имеющая фон, цвет которого отличен от исходного цвета фона поля редактирования и является контрастным по отношению к цвету шрифта выводимого текста.
б) Область прямоугольной формы, в которую выводят символы, с характеристиками шрифта, отличными от их исходных характеристик, совокупность которых образуют собственно курсор.
Место, куда будет вставлен введенный с клавиатуры текст, определяется по месту расположения одной из двух границ прямоугольной области курсора (границ курсора). Границу курсора, которую устанавливают в позицию требуемого расположения курсора, будем считать первой границей курсора или указателем курсора.
Сокращение: «курсор»
Поскольку размер курсора по горизонтали в настоящем изобретении в подавляющем числе случаях больше его высоты, то вместо термина «ширина курсора», который использовался в известных способах формирования текстового курсора, в данном описании изобретения используется термин «длина курсора».
Текущее слово
Слово, на котором находится указатель (первая граница) курсора. Шрифт
Графический рисунок начертаний букв и знаков, составляющих единую стилистическую и композиционную систему, набор символов определенного размера и рисунка
(https://ru.wikipedia.org/wiki/%D0%A8%D1%80%D0%B8%D1%84%D1%82, дата размещения сведений в электронной среде 27.09.2019).
Основные характеристики шрифтов
- начертание: прямой, курсивный;
- насыщенность: светлый, полужирный;
- ширина: нормальный, узкий, широкий, шрифт фиксированной ширины;
- размер (кегль) в пунктах;
Художественный облик шрифтов
- декоративный;
- динамичный;
- изящный;
- курсив
(https://ru.wikipedia.org/wiki/%D0%A8%D1%80%D0%B8%D1%84%D1%82, дата размещения сведений в электронной среде 27.09.2019).
В данном описании изобретения под шрифтом с иной характеристикой шрифта будем понимать шрифт, имеющий любое визуально различимое отличие (в том числе и не отмеченное выше) от исходного шрифта.
Здесь заканчивается описание терминов, определений и сокращений, используемых в данном описании изобретения.
На фигурах использованы следующие обозначения:
1 - первая граница курсора (позиция требуемого расположения) курсора;
2 - вторая граница курсора;
3 - поле редактирования;
4 - курсор (область курсора).
Для того чтобы упростить описание заявленного изобретения и для определенности, будем считать, что пользователь работает только с одной строкой. То есть на экране дисплея компьютера пользователя расположено горизонтально одно поле 3 редактирования. В поле 3 редактирования выводят символы черного цвета на белом фоне. На практике пользователь может работать со строкой для ввода поискового запроса в одной из информационно-поисковых систем.
Рассмотрим реализуемый с помощью компьютера способ формирования текстового курсора 4 в поле 3 редактирования в интерфейсе пользователя, в котором формируют курсор 4 в виде области с фоном, цвет которого отличен от исходного цвета фона поля 3 редактирования и является контрастным по отношению к цвету шрифта выводимого текста (см. пункт №1 формулы изобретения).
Пусть разработчик интерфейса пользователя решил, что в его интерфейсе длина курсора 4 должна быть равна трем знакоместам, то есть суме трех входящих в него символов с учетом разделяющих данные символы пикселей, исходный цвет шрифта выводимого текста должен быть черным, исходный цвет фона поля 3 редактирования - белым, а цвет курсора 4 -серым.
Пусть также в исходном состоянии в поле 3 редактирования выведено слово, имеющее следующий вид «12345» (см. фиг. 1). То есть данное слово состоит из возрастающей последовательности пяти цифр, начиная с цифры «1» и заканчивая цифрой «5», причем первый символ данного слова находится в позиции №1, а последний - в позиции №5.
Пусть пользователь решил установить курсор 4 между цифрами «4» и «5», а до этого момента курсор 4 в поле 3 редактирования не было.
При известном способе формирования курсора в виде вертикальной черты в исходном положении курсор находился бы между цифрой «1» и началом строки. При формировании курсора 4 заявленным способом в исходном положении курсора 4 не будет видно, то есть в исходном положении в поле 3 редактирования выведено только слово, имеющее следующий вид «12345».
Свое намерение установить курсор между цифрами «4» и «5» пользователь может реализовать путем установки указателя мыши между данными цифрами и щелчка левой кнопкой мыши.
Тогда после щелчка пользователем левой кнопкой мыши курсор 4 формируют в виде, показанном на фиг. 1, следующим способом.
Ниже в описании изобретения курсивом выведен текст, взятый из формулы изобретения и который требует пояснения.
В поле 3 редактирования интерфейса пользователя определяют позицию требуемого расположения курсора 4.
С точки зрения вычислительной системы, установка указателя мыши между данными цифрами и щелчок левой кнопкой мыши пользователем может означать получение через интерфейс пользователя информации о месте нахождения указателя мыши в поле 3 редактирования, выраженном в пикселях.
Суммируя ширины символов, выраженные в пикселях, и разделяющих символы пиксели, начиная с начала поля 3 редактирования, определяют момент, когда полученная сумма превысит значение места нахождения указателя мыши в поле 3 редактирования.
Суммируя ширины символов, одновременно запоминают (в памяти компьютера) в массиве позиции символов, занимаемые ими в поле 3 редактирования.
В момент превышения полученной суммы значения места нахождения указателя мыши в поле 3 редактирования запоминают номер позиции символа, добавление которого к сумме привело данное превышение.
Из запомненного номера позиции вычитают единицу и получают номер позиции требуемого расположения курсора 4.
Рассматривая определение номера позиции требуемого расположения курсора 4 с помощью указателя мыши, можно сказать, что номером позиции требуемого расположения курсора 4 является номер позиции близлежащего символа в направлении противоположном направлению ввода символов, причем независимо от места установки указателя мыши в поле 3 редактирования. Забегая вперед, следует заметить, что в способе по пункту №6 формулы изобретения при определенных условиях определение номера позиции требуемого расположения курсора 4 с помощью указателя мыши может зависеть от места установки указателя мыши в поле 3 редактирования (рассмотрено подробно ниже при описании пункта №6 формулы изобретения).
Из приведенного на фиг. 1 примера видно, что в момент добавления ширины символа «5» полученная сумма превысит значение места нахождения указателя мыши и, следовательно, в позиции требуемого расположения курсора 4 находится цифра «4».
Определение позиции требуемого расположения курсора 4 путем использования клавиатуры происходит иначе. Зная текущую позицию курсора 4, можно определить следующую. Нажимая на клавишу «стрелка вправо», происходит увеличение номера позиции курсора 4 на единицу, если текущая позиция курсора 4 меньше максимально возможной позиции в поле 3 редактирования.
Нажимая на клавишу «стрелка влево» происходит уменьшение номера позиции курсора 4 на единицу, если текущая позиция курсора 4 не находится в начале поля 3 редактирования.
Далее проверяют следующее условие:
«если номер позиции требуемого расположения курсора 4 не менее номера позиции начала поля 3 редактирования».
В рассматриваемом примере номер позиции требуемого расположения курсора 4 равен четырем и этот номер больше единицы (в данном примере позиция начала поля 4 редактирования равна единице), следовательно, данное условие выполнено и переходят к следующей операции заявленного способа.
Первую границу 1 курсора 4 устанавливают в позицию требуемого расположения курсора 4, а вторую границу 2 курсора 4 устанавливают в интервале, начинающимся позицией начала поля 3 редактирования и заканчивающимся позицией первой границы 1 курсора 4.
Первую границу 1 курсора 4 устанавливают в позицию требуемого расположения курсора 4.
После того, как определили позицию требуемого расположения курсора 4, которая в рассматриваемом примере равна четырем и в ней находится цифра «4», первую границу 1 курсора 4 устанавливают в позицию требуемого расположения курсора 4.
Позиция расположения курсора 4 это область, занимаемая символом (знакоместо), в данной позиции. Правая граница данного символа (его крайний пиксель справа) является правой границей курсора 4, формируемого заявленным способом. К правой границе данного символа можно отнести и пиксель, разделяющий смежные символы, если такой есть (если он не последний в строке).
В примере, приведенном на фиг. 1, первая граница 1 установлена в позиции с номером четыре. Как будет видно ниже данная граница (знакоместо) будет иметь определенный цвет фона (фон знакоместа).
Вторую границу 2 курсора 4 устанавливают в интервале, начинающимся позицией начала поля 3 редактирования и заканчивающимся позицией первой границы 1 курсора 4.
Поскольку, как было отмечено выше, длина курсора 4 задана разработчиком равной трем знакоместам, то есть суме трех входящих в него символов с учетом разделяющих данные символы пикселей, то определяется возможность установить вторую границу 2 в поле 3 редактирования (есть ли место для ее установки). Курсор 4 не может выходить за начало поля 3 редактирования, то есть вторая его граница 2 не может быть расположена менее номера позиции начала поля 3 редактирования.
Позицию начала поля 3 редактирования можно обозначить нулем, единицей или любой цифрой, поэтому в формуле изобретения нет конкретно привязки к определенному номеру позиции начала поля 3 редактирования. В данном описании, для определенности, позиция начала поля 3 редактирования равна единице.
В примере, приведенном на фиг. 1, первая граница 1 установлена в позиции с номером четыре. Место расположения второй границы 2 определяется вычитанием из номера позиции 1 требуемого расположения курсора 4, которая в данном примере равен четырем, длины курсора 4, которая в данном примере равна трем, и прибавлением единицы к полученной разнице. Вычитаем из четырех три и прибавляем единицу, получаем два. Таким образом, вторую границу 2 следует установить в позицию с номером два, которая лежит в интервале начинающимся позицией начала поля 3 редактирования (номер данной позиции равен единице) и заканчивающимся позицией первой границы 1 курсора 4 (номер позиции равен четырем).
Если бы длина курсора 4 была установлена разработчиком интерфейса пользователя равной пяти и позиция требуемого расположения курсора 4 равна четырем, как это показано на фиг. 1, то из расчета четыре минус пять плюс единица получилось бы, что вторую границу 2 курсора 4 следовало бы установить в позицию ноль, которая отсутствует в поле 3 редактирования (позиции в нем начинаются с единицы). В этом случае вторая граница 2 курсора 4 была бы установлена в начало поля 3 редактирования. Причем длина курсора 4 сократилась бы до четырех символов (знакомест). Если далее нажимать клавишу «стрелка влево», то с каждым ее нажатием длина курсора 4 уменьшалась бы на единицу до тех пор, пока она не стала бы равной нулю.
Поскольку длина курсора 4 может быть выбрана разработчиком интерфейса пользователя любой, то и вторая граница 2 курсора 4 относительно первой границы 1 курсора 4 может находиться в любой позиции поля 3 редактирования, но только в пределах вышеотмеченного интервала.
Курсор 4 выводят с фоном, цвет которого отличен от исходного цвета фона поля 3 редактирования и является контрастным по отношению к цвету шрифта выводимого текста.
На фиг. 1 показан курсор 4 серого цвета, который отличен от исходного белого цвета фона поля 3 редактирования и является контрастным по отношению к черному цвету шрифта выводимого текста. На фиг. 1 курсор 4 имеет длину три знакоместа, а именно он занимает знакоместа цифр «2», «3» и «4». Знакоместо, занимаемое цифрой «4» является первой границей 1 (позицией требуемого расположения) курсора 4, а знакоместо, занимаемое цифрой «2» - его второй границей 2.
Если в данном случае нажать на клавишу «Delete», то будет удалена цифра «5», если нажать клавишу «BackSpace», то будет удалена цифра «4», то есть первая граница 1 (указатель курсора 4) выполняет свою функцию указателя курсора также, как и известный курсор, формируемый в виде вертикальной черты, если бы он находился между цифрами «4» и «5».
В поле 3 редактирования за пределами курсора 4 определяют позиции, в которых цвет фона отличен от исходного, и если такие есть, то в данных позициях заменяют цвет фона на исходный.
Поскольку в данном примере (фиг. 1) первоначально курсора 4 не было в поле 3 редактирования, то за пределами курсора 4 (фиг. 1) во всех позициях поля 3 редактирования цвет фона совпадает с исходным белым цветом. Следовательно, в этом случае ничего не надо менять в поле 3 редактирования за пределами курсора 4.
Если бы курсор 4 ранее находился правее на одну позицию по сравнению с курсором 4, изображенным на фиг. 1, то есть в позиции с третьей по пятую включительно был бы серый цвет, то при нажатии на клавишу «стрелка влево» курсор 4 переместился бы влево на одну позицию и находился бы там, где это показано на фиг. 1. В этом случае в позиции с номером «5» фон поля 3 редактирования остался бы серым от прежнего расположения курсора 4. Что бы этого не произошло, необходимо в данной позиции с номером «5» заменить цвет фона серый на исходный белый цвет фона. То есть данная операция заявленного способа необходима для удаления «следа», оставляемого курсором 4 при его перемещении.
Если номер позиции требуемого расположения курсора 4 менее номера позиции начала поля 3 редактирования, то курсор 4 в поле 3 редактирования не выводят.
Пусть курсор 4 находился в позиции с номером четыре (см. фиг. 1) и пользователь последовательно два раза нажал на клавишу «стрелка влево». В результате этого курсор 4 переместился на две позиции и первая граница 1 курсора 4 установлена в позицию с номером два, а вторая граница 2 курсора 4 в позицию с номером один. Длина курсора 4 уменьшилась с трех знакомест до двух знакомест. При следующем нажатии пользователем на клавишу «стрелка влево» номера позиций первой границы 1 курсора 4 и второй границы 2 курсора 4 совпадут и будут равны единицы.
При следующем нажатии пользователем клавиши «стрелка влево» значение позиции первой границы 1 курсора 4 должно было бы уменьшиться на единицу и быть равным нулю, то есть меньше единицы (в данном примере позиция начала поля 3 редактирования равна единице). В этом случае курсор 4 в поле 3 редактирования не выводят.
То есть, если курсора 4 нет в поле 3 редактирования, то считается, что курсор 4 находится перед позицией №1. Так в этом случае при нажатии клавиши «Delete» в примере, приведенном на фиг. 1, будет удалена цифра «1», выведенная в первую позицию поля 3 редактирования, а при вводе цифры «6» она заменит цифру «1», если не включен режим вставки символов «Insert».
Когда пользователь работает только с одной строкой, например, при вводе слов поискового запроса в интерфейсе поисковой системы, то ни какой проблемы не возникает, поскольку если курсор 4 отсутствует, то логично предположить, что ввод первого символа будет происходить с первой позиции поля 3 редактирования.
Однако в многостраничном документе с множеством таких пустых строк может возникнуть проблема определения места нахождения курсора 4 в одной из этих строк.
Для решения этой проблемы заявитель предлагает следующее.
Если данное поле 3 не пусто, то первую границу 1 курсора 4 размещают в начале поля 3 редактирования, вторую его границу 2 размещают в конце поля 3 редактирования, данное поле 3 выводят с фоном, цвет которого отличен от исходного его цвета и является контрастным по отношению к цвету шрифта выводимого текста.
То есть, заявитель предлагает вывести все поле 3 редактирования с фоном, цвет которого отличен от исходного его цвета и является контрастным по отношению к цвету шрифта выводимого текста. Иначе говоря, установить длину курсора 4 равной длине всей строки (поля 3 редактирования). В этом случае курсор 4 имеет максимально возможную длину и, следовательно, делает его максимально заметным.
Если все поле 3 редактирования закрашено цветом, отличным от исходного цвета, то это означает то, что в поле 3 редактирования нет ни одного символа (поле 3 редактирования пусто) и курсор 4 находится в его начале. Если бы в поле 3 редактирования использовался известный курсор, формируемый в виде вертикальной черты черного цвета, то он бы находился перед цифрой «1» в рассматриваемом примере (см. фиг. 1).
Если данное поле 3 пусто, то первую границу 1 курсора 4 размещают в начале поля 3 редактирования, вторую его границу 2 размещают в конце поля 3 редактирования, данное поле 3 выводят с фоном, цвет которого отличен от исходного его цвета и является контрастным по отношению к цвету шрифта выводимого текста, или/и в данное поле 3 выводят один или несколько заранее определенных символов, информирующих пользователя о нахождении курсора 4 в данном пустом поле 3, который (е) удаляют при вводе первого символа в поле 3 редактирования.
Если поле 3 редактирования пусто, то в него возможен вывод заранее определенных символов, информирующих пользователя о нахождении курсора 4 в данном пустом поле 3 редактирования. Например, можно вывести в середине него текст «Данное поле пусто», «Строка пуста» или в начале него вывести несколько символов «<» (символ «меньше»), например «<<<<<<<<», указывающих на то, что курсор 4 находится в начале поля 3 редактирования. При вводе первого символа в поле 3 редактирования, который будет выведен в позицию номер один, все ранее выведенные в данное поле 3 редактирования поясняющие символы удаляют, освобождая место для вводимых пользователем символов.
Выше был рассмотрен пример, в котором предполагалось, что разработчик интерфейса пользователя установил длину курсора 4 определенной длины, равной трем. Длина курсора 4 изменялась, в данном случае уменьшалась, при перемещении первой границы 1 курсора 4 из позиции с номером три в позицию номер два, а если номер позиции курсора 4 был больше или равен трем, то его длина оставалась постоянной.
Возможны и другие зависимости длины курсора 4 от места положения курсора 4 в поле 3 редактирования.
Длина курсора 4 может зависеть от длины слова, на котором находится первая граница 1 курсора 4, и одновременно от номера позиции первой границы 1 курсора 4 в данном слове. Способ формирования курсора 4, при котором длина курсора 4 находится в такой зависимости от места нахождения первой границы 1 курсора 4, описан в пункте №4 формулы изобретения, который имеет следующий вид:
«Способ по пункту 1 или 2, в котором вторую границу 2 курсора 4 располагают в начале текущего слова».
Особенно это удобно для пользователя при вводе им текста в поле 3 редактирования, так как в этом случае вводимое слово выделяется в тексте своим цветом фона, отличным от исходного цвета фона поля 3 редактирования. В этом случае не возникает неопределенности в том, какая из границ курсора 4 является указателем курсора 4. Кроме того, выделение текущего слова цветом фона позволяет пользователю сосредоточить свое внимание именно на нем.
Начало текущего слова может быть определено следующим образом.
Определяют координату указателя мыши по горизонтали, суммируют ширины символов в пикселях (и пиксели, разделяющие данные символы), начиная от начала строки, до того, пока их сумма не превысит ранее определенную величину координаты указателя мыши по горизонтали. Момент превышения полученной суммы ранее определенной координаты указателя мыши по горизонтали означает то, что текущий символ принадлежит текущему слову. Далее, продолжая последовательное считывание символов текущего слова справа налево, определяют первый символ текущего слова, который отличен от пробела или является первым символом строки (если слово находится в начале строки), а также определяют номер его позиции в строке (в поле 3 редактирования).
Если пользователь использовал клавиатуру компьютера для перемещения курсора 4, то начало текущего слова определяется иначе.
На фиг. 2 изображены два слова: «123» и «5678». В этом примере цифры, образующие данные слова, одновременно указывают на позицию, в которых они располагаются. Например, цифра «5», являющаяся первой цифрой второго слова, находится в пятой позиции поля 3 редактирования.
Если пользователь установит указатель мыши между цифрами «6» и «7» второго слова и щелкнет левой кнопкой мыши, то будет передано управление программному обработчику, который по соответствующему алгоритму определит первый символ текущего слова, определит позицию первой границы 1 курсора 4, которая будет равна шести, вторую границу 2 курсора 4 установит в начало текущего слова, то есть в позицию с номером пять и выведет цифры «5» и «6» с фоном серого цвета. В результате этого курсор 4 будет сформирован так, как это показано на фиг. 2.
Возможен и другой способ формирования курсора 4 (см. пункт №5 формулы изобретения) согласно которому вторую границу 2 курсора 4 располагают в начале поля 3 редактирования (см. фиг. 3). По мнению заявителя, такой способ формирования курсора 4 является наилучшим.
Если пользователь установит указатель мыши между цифрами «6» и «7» второго слова (см. фиг. 3) и щелкнет левой кнопкой мыши, то будет передано управление программному обработчику, который по соответствующему алгоритму определит позицию первой границы 1 курсора 4, которая будет равна шести, вторую границу 2 курсора 4 установит в начало текущего поля 3 редактирования, то есть в позицию с номером один, и поле 3 редактирования с первой позиции по шестую позицию включительно будет выведено с фоном серого цвета (закрашено серым цветом). Курсор 4 в этом случае будет иметь вид согласно фиг. 3.
В этом случае исключена какая-либо неопределенность в том, какая из границ курсора 4 является указателем 1 курсора 4, а также по мере ввода текста длина курсора 4 увеличивается и может достичь своего максимума -длины всего поля 3 редактирования, то есть максимума заметности.
Выше был рассмотрен способ формирования курсора 4, в котором область нахождения курсора 4 («тело» курсора 4) обозначалась цветом фона, отличным от исходного цвета фона поля 3 редактирования. Однако возможен и другой способ формирования курсора 4 (см. пункт №2), при котором собственно курсор 4 образуется самими символами, но с иными характеристиками шрифта по отношению к символам, находящимся за пределами курсора 4.
Для определенности будем считать, что курсор 4 будут образовывать символы, выведенные полужирным шрифтом, а исходным шрифтом будет обычный.
Описание данного способа аналогично ранее приведенному описанию способа формирования курсора 4 по пунктам №1, №4 и №5. Отличие заключается лишь в том, что символы, образующие курсор 4, будут выведены полужирным шрифтом без изменения цвета фона. Так, изображенные на фиг. 1 цифры «2», «3» «4» будут выведены не обычным шрифтом, а полужирным и они будут выведены на белом фоне, на фиг. 2. цифры «5» и «6» будут выведены не обычным шрифтом, а полужирным и они будут выведены на белом фоне, на фиг. 3. цифры «1», «2», «3», «5» и «6» будут выведены не обычным шрифтом, а полужирным и они будут выведены на белом фоне (вывод символов полужирным фоном на фигурах не показан). То есть, если в фиг. 1, фиг. 2 и фиг. 3 мысленно заменить символы, образующие курсор 4, выведенные обычным шрифтом на символы с полужирным шрифтом, то данные фигуры можно использовать для иллюстрации заявленного способа по пунктам №2, №4 и №5.
Поле 3 редактирования выводят с фоном, цвет которого отличен от исходного его цвета и является контрастным по отношению к цвету шрифта выводимого текста, только в случае если данное поле 3 редактирования пусто.
В этом случае первую границу 1 курсора 4 размещают в начале поля 3 редактирования, вторую его границу 2 размещают в конце поля 3 редактирования, данное поле 3 редактирования выводят с фоном, цвет которого отличен от исходного его цвета и является контрастным по отношению к цвету шрифта выводимого текста.
Способ согласно пункту №2 формулы изобретения работает только в том случае, когда в интерфейсе пользователя используется моноширинный шрифт, то есть это шрифт, в котором все знаки (точнее, кегельные площадки знаков) имеют одинаковую ширину. Если в поле 3 редактирования вводятся символы пропорционального шрифта, в котором символы отличаются по ширине друг от друга, то необходимо ввести дополнительную операцию согласно пункту №3 формулы изобретения.
Это обусловлено тем, что ширины символов, образующие курсор 4, будут отличаться от ширины этих же символов, но до образования курсора 4, в результате чего сумма данных ширин символов будет величиной переменной. Для того чтобы учесть данное изменение, в поле 3 редактирования повторно выводят текст, начиная с первого символа области курсора 4.
Иначе говоря, для того чтобы символы курсора 4 не заезжали на следующие за ним символы (сумма символов курсора 4 больше суммы этих символов до попадания в область курсора 4) или чтобы не образовывалось промежутка между первой границей 1 курсора 4 и следующими за ним символами (сумма символов курсора 4 меньше суммы этих символов до попадания в область курсора 4) необходимо в поле 3 редактирования повторно вывести текст, начиная с первого символа области курсора 4.
Если поставить задачу формировать курсор 4 так, чтобы при любом месте нахождения первой его границы 1 (указателя 1 курсора 4) в поле 3 редактирования длина курсора 4 была бы не менее половины длины поля 3 редактирования, то решение этой оптимизационной задачи будет таким, как в пункте №6 формулы изобретения.
Сначала определяют позицию требуемого расположения курсора 4, а также выраженное в пикселях место его расположения. Как именно это происходит, частично было приведено выше при описании примера, иллюстрируемого фиг. 1.
Если выраженное в пикселях значение места требуемого расположения курсора 4 больше или больше и равно выраженного в пикселях значения середины поля 3 редактирования, то первую границу 1 курсора 4 устанавливают в позицию близлежащего символа в направлении противоположном направлению ввода символов, а вторую границу 2 курсора 4 устанавливают в начало поля 3 редактирования, в противном случае первую границу 1 курсора 4 устанавливают в позицию близлежащего символа в направлении ввода символов, а вторую границу 2 курсора 4 устанавливают в конец поля 3 редактирования.
Рассмотрим пример согласно фиг. 4, на которой изображено поле 3 редактирования длиной восемь символов, полностью заполненное одним словом «12345678», состоящим из последовательности цифр. Данный пример составлен так, чтобы было легко определить середину области 3 редактирования. Середина области 3 редактирования находится между позицией №4 и позицией №5, что соответствует ее нахождению между цифрами «4» и «5».
Пусть пользователь решил, что позиция требуемого расположения курсора 4 должна находиться между второй и третьей позицией, если бы курсор 4 был бы сформирован известным способом в виде вертикальной черты.
В этом случае выраженное в пикселях значение места требуемого расположения курсора не удовлетворяет условию «больше или больше и равно» выраженного в пикселях значения середины поля 3 редактирования (это видно из фиг. 4, на которой третья позиция меньше четвертой позиции), и, следовательно, позиция требуемого расположения курсора 4 будет равна позиции близлежащего символа в направлении ввода символов, а именно позиции №3, в которой находится символ «3».
Затем первую границу 1 курсора 4 устанавливают в позицию требуемого расположения курсора 4.
Первую границу 1 курсора 4 устанавливают в позицию №3, то есть в ту позицию, где расположена цифра «3» (см. фиг. 4).
Вторую границу 2 курсора 4 устанавливают в конец поля 3 редактирования (см. фиг. 4). Курсор 4 в данном случае занимает позиции с третьей по восьмую включительно и длина его равна шести знакоместам символов, что больше половины длины поля 3 редактирования.
Пусть теперь пользователь решил, что позиция требуемого расположения курсора 4 должна находиться между шестой и седьмой позицией, если бы курсор 4 был бы сформирован известным способом в виде вертикальной черты.
В этом случае выраженное в пикселях значение места требуемого расположения курсора удовлетворяет условию «больше или больше и равно» выраженного в пикселях значения середины поля 3 редактирования (это видно из фиг. 5, на которой шестая позиция больше четвертой позиции), и, следовательно, позиция требуемого расположения курсора 4 будет равна позиции близлежащего символа в направлении противоположном направлению ввода символов, а именно позиции №6, в которой находится символ «6».
Затем первую границу 1 курсора 4 устанавливают в позицию требуемого расположения курсора 4.
Первую границу 1 курсора 4 устанавливают в позицию №6, то есть в ту позицию, где расположена цифра «6» (см. фиг. 5).
Вторую границу 2 курсора 4 устанавливают в начало поля 3 редактирования (см. фиг. 5). Курсор 4 в данном случае занимает позиции с первой по шестую включительно и длина его равна шести знакоместам символов, что больше половины длины поля 3 редактирования.
Далее область курсора 4 выводят с фоном, цвет которого отличен от исходного цвета фона поля 3 редактирования и является контрастным по отношению к цвету шрифта выводимого текста. В поле 3 редактирования за пределами области курсора 4, в котором цвет фона отличен от исходного, заменяют цвет фона на цвет исходного фона поля 3 редактирования.
На фиг. 4 и 5 цвет фона поля 3 редактирования белый, а цвет курсора 4 серый.
В примере согласно фиг. 4 и в примере согласно фиг. 5 курсор 4 сформирован длиной не меньше половины длины поля 3 редактирования.