ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 8

                                6-1
     Глава 6. Позиционирование курсора
     6.1. Введение
     Эта  глава описывает команды позиционирования курсора. Хотя 
прин-
тер в действительности не имеет курсора, местоположение курсора  
отно-
сится  непосредственно к активному положению печатаемого символа 
( по-
добно мигающему построчному знаку, который используется в большей
 час-
ти терминалов). Курсор может перемещаться где-нибудь в пределах  
логи-
ческой  страницы,  используя сочетание команд горизонтального и в
ерти-
кального позиционирования курсора и управляющие коды.
     6.2. Абсолютное/относительное позиционирование курсора
     С помощью этой команды может быть определено либо  относител
ьное,
либо абсолютное перемещение. Относительное перемещение определяет
 рас-
стояние до которого необходимо двигаться из текущего активного по
ложе-
ния;  абсолютное  перемещение определяет физическое  положение от
носи-
тельно точки пересечения верхней границы поля страницы и левой гр
аницы
логической страницы, которая представляет собой нулевую позицию п
о го-
ризонтали и вертикали.
     
     6.3. Единицы измерения позиционирования курсора
     Позиционирование  курсора выполняется в единицах системы коо
рди-
нат языка PCL.
     Единицы  измерения  по  оси  Х системы координат языка PCL м
огут 
быть деципунктами, точками  или  столбцами.  Единицы измерения по
 оси 
Y системы координат языка PCL могут быть  отмечены точками,  деци
пун-
ктами, или строками. 
     Точка  является самой маленькой  печатаемой  величиной. На п
рин-
тере LaserJet 2000  одна точка равняется  1/300 дюйма.  Число  то
чек, 
напечатанных в  одном  дюйме определяется как разрешающая способн
ость 
принтера.
     Деципункт  соответствует 1/720 дюйма или 1/10 части типограф
ско-
го пункта PCL.
     Ширина  столбца определяется  текущим  индексом  горизонталь
ного
перемещения  ( HMI ).  Расстояние  меж  строками определяется тек
ущим 
индексом вертикального перемещения (VMI). HMI представляет собой 
рас-
стояние между соседними символами. VMI представляет  собой рассто
яние
между соседними строками текста.  HMI  и VMI описаны более подроб
но в
главе 5.
                                  
				6-2	
     6.4. Горизонтальное позиционирование курсора (по столбцам)
     Команда  " Горизонтальное позиционирование курсора "  переме
щает
текущее  активное положение  по горизонтали на место нового столб
ца в
текущей строке.
          Eс&а#C
     # = Число столбцов
				     Top ДДДДДДДДДї
				     Margin 1	  і
			ЪДДДДДДДДДДДДДДї	  і
		  (0,0)	і X ДДц	       і	  і
		       \Ы..............ічДДДДДДДДДЩ
			і	       і
			і Y            і Logical Page 2
			і і	       і/ 	
			і ш	       і
			і	       і
			і	       і
			АДДДДДДДДДДДДДДЩ
			      Top	
			    Margin ДДДДДДДДДДДДДДДДДДДДї
                            і         		       і
	  ЪДДДДДДДДДДДДДДДї і	    ЪДДДДДДДДДДДДДДДї  і
    (0,0) і   X ДДДц      і і (0,0) і    X ДДДц	    і  і
	 \Ы...............ічЩ      \Ы...............і чЩ
      Y   і        щ	  і     Y   і 		    і
      і   і        і      і     і   і(X1,Y1)        і 	
      і   і(X1,Y1) Y2     і     і   і   Ы....(Y2-Y1)і
      і   і    Ы   і      і     і   і   .   щ /     і
      і   і        ш   	  і     і   і   .   ш       і
      ш	  ічДДX2ДДцЫ      і     ш   і   .чДцЫ чї    і			
	  і		  і         і    /     і    і
	  і		  і         і(X2-X1)   і    і
	  і		  і	    і        (X2,Y2)і
	  АДДДДДДДДДДДДДДДЩ	    АДДДДДДДДДДДДДДДЩ		    
	      Absolute			 Relative
	      Movement 3		 Movement 4
 5 Horizontal Cursor Value = X2    9 Horizontal Cursor value =+(X
2-X1)
 6 Vertical Cursor Value = Y2     10 Vertical Cursor value =+(Y2-
Y1)   
 7 (X1,Y1) is the current active position
 8 (X2,Y2) is The current active position after the move
                 
                 
     Рис. 6-1. Абсолютное и относительное позиционирование курсор
а:
               1 - верхняя граница поля страницы; 2 - логическая 
стра-
               ница; 3 - абсолютное перемещение; 4 - относительно
е пе-
               ремещение; 5 - значение курсора по горизонтали = Х
2;
               6 - значение курсора по вертикали = Y2; 7 - ( X1,Y
1)  -
               текущее активное положение; 8 - ( X2,Y2 ) - текуще
е ак-
               тивное положение после перемещения; 9 - значение к
урсо-
               ра по горизонтали = + ( Х2 - Х1 ); 10 - значение к
урсо-
	       ра по вертикали = + ( Y2 - Y1 ).
                                6-3
     Ширина столбца  определяется текущим HMI.  Поле значений (#)
 с
положительным знаком (+) показывает,  что  новое  положение  нахо
дится
справа  и  является относительным к текущему положению курсора;  
а об-
ласть значения (#) с отрицательным значением (-) показывает, что 
новое
положение  находится слева и является относительным к текущему по
ложе-
нию курсора.  Отсутствие знака перед  #  показывает,  что  переме
щение
абсолютное,  которое  определяется от левого края логической стра
ницы.
Первый столбец на строке - это столбец 0. Этот порядок игнорирует
 гра-
ницы и может быть использован для установки текущего активного по
ложе-
ния в любом месте текущей строки.  Если создается запрос на распо
ложе-
ние за пределами логической страницы принтера,  текущее активное 
поло-
жение перемещается к соответствующему пределу логической страницы
     Поле значений  4 десятичных разряда.
     6.5. Горизонтальное позиционирование курсора (по деципунктам
 )
     Эта команда  "Горизонтальное позиционирование курсора" перем
ещает
активное положение по горизонтали на  новое  место  по  горизонта
льной
оси.
          Eс&а#Н
     # = Число деципунктов (1/720 дюйма)
     Поле значения (#) с положительным знаком (+)  показывает,  ч
то
новое  положение  находится справа и является относительным к тек
ущему
положению курсора; а отрицательный знак (-) показывает новое поло
жение
слева   и   является   относительным  к  текущему  положению  кур
сора.
Отсутствие знака перед # показывает, что перемещение абсолютное, 
кото-
рое определяется от левого края логической страницы. Левое крайне
е по-
ложение - это 0,  а правое крайнее положение соответствует правой
 гра-
нице  логической  страницы.  Если  создается запрос на расположен
ие за
пределами логической страницы и принтера,  текущее активное  поло
жение
перемещается к соответствующему пределу логической страницы.
     Поле значения  2 десятичных разряда.
     6.6. Горизонтальное позиционирование курсора (по точкам)
     Эта команда " Горизонтальное позиционирование курсора " пере
меща-
ет текущее активное положение по горизонтали на новое место  по  
гори-
зонтальной оси.
          Eс*р#Х
     # = Число точек
     Поле  значения  (#)  с  положительным знаком (+) показывает,
  что
новое положение находится справа и является относительным  к  тек
ущему
положению курсора; а отрицательный знак (-) показывает новое поло
жение
слева  и  является  относительным  к   текущему   положению   кур
сора.
Отсутствие знака перед # показывает, что перемещение абсолютное, 
кото-
рое определяется от левого края логической страницы. Левое крайне
е по-
ложение - это 0,  а правое крайнее положение соответствует правой
 гра-
нице логической страницы.  Если создается запрос  на  расположени
е  за
пределами логической страницы принтера, текущее активное положени
е пе-
ремещается к соответствующему пределу логической страницы.
     6.7. Управляющие коды горизонтального позиционирования курсо
ра
     Существует 4 вида управляющих кодов, которые могут использов
аться
для расположения курсора по горизонтали на текущей строке.  Эти у
прав-
ляющие коды объясняются ниже.
     6.7.1. CR - обратный ход каретки
     Перемещает текущее активное положение к левой границе на  те
кущей
строке.  (Смотри  команду "Завершение строки", которая приводится
позднее в этой главе.)
                                6-4  
  
     6.7.2. SP - пробел
     Перемещает  текущее  активное  положение  вправо на один сто
лбец.
Пробел  может быть символом, доступным для  печати,  или  управля
ющим
кодом.  Если  символ определяется для кода пробела, печатается пр
обел,
в  противном  случае,  он  является управляющим кодом. Для пропор
цио-
нально расположенных шрифтов  управляющий  код  пробела  корректи
рует
положение  курсора  значением  текущего HMI; однако пробел, досту
пный
для печати, корректирует  положение курсора на  ширину  символа. 
 Для
фиксированных шрифтов  пробел корректирует положение курсора в  с
оот-
ветствии  со значением  HMI, независимо от того имеет ли он управ
ляю-
щий код или способность быть напечатанным.
     6.7.3. BS - возвращение курсора на одну позицию
     Перемещает  текущее активное положение влево на расстояние р
авное
ширине последнего напечатанного символа или пробела. Если активно
е по-
ложение уже находится на левой границе, действие не выполняется.
     При  использовании фиксированных  шрифтов, расстояние, на
которое возвращается курсор определяется текущим основным шагом п
ечати
(т.е. установкой HMI).
     При использовании  пропорциональных шрифтов однократное возв
раще-
ние курсора осуществляется  способом,  который центрирует налагаю
щийся
символ на символ уже напечатанный. После печати  наложенного  сим
вола,
положение  курсора  остается таким  же, как  до возвращения курсо
ра на
одну позицию. Многоразовое возвращение  каждый  раз перемещает  к
урсор
назад на ширину последнего  напечатанного  символа или пробела. Н
апри-
мер:  если было напечатано  слово  " World" пропорциональным шриф
том и
затем был выполнен возврат курсора  на  5 позиций, расстояние, на
  ко-
торое передвигается курсор, должно  равняться  пятикратной ширине
 бук-
вы "d". Если активное положение находится на  левой  границе, дей
ствие
не выполняется.
     6.7.4. НТ - горизонтальная табуляция
     Перемещает текущее активное положение к  следующему  огранич
ителю
табуляции на текущей строке. Ограничители табуляции находятся на 
левой
границе и на каждом восьмом столбце (разряде) между левым краем и
 пра-
вой  границей логической страницы. Если новое положение на горизо
нтали
пересекает правую границу, новое положение на горизонтали устанав
лива-
ется на правой границе. Если текущее значение HMI равно 0, команд
а иг-
норируется.
     6.8. Вертикальное позиционирование курсора (по строкам)
     Эта  команда " Вертикальное позиционирование курсора " перем
ещает
текущее активное вертикальное положение в такое же  положение  ст
олбца
на новой строке.
          Eс&а#R
     # = Число строк
     Область значения  (#) с положительным знаком (+) показывает,
  что
новое положение находится под текущим , является относительным к 
теку-
щему положению курсора и отрицательный знак (-) показывает,  что 
новое
положение находится над текущим и является  относительным  к  тек
ущему
положению  курсора.  Отсутствие знака показывает,  что новое поло
жение
является абсолютным относительно верхней границы поля страницы.  
Самое
верхнее положение,  определенное верхней границей поля страницы, 
равно
0 и самое нижнее положение определяется низом логической страницы
     Запросы на абсолютные и отрицательные относительные  перемещ
ения,
которые  превысили  пределы  логической страницы, перемещают курс
ор на
соответствующий предел логической страницы. Положительное  относи
тель-
                                6-5
ное  позиционирование  позволяет  пользователю  выходить за  теку
щую
страницу на определенное число линий.  Вертикальное  позициониров
ание
курсора  игнорирует  режим  перфорационного прогона, разрешая
пользователю перемещаться в область перфорации.
     Поле значения  4 десятичных разряда.
     6.9. Вертикальное позиционирование курсора (по деципунктам )
     Эта команда " Вертикальное позиционирование курсора "  перем
ещает
текущее  активное  вертикальное положение к новому положению по в
ерти-
кальной оси.
           Eс&а#V
     # = Число деципунктов (1/720 дюйма)
     Область значения  (#) с положительным знаком (+) показывает,
  что
новое положение находится под текущим и является относительным к 
теку-
щему положению курсора и отрицательный знак (-) показывает,  что 
новое
положение находится над текущим и является  относительным  к  тек
ущему
положению  курсора.  Отсутствие знака показывает,  что новое поло
жение
является абсолютным относительно верхней границы поля страницы.  
Самое
верхнее положение,  определенное верхней границей поля страницы, 
равно
0 и самое нижнее положение  определяется  низом  логической  стра
ницы.
Если создается запрос на расположение за пределами логической стр
аницы
принтера, то текущее  активное положение смещается к соответствую
щему
пределу логической страницы.
      Область значения  2 десятичных разряда.
     6.10. Вертикальное позиционирование курсора (по точкам)
     Эта команда " Вертикальное позиционирование курсора "  перем
ещает
текущее активное положение к новому положению по вертикальной оси
           Eс*р#Y
     # = Число точек
     Область значения (#) с положительным знаком (+)  показывает,
  что
новое положение находится под текущим и является относительным к 
теку-
щему положению курсора и отрицательный знак (-) показывает,  что 
новое
положение  находится  над  текущим и является относительным к тек
ущему
положению курсора.  Отсутствие знака показывает абсолютное  расст
ояние
от верхней границы поля страницы.  Самое верхнее положение, опред
елен-
ное верхней границей поля страницы,  равно 0 и самое нижнее  поло
жение
определяется  низом  логической  страницы.  Если  создается  запр
ос на
расположение за пределами логической страницы принтера, текущее а
ктив-
ное положение перемещается к соответствующему пределу логической 
стра-
ницы.
     6.11. Протяжка бумаги на полстроки
     Команда "Протяжка бумаги на полстроки" перемещает курсор к т
акому
же положению символа на полстроки вниз. Расстояние, образуемое пр
и пе-
ремещении  во  время протяжки на полстроки представляет собой пол
овину
текущего строчного интервала (определенного последним VMI или уст
а-
новкой межстрочного интервала).
           Eс= - Протяжка бумаги на полстроки
     6.12. Управляющие коды вертикального позиционирования курсор
     Существуют два вида управляющих кодов, которые могут быть ис
поль-
зованы,  чтобы  позиционировать курсор по вертикали.  Эти  управл
яющие 
коды объясняются  ниже.
     6.12.1. LF- протяжка на строку
     Продвигает текущее активное положение к такому  же  положени
ю  по
горизонтали на следующей строке.  Расстояние до следующей строки 
опре-
                                6-6
деляется текущим строчным интервалом  (определенным  последним  V
MI
или установкой строчного интервала). (Смотри команду "Заверше-
ние строки", которая описывается далее в этой главе).
     6.12.2. FF - подача бланка
     Продвигает текущее  активное  положение  к такому же положен
ию по
горизонтали в верхнюю  область  текста,  расположенного  на  след
ующей
странице (Смотри команду "Завершение строки", которая описывается
далее в этой главе).
     6.13. Завершение строки
     Команда "Завершение строки" управляет способом, по которому 
прин-
тер интерпретирует управляющие символы CR, LF и FF.
           Ec&k#G
     # = 0 - CR ц CR; LF ц LF; FF ц FF
         1 - CR ц CR - LF; LF ц LF; FF ц FF
         2 - CR ц CR; LF ц CR - LF; FF ц CR - FF
         3 - CR ц CR - LF; LF ц CR - LF; FF ц CR - FF
     Значение "Завершение строки", установленное по умолчанию на 
заво-
де-изготовителе принтеров, равно 0.
     6.14. Проталкивать в стек/выталкивать из стека курсор
      Команда "Проталкивать в стек/выталкивать из стека курсор" п
озво-
ляет сохранять и вызывать текущее положение курсора.
           Eс&f#S
     # = 0 - Проталкивать (сохранять положение курсора)
         1 - Выталкивать (вызывать положение курсора)
     Поле значения  равное  0  проталкивает  положение  курсора в
 стек
(не влияя на текущую  позицию).  Поле  значения  равное  1 выталк
ивает 
положение из стека,  возвращая его как текущее положение курсора.
     Примечание: Последний  элемент,    посылаемый   в стек,  явл
яется
                 первым элементом, извлекаемым из стека.
     В стек может быть помещено 20 значений.  Если  пользователь 
пыта-
ется сохранить больше 20 положений, команда игнорируется. Если по
льзо-
ватель пытается возвратить из стека большее число положений,  чем
 было
сохранено,  команда игнорируется.  Восстановление принтера в  исх
одное
положение  обнуляет стек текущего активного положения (все сохран
енные
положения отбрасываются).


Яндекс цитирования