
Phụ lục A
180
Ý nghĩa: tagLen chỉ định chiều dài thực sự của thẻ trong trường hợp này là 3
byte (ffffff). tagSetBackgroundColor thiết lập màu nền là màu trắng
tagLen 2: tagDoAction
action code 7 stop
action code 0
Ý nghĩa: Dừng khung hình (hành động được thực hiện là Stop. Mã hành
động là 0 có nghĩa là không còn hành động nào cần được thực hiện.)
3. VRML
Một ví dụ về tập tin VRML:
Hình A.1. Ví dụ về ảnh VRML
Hình trên được phát sinh từ đoạn mã nguồn sau đây:
(Nguồn: http://www.vrml.org/Specifications/VRML97/part1/introduction.html)
#VRML V2.0 utf8
Transform {
children [
NavigationInfo { headlight FALSE } # We'll add our own light
DirectionalLight { # First child
direction 0 0 -1 # Light illuminating the scene
}
Transform { # Second child - a red sphere

Phụ lục A
181
translation 3 0 1
children [
Shape {
geometry Sphere { radius 2.3 }
appearance Appearance {
material Material { diffuseColor 1 0 0 } # Red
}
}
]
}
Transform { # Third child - a blue box
translation -2.4 .2 1
rotation 0 1 1 .9
children [
Shape {
geometry Box {}
appearance Appearance {
material Material { diffuseColor 0 0 1 } # Blue
}
}
]
}
] # end of children for world
}
4. HGML
Sau đây là mô tả từng phần trong ba phần:
• Các đối tượng đồ họa cơ bản
• Chủ đề / sử dụng lại hình ảnh sẵn có
• Chỉnh sửa ảnh
1. Các đối tượng đồ họa cơ bản
Khái niệm này được đưa ra nhằm cho phép các ảnh được tải về và hiển thị trên
mạng không dây nhanh hơn so với cách sử dụng chuẩn HTML. Ý tưởng này nằm ở
chỗ giảm hoặc thay thế các ảnh bitmap lớn bằng các ảnh tương đương dựa trên đồ
họa véc-tơ. Các ảnh véc-tơ này được vẽ bằng cách sử dụng một tập hợp được định
nghĩa sẵn gồm các thẻ giống HTML liên quan đến các đối tượng đồ họa cơ bản. Các
đối tượng này gồm các cấu trúc hình học như đường thẳng, đường tròn, hình vuông,

Phụ lục A
182
đa giác, v.v… Sau đó các thành phần ảnh cơ bản này sẽ được vẽ độc lập với nhau
bằng cách sử dụng các thẻ lệnh, chẳng hạn như sau:
HGML cung cấp 18 thẻ sau, được chia thành ba nhóm ứng với ba danh mục
được thể hiện trong bảng sau:
Bảng A.2. Danh sách 18 thẻ của HGML
Nhóm đầu tiên trong bảng trên gồm các thẻ dùng cho các chức năng vẽ cơ bản,
cho phép tạo một lượng các ảnh ghép đơn giản mà hiệu quả.
Ví dụ:
ARC
Vẽ một cung có độ rộng, chiều cao và góc được chỉ định so với gốc tọa
độ tuyệt đối.
<!ELEMENT ARC - O EMPTY>
<!ATTLIST ARC
Đối tượng đồ họa cơ bản Chủ đề ảnh Chỉnh sửa ảnh
ARC
ARROW
ELLIPSE
LINE
LINETO
LINEREL
LINK
ORIGIN
POLYGON
RECTANGLE
SETSTYLE
TEXT
CLIPART
THEME
COPY
FLIP
PASTE
ROTATE
<ellipse coords="0,0,50,30", style="dotted", color=orange, fill=yellow,
psize="2">

Phụ lục A
183
coords %COORDS #BẮT BUỘC -- gồm tọa độ gốc x,y của of
cung, theo sau là độ rộng, độ cao, góc bắt đầu và góc của cung --
color %COLOR #NGẦM ĐỊNH -- màu sắc của
đường--
style %STYLE #NGẦM ĐỊNH -- kiểu của đường --
psize %PSIZE #NGẦM ĐỊNH -- độ dày của đường
-- >
<arc coords="20,20,50,30,45,80", color=red>
2. Chủ đề / sử dụng lại hình ảnh sẵn có
HGML cung cấp một số ảnh được vẽ trước để dùng trong nội dung một trang.
Các ảnh này dễ sử dụng hơn nhiều với các ảnh phải định nghĩa các đối tượng đồ họa
cơ bản.
Ví dụ:
CLIPART
Cho phép lấy một ảnh từ một nơi lưu trữ ngay trong máy tính và hiển thị lên ở
các tọa độ xác định.
<!ELEMENT CLIPART - O EMPTY>
<!ATTLIST CLIPART
name CDATA #BẮT BUỘC -- tên ảnh--
theme CDATA #NGẦM ĐỊNH -- kiểu của chủ đề--
coords %COORDS #BẮT BUỘC -- tọa độ góc trái-trên của ảnh--
width NUMBER #NGẦM ĐỊNH -- độ rộng của ảnh (đơn vị là ảnh điểm
(pixel)) --
height NUMBER #NGẦM ĐỊNH -- độ cao của ảnh (đơn vị là ảnh điểm
(pixel))--
href % URL #NGẦM ĐỊNH -- ảnh này đóng vai trò là một liên kết-->
<clipart name=ARROW1, coords="50,50", width=150, height = 5, href=
"http://www.demo.com/demo.hgm">

Phụ lục A
184
3. Chỉnh sửa ảnh
HGML cho phép chỉnh sửa ảnh bitmap ngay trên màn hình bằng cách sử dụng
các thẻ lệnh COPY, PASTE, FLIP and ROTATE. Những thẻ này được tạo ra nhằm
tối ưu hóa việc tạo các kiểu chính của ảnh. Ví dụ, nếu một ảnh ghép được tạo bằng
cách sử dụng một vài đối tượng đồ họa cơ bản thì điều này cũng được yêu cầu ở
những vị trí khác trên màn hình. Do đó, nó có thể được sao chép đến vị trí mới mà
không cần phải vẽ lại. Việc sao chép được thực hiện thông qua bộ nhớ đệm của màn
hình. Bộ hiển thị HGML sẽ đảm trách việc này.
Chức năng này cũng giúp tối ưu hóa việc lưu trữ các ảnh chủ đề. Ví dụ, thay vì
phải lưu trữ bốn ký hiệu mũi tên (sang trái, sang phải, lên, xuống), người sử dụng
chỉ cần lưu trữ một ảnh đơn trong cơ sở dữ liệu. Sau đó dùng các thẻ lệnh ROTATE
(phép xoay) và FLIP (di chuyển) để canh chỉnh chúng lại đúng vị trí.
Ví dụ:
COPY
Sao chép một phân đoạn màn hình (dạng hình chữ nhật) vào bộ nhớ đệm.
Ảnh sau khi sao chép hoàn toàn giống với ảnh gốc.
<!ELEMENT COPY - O EMPTY>
<!ATTLIST COPY
coords %COORDS #REQUIRED -- tọa độ góc trái-trên-phải-
dưới của phân đoạn màn hình-- >
<copy coords="50,50,100,100">