• ベクター画像を表現するタグ。 ビットマップ貼り付けやグラデーションも対応。あとモーフも。

(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 (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 ------>
  • 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_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/