| 인터넷 미디어 타입 |
application/vnd.hp-HPGL |
|---|
HP-GL은 휴렛 팩커드 그래픽스 언어(Hewlett-Packard Graphics Language)의 약자로, 흔히 HPGL로 표기되며 휴렛 팩커드(HP)가 개발한 프린터 제어 언어이다. HP-GL은 HP 플로터에서 사용되는 주요 프린터 제어 언어였다. 1977년 플로터 HP-9872와 함께 도입되었으며, 거의 모든 플로터의 표준이 되었다. 휴렛 팩커드의 프린터 또한 일반적으로 PCL 외에 HP-GL/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 | 문자 너비와 높이 설정 |
형식:
일반적인 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 언어는 선 너비 정의를 지원하지 않았는데, 이 매개변수는 플로터에 장착된 펜에 의해 결정되었기 때문이다. 최초의 잉크젯 플로터가 등장하면서, 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=펜 |
HP-GL은 베이직 프로그래밍 언어의 확장인 AGL (A Graphics Language)과 관련이 있다. AGL은 휴렛 팩커드 미니컴퓨터에 구현되어 플로터 제어를 단순화했다. AGL 명령은 원하는 그래픽 플로팅 기능을 설명하며, 컴퓨터는 이를 여러 HP-GL 명령으로 플로터에 전달한다.