The integer in eva(extended vector animater) is big_endian:
#define b16(_n_)((_n_)>>8)&0xff,(_n_)&0xff
#define b32(_n_)((_n_)>>24)&0xff, ((_n_)>>16)&0xff,((_n_)>>8)&0xff,(_n_)&0xff

eva_head:
//flag=
byte[0],
n=byte[1], byte[2~(n+1)]
'#',0x0a,'E', 'V', 'A', '-', 'S','h', 'a', 'r', 'p', ' ',
'V',0x02,b16(0x100),//Version:0x0100
'I',0x04,b16(0x234), b16(0x123),//Image:width=0x234,
 height=0x123
eva_body: such as:

  (for ngon):
[1.01] mono_polyLine
[1.02] color_polyLine
[1.03] line_pattern
[1.04] thickness
[1.05] color_bezierLine
[1.06] color_polygon
[1.07] arrow_style
[1.08] brush_pattern
[1.09] color_bezierGon
[1.10] gradient1_bezierGon
[1.11] gradient2_bezierGon
[1.12] 1page_2polygon
[1.13] 2page_2polygon.1
[1.14] 2page_2polygon.2
[1.15] tRanslate or pan
[1.16] keep_Going
[1.17] uniForm
[1.18] same
[1.19] reUse
[1.20] displacement

  (for text):
[2.01] Text
[2.02] byte count
[2.03] text margin
[2.04] font family
[2.05] font charset
[2.06] font name
[2.07] keep_Going
[2.08] eqUal
[2.09] font Hinting

  (for commanD):
[3.01] load picture
[3.02] cycle repeat
[3.03] pendulum repeat
[3.04] jump
[3.05] button_jump
[3.06] timed_jump
[3.07] back_ground
[3.08] zoom to full page
[3.09] nested

  see as follows.
eva_foot:0xff, 0xff



[1.01] mono_polyLine.eva:
'P',b16(50),//Page display 50 centiSecond
'L',4,//polyLine,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(100*16), b16(240*16),//x4=100,y4=240,

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[1.02] color_polyLine.eva:
'P',b16(50),//Page display 50 centiSecond
'L',4,//polyLine,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(100*16), b16(240*16),//x4=100,y4=240,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
255, 128, 128, 0,//brush colorRef_1: r=255, g=128, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

EvaViewer use pen colorRef to draw this polyLine.


[1.03] line_pattern.eva:
'P', b16(100),//Page display 100 centiSecond
'L', 4, b16(0),//ngon_A, 4 points, M=0
  b16( 5*16), b16(10*16), b16(25*16), b16(10*16),
  b16(25*16), b16(50*16), b16( 5*16), b16(50*16),
'w', 0*16,//line wide(thickness)=0
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
 
'L', 4, b16(0),//ngon_B, 4 points, M=0
  b16(35*16), b16(10*16), b16(55*16), b16(10*16),
  b16(55*16), b16(50*16), b16(35*16), b16(50*16),
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 26,//pen colorRef: r=128, g=128, b=255, a=26
 
'L', 4, b16(0),//ngon_C, 4 points, M=0
  b16(65*16), b16(10*16), b16(85*16), b16(10*16),
  b16(85*16), b16(50*16), b16(65*16), b16(50*16),
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 77,//pen colorRef: r=128, g=128, b=255, a=77
 
'L', 4, b16(0),//ngon_D, 4 points, M=0
  b16(95*16), b16(10*16), b16(115*16), b16(10*16),
  b16(115*16), b16(50*16), b16(95*16), b16(50*16),
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 128,//pen colorRef: r=128, g=128, b=255, a=128
 
'L', 4, b16(0),//ngon_E, 4 points, M=0
  b16(125*16), b16(10*16), b16(145*16), b16(10*16),
  b16(145*16), b16(50*16), b16(125*16), b16(50*16),
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 179,//pen colorRef: r=128, g=128, b=255, a=179
 
'L', 4, b16(0),//ngon_F, 4 points, M=0
  b16(155*16), b16(10*16), b16(175*16), b16(10*16),
  b16(175*16), b16(50*16), b16(155*16), b16(50*16),
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 230,//pen colorRef: r=128, g=128, b=255, a=230
The coordinate's unit is twips. In eva, 1 pixel=16 twips.

EvaViewer use pen's colorRef.a as [windows api CreatePen() parameter pen_style]
  0≤a≤ 25:PS_SOLID -------
 26≤a≤ 76:PS_DASH - - - -
 77≤a≤127:PS_DASHDOTDOT_.._.._
128≤a≤178:PS_DASHDOT _._._._
179≤a≤229:PS_DOT .......
230≤a≤255:PS_NULL


[1.04] thickness.eva:
'P', b16(100),//Page display 100 centiSecond
'L', 4, b16(0),//ngon_A, 4 points, M=0
  b16( 5*16), b16(10*16), b16(25*16), b16(10*16),
  b16(25*16), b16(50*16), b16( 5*16), b16(50*16),
'w', 0*16,//line wide(thickness)=0
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
 
'L', 4, b16(0),//ngon_B, 4 points, M=0
  b16(35*16), b16(10*16), b16(55*16), b16(10*16),
  b16(55*16), b16(50*16), b16(35*16), b16(50*16),
'w', 1*16,//line wide(thickness)=1
 
'L', 4, b16(0),//ngon_C, 4 points, M=0
  b16(65*16), b16(10*16), b16(90*16), b16(10*16),
  b16(90*16), b16(50*16), b16(65*16), b16(50*16),
'w', 2*16,//line wide(thickness)=2
 
'L', 4, b16(0),//ngon_D, 4 points, M=0
  b16(105*16), b16(10*16), b16(130*16), b16(10*16),
  b16(130*16), b16(50*16), b16(105*16), b16(50*16),
'w', 3*16,//line wide(thickness)=3
The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[1.05] color_bezierLine.eva://extend by leisureBamboo
'P',b16(50),//Page display 50 centiSecond
'L',4,//bezierLine,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(120*16), b16(240*16),//x4=120,y4=240,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
255, 128, 128, 0,//brush colorRef_1: r=255, g=128, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't',0x01//style=bezier_3x0

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

note: In this demo,
in: vector a=(100,160), b=(180,160), c=(180,240), d=(120,240); x is float, 0≤x≤1.
out:vector v = x3*a + 3*x2*(1-x)*b + 3*x*(1-x)2*c + (1-x)3*d
When variable x change from 0 to 1, vector v change accordingly from d to a.


[1.06] color_polygon.eva:
'P',b16(50),//Page display 50 centiSecond
'L',4,//ngon,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(100*16), b16(240*16),//x4=100,y4=240,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
255, 128, 128, 0,//brush colorRef_1: r=255, g=128, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't',0x20//style=polygon

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

EvaViewer use brush colorRef to fill this ngon, and use pen colorRef to draw the edge.


[1.07] arrow_style.eva:
'P', b16(100),//Page display 100 centiSecond
'L', 4, b16(0),//ngon_A, 4 points, M=0
  b16( 5*16), b16(10*16), b16(25*16), b16(10*16),
  b16(25*16), b16(50*16), b16( 5*16), b16(50*16),
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't', 0x00,//style=normal_curve
 
'L', 4, b16(0),//ngon_B, 4 points, M=0
  b16(35*16), b16(10*16), b16(55*16), b16(10*16),
  b16(55*16), b16(50*16), b16(35*16), b16(50*16),
't', 0x02,//style=close_curve
 
'L', 4, b16(0),//ngon_C, 4 points, M=0
  b16(65*16), b16(10*16), b16(90*16), b16(10*16),
  b16(90*16), b16(50*16), b16(65*16), b16(50*16),
't', 0x04,//style=begin→end
 
'L', 4, b16(0),//ngon_D, 4 points, M=0
  b16(105*16), b16(10*16), b16(130*16), b16(10*16),
  b16(130*16), b16(10*16), b16(105*16), b16(50*16),
't', 0x08,//style=begin←end
 
'L', 4, b16(0),//ngon_E, 4 points, M=0
  b16(140*16), b16(10*16), b16(165*16), b16(10*16),
  b16(165*16), b16(10*16), b16(140*16), b16(50*16),
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_F, 4 points, M=0
  b16(180*16), b16(10*16), b16(205*16), b16(10*16),
  b16(205*16), b16(10*16), b16(180*16), b16(50*16),
'K', 0x08,//GradientFill,
2 Trivert coordinates
  b16(100*16), b16(10*16),//x1=100, y1=10,
  b16(100*16), b16(50*16),//x2=100, y2=50,
't', 0x20,//style=polygon, GradientFill
  from colorRef_0(x1, y1) to colorRef_1(x2, y2)
 
