-анкт-Петербургский государственный университет.

'изический факультет

 

 

 

 

 

раткое описание языка 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 на дюйм.

Все графически языки имеют две формы границ чертежа:

  1. Жёсткие пределы;
  2. Пределы устанавливаемые программным путём.

Жесткие пределы - пределы, вне которых графопостроитель не может чертить из-за физических ограничений.

    Другие пределы обычно налагаются прикладным программным обеспечением, создающим графический файл. Любая часть рисунка, находящаяся вне пределов будет отрезана. 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 командами,


PA - чертит в абсолютной системе координат
PR - чертит в относительной системе координат
PU - перо вверх;
PD - перо вниз
Перо вверх и вниз указывает когда линия рисуется, чертящие команды осуществляют перемещение между точками.

Например, чтобы нарисовать линию от (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