6 const VGfloat clear_color
[4] = {1.0, 1.0, 1.0, 1.0};
7 const VGfloat color
[4] = {1.0, 1.0, 1.0, 0.5};
11 static void ellipse(VGPath vgPath
, VGfloat rx
, VGfloat ry
, VGfloat angle
)
13 static const VGubyte cmd
[] =
14 { VG_MOVE_TO_ABS
, VG_SCCWARC_TO_REL
, VG_SCCWARC_TO_REL
, VG_CLOSE_PATH
};
17 VGfloat c
= cos(angle
) * rx
;
18 VGfloat s
= sin(angle
) * rx
;
33 vgClearPath(vgPath
, VG_PATH_CAPABILITY_ALL
);
34 vgAppendPathData(vgPath
, sizeof(cmd
), cmd
, val
);
35 vgDrawPath(vgPath
, VG_FILL_PATH
| VG_STROKE_PATH
);
43 vgSetfv(VG_CLEAR_COLOR
, 4, clear_color
);
44 vgPath
= vgCreatePath(VG_PATH_FORMAT_STANDARD
,
45 VG_PATH_DATATYPE_F
, 1.0f
, 0.0f
, 0, 0,
46 VG_PATH_CAPABILITY_ALL
);
48 vgPaint
= vgCreatePaint();
49 vgSetParameteri(vgPaint
, VG_PAINT_TYPE
, VG_PAINT_TYPE_COLOR
);
50 vgSetColor(vgPaint
, 0x00ff00ff);
51 vgSetPaint(vgPaint
, VG_FILL_PATH
);
53 vgSeti(VG_RENDERING_QUALITY
, VG_RENDERING_QUALITY_NONANTIALIASED
);
54 vgSeti(VG_BLEND_MODE
, VG_BLEND_SRC_OVER
);
55 vgSetf(VG_STROKE_LINE_WIDTH
, 2.0f
);
56 vgSeti(VG_STROKE_CAP_STYLE
, VG_CAP_SQUARE
);
57 vgSeti(VG_STROKE_JOIN_STYLE
, VG_JOIN_MITER
);
58 vgSetf(VG_STROKE_MITER_LIMIT
, 4.0f
);
59 vgSeti(VG_MATRIX_MODE
, VG_MATRIX_PATH_USER_TO_SURFACE
);
62 /* new window size or exposure */
71 vgClear(0, 0, window_width(), window_height());
75 vgTranslate(40.0f
, 24.0f
);
76 vgScale(0.61804f
, 0.61804f
);
78 vgDrawPath(vgPath
, VG_FILL_PATH
| VG_STROKE_PATH
);
81 /* row 1, col 1: Identity transform. */
84 vgTranslate(8.0f
, 8.0f
);
85 ellipse(vgPath
, 4.0f
, 4.0f
, 0.0f
);
87 /* row 1, col 2: 10^3 horizontal squeeze. */
90 vgTranslate(24.0f
, 8.0f
);
91 vgScale(1.0e-3f
, 1.0f
);
92 ellipse(vgPath
, 4.0e3f
, 4.0f
, 0.0f
);
94 /* row 1, col 3: 10^6 horizontal squeeze. */
97 vgTranslate(40.0f
, 8.0f
);
98 vgScale(1.0e-6f
, 1.0f
);
99 ellipse(vgPath
, 4.0e6f
, 4.0f
, 0.0f
);
101 /* row 1, col 4: 10^9 horizontal squeeze. */
104 vgTranslate(56.0f
, 8.0f
);
105 vgScale(1.0e-9f
, 1.0f
);
106 ellipse(vgPath
, 4.0e9f
, 4.0f
, 0.0f
);
108 /* row 2, col 1: 10^3 vertical squeeze. */
111 vgTranslate(8.0f
, 24.0f
);
112 vgScale(1.0f
, 1.0e-3f
);
113 ellipse(vgPath
, 4.0f
, 4.0e3f
, 0.0f
);
115 /* row 2, col 2: Shear 0. */
118 vgTranslate(24.0f
, 24.0f
);
120 ellipse(vgPath
, 4.0f
, 4.0f
, 0.0f
);
122 /* row 2, col 3: Horizontal shear -1. */
125 vgTranslate(40.0f
, 24.0f
);
126 vgScale(0.61804f
, 0.61804f
);
127 vgShear(-1.0f
, 0.0f
);
128 ellipse(vgPath
, 10.47213f
, 4.0f
, 31.717f
);
134 int main(int argc
, char **argv
)
136 set_window_size(64, 64);
137 return run(argc
, argv
, init
, reshape
,