HP-GL
| 인터넷 미디어 타입 |
application/vnd.hp-HPGL |
|---|
HP-GL은 휴렛 팩커드 그래픽스 언어(Hewlett-Packard Graphics Language)의 약자로, 흔히 HPGL로 표기되며 휴렛 팩커드(HP)가 개발한 프린터 제어 언어이다. HP-GL은 HP 플로터에서 사용되는 주요 프린터 제어 언어였다.[1] 1977년 플로터 HP-9872와 함께 도입되었으며, 거의 모든 플로터의 표준이 되었다. 휴렛 팩커드의 프린터 또한 일반적으로 PCL 외에 HP-GL/2를 지원한다.[2]
설계
이 언어는 일련의 두 글자 코드(기억술)와 그 뒤에 오는 선택적 매개변수로 구성된다. 예를 들어, 페이지에 호를 그리려면 다음과 같은 문자열을 보낸다:
AA100,100,50;
이는 절대 호(Arc Absolute)를 의미하며, 매개변수는 페이지의 절대 좌표 100,100에 호의 중심을 배치하고, 시작 각도는 반시계 방향으로 50 도로 측정된다. 네 번째 선택적 매개변수(여기서는 사용되지 않음)는 호가 얼마나 계속되는지 지정하며, 기본값은 5도이다.
처음 도입되었을 때 HP-GL에는 다음 명령이 포함되어 있었다.
| 명령어 | 의미 |
|---|---|
| 벡터 그룹 | |
PA x,y{,x,y{...}} |
플롯 절대 [i] |
PR x,y{,x,y{....}} |
플롯 상대 [i] |
PD |
펜 내리기 |
PU |
펜 올리기 |
| 문자 그룹 | |
CA n |
대체 문자 집합 n 지정 [i] |
CP spaces, lines |
문자 플롯 [d] |
CS m |
표준 집합 m 지정 [i] |
DI run, rise |
절대 방향 [d] |
DR run, rise |
상대 방향 [d] |
LB c, ..., c |
라벨 ASCII 문자열 [c] |
SA |
대체 문자 집합 선택 |
SI wide, high |
절대 문자 크기 [d] |
SL tan θ |
절대 문자 기울기 (수직으로부터) [d] |
SR wide, high |
상대 문자 크기 [d] |
SS |
표준 문자 집합 선택 |
UC x, y, pen{, ...} |
사용자 정의 문자 [i] |
| 선 종류 그룹 | |
LT t{,l} |
선 종류 t 및 길이 l 지정 [d] |
SM c |
기호 모드 [c] |
SP n |
펜 선택 [i] |
VA |
적응 속도 |
VN |
일반 속도 |
VS v{,n} |
펜 n의 속도 v 선택 [i] |
| 디지털화 그룹 | |
DC |
디지털화 지우기 |
DP |
디지털화 지점 |
OC |
현재 위치 및 펜 상태 출력 |
OD |
디지털화된 지점 및 펜 상태 출력 |
| 축 | |
TL tp{,tn} |
눈금 길이 [d] |
XT |
X축 눈금 |
YT |
Y축 눈금 |
| 설정 그룹 | |
IP p1x,p1y,p2x,p2y |
p1 및 p2 입력 [i] |
IW xlo,ylo,xhi,yhi |
입력 창 [i] |
OP |
p1 및 p2 출력 [i] |
| 구성 상태 | |
AP |
자동 펜 픽업 [i] |
DF |
기본값 설정 |
IM e{,s{,p}} |
e, s 및 p 마스크 입력 [i] |
IN |
초기화 |
OE |
오류 출력 [i] |
OS |
상태 출력 [i] |
SI w,h |
문자 너비와 높이 설정 |
형식:
- [i]: -32767에서 32768 사이의 정수 형식. 소수점 없음.
- [d]: +/- 127.9999 사이의 십진 형식. 선택적 소수점.
- [c]: ASCII 문자
예시
일반적인 HP-GL 파일은 몇 가지 설정 명령으로 시작하여 긴 그래픽 명령 문자열로 이어진다. 파일은 ASCII(텍스트 파일) 형식이었다. 예를 들면:
| 명령어 | 의미 |
|---|---|
| IN; | 초기화, 플로팅 작업 시작 |
| IP; | 스케일링 지점 (P1과 P2)을 기본 위치로 설정 |
| SP1; | 펜 1 선택 |
| PU0,0; | 펜을 올리고 다음 동작의 시작점으로 이동 |
| PD100,0,100,100,0,100,0,0; | 펜을 내리고 다음 위치로 이동 (페이지 주변에 상자 그리기) |
| PU50,50; | 펜을 올리고 X,Y 좌표 50,50으로 이동 |
| CI25; | 반지름 25인 원 그리기 |
| SS; | 표준 문자 집합 선택 |
| DT*,1; | 텍스트 구분 기호를 별표로 설정하고 출력하지 않음 (1은 "참"을 의미) |
| PU20,80; | 펜을 올리고 20,80으로 이동 |
| LBHello World*; | 라벨 그리기 |
좌표계는 HP 플로터가 지원할 수 있는 최소 단위를 기반으로 했으며, 25 μm (즉, 밀리미터당 40 단위, 인치당 1016 단위)로 설정되었다. 좌표 공간은 양수 또는 음수 부동소수점 숫자, 특히 ±230이었다.
HP-GL/2
원래의 HP-GL 언어는 선 너비 정의를 지원하지 않았는데, 이 매개변수는 플로터에 장착된 펜에 의해 결정되었기 때문이다. 최초의 잉크젯 플로터가 등장하면서, HP-GL 파일 내에 지정된 "펜"의 선 너비를 프린터에서 설정해야만 어떤 선 너비로 인쇄해야 할지 알 수 있었고, 이는 번거롭고 오류가 발생하기 쉬운 과정이었다. 휴렛 팩커드 그래픽스 언어/2 즉 HP-GL/2가 등장하면서, 선 너비 정의가 언어에 도입되어 이 단계를 없앨 수 있었다. 또한, 다른 개선 사항 중에서도 더 작은 파일과 더 짧은 파일 전송 시간을 허용하는 이진 파일 형식이 정의되었고, 최소 해상도가 감소되었다.
| 명령어 | 의미 |
|---|---|
| NPx | 펜 수; x=1..256 |
| PCx,r,g,b | 펜 색상; x=펜, r=빨강, g=녹색, b=파랑, 0..255 |
| PWw,x | 펜 너비; w=소수점 있는 mm 단위 펜 너비, x=펜 |
AGL
HP-GL은 베이직 프로그래밍 언어의 확장인 AGL (A Graphics Language)과 관련이 있다. AGL은 휴렛 팩커드 미니컴퓨터에 구현되어 플로터 제어를 단순화했다. AGL 명령은 원하는 그래픽 플로팅 기능을 설명하며, 컴퓨터는 이를 여러 HP-GL 명령으로 플로터에 전달한다.
같이 보기
각주
- ↑ Daniels, Thomas H.; Hennessee, Larry W. (September 1977). 《Easy-to-Use Interface Language Controls HP-IB Plotter》 (PDF). 《Hewlett-Packard Journal》 29. 5쪽. 2017년 2월 27일에 원본 문서 (PDF)에서 보존된 문서. 2016년 9월 12일에 확인함.
- ↑ 《PCL 5 Printer Language Technical Reference Manual》 1판. Hewlett-Packard Company. September 1990. HP Part No. 33459-90903. (NB. Chapter 15-21 also contain a description of HP-GL/2.)
더 읽어보기
- Hewlett-Packard Company, Barcelona Division (September 1996) [1990]. 《The HP-GL/2 and HP RTL Reference Guide - A handbook for Program Developers - Hewlett-Packard Graphics Language/2 - Hewlett-Packard Raster Transfer Language》 draft 2, seco판. Barcelona, Spain: Addison-Wesley Publishing Company. ISBN 0-201-63325-6. HP Part No. 5961-3526, 5959-9733. 2017년 2월 27일에 원본 문서에서 보존된 문서. 2017년 2월 28일에 확인함.
외부 링크
- “Hewlett-Packard Graphics Language Commands”. 2017년 2월 27일에 원본 문서에서 보존된 문서.
- “HP-GL Overview” (PDF). 2018년 6월 13일에 원본 문서 (PDF)에서 보존된 문서.
- “Chiplotle”. 2023년 2월 15일에 확인함. (NB. A Python-based HP-GL plotter control library for using vintage pen plotters with contemporary operating systems.)
모듈:Authority_control 159번째 줄에서 Lua 오류: attempt to index field 'wikibase' (a nil value).
- 스크립트 오류가 있는 문서
- 위키데이터 속성 P18을 사용하는 문서
- 위키데이터 속성 P41을 사용하는 문서
- 위키데이터 속성 P94를 사용하는 문서
- 위키데이터 속성 P117을 사용하는 문서
- 위키데이터 속성 P154를 사용하는 문서
- 위키데이터 속성 P213을 사용하는 문서
- 위키데이터 속성 P227을 사용하는 문서
- 위키데이터 속성 P242를 사용하는 문서
- 위키데이터 속성 P244를 사용하는 문서
- 위키데이터 속성 P245를 사용하는 문서
- 위키데이터 속성 P268을 사용하는 문서
- 위키데이터 속성 P269를 사용하는 문서
- 위키데이터 속성 P271을 사용하는 문서
- 위키데이터 속성 P347을 사용하는 문서
- 위키데이터 속성 P349를 사용하는 문서
- 위키데이터 속성 P350을 사용하는 문서
- 위키데이터 속성 P373을 사용하는 문서
- 위키데이터 속성 P380을 사용하는 문서
- 위키데이터 속성 P396을 사용하는 문서
- 위키데이터 속성 P409를 사용하는 문서
- 위키데이터 속성 P428을 사용하는 문서
- 위키데이터 속성 P434를 사용하는 문서
- 위키데이터 속성 P435를 사용하는 문서
- 위키데이터 속성 P436을 사용하는 문서
- 위키데이터 속성 P454를 사용하는 문서
- 위키데이터 속성 P496을 사용하는 문서
- 위키데이터 속성 P549를 사용하는 문서
- 위키데이터 속성 P650을 사용하는 문서
- 위키데이터 속성 P651을 사용하는 문서
- 위키데이터 속성 P691을 사용하는 문서
- 위키데이터 속성 P716을 사용하는 문서
- 위키데이터 속성 P781을 사용하는 문서
- 위키데이터 속성 P791을 사용하는 문서
- 위키데이터 속성 P864를 사용하는 문서
- 위키데이터 속성 P865를 사용하는 문서
- 위키데이터 속성 P886을 사용하는 문서
- 위키데이터 속성 P902를 사용하는 문서
- 위키데이터 속성 P906을 사용하는 문서
- 위키데이터 속성 P947을 사용하는 문서
- 위키데이터 속성 P950을 사용하는 문서
- 위키데이터 속성 P966을 사용하는 문서
- 위키데이터 속성 P982를 사용하는 문서
- 위키데이터 속성 P1003을 사용하는 문서
- 위키데이터 속성 P1004를 사용하는 문서
- 위키데이터 속성 P1005를 사용하는 문서
- 위키데이터 속성 P1006을 사용하는 문서
- 위키데이터 속성 P1015를 사용하는 문서
- 위키데이터 속성 P1045를 사용하는 문서
- 위키데이터 속성 P1048을 사용하는 문서
- 위키데이터 속성 P1053을 사용하는 문서
- 위키데이터 속성 P1146을 사용하는 문서
- 위키데이터 속성 P1153을 사용하는 문서
- 위키데이터 속성 P1157을 사용하는 문서
- 위키데이터 속성 P1186을 사용하는 문서
- 위키데이터 속성 P1225를 사용하는 문서
- 위키데이터 속성 P1248을 사용하는 문서
- 위키데이터 속성 P1273을 사용하는 문서
- 위키데이터 속성 P1315를 사용하는 문서
- 위키데이터 속성 P1323을 사용하는 문서
- 위키데이터 속성 P1330을 사용하는 문서
- 위키데이터 속성 P1362를 사용하는 문서
- 위키데이터 속성 P1368을 사용하는 문서
- 위키데이터 속성 P1375를 사용하는 문서
- 위키데이터 속성 P1407을 사용하는 문서
- 위키데이터 속성 P1556을 사용하는 문서
- 위키데이터 속성 P1584를 사용하는 문서
- 위키데이터 속성 P1695를 사용하는 문서
- 위키데이터 속성 P1707을 사용하는 문서
- 위키데이터 속성 P1736을 사용하는 문서
- 위키데이터 속성 P1886을 사용하는 문서
- 위키데이터 속성 P1890을 사용하는 문서
- 위키데이터 속성 P1907을 사용하는 문서
- 위키데이터 속성 P1908을 사용하는 문서
- 위키데이터 속성 P1960을 사용하는 문서
- 위키데이터 속성 P1986을 사용하는 문서
- 위키데이터 속성 P2041을 사용하는 문서
- 위키데이터 속성 P2163을 사용하는 문서
- 위키데이터 속성 P2174를 사용하는 문서
- 위키데이터 속성 P2268을 사용하는 문서
- 위키데이터 속성 P2349를 사용하는 문서
- 위키데이터 속성 P2418을 사용하는 문서
- 위키데이터 속성 P2456을 사용하는 문서
- 위키데이터 속성 P2484를 사용하는 문서
- 위키데이터 속성 P2558을 사용하는 문서
- 위키데이터 속성 P2750을 사용하는 문서
- 위키데이터 속성 P2980을 사용하는 문서
- 위키데이터 속성 P3223을 사용하는 문서
- 위키데이터 속성 P3233을 사용하는 문서
- 위키데이터 속성 P3348을 사용하는 문서
- 위키데이터 속성 P3372를 사용하는 문서
- 위키데이터 속성 P3407을 사용하는 문서
- 위키데이터 속성 P3430을 사용하는 문서
- 위키데이터 속성 P3544를 사용하는 문서
- 위키데이터 속성 P3562를 사용하는 문서
- 위키데이터 속성 P3563을 사용하는 문서
- 위키데이터 속성 P3601을 사용하는 문서
- 위키데이터 속성 P3723을 사용하는 문서
- 위키데이터 속성 P3788을 사용하는 문서
- 위키데이터 속성 P3829를 사용하는 문서
- 위키데이터 속성 P3863을 사용하는 문서
- 위키데이터 속성 P3920을 사용하는 문서
- 위키데이터 속성 P3993을 사용하는 문서
- 위키데이터 속성 P4038을 사용하는 문서
- 위키데이터 속성 P4055를 사용하는 문서
- 위키데이터 속성 P4114를 사용하는 문서
- 위키데이터 속성 P4143을 사용하는 문서
- 위키데이터 속성 P4186을 사용하는 문서
- 위키데이터 속성 P4423을 사용하는 문서
- 위키데이터 속성 P4457을 사용하는 문서
- 위키데이터 속성 P4534를 사용하는 문서
- 위키데이터 속성 P4535를 사용하는 문서
- 위키데이터 속성 P4581을 사용하는 문서
- 위키데이터 속성 P4613을 사용하는 문서
- 위키데이터 속성 P4955를 사용하는 문서
- 위키데이터 속성 P5034를 사용하는 문서
- 위키데이터 속성 P5226을 사용하는 문서
- 위키데이터 속성 P5288을 사용하는 문서
- 위키데이터 속성 P5302를 사용하는 문서
- 위키데이터 속성 P5321을 사용하는 문서
- 위키데이터 속성 P5368을 사용하는 문서
- 위키데이터 속성 P5504를 사용하는 문서
- 위키데이터 속성 P5587을 사용하는 문서
- 위키데이터 속성 P5736을 사용하는 문서
- 위키데이터 속성 P5818을 사용하는 문서
- 위키데이터 속성 P6213을 사용하는 문서
- 위키데이터 속성 P6734를 사용하는 문서
- 위키데이터 속성 P6792를 사용하는 문서
- 위키데이터 속성 P6804를 사용하는 문서
- 위키데이터 속성 P6829를 사용하는 문서
- 위키데이터 속성 P7293을 사용하는 문서
- 위키데이터 속성 P7303을 사용하는 문서
- 위키데이터 속성 P7314를 사용하는 문서
- 위키데이터 속성 P7902를 사용하는 문서
- 위키데이터 속성 P8034를 사용하는 문서
- 위키데이터 속성 P8189를 사용하는 문서
- 위키데이터 속성 P8381을 사용하는 문서
- 위키데이터 속성 P8671을 사용하는 문서
- 위키데이터 속성 P8980을 사용하는 문서
- 위키데이터 속성 P9070을 사용하는 문서
- 위키데이터 속성 P9692를 사용하는 문서
- 위키데이터 속성 P9725를 사용하는 문서
- 위키데이터 속성 P9984를 사용하는 문서
- 위키데이터 속성 P10020을 사용하는 문서
- 위키데이터 속성 P10299를 사용하는 문서
- 위키데이터 속성 P10608을 사용하는 문서
- 위키데이터 속성 P10832를 사용하는 문서
- 위키데이터 속성 P11249를 사용하는 문서
- 위키데이터 속성 P11646을 사용하는 문서
- 위키데이터 속성 P11729를 사용하는 문서
- 위키데이터 속성 P12204를 사용하는 문서
- 위키데이터 속성 P12362를 사용하는 문서
- 위키데이터 속성 P12754를 사용하는 문서
- 위키데이터 속성 P13049를 사용하는 문서
- 페이지 기술 언어
- 벡터 그래픽스