- ベクター画像を表現するタグ。 ビットマップ貼り付けやグラデーションも対応。あとモーフも。
(2) DefineShape†
+---------------------------------------------------+ | tag & length | shape_id | rect | shape_with_style | | 2 | | | | +---------------------------------------------------+ < 2 or 6 bytes ><-2 bytes><-RECT-> <------------------ length -------->
- shape_with_style
+------------------------------------------------------+ |fill_style|line_style|fill_bits|line_bits| shape | | array | array | count | count | records | +------------------------------------------------------+ <-- STYLES --> <-4 bits-><-4 bits-><-- SHAPE -->
- fill_style_array
+---------------------------------------+ | count | fill_style | fill_style | ... | +---------------------------------------+ <-1 byte><----- count 個分 ------------->
- fill_style (solid: type=0x00)
+-------------------------------+ | type | red | green | blue | +-------------------------------+ <-1 byte><----- 3 bytes ------>
- fill_style (gradient: type=0x10, 0x12, 0x13)
+-----------------------------+ | type | matrix | gradient | +-----------------------------+ <-1 byte><-MATRIX-> * gradient +--------------------------------------------------------+ | pad | count | gradient_record | gradient_record | ... | +--------------------------------------------------------+ <4bits><4bits-> <------ count 個分 ----------> * gradient_record +-----------------------------------+ | position | red | green | blue | +-----------------------------------+ <- 1 byte ->< 1byte>< 1byte>< 1byte >
- fill_style (solid: type=0x00)
- fill_style (bitmap: type=0x40, 0x41, 0x42, 0x43)
+-------------------------------------+ | type | bitmap_ref | bitmap_matrix | +-------------------------------------+ <-1 byte> <- 2 bytes -> <-MATRIX->
- line_style_array
+---------------------------------------+ | count | line_style | line_style | ... | +---------------------------------------+ <-1 byte><----- count 個分 ------------->
- line_style
+--------------------------------+ | width | red | green | blue | +--------------------------------+ <-2bytes><----- 3 bytes ------>
- line_style
- shape_record
- shape_record_end
+--------+ | 000000 | +--------+ <-6 bits->
- shape_record_setup
+-----------------------------------------------------+ | 00WXYZ | move | move| move| fill | fill | line | | | size | x | y | style0 | style1 | style | +-----------------------------------------------------+ <-6 bits-><5bits>/move\/move\/numfill\/numfill\/numline\ \size/\size/\ bits /\ bits / \ bits / <--- if Z==1 ---> <if Y==1><if X==1><if W==1>
- shape_record_edge
+--------------------------+ | 1 |edge_type| coord_size | +--------------------------+ <1bit><-1bit-> <- 4 bits -->
- shape_record_edge (edge_type:0) spline curve
+-----------------------------------------------+ | 1 | 0 | coord |control|control| anchor| anchor| | | | size |delta_x|delta_y|delta_x|delta_y| +-----------------------------------------------+ <1bi 1bi><4bits>/coord \/coord \/coord \/coord \ \size+2/\size+2/\size+2/\size+2/
- shape_record_end
- shape_record_edge (edge_type:1) straight line
+-----------------------------------+ | 1 | 1 | coord |x_and| delta| delta| slanted line (斜線) | | | size |y = 1| _x | _y | +-----------------------------------+ <1bi 1bi><4bits><1bit>/coord \/coord \ \size+2/\size+2/ ----------------------------------+ ... |x_and|has_x |delta| horizontal line |y = 0|or_y=0| _x | |has_x |delta| vertical line |or_y=1| _y | ----------------------------------+ <1bi 1bi><4bits><1bit><1bit> /coord \ \size+2/