'L', 4, b16(0),//ngon_G, 4 points, M=0
  b16(220*16), b16(10*16), b16(245*16), b16(10*16),
  b16(245*16), b16(10*16), b16(220*16), b16(50*16),
'K', 0x08,//GradientFill,
2 Trivert coordinates
  b16(100*16), b16(10*16),//x1=100, y1=10,
  b16(100*16), b16(50*16),//x2=100, y2=50,
 //x3=(x1+x2)/2, y3=(y1+y2)/2,
't', 0x40,//style=polygon, GradientFill,
colorRef_1(x1, y1)←colorRef_0(x3, y3)→colorRef_1(x2, y2)
The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[1.08] brush_pattern.eva://extend by leisureBamboo
'O', 9, //Object, 9 byte
  1,//atr=1(bmp)
  'n','e','w','.','g','i','f',0,//Object file1 name
 
'O', 0x0d, //Object, 13 byte
  1,//atr=1(bmp)
  'r','e','d','_','d','o','t','.','b','m','p',0,//Object file2 name
 
'P', b16(100),//Page display 100 centiSecond
'L', 4, b16(0),//ngon_A, 4 points, M=0
  b16( 5*16), b16(10*16), b16(25*16), b16(10*16),
  b16(25*16), b16(50*16), b16( 5*16), b16(50*16),
'w', 0*16,//line wide(thickness)=0
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
'B', 5,//Brush
  b16(0),b16(0),0//brush=0(BS_SOLID), hatch=0
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_B, 4 points, M=0
  b16(35*16), b16(10*16), b16(55*16), b16(10*16),
  b16(55*16), b16(50*16), b16(35*16), b16(50*16),
'B', 5,//Brush
  b16(1),b16(0),0//brush=1(BS_NULL), hatch=0
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_C, 4 points, M=0
  b16(65*16), b16(60*16), b16(85*16), b16(60*16),
  b16(85*16), b16(100*16), b16(65*16), b16(100*16),
'B', 5,//Brush
  b16(2),b16(0),0//brush=2(BS_HATCHED), hatch=0(HS_HORIZONTAL)
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_D, 4 points, M=0
  b16(95*16), b16(60*16), b16(115*16), b16(60*16),
  b16(115*16), b16(100*16), b16(95*16), b16(100*16),
'B', 5,//Brush
  b16(2),b16(1),0//brush=2(BS_HATCHED), hatch=1(HS_VERTICAL)
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_E, 4 points, M=0
  b16(125*16), b16(60*16), b16(145*16), b16(60*16),
  b16(145*16), b16(100*16), b16(125*16), b16(100*16),
'B', 5,//Brush
  b16(2),b16(2),0//brush=2(BS_HATCHED), hatch=2(HS_FDIAGONAL)
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_F, 4 points, M=0
  b16(155*16), b16(60*16), b16(175*16), b16(60*16),
  b16(175*16), b16(100*16), b16(155*16), b16(100*16),
'B', 5,//Brush
  b16(2),b16(3),0//brush=2(BS_HATCHED), hatch=3(HS_BDIAGONAL)
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_G, 4 points, M=0
  b16(185*16), b16(60*16), b16(205*16), b16(60*16),
  b16(205*16), b16(100*16), b16(185*16), b16(100*16),
'B', 5,//Brush
  b16(2),b16(4),0//brush=2(BS_HATCHED), hatch=4(HS_CROSS)
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_H, 4 points, M=0
  b16(215*16), b16(60*16), b16(235*16), b16(60*16),
  b16(235*16), b16(100*16), b16(215*16), b16(100*16),
'B', 5,//Brush
  b16(2),b16(5),0//brush=2(BS_HATCHED), hatch=5(HS_DIAGCROSS)
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_I, 4 points, M=0
  b16( 5*16), b16(110*16), b16(25*16), b16(110*16),
  b16(25*16), b16(150*16), b16( 5*16), b16(150*16),
'w', 0*16,//line wide(thickness)=0
'B', 5,//Brush
  b16(3),b16(1),0//brush=3(BS_PATTERN), hatch=(file)1
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_J, 4 points, M=0
  b16(35*16), b16(110*16), b16(55*16), b16(110*16),
  b16(55*16), b16(150*16), b16(35*16), b16(150*16),
'B', 5,//Brush
  b16(3),b16(2),0//brush=3(BS_PATTERN), hatch=(file)2
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_K, 4 points, M=0
  b16(65*16), b16(160*16), b16(85*16), b16(160*16),
  b16(85*16), b16(200*16), b16(65*16), b16(200*16),
'B', 5,//Brush
  b16(5),b16(1),0//brush=5(BS_DIB), hatch=(file)1
't', 0x20,//style=polygon
 
'L', 4, b16(0),//ngon_L, 4 points, M=0
  b16(95*16), b16(160*16), b16(115*16), b16(160*16),
  b16(115*16), b16(200*16), b16(95*16), b16(200*16),
'B', 5,//Brush
  b16(5),b16(2),0//brush=5(BS_DIB), hatch=(file)2
't', 0x20,//style=polygon
The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  We use brush and hatch as window api CreateBrushIndirect() parameter.
brushhatch
0BS_SOLID
1BS_NULL
2BS_HATCHED0HS_HORIZONTAL-----
1HS_VERTICAL|||||
2HS_FDIAGONAL\\\\\
3HS_BDIAGONAL/////
4HS_CROSS+++++
5HS_DIAGCROSSxxxxx
3BS_PATTERNfile enum,
//begin from 1
5BS_DIB

  note1: This demo use Object operation to import extern file "new.gif" and "red_dot.bmp".
We can use biN operation to embed them into evaFile itself, see about load file.

  note2: The difference between BS_DIB(5) and BS_PATTERN(3) is:
BS_DIB use the color of bitmap itself, BS_PATTERN use pen colorRef.
But in BS_PATTERN mode, if the color of bitmap is not pure black or white(ex. rgb=224,224,224 or rgb=0,64,0 ...),
then window will try to dithered color, and the effect maybe not perfect.
So, in BS_PATTERN mode, the color of bitmap should be pure black or white(rgb=0,0,0 or rgb=255,255,255).


[1.09] color_bezierGon.eva://extend by leisureBamboo
'P',b16(50),//Page display 50 centiSecond
'L',4,//ngon,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(120*16), b16(240*16),//x4=120,y4=240,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
255, 128, 128, 0,//brush colorRef_1: r=255, g=128, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't',0x21//style=polygon | bezier_3x0

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

EvaViewer use brush colorRef to fill this ngon, and use pen colorRef to draw the edge.

 Now, the style of bezier only support 1(bezier_3x0) 4(begin→end) 8(begin←end) 16(bezier_3x1) or 32(ngon),
Don't support 2(close_curve) or 64(center_brush).


[1.10] gradient1_bezierGon.eva://extend by leisureBamboo
'P',b16(50),//Page display 50 centiSecond
'L',10,//ngon,10 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(120*16), b16(240*16),//x4=120,y4=240,
b16(115*16), b16(230*16),//x5=115,y5=230,
b16(110*16), b16(220*16),//x6=110,y6=220,
b16(105*16), b16(210*16),//x7=105,y7=210,
b16(150*16), b16(210*16),//x8=150,y8=210,
b16(150*16), b16(190*16),//x9=150,y9=190,
b16(110*16), b16(190*16),//x10=110,y10=190,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
 
'K',8,//GradientFill,
2 Trivert coordinates
b16(100*16), b16(160*16),//x1=100, y1=160,
b16(100*16), b16(240*16),//x2=100, y2=240,
GradientFill
from colorRef_0(x1, y1)
 to  colorRef_1(x2, y2)
't',0x21,//style=polygon | bezier_3x0

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

EvaViewer use brush colorRef to fill this ngon, and use pen colorRef to draw the edge.

 Now, the style of bezier only support 1(bezier_3x0) 4(begin→end) 8(begin←end) 16(bezier_3x1) or 32(ngon),
Don't support 2(close_curve) or 64(center_brush).


[1.11] gradient2_bezierGon.eva://extend by leisureBamboo
'P',b16(50),//Page display 50 centiSecond
'L',10,//ngon,10 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(120*16), b16(240*16),//x4=120,y4=240,
b16(115*16), b16(230*16),//x5=115,y5=230,
b16(110*16), b16(220*16),//x6=110,y6=220,
b16(105*16), b16(210*16),//x7=105,y7=210,
b16(150*16), b16(210*16),//x8=150,y8=210,
b16(150*16), b16(190*16),//x9=150,y9=190,
b16(110*16), b16(190*16),//x10=110,y10=190,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't',0x30,//style=polygon | bezier_3x1

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

EvaViewer use brush colorRef to fill this ngon, and ignore pen colorRef.

 EvaViewer use colorRef_0 and the first half(3*k+1) points, to draw the first bezier line;
and the evaViewer use colorRef_1 and the latter half(3*k+1) points, to draw the latter bezier line;
so the remain 2 points in the middle are ignore.
 The above 2 lines have define a bezierGon, which will be gradient_fill by the evaViewer.

 In this example, every point(x,y) in the bezierGon, can be calculate by λ and μ,
where λ and μ are float, 0≤λ≤1, 0≤μ≤1.
 The color of this point is μ*colorRef_0 + (1-μ)*colorRef_1.
 The coordinate of this point(x,y) is:
x =μ* 3*x1 + 3*λ2*(1-λ)*x2 + 3*λ*(1-λ)2*x3 + (1-λ)3*x4]
+ (1-μ)* 3*x10 + 3*λ2*(1-λ)*x9 + 3*λ*(1-λ)2*x8 + (1-λ)3*x7]
y =μ* 3*y1 + 3*λ2*(1-λ)*y2 + 3*λ*(1-λ)2*y3 + (1-λ)3*y4]
+ (1-μ)* 3*y10 + 3*λ2*(1-λ)*y9 + 3*λ*(1-λ)2*y8 + (1-λ)3*y7]

 Of cause, if we are accustomed to using vector calculation, then we can..
step 1: set the first  4 vector are: a=(x1,y1), b2=(x2,y2), c3=(x3,y3), d4=(x4,y4);
    and set the latter 4 vector are: e10=(x1,y10), f9=(x9,y9), g8=(x8,y8), h7=(x7,y7);
step 2: calculate two temporary vectors:
    v1 = λ3*a + 3*λ2*(1-λ)*b2 + 3*λ*(1-λ)2*c3 + (1-λ)3*d4,
    v2 = λ3*e10 + 3*λ2*(1-λ)*f9 + 3*λ*(1-λ)2*g8 + (1-λ)3*h7.
step 3: calculate the coordinate of this point as μ*v1 + (1-μ)*v2

 Now, the style of bezier only support 1(bezier_3x0) 4(begin→end) 8(begin←end) 16(bezier_3x1) or 32(ngon),
Don't support 2(close_curve) or 64(center_brush).


[1.12] 1page_2polygon.eva:
'P',b16(50),//Page display 50 centiSecond
//□
'L',4,//ngon,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(100*16), b16(240*16),//x4=100,y4=240,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
255, 128, 128, 0,//brush colorRef_1: r=255, g=128, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't',0x20//style=polygon
 
//◇
'L',4,//ngon,4 points
b16(0),//M=0
b16(140*16), b16( 70*16),//x1=140,y1= 70,
b16(190*16), b16(120*16),//x2=190,y2=120,
b16(140*16), b16(170*16),//x3=140,y3=170,
b16( 90*16), b16(120*16),//x4= 90,y4=120,
'X',32, 32, 255, 0,//brush colorRef_0: r=32, g=32, b=255
32, 32, 255, 0,//brush colorRef_1: r=32, g=32, b=255
255, 32, 32, 0,//pen colorRef: r=255, g=32, b=32
't',0x20//style=polygon

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[1.13] 2page_2polygon_1.eva:
'P', b16(250),//Page1 display 250 centiSecond
//□
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
//◇
'L', 4,//ngon_B,4 points
 b16(0),//M=0
  b16(140*16), b16( 70*16), b16(190*16), b16(120*16),
  b16(140*16), b16(170*16), b16( 90*16), b16(120*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon

'P', b16(50),//Page2 display 50 centiSecond
//▱
'L', 4,//ngon_C,4 points
  b16(2),//M=2, the 2nd (from the end)ngon
  b16(180*16), b16(110*16), b16(260*16), b16(90*16),
  b16(260*16), b16(170*16), b16(180*16), b16(190*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
//◇
'L', 4,//ngon_D,4 points
 b16(2),//M=2, the 2nd (from the end)ngon
  b16(200*16), b16(170*16), b16(270*16), b16(220*16),
  b16(240*16), b16(270*16), b16(170*16), b16(220*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew page1, there are 2 ngon in the RAM, the former is ngon_A, the latter is ngon_B.

  After the evaViewer drew ngon_C at page2, there are 3 ngon in the RAM:
the 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_C itself

  Now, the M member in ngon_C is 2, it means ngon_C is transformed from ngon_A, which is the 2nd(from the end)ngon.

  After the evaViewer drew ngon_D at page2, there are 4 ngon in the RAM:
the 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_D itself

  Now, the M member in ngon_D is 2, it means ngon_D is transformed from ngon_B, which is the 2nd(from the end)ngon.

  If we change the ngon squence at page2, set the former is ngon_D, the latter is ngon_C.
So the M member in these ngon must change too. See it as follows.



[1.14] 2page_2polygon_2.eva:
'P', b16(250),//Page1 display 250 centiSecond
//□
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
//◇
'L', 4,//ngon_B,4 points
 b16(0),//M=0
  b16(140*16), b16( 70*16), b16(190*16), b16(120*16),
  b16(140*16), b16(170*16), b16( 90*16), b16(120*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon

'P', b16(50),//Page2 display 50 centiSecond
//◇
'L', 4,//ngon_D,4 points
 b16(1),//M=1, the 1st (from the end)ngon
  b16(200*16), b16(170*16), b16(270*16), b16(220*16),
  b16(240*16), b16(270*16), b16(170*16), b16(220*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 
//▱
'L', 4,//ngon_C,4 points
  b16(3),//M=3, the 3rd (from the end)ngon
  b16(180*16), b16(110*16), b16(260*16), b16(90*16),
  b16(260*16), b16(170*16), b16(180*16), b16(190*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew page1, there are 2 ngon in the RAM, the former is ngon_A, the latter is ngon_B.

  After the evaViewer drew ngon_D at page2, there are 3 ngon in the RAM:
the 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_D itself

  Now, the M member in ngon_D is 1, it means ngon_D is transformed from ngon_B, which is the 1st(from the end)ngon.

  After the evaViewer drew ngon_C at page2, there are 4 ngon in the RAM:
the 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Dngon_C itself

  Now, the M member in ngon_C is 3, it means ngon_C is transformed from ngon_A, which is the 3rd(from the end)ngon.


[1.15] tRanslate or pan.eva:
'P', b16(250),//Page1 display 250 centiSecond
//□
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
//◇
'L', 4,//ngon_B,4 points
 b16(0),//M=0
  b16(140*16), b16( 70*16), b16(190*16), b16(120*16),
  b16(140*16), b16(170*16), b16( 90*16), b16(120*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon

'P', b16(250),//Page2 display 250 centiSecond
//□
'R',//ngon_C: tRanslate(pan)
  2,//M=2, the 2nd (from the end)ngon
  2,//E=2, the 2nd (from the end)ngon
  b16(80*16), b16(150*16),//new_x1, new_y1
 
//◇
'L', 4,//ngon_D,4 points
 b16(2),//M=2, the 2nd (from the end)ngon
  b16(170*16), b16(120*16), b16(230*16), b16(170*16),
  b16(190*16), b16(220*16), b16(130*16), b16(170*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon

'P', b16(50),//Page3 display 50 centiSecond
//◇
'L', 4,//ngon_E,4 points
 b16(1),//M=1, the 1st (from the end)ngon
  b16(200*16), b16(170*16), b16(270*16), b16(220*16),
  b16(240*16), b16(270*16), b16(170*16), b16(220*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 
//□
'R',//ngon_F: tRanslate(pan)
  3,//M=3, the 3rd (from the end)ngon
  5,//E=5, the 5th (from the end)ngon
  b16(80*16), b16(110*16),//new_x1, new_y1

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew page1, there are 2 ngon in the RAM, the former is ngon_A, the latter is ngon_B.

  After the evaViewer drew ngon_C at page2, there are 3 ngon in the RAM:
the 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_C itself

  Now, the M member in ngon_C is 2, it means ngon_C is transformed from ngon_A, which is the 2nd(from the end) ngon.
the E member in ngon_C is 2, it means ngon_C is transformed to a same shape of ngon_A(which is the 2nd ngon from the end), with new tRanslate postion.
  Because shape of ngon_A={(x1=100,y1=160), (x2=180,y2=160), (x3=180,y3=240), (x4=100,y4=240)},
and new coordinate in ngon_C=(new_x1=80, new_y1=150),
then we get Δx=new_x1-x1= -20, and Δy=new_y1-y1= -30,
so "same shape with new postion" means ngon={(x1+Δx=80, y1+Δy=150), (x2+Δx=160, y2+Δy=150), (x3+Δx=160, y3+Δy=230), (x4+Δx=80, y4+Δy=230)}.

  After the evaViewer drew ngon_D at page2, there are 4 ngon in the RAM:
the 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_D itself

  Now, the M member in ngon_D is 2, it means ngon_D is transformed from ngon_B, which is the 2nd(from the end)ngon.

  After the evaViewer drew ngon_E at page3, there are 5 ngon in the RAM:
the 4th(from the end)ngonthe 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_Dngon_E itself

  Now, the M member in ngon_E is 1, it means ngon_E is transformed from ngon_D,which is the 1st(from the end)ngon.

  After the evaViewer drew ngon_F at page3, there are 6 ngon in the RAM:
the 5th(from the end)ngonthe 4th(from the end)ngonthe 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_Dngon_Engon_F itself

  Now, the M member in ngon_F is 3, it means ngon_F is transformed from ngon_C, which is the 3rd(from the end) ngon.
the E member in ngon_F is 5, it means ngon_F is transformed to a same shape of ngon_A(which is the 5th ngon from the end), with new tRanslate postion.
  Because shape of ngon_A={(x1=100,y1=160), (x2=180,y2=160), (x3=180,y3=240), (x4=100,y4=240)},
and new coordinate in ngon_F=(new_x1=80, new_y1=110),
then we get Δx=new_x1-x1= -20, and Δy=new_y1-y1= -50,
so "same shape with new postion" means ngon={(x1+Δx=80, y1+Δy=110), (x2+Δx=160, y2+Δy=110), (x3+Δx=160, y3+Δy=190), (x4+Δx=80, y4+Δy=190)}.


[1.16] keep_going.eva:
Almost copy from tRanslate or pan, just modify ngon_D:
'P', b16(250),//Page1 display 250 centiSecond
//□
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
//◇
'L', 4,//ngon_B,4 points
 b16(0),//M=0
  b16(140*16), b16( 70*16), b16(190*16), b16(120*16),
  b16(140*16), b16(170*16), b16( 90*16), b16(120*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon

'P', b16(250),//Page2 display 250 centiSecond
//□
'R',//ngon_C: tRanslate(pan)
  2,//M=2, the 2nd (from the end)ngon
  2,//E=2, the 2nd (from the end)ngon
  b16(80*16), b16(150*16),//new_x1, new_y1
 
//◇
'G',//ngon_D: keep_Going
 2,//object_type=ngon;//2
 b16(2),//M=2, the 2nd (from the end)ngon

'P', b16(50),//Page3 display 50 centiSecond
//◇
'L', 4,//ngon_E,4 points
 b16(1),//M=1, the 1st (from the end)ngon
  b16(200*16), b16(170*16), b16(270*16), b16(220*16),
  b16(240*16), b16(270*16), b16(170*16), b16(220*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 
//□
'R',//ngon_F: tRanslate(pan)
  3,//M=3, the 3rd (from the end)ngon
  5,//E=5, the 5th (from the end)ngon
  b16(80*16), b16(110*16),//new_x1, new_y1

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  Almost copy from tRanslate or pan, just change old "ngon_D" to new "keep_Going".
  After the evaViewer drew keep_Going at page2, there are 4 ngon in the RAM:
the 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Ckeep_Going itself

  Now, the M member in keep_Going is 2, it means keep_Going is just keep ngon_B's going, which is the 2nd(from the end)ngon.
In the other words, it just said "I am here. I am moving. I am not disappear. EvaViewer, dont forget to show me. About my coordinate, who care..."



[1.17] uniForm.eva:
Similar to tRanslate or pan, without coordinate.
'P', b16(250),//Page1 display 250 centiSecond
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
'L', 4,//ngon_B,4 points
 b16(0),//M=0
  b16(80*16), b16( 60*16), b16(160*16), b16( 60*16),
  b16(160*16), b16(140*16), b16( 80*16), b16(140*16),

'P', b16(250),//Page2 display 250 centiSecond
'R',//ngon_C: tRanslate(pan)
  2,//M=2, the 2nd (from the end)ngon
  2,//E=2, the 2nd (from the end)ngon
  b16(180*16), b16(60*16),//new_x1, new_y1
 
'G',//ngon_D: tRanslate(pan)
  2,//M=2, the 2nd (from the end)ngon
  2,//E=2, the 2nd (from the end)ngon
  b16(200*16), b16(160*16),//new_x1, new_y1

'P', b16(2),//Page3 display 2 centiSecond
'F',//ngon_E: uniForm
  2,//M=2, the 2nd (from the end)ngon
  b16(3),//E=3, the 3rd (from the end)ngon
 
'F',//ngon_F: uniForm
  2,//M=2, the 2nd (from the end)ngon
  b16(5),//E=5, the 5th (from the end)ngon

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew ngon_E at page3, there are 5 ngon in the RAM:
the 4th(from the end)ngonthe 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_Dngon_E itself

  Now, the M member in ngon_E is 2, it means ngon_E is transformed from ngon_C,which is the 2nd(from the end)ngon.
the E member in ngon_E is 3, it means ngon_E is transformed to a same shape of ngon_B(which is the 3rd ngon from the end)

  After the evaViewer drew ngon_F at page3, there are 6 ngon in the RAM:
the 5th(from the end)ngonthe 4th(from the end)ngonthe 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_Dngon_Engon_F itself

  Now, the M member in ngon_F is 2, it means ngon_F is transformed from ngon_D, which is the 2nd(from the end) ngon.
the E member in ngon_F is 5, it means ngon_F is transformed to a same shape of ngon_A(which is the 5th ngon from the end)


[1.18] same.eva:
Similar to uniform, without E member.
'P', b16(100),//Page1 display 100 centiSecond
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
'L', 4,//ngon_B,4 points
 b16(0),//M=0
  b16(80*16), b16( 60*16), b16(160*16), b16( 60*16),
  b16(160*16), b16(140*16), b16( 80*16), b16(140*16),

'P', b16(100),//Page2 display 100 centiSecond
'R',//ngon_C: tRanslate(pan)
  2,//M=2, the 2nd (from the end)ngon
  2,//E=2, the 2nd (from the end)ngon
  b16(180*16), b16(60*16),//new_x1, new_y1
 
's',//ngon_D: same
  2,//M=2, the 2nd (from the end)ngon

'P', b16(100),//Page3 display 100 centiSecond
's',//ngon_E: same
  2,//M=2, the 2nd (from the end)ngon
 
'R',//ngon_F: tRanslate(pan)
  2,//M=2, the 2nd (from the end)ngon
  2,//E=2, the 2nd (from the end)ngon
  b16(200*16), b16(160*16),//new_x1, new_y1

'P', b16(2),//Page4 display 2 centiSecond
'F',//ngon_G: uniForm
  2,//M=2, the 2nd (from the end)ngon
  b16(5),//E=5, the 3rd (from the end)ngon
 
'F',//ngon_H: uniForm
  2,//M=2, the 2nd (from the end)ngon
  b16(7),//E=7, the 5th (from the end)ngon

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew ngon_D at page2, there are 4 ngon in the RAM:
the 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_D itself

  Now, the M member in ngon_D is 2, it means ngon_D is same as ngon_B, which is the 2nd(from the end)ngon.

  After the evaViewer drew ngon_E at page3, there are 5 ngon in the RAM:
the 4th(from the end)ngonthe 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_Dngon_E itself

  Now, the M member in ngon_E is 2, it means ngon_E is same as ngon_C, which is the 2nd(from the end) ngon.


[1.19] reUse.eva:
'P', b16(100),//Page display 100 centiSecond
'L', 4, b16(0),//ngon_A, 4 points, M=0
  b16( 5*16), b16(10*16), b16(25*16), b16(10*16),
  b16(25*16), b16(50*16), b16( 5*16), b16(50*16),
'w', 2*16,//line wide(thickness)=2
't', 0x04,//style=begin→end
'X', 255, 128, 128, 0,   128, 255, 128, 0,   128, 128, 255, 0,
 
'L', 4, b16(0),//ngon_B, 4 points, M=0
  b16(35*16), b16(10*16), b16(55*16), b16(10*16),
  b16(55*16), b16(50*16), b16(35*16), b16(50*16),
'w', 3*16,//line wide(thickness)=3
't', 0x08,//style=begin←end
'X', 255, 0, 0, 0,   0, 255, 0, 0,   0, 0, 255, 0,
 
'L', 4, b16(0),//ngon_C, 4 points, M=0
  b16(65*16), b16(10*16), b16(90*16), b16(10*16),
  b16(90*16), b16(50*16), b16(65*16), b16(50*16),
'w', 4*16,//line wide(thickness)=4
't', 0x20,//style=polygon
'X', 128, 0, 0, 0,   0, 128, 0, 0,   0, 0, 128, 0,
 
'L', 4, b16(0),//ngon_D, 4 points, M=0
  b16(105*16), b16(10*16), b16(130*16), b16(10*16),
  b16(130*16), b16(10*16), b16(105*16), b16(50*16),
'r', 2+1,//reUse, M=2
 
'L', 4, b16(0),//ngon_E, 4 points, M=0
  b16(140*16), b16(10*16), b16(165*16), b16(10*16),
  b16(165*16), b16(10*16), b16(140*16), b16(50*16),
'r', 4+1,//reUse, M=4
 
The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew ngon_D, there are 4 ngon in the RAM:
the 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_D itself

  Now, the M member in ngon_D is 2, it means the "style,wide,color" of ngon_D is same as ngon_B, which is the 2nd(from the end)ngon.

  After the evaViewer drew ngon_E, there are 5 ngon in the RAM:
the 4th(from the end)ngonthe 3rd(from the end)ngonthe 2nd(from the end)ngonthe 1st(from the end)ngonthe 0th(from the end)ngon
ngon_Angon_Bngon_Cngon_Dngon_E itself

  Now, the M member in ngon_E is 4, it means the "style,wide,color" of ngon_E is same as ngon_A, which is the 4th(from the end) ngon.


[1.20] displacement.eva:
'P', b16(250),//Page1 display 250 centiSecond
 
'L', 4,//ngon_A,4 points
 b16(0),//M=0
  b16(140*16), b16( 70*16), b16(190*16), b16(120*16),
  b16(140*16), b16(170*16), b16( 90*16), b16(120*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 
'Q', 18//displacement_calibration
  b16(0),//M=0
  b16(0*16), b16(0*16),//(x1,y1)=(0,0)
  b16(20*16), b16(50*16),//(x2,y2)=(20,50)
  b16(40*16), b16(0*16),//(x3,y3)=(40,0)
  b16(60*16), b16(100*16),//(x4,y4)=(60,100)

'P', b16(50),//Page2 display 50 centiSecond
'L', 4,//ngon_B,4 points
 b16(1),//M=1, the 1st (from the end)ngon
  b16(200*16), b16(170*16), b16(270*16), b16(220*16),
  b16(240*16), b16(270*16), b16(170*16), b16(220*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

The line chart just describe how ngon_A pan to ngon_B, don't show by evaViewer.


[2.01] Text.eva:
'P', b16(250),//Page display 250 centiSecond
'T', 10+3,//text, 3 chars
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(80*16), b16(50*16),//left,top,right,bottom
 'a','b','c',
 
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[2.02] byte count.eva:
'P', b16(250),//Page display 250 centiSecond
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(0*16), b16(0*16), b16(80*16), b16(50*16),//left,top,right,bottom
 'a','b','c',
 
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(100*16), b16(0*16), b16(160*16), b16(50*16),//left,top,right,bottom
 '1','2','3',
 
'c', 2,//change the strlen(of above string) to 2.

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[2.03] text margin.eva:
'P', b16(250),//Page display 250 centiSecond
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(20*16), b16(50*16), b16(100*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'X', 255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
  128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
  128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
 
'H', 11,//font Hinting
  0, 1, b16(20),//abiu=0, box=1, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(200*16), b16(50*16), b16(280*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'e', 50,//text's extra_margin.

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[2.04] font family.eva:
'P', b16(250),//Page display 250 centiSecond
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(80*16), b16(50*16), b16(160*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'f', 1,//FF_ROMAN
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(160*16), b16(50*16), b16(240*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'f', 2,//FF_SWISS
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(240*16), b16(50*16), b16(320*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'f', 3,//FF_MODERN
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(320*16), b16(50*16), b16(400*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'f', 4,//FF_SCRIPT
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(400*16), b16(50*16), b16(480*16), b16(100*16),//left,top,right,bottom
 'a','b','c',
 
'f', 5,//FF_DECORATIVE

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[2.05] font charset.eva:
'P', b16(250),//Page display 250 centiSecond
'T', 10+4, b16(0),//text, 4 chars, M=0
  b16(0*16), b16(0*16), b16(80*16), b16(50*16),//left,top,right,bottom
 0xCe,0xC4, 0xd7,0xd6,//"文字"
 
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'J', 1, 134,//without font_name, GB2312_CHARSET
 
'T', 10+4, b16(0),//text, 4 chars, M=0
  b16(80*16), b16(0*16), b16(160*16), b16(50*16),//left,top,right,bottom
 0xa4,0xe5, 0xa6,0x72,//"文字"
 
'J', 1, 136,//without font_name, CHINESEBIG5_CHARSET
 
'T', 10+8, b16(0),//text, 8 chars, M=0
  b16(160*16), b16(0*16), b16(240*16), b16(50*16),//left,top,right,bottom
 0x83,0x65, 0x83,0x4c, 0x83,0x58, 0x83,0x67,//"テキスト"
 
'J', 1, 128,//without font_name, SHIFTJIS_CHARSET
 
'T', 10+6, b16(0),//text, 6 chars, M=0
  b16(240*16), b16(0*16), b16(320*16), b16(50*16),//left,top,right,bottom
 0xc5,0xd8, 0xbd,0xba, 0xc6,0xae,//"텍스트"
 
'J', 1, 129,//without font_name, HANGEUL_CHARSET

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[2.06] font name.eva:
'P', b16(250),//Page display 250 centiSecond
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(0*16), b16(0*16), b16(80*16), b16(50*16),//left,top,right,bottom
 'a','b','c',
 
'H', 11,//font Hinting
  0, 0, b16(40),//abiu=0, box=0, height=40
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'J', 1+9, 1,//strlen(font_name)=9, DEFAULT_CHARSET
 'W','i','n','g','d','i','n','g','s',
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(80*16), b16(0*16), b16(160*16), b16(50*16),//left,top,right,bottom
 'a','b','c',
 
'J', 1+15, 1,//strlen(font_name)=15, DEFAULT_CHARSET
 'T','i','m','e','s',' ','N','e','w',' ','R','o','m','a','n',
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(160*16), b16(0*16), b16(240*16), b16(50*16),//left,top,right,bottom
 'a','b','c',
 
'J', 1+6, 1,//strlen(font_name)=6, DEFAULT_CHARSET
 'S','y','m','b','o','l',
 
'T', 10+3, b16(0),//text, 3 chars, M=0
  b16(240*16), b16(0*16), b16(320*16), b16(50*16),//left,top,right,bottom
 'a','b','c',
 
'J', 1+7, 1,//strlen(font_name)=7, DEFAULT_CHARSET
 'C','a','l','a','d','e','a',

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[2.07] keep_going.eva:
'P', b16(100),//Page1 display 100 centiSecond
'T', 10+1, b16(0),//text_A, 1 chars, M=0
  b16(87*16), b16(70*16), b16(117*16), b16(100*16),//left,top,right,bottom
 '2',
 
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'T', 10+1, b16(0),//text_B, 1 chars, M=0
  b16(59*16), b16(20*16), b16(89*16), b16(50*16),//left,top,right,bottom
 '1',

'P', b16(100),//Page2 display 100 centiSecond
'T', 10+1, b16(2),//text_C, 1 chars, M=2
  b16(30*16), b16(70*16), b16(60*16), b16(100*16),//left,top,right,bottom
 '2',
 
'G',//text_D: keep_Going
 3,//object_type=text;//3
 b16(2),// M=2, the 2nd (from the end)ngon

'P', b16(100),//Page3 display 100 centiSecond
'T', 10+1, b16(2),//text_E, 1 chars, M=2
  b16(59*16), b16(20*16), b16(89*16), b16(50*16),//left,top,right,bottom
 '2'
'T', 10+1, b16(2),//text_F, 1 chars, M=2
  b16(87*16), b16(70*16), b16(117*16), b16(100*16),//width=0, externalLeading=0, kern=0, struckout=0
 '1',

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew keep_Going at page2, there are 4 ngon in the RAM:
the 3rd(from the end)textthe 2nd(from the end)textthe 1st(from the end)textthe 0th(from the end)text
text_Atext_Btext_Ckeep_Going itself

  Now, the M member in keep_Going is 2, it means keep_Going is just keep text_B's going, which is the 2nd(from the end)text.
In the other words, it just said "I am here. I am moving. I am not disappear. EvaViewer, dont forget to show me. About my coordinate, who care..."



[2.08] equal.eva:
Similar to uniForm and same,just tRanslate(or pan)the text, no transform, without coordinate parameter.

'P', b16(250),//Page1 display 250 centiSecond
 
'T', 10+1, b16(0),//text_A, 1 char, M=0
  b16(59*16),b16(20*16), b16(89*16),b16(50*16),//left,top,right,bottom
 '1',
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'T', 10+1, b16(0),//text_B, 1 char, M=0
  b16(30*16),b16(70*16), b16(60*16),b16(100*16),//left,top,right,bottom
 '2',
'T', 10+1, b16(0),//text_C, 1 char, M=0
  b16(87*16),b16(70*16), b16(117*16),b16(100*16),//left,top,right,bottom
 '3',
'T', 10+1, b16(0),//text_D, 1 char, M=0
  b16(59*16),b16(53*16), b16(89*16),b16(83*16),//left,top,right,bottom
 '4',

'P', b16(0),//Page2 display 0 centiSecond
'U',4,b16(3),//text_E: eqUal, M=4,E=3
'U',4,b16(3),//text_F: eqUal, M=4,E=3
'u',3,//text_G: equal, M=3
'U',5,b16(7),//text_H: eqUal, M=5,E=7
 
'P', b16(150),//Page3 display 150 centiSecond
'u',2,//text_I: equal, M=2
'T', 10+1, b16(0),//text_J, 1 char, M=0
  b16(59*16),b16(20*16), b16(89*16),b16(50*16),//left,top,right,bottom
 '3',
'T', 10+1, b16(0),//text_K, 1 char, M=0
  b16(30*16),b16(70*16), b16(60*16),b16(100*16),//left,top,right,bottom
 '1',
'T', 10+1, b16(0),//text_L, 1 char, M=0
  b16(87*16),b16(70*16), b16(117*16),b16(100*16),//left,top,right,bottom
 '2',

'P', b16(0),//Page4 display 0 centiSecond
'U',3,b16(2),//text_M: eqUal, M=3,E=2
'u',5,//text_N: equal, M=5
'U',4,b16(3),//text_O: eqUal, M=4,E=3
'U',4,b16(6),//text_P: eqUal, M=4,E=6
 
'P', b16(150),//Page5 display 150 centiSecond
'T', 10+1, b16(0),//text_Q, 1 char, M=0
  b16(59*16),b16(20*16), b16(89*16),b16(50*16),//left,top,right,bottom
 '2',
'T', 10+1, b16(0),//text_R, 1 char, M=0
  b16(30*16),b16(70*16), b16(60*16),b16(100*16),//left,top,right,bottom
 '3',
'T', 10+1, b16(0),//text_S, 1 char, M=0
  b16(87*16),b16(70*16), b16(117*16),b16(100*16),//left,top,right,bottom
 '1',
'u',6,//text_T: equal, M=6

'P', b16(0),//Page6 display 0 centiSecond
'U',4,b16(3),//text_U: eqUal, M=4,E=3
'U',4,b16(3),//text_V: eqUal, M=4,E=3
'U',4,b16(6),//text_W: eqUal, M=4,E=6
'u',4,//text_X: equal, M=4


The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew text_E at page2, there are 5 text in the RAM:
the 4nd(from the end)textthe 3rd(from the end)textthe 2nd(from the end)textthe 1st(from the end)textthe 0th(from the end)text
text_Atext_Btext_Ctext_Dtext_E itself

  Now, the M member in text_E is 4, it means text_E is copy from text_A, which is the 4nd(from the end) text.
the E member in text_E is 3, it means text_E is pan to text_B(which is the 3rd text from the end)

  After the evaViewer drew text_F at page2, there are 6 text in the RAM:
the 5nd(from the end)textthe 4nd(from the end)textthe 3rd(from the end)textthe 2nd(from the end)textthe 1st(from the end)textthe 0th(from the end)text
text_Atext_Btext_Ctext_Dtext_Etext_F itself

  Now, the M member in text_F is 4, it means text_F is copy from text_B, which is the 4nd(from the end) text.
the E member in text_F is 3, it means text_F is pan to text_C(which is the 3rd text from the end)

  After the evaViewer drew text_G at page2, there are 7 text in the RAM:
the 6nd(from the end)textthe 5nd(from the end)textthe 4nd(from the end)textthe 3rd(from the end)textthe 2nd(from the end)textthe 1st(from the end)textthe 0th(from the end)text
text_Atext_Btext_Ctext_Dtext_Etext_Ftext_G itself

  Now, the M member in text_G is 3, it means text_M is copy from text_D, which is the 3rd(from the end) text.
  ...

  And so on.


[2.09] font Hinting.eva:
'P', b16(250),//Page1 display 250 centiSecond
'L', 4,//ngon_A,4 points
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(80*16), b16(0*16),
  b16(80*16), b16(50*16), b16(0*16), b16(50*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
'T', 10+8,//text_A, 8 chars
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(80*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0, 0, b16(20),//abiu=0, box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'R', 0,1,b16(80*16),b16(0*16),//tRanslate last ngon to coordinate(80,0)
 
'T', 10+8,//text_B, 8 chars
  b16(0),//M=0
  b16(80*16), b16(0*16), b16(160*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  1, 0, b16(20),//abiu=1(align_left), box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'R', 0,1,b16(160*16),b16(0*16),//tRanslate last ngon to coordinate(160,0)
 
'T', 10+8,//text_C, 8 chars
  b16(0),//M=0
  b16(160*16), b16(0*16), b16(240*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  2, 0, b16(20),//abiu=2(align_right), box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'R', 0,1,b16(240*16),b16(0*16),//tRanslate last ngon to coordinate(240,0)
 
'T', 10+8,//text_D, 8 chars
  b16(0),//M=0
  b16(240*16), b16(0*16), b16(320*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0x10, 0, b16(20),//abiu=0x10(bold), box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'R', 0,1,b16(320*16),b16(0*16),//tRanslate last ngon to coordinate(320,0)
 
'T', 10+8,//text_E, 8 chars
  b16(0),//M=0
  b16(320*16), b16(0*16), b16(400*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0x20, 0, b16(20),//abiu=0x20(italic), box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'R', 0,1,b16(420*16),b16(0*16),//tRanslate last ngon to coordinate(400,0)
 
'T', 10+8,//text_F, 8 chars
  b16(0),//M=0
  b16(400*16), b16(0*16), b16(480*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0x40, 0, b16(20),//abiu=0x40(underline), box=0, height=20
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 

'P', b16(250),//Page2 display 250 centiSecond
'T', 10+8,//text_G, 8 chars
  b16(6),//M=6
  b16(0*16), b16(0*16), b16(80*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0, 0, b16(30),//abiu=0, box=0, height=30
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'T', 10+8,//text_H, 8 chars
  b16(6),//M=6
  b16(80*16), b16(0*16), b16(160*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
 
'H', 11,//font Hinting
  0, 1, b16(30),//abiu=0, box=1(box with brush), height=30
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'T', 10+8,//text_I, 8 chars
  b16(6),//M=6
  b16(160*16), b16(0*16), b16(240*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0, 8, b16(30),//abiu=0, box=8(box with pen), height=30
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'$',5//box's color
  1,//enum=1(box's pen_colorRef)
  0, 0, 255, 0,//r=0, g=0, g=255

'T', 10+8,//text_J, 8 chars
  b16(6),//M=6
  b16(240*16), b16(0*16), b16(320*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'H', 11,//font Hinting
  0, 0x10, b16(30),//abiu=0, box=0x10(text shadow), height=30
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'$',5//text's color
  0,//enum=0(shadow's colorRef)
  255, 0, 0, 0,//r=255, g=0, g=0

'T', 10+8,//text_K, 8 chars
  b16(6),//M=6
  b16(320*16), b16(0*16), b16(400*16), b16(50*16),//left,top,right,bottom
 'a','b','c','\n','d','e','f','g',
 
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
 
'H', 11,//font Hinting
  0, 0x21, b16(30),//abiu=0, box=0x21(box shadow+box with brush), height=30
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
 
'$',5//box's color
  0,//enum=0(shadow's colorRef)
  128, 128, 128, 0,//r=128, g=128, g=128

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer drew text_G at page2, there are 7 text in the RAM:
(Yes, there are 6 ngon in the RAM too. But in eva, ngon_queue and text_queue are 2 different queues.)
the 6nd(from the end)textthe 5nd(from the end)textthe 4nd(from the end)textthe 3rd(from the end)textthe 2nd(from the end)textthe 1st(from the end)textthe 0th(from the end)text
text_Atext_Btext_Ctext_Dtext_Etext_Ftext_G itself

  Now, the M member in text_G is 6, it means text_G is transformed from text_A, which is the 6nd(from the end) text.

  After the evaViewer drew text_H at page2, there are 8 text in the RAM:
the 7nd(from the end)textthe 6nd(from the end)textthe 5nd(from the end)textthe 4nd(from the end)textthe 3rd(from the end)textthe 2nd(from the end)textthe 1st(from the end)textthe 0th(from the end)text
text_Atext_Btext_Ctext_Dtext_Etext_Ftext_Gtext_H itself

  Now, the M member in text_H is 6, it means text_H is transformed from text_B, which is the 6nd(from the end) text.
  ...

  And so on.



[3.01] load file.eva
'O',0x6,
1, 't','e','s','t',0,//attr, object file name
'b','i',0xFF,0xff,'N',0,     b32(0x31),//biN resource, 0x31 byte
'G','I','F','8', '7','a',7,0, 0x0A,0x00,0x80,0x00, 0x00,0x00,0x00,0xff,
0xe0,0xe0,0xe0,0x2c, 0x00,0x00,0x00,0x00, 0x07,0x00,0x0A,0x00, 0x00,0x02,0x10,0x84,
0x11,0x89,0x61,0xea, 0xb8,0x4e,0x4b,0x6A, 0xd1,0x79,0x6d,0xA5, 0x55,0x9a,0x02,0x00,
0x3b,

'O',0x7,
0, 't','e','s','t','2',0,//attr, object file name
'b','i',0xFF,0xff,'N',0,     b32(0x5A),//biN resource, 0x5A byte♫(123.mid)
'M','T','h','d', 0,0,0,6, 0,0,0,1, 0,0x20,
'M','T','r','k', 0,0,0,0x44, 0,0x90,0x3c,0x6e, 0x64,0x80,0x3c,0x6e,
2,0x90,0x3e,0x64, 0x64,0x80,0x3e,0x6e, 2,0x90,0x40,0x6e, 0x64,0x80,0x40,0x6e,
2,0x90,0x41,0x6e, 0x64,0x80,0x41,0x6e, 2,0x90,0x43,0x6e, 0x64,0x80,0x43,0x6e,
2,0x90,0x45,0x6e, 0x64,0x80,0x45,0x6e, 2,0x90,0x47,0x6e, 0x64,0x80,0x47,0x6e,
2,0x90,0x48,0x6e, 0x64,0x80,0x48,0x64, 0,0xff,0x2f,0x20,

'O',0x7,
1, 't','e','s','t','3',0,//attr, object file name
'b','i',0xFF,0xff,'N',0,     b32(0x46),//biN resource, 0x46 byte
'B','M',
0x46,0,0,0, 0,0,0,0, 0x3e,0,0,0, 0x28,0,0,0,
4,0,0,0, 2,0,0,0, 1,0,1,0, 0,0,0,0,
8,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
0,0,0,0, 0,0,0xff,0, 0xc0,0xc0,0xc0,0,
0xd0,0,0,0, 0x70,0,0,0,

'O',0xb,
1, 't','e','s','t','4','.','w','a','v',0,//attr, object file name

'P',b16(200),//Page1, 200 centiSecond
'D',0x0d,//commanD
b16(0),//M=0
b16(0*16), b16(0*16), b16(1*16), b16(1*16),//left,top,right,bottom
4,//cmd=begin midi
b16(2),//2nd file
//if without biN resource, the evaViewer will load "test2" midi file.
'D',0x0d,//commanD
b16(0),//M=0
b16(10*16), b16(20*16), b16(150*16), b16(220*16),//left,top,right,bottom
22,//cmd=stretchBlt
b16(1),//1st file
//if without biN resource, the evaViewer will load "test" picture file.
'D',0x0d,//commanD
b16(0),//M=0
b16(0*16), b16(0*16), b16(1*16), b16(1*16),//left,top,right,bottom
6,//cmd=begin wave
b16(4),//4th file
//because no biN resource, the evaViewer must load "test4.wav" sound file.
note: If NOT embed the wave, then user can't play by a single eva file;
      If embed the wave, then file size will be too large, violating sib(small is beautiful)philosophy.

'P',b16(200),//Page2, 200 centiSecond
'D',0x0d,//commanD
b16(0),//M=0
b16(10*16), b16(20*16), b16(200*16), b16(220*16),//left,top,right,bottom
23,//cmd=tile
b16(3),//3rd file
//if without biN resource, the evaViewer will load "test3" picture file.
'D',0x0d,//commanD
b16(0),//M=0
b16(0*16), b16(0*16), b16(1*16), b16(1*16),//left,top,right,bottom
5,//cmd=stop midi
b16(2),//2nd file
//stop midi.
'D',0x0d,//commanD
b16(0),//M=0
b16(0*16), b16(0*16), b16(1*16), b16(1*16),//left,top,right,bottom
7,//cmd=stop wav
b16(4),//4th file
//stop wave.

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[3.02] cycle repeat.eva:
'P', b16(250),//Page1 display 250 centiSecond
 
'L', 4,//ngon, 4 points
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(160*16),
  b16(180*16), b16(240*16), b16(100*16), b16(240*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 
'D', 0x0d//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  1,//cmd=cycle repeat
  b16(4)//repeat 4 times

'P', b16(50),//Page2 display 50 centiSecond
'L', 4,//ngon,4 points
  b16(0),//M=1,the 1st (from the end)ngon
  b16(180*16), b16(110*16), b16(260*16), b16(90*16),
  b16(260*16), b16(170*16), b16(180*16), b16(190*16),
'X', 255, 128, 128, 0,  255, 128, 128, 0, 128, 128, 255, 0,
't', 0x20//style=polygon
 

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[3.03] pendulum repeat.eva:
'P', b16(250),//Page1 display 250 centiSecond
 
'L', 4,//ngon,4 points
 b16(0),//M=0
  b16(140*16), b16( 70*16), b16(190*16), b16(120*16),
  b16(140*16), b16(170*16), b16( 90*16), b16(120*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 
'D', 0x0d//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  2,//cmd=pendulum repeat
  b16(3)//repeat 3 times

'P', b16(50),//Page2 display 50 centiSecond
'L', 4,//ngon,4 points
 b16(1),//M=1, the 1st (from the end)ngon
  b16(200*16), b16(170*16), b16(270*16), b16(220*16),
  b16(240*16), b16(270*16), b16(170*16), b16(220*16),
'X',32, 32, 255, 0,  32, 32, 255, 0,  255, 32, 32, 0,
't', 0x20//style=polygon
 

The coordinate's unit is twips. In eva, 1 pixel=16 twips.


[3.04] jump.eva:
'P', b16(250),//Page1 display 250 centiSecond
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '1',
 
'H', 11,//font Hinting
  0, 0, b16(40),//abiu=0, box=0, height=40
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'P', b16(250),//Page2, want to display 250 centiSecond,
actually 0.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '2',
'D', 0x0d,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  3,//cmd=jump to sticker...
  'a','b'//...which name is "ab"

'P', b16(250),//Page3, want to display 250 centiSecond,
  actually it has been skip.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '3',

'P', b16(250),//Page4, display 250 centiSecond.
'S', 0x02,//sticker(label), 2 chars
  'a','b',//   sticker's name
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '4',

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

After the evaViewer read page1, it show "1" for 250 centiSecond.
After the evaViewer read page2, it execute the "jump to sticker" command immediately. So page2 will not be show.
Because the dest sticker is in page 4, so page 4 is shown "4" for 250 centiSecond.


[3.05] button_jump.eva:
'P', b16(250),//Page1 display 250 centiSecond
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '1',
 
'H', 11,//font Hinting
  0, 0, b16(40),//abiu=0, box=0, height=40
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0

'P', b16(250),//Page2, want to display 250 centiSecond,
actually 0.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '2',
'D', 0x0d,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  20,//cmd=button that jump to sticker...
  'a','b'//...which name is "ab"

'P', b16(250),//Page3, want to display 250 centiSecond,
  actually it has been skip.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '3',

'P', b16(250),//Page4, display 250 centiSecond.
'S', 0x02,//sticker(label), 2 chars
  'a','b',//   sticker's name
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '4',

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

The evaViewer display "1234" cyclically,
but if user click '2' in page2, it will (skip page 3 and) jump to page 4,
because the dest sticker is in page 4.


[3.06] timed_jump.eva:
'P', b16(250),//Page1 display 250 centiSecond
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '1',
 
'H', 11,//font Hinting
  0, 0, b16(40),//abiu=0, box=0, height=40
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
'D', 0x10,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  3,//cmd=jump to sticker...
  '4','.','5',//...when tick>=4.5 second, and ...
  'a','b'//...sticker's name is "ab"

'P', b16(250),//Page2, want to display 250 centiSecond,
actually 2 second.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '2',
'D', 0x10,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  3,//cmd=jump to sticker...
  '4','.','5',//...when tick>=4.5 second, and ...
  'a','b'//...sticker's name is "ab"

'P', b16(250),//Page3, want to display 250 centiSecond,
  actually it has been skip.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '3',
'D', 0x10,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  3,//cmd=jump to sticker...
  '4','.','5',//...when tick>=4.5 second, and ...
  'a','b'//...sticker's name is "ab"

'P', b16(250),//Page4, display 250 centiSecond.
'S', 0x02,//sticker(label), 2 chars
  'a','b',//   sticker's name
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '4',

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer read page1, it show "1" for 250 centiSecond. During the period, the evaViewer monitor the tick_count weather it is > 4.5 second.
  After the evaViewer read page2, it show "2" for 200 centiSecond. During the period, the evaViewer monitor the tick_count weather it is > 4.5 second. When OK, the evaViewer execute the "jump to sticker" command immediately. So page2 is shown more than half of originally scheduled time.
  Because the dest sticker is in page 4, so page 4 is shown "4" for 250 centiSecond.


[3.07] back_ground.eva:
'P', b16(250),//Page1, want to display 250 centiSecond
  actually it is shown but jump immediately.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(80*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '1',
 
'H', 11,//font Hinting
  0, 0, b16(40),//abiu=0, box=0, height=40
  b16(0),b16(0),b16(0),0,//width=0, externalLeading=0, kern=0, struckout=0
'D', 0x0b,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  15,//cmd=set this page as back ground

'P', b16(250),//Page2, want to display 250 centiSecond
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '2',

'P', b16(250),//Page3, want to display 250 centiSecond,
  actually it has been skip.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '3',
'D', 0x0b,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0*16), b16(0*16),//left,top,right,bottom
  17,//cmd=cancel back ground.

'P', b16(250),//Page4, display 250 centiSecond.
'T', 10+1,//text, 1 chars
  b16(0),//M=0
  b16(0*16), b16(50*16), b16(80*16), b16(100*16),//left,top,right,bottom
 '4',

The coordinate's unit is twips. In eva, 1 pixel=16 twips.

  After the evaViewer read page1, it know this page is back_ground, so it jump to page2.
  The evaViewer show both page1(as back ground) and page2(as front ground) for 250 centiSecond.
  After the evaViewer read page3, it know this page cancel the back_ground, so it cancel that and jump to page4 immediately.
  The evaViewer show only page4 for for 250 centiSecond.


[3.08] zoom to full page.eva:
'P',b16(250),//Page display 250 centiSecond
'L',4,//ngon,4 points
b16(0),//M=0
b16(100*16), b16(160*16),//x1=100,y1=160,
b16(180*16), b16(160*16),//x2=180,y2=160,
b16(180*16), b16(240*16),//x3=180,y3=240,
b16(100*16), b16(240*16),//x4=100,y4=240,
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
255, 128, 128, 0,//brush colorRef_1: r=255, g=128, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
't',0x20//style=polygon
'D', 0x0b,//commanD
  b16(0),//M=0
  b16(100*16), b16(160*16), b16(180*16), b16(240*16),//left,top,right,bottom
  0x0b,//cmd=zoom to full page

'P',b16(250),//Page display 250 centiSecond
'D', 0x0b,//commanD
  b16(0),//M=0
  b16(0*16), b16(0*16), b16(0x234*16), b16(0x123*16),//left,top,right,bottom
  0x0b,//cmd=(cancel)zoom
's', 1//M=1

  The coordinate's unit is twips. In eva, 1 pixel=16 twips.

This commnaD just zoom to full page, little significance.


[3.09] nested.eva:
'P',b16(250),//Page1 display 250 centiSecond
'A',0x21,//Animation
b16(0)//M=0
0,b16(0),0,4,//cnt,base,motion,max_layer
b16(0*16),b16(0*16),//?=0.0, ?=0.0
b16(60*16),b16(180*16),b16(0),//x1=60, y1=180, r=0
b16(40*16),b16(20*16),//wd=40, hd=20
b32(120000),//φ=120`000 mil=30 degree
b32(0),//θ=     0 mil=   0 degree
b32(360000),//ψ=360`000 mil=90 degree
'J',0x02,0, '1',//import obJect,which sticker is "1"
'L',2,//path
b16(0),//M=0
b16(60*16),b16(180*16),//x1=60, y1=180
b16(80*16), b16(80*16),//x2=80, y2=80

'P',b16(100),//Page2 display 100 centiSecond
'A',0x21,,//Animation
b16(1),//M=1,the 1st(from the end) animation
0,b16(0),0,4,//cnt,base,motion,max_layer
b16(0*16), b16(0*16),//?=0.0, ?=0.0
b16(80*16), b16(80*16), b16(0),//x2=80, y2=80, r=0
b16(40*16), b16(20*16),//wd=40, hd=20
b32(480000),//φ=480`000 mil=120 degree
b32(0),//θ=     0 mil=   0 degree
b32(360000),//ψ=360`000 mil=90 degree
'L',2,//path
b16(0)//M=0
b16(80*16), b16(80*16),
b16(80*16), b16(80*16),

'P',b16(100),//Page3 display 100 centiSecond
'S',1, '1',//sticker, 1 char name
'L',0x04,//Line, 4 points
0,0,//M=0
b16(140*16), b16(200*16),
b16(140*16), b16(160*16),
b16(180*16), b16(160*16),
b16(180*16), b16(250*16),
'X',255, 128, 128, 0,//brush colorRef_0: r=255, g=128, b=128
128, 255, 128, 0,//brush colorRef_1: r=128, g=255, b=128
128, 128, 255, 0,//pen colorRef: r=128, g=128, b=255
 
'D',0x0b,//commanD
b16(0),//M=0
b16(100*16), b16(160*16),//left=60, top=180
b16(180*16), b16(240*16),//right=130, bottom=230
0x21,//cmd=datum frame

'P',b16(0),//Page4 display 0 centiSecond
'L',0x04,//Line, 4 points
b16(1),//M=1,the 1st(from the end) ngon
b16(140*16), b16(200*16),
b16(140*16), b16(160*16),
b16(180*16), b16(180*16),
b16(140*16), b16(200*16),
  The coordinate's unit is twips. In eva, 1 pixel =16 twips.
  The      angle's unit is mil.   In eva, 1 degree=4000 mil.

  3.Page3 is a common polyLine,
page4 is a common triangle.
  Transform from page3 to page4,
is a part of common animation.
  And page3 export a sticker
which name is "1".


  1.1.Page1 import an animation source object, whick sticker name is "1", and the width and height of its datum frame is ws=130-60=70 and hs=230-180=50, and center coordinate of source datum frame is (xcs,ycs)=(95,205).//(130+60)/2, (230+180)/2

  1.2.Above is only for source. In dest page(page 1), the evaViewer calculate the center coordinate (xcd, ycd): xcd=x1+r*cosφ=60+0*cos30°=60, ycd=y1+r*sinφ=180+0*sin30°=180.

  1.3.The affine transformation between source and dest(page1) is:
λ=x*(wd/ws)*cos(φ+θ) + y*(hd/hs)*cos(φ+ψ) = x*(40/70)*cos(30°+0°) + y*(20/50)*cos(30°+90°) = 0.571*x*cos30°- 0.4*y*sin30°
μ=x*(wd/ws)*sin(φ+θ) + y*(hd/hs)*sin(φ+ψ) = x*(40/70)*sin(30°+0°) + y*(20/50)*sin(30°+90°) = 0.571*x*sin30°+ 0.4*y*cos30°

  1.4.Maping every all source page objects' point (xcs+x, ycs+y) to dest page objects' point (xcd+λ, ycd+μ).
That means map every point (95+x,205+y) in page3(NOT only in datum frame, but also in ALL page3) to (60+λ, 180+μ) in page1.
Actually only at the start tick use page3, and when tick=100 centiSecond it use page4.
We can imagine that, in page1 near the center coordinate (x1,y1), we have embed another eva there, and the "another eva" is begin from sticker "1" to end page.


  2.1.Page2 import the same animation source object, too.

  2.2.But center dest coordinate in page2 (xcd, ycd) are change to: xcd=x2+r*cosφ=80+0*cos30°=80, ycd=y2+r*sinφ=80+0*sin30°=80.

  2.3.The affine transformation between source and dest(page2) is:
λ=x*(wd/ws)*cos(φ+θ) + y*(hd/hs)*cos(φ+ψ) = 0.571*x*cos120°- 0.4*y*sin120°
μ=x*(wd/ws)*sin(φ+θ) + y*(hd/hs)*sin(φ+ψ) = 0.571*x*sin120°+ 0.4*y*cos120°

  2.4.Map every point (95+x,205+y) in page3(NOT only in datum frame, but also in ALL page3) to (80+λ, 80+μ) in page2.
Actually only at the start tick use page3, and when tick=100 centiSecond it use page4.
We can imagine that, in page2 near the center coordinate (x2,y2), we have embed another eva there, and the "another eva" is begin from sticker "1" to end page.


  1.5.In page1, behind the "Animation" operation, (the eva file format is)must define a polyLine between (x1,y1) and (x2,y2), to define how to move this obJect. This demo only define a straight line, we can change it.

  2.5.In page2, behind the "Animation" operation, (the eva file format is)must define a polyLine too. This demo only define a straight line which length=0.

  2.6.Now, after show page2, the evaViewer show page3. This demo is too lazy, in the end of page2, it should add a "jump" operation to another page, avoid these discomfiture things.


To be continue...

Back to menu