-анкт-Петербургский государственный университет.
'изический факультет
раткое описание языка HPGL
(Hewlett-Packard Graphic Language)
со списком основных команд.
Выполнил:
Парамонов -ергей Борисович.
1998 г.
Введение.
    В последнее время корпорация Hewlett-Packard оказалась на лидирующих позициях, создав де-факто два стандарта для выводящих устройств : HPGL (сокращение от Hewlett-Packard Graphics Language) и PCL(Printer Control Language).
    'отя HPGL был предназначен для перьевых графопостроителей фирмы HP, нашлись варианты их использования в струйных и лазерных принтерах. PCL, с другой стороны, строго используется HP для его растровых устройств и очень
медленно теряет совместимость с языком PostScript и Windows-ориентированной direct-GDI.    HPGL -
графический язык, предназначенный для определения двухмерной графической информации для всего диапазона графопостроителей изготовленных фирмой Hewlett-Packard. HPGL стал де-факто стандартом для форматов графопостроителя и поддерживается почти всеми изготовителями графопостроителей как стандартная эмуляция. Большинство систем автоматизированного проектирования имеет способность выводить HPGL.    HPGL не задумывался как формат обмена графическими данными, но некоторые поставщики программного обеспечения используют его для этой цели. По крайней мере, он эффективен:HPGL - программы легко писать и читать. Этот реферат описывает те аспекты формата, которые могут использоваться, чтобы описать геометрию. -ам язык имеет большое количество команд, большинство из которых не связанны непосредственно с устройствами графопостроителя.
Что же такое HP-GL?
    HPGL -набор команд встроенный в ROM перьевых графопостроителей для помощи программистам по уменьшению объема работы, связанной с написанием программ вывода графики.    Векторная графика HPGL использует меньшее количество памяти, при хранении, в отличие от растровой графики также использует более эффективные операции ввода /вывода больших изображений при печати, ("о есть печать будет быстрее). При печати в HP-GL, принтер определит пункты "a", и "b", затем нарисует линию между ними, в растре же, принтер определяет каждую точку между пунктами "a" и "b".
раткая История HPGL
    HP-GL был добавлен к языку PCL в PCL 5-го уровня для принтеров семейства LaserJet III и был поддержан в принтерах семейства LaserJet 4 с расширенным уровнем PCL 5.
    - тех пор HPGL был основан, и так как сложность графопостроителей увеличилась за эти годы, то не все HPGL графопостроители могут читать все HPGL файлы полностью.
    Однако у HPGL имеется один существенный недостаток: он более громоздок в сравнении с другими графическими языками, что означает, что требуется более длинный, файл HPGL чем, скажем, файл DM/PL(сокращение от-digital microprocessor plotting language) фирмы "Houston Instruments".    Для преодоления этого ограничения в 1990 Hewlett-Packard стандартизировал различные версии HPGL как HPGL/2 которая уменьшает размер графического файла. Она позволила расширять спецификацию так, что при выполнении могла использовать более компактную форму записи(Encoded Polylines - одируемые Многолинии), что очень уменьшило размер файла и, следовательно, время передачи в два-три раза.
    ".к. HPGL, является де-факто графическим стандартом, конкуренты неизбежно включают HPGL или некоторый подобный диалект в свою графопостроительную продукцию. роме того, HPGL стал формой АВ"ОМА"ИЗИ-ОВАННОГО П-ОЕ "И-ОВАНИЯ, и теперь все пакеты АВ"ОМА"ИЗИ-ОВАННОГО П-ОЕ "И-ОВАНИЯ производят HPGL файлы, и некоторые могут считывать формат. HPGL развился за эти годы как приложение к множеству продукции HP такой как перья, электростатические, струйные, и лазерные графопостроители и принтеры.
-истемы координат HPGL.
    -уществует одна проблема для HPGL - то что в плоттерах используются две различных системы координат. Графопостроители с маленьким форматом, включая графопостроители А- и B-размера, располагают начало отсчёта в нижнем-левом углу; графопостроители же с большим форматом, включая графопостроители D- и E-размера, располагают начало отсчета в центре.
ЧЕ-"ЯЩИЙ ЭЛЕМЕН": В качестве единицы измерения HPGL использует plu (сокрашение для plotter units). Имеется 40 plu в миллиметр и 1,016 plu на дюйм.
Все графически языки имеют две формы границ чертежа:
Жесткие пределы - пределы, вне которых графопостроитель не может чертить из-за физических ограничений.
    Другие пределы обычно налагаются прикладным программным обеспечением, создающим графический файл. Любая часть рисунка, находящаяся вне пределов будет отрезана. HPGL называет чертёжные расширения как P1 (нижний - левый угол) и P2(верхний-правый) угол.
'ормат HPGL команды
    HPGL команда в основном состоят из двух символов верхнего регистра, сопровождаемых любыми аргументами, и наконец заканчивается в знаком разделителя(точкой с запятой).Аргументы обычно отделяются запятыми. -троковые аргументы заканчиваются символом перевода каретки.
    "акже имеется большой набор команд для управления текстом.
"ипичный файл HPGL состоит в основном из символов ASCII с некоторыми управляющими символами. Можно читать файл с любым редактором текста.
"ак как графические файлы имеют тенденцию быть написанными как одна длинная строка(никакой CR или LF), полезно иметь редактор текста без ограничения длины строки.
Графический файл в текстовом редакторе будет выглядеть примерно так:
Инициализация графических данных:
[ Esc].(;.I81;;17:[Esc].N;19:IN;SC;PU;PU;SP1;LT;VS36;
Чертёжные данные:
PA12345,4567; PD; PA-2345; 6789; ... и т.д.
Данные завершения печати:
PU; PA0,0; SP; EC; PG1; EC1; OE;
-асшифровка HPGL ода
HPGL состоит из двух видов команд:
1.-обственно HPGL-команды.
2. "правляющие команды устройства (или, сокращённо, DCI).
Наиболее типичная HPGL-команда:
PA1234,5678;
    оманды управляющие устройством начинаются с символа escape(ASCII 27, или 1B в шестнадцатеричной системе) записанный как [Esc] в данном обзоре. -едакторы текста часто показывают escape как левая стрелка (< -) или как Ctrl-скобка (^ [).
    "ипичная инструкция контроля устройства HP напоминает это:
[Esc] .N0; 19:
    Цель этого DCI состоит в том, чтобы определить Xoff (сокращение для конца передачи) символа окончания, который сообщает графопостроителю, какой символ ASCII программное обеспечение АВ"ОМА"ИЗИ-ОВАННОГО П-ОЕ "И-ОВАНИЯ ожидает получать как Xoff-символ.
Полезные команды с примерами применения.
    "ак как графопостроители - являются основными рисующими устройствамиаппаратных средств ЭВМ, не удивительно, что наиболее используемыекоманды - команды рисующие линии от одной точки до другой. Это действие управляется 4 командами,
Например, чтобы нарисовать линию от (1,0) до (2,0) должны быть определены
следующие команды:
PU; PA1,0; PD; PR1,0; PU;
    Имеются два основных атрибута, которые могут быть назначены линии, хотя на самом деле они фактически применяется к рисующему перу устройства.
Атрибуты линии:
SP - номер пера;
PT - толщина пера.
Номер пера действует как индексированная цветовая система, обычно там только 8 перьев различных цветов.
Другие геометрические фигуры можно определить следующими командами:
AR - дуга в относительной системе координат;
CI - круг;
EA - контур прямоугольника в абсолютной системе координат;
ER - контур прямоугольника в относительной системе координат;
EP - контур многоугольника;
EW - контур клина;
LB - метка;
Полный список команд приведён в приложении.
Приложение
.Примеры команд HPGL:
Необязательные аргументы команды показываются в скобках.
-охранено английское написание команд и аргументов во избежание неточностей при переводе.
Instruction Arguments
AA Arc Absolute x,y,angle(,tolerance)
AF Advance page
AH Advance page
AP Automatic Pen Operations n
AR Arc Relative x,y,angle(,tolerance)
AS Acceleration Select acceleration(,pennumber)
BF Buffer Plot
BL Buffer label string
CA Select Alternative Charset set
CC Character chord angle angle
CI Circle radius(,tolerance)
CM Character Selection Mode switchmode(,fallbackmode)
CP Character Plot spaces,lines
CS Select Standard Charset set
CT Chord Tolerance n
CV Curved line generator n(,inputdelay)
CD Digitize Clear
DF Default
DI Absolute Direction run,rise
DL Define Download character charnumber(,pencontrol),x,y(...)
DP Digitze Point
DR Relative Direction run.rise
DS Designate Charset slot,set
DT Define Label Terminator terminator
EA Edge Rectangle Absolute x,y
EP Edge Polygon
ER Edge Rectangle Relative x,y
ES Extra Space spaces(,lines)
EW Edge Wedge radius,startangle,sweepangle(,tolerance)
FP Fill Polygon
FS Force Select force(.pennumber)
FT Fill Type type(,spacing(,angle))
GC Group Count countnumber
GM Graphics Memory (polygonbuff)(,downloadbuff)
(,replotbuff)(,vectorbuff)
GP Group Pen (groupnumber(,pennumber(,numberofpens,(length))))
IM Input Mask emaskvalue(,smaskvalue(,pmaskvalue))
IN Initialize
IP Input p1 and p2 x,y(,x,y)
IV Invoke Character Slot slot,(left)
IW Input Window x,y,x,y
KY Define Key key(,function)
LB Label string
LO Label Origin positionnumber
LT Line Type patternnumber(,patternlength)
NR Not Ready
PA Plot Absolute x,y(,...)
PB Print Buffered Label
PD Pen Down x,y(,...)
PG Page Feed n
PM Polygon Mode n
PR Plot Relative x,y(,...)
PT Pen Thickness thickness
PU Pen Up x,y(,...)
RA Fill Rectangle Absolute x,y
RO Rotate Coordinate System n
RP Replot n
RR Fill Rectangle Relative x,y
SA Select Alternative Charset
SC Scale x,y,x,y(,type(,left,bottom))
SG Select Pen Group groupnumber
SI Absolute Character Size width,height
SL Character Slant tantheta
SM Symbol Mode character
SP Select Pen pennumber
SR Relative Character Size width,height
SS Select Standard Charset
TL Tick Length tp(,tn)
UC User Defined Character (pencontrol,)x,y
UF User Defined Fill gap1(,gap2,...gap20)
VS Velocity Select speed(,pennumber)
WD Write to Display string
WG Fill Wedge radius,startangle,sweepangle(,tolerance)
XT X Tick
YT Y Tick
оманды вывода.
-ледующие команды не имеют аргументов, а сразу выводят данные на плоттер
OA Output Actual Position
OC Output Position
OD Output Digitised Point
OE Output Error
OF Output Factors
OG Output Group Count
OH Output HardClip Limits
OI Output Identification
OK Output Key
OL Output Label Length
OO Output Options
OP Output p1 and p2
OS Output Status
OT Output Carousel Type
OW Output Window
Escape-последовательности.
esc@ Set Plotter Configuration
escA Output Identification
escB Output Buffer Space
escE Output Extended error
escH Set Handshake Mode 1
escI Set Handshake Mode 2
escJ Abort Device Control
escK Abort Graphics
escL Output Buffer Size When Empty
escM Set Output Mode
escN Set Extended Output and Handshake Mode
escO Output Extended Status
escP Set Handshake Mode
escQ Set Monitor Mode
escR Reset
escS Output Configurable Memory
escT Allocate Configurable Memory
escU End Flush Mode
escY Plotter On
esc( Plotter On
escZ Plotter Off
esc) Plotter Off