// create a standard format path, coordinates are floats (VG_PATH_DATATYPE_F) path0 = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL); // append some data pathSegs[0] = VG_MOVE_TO_ABS; pathData[0] = -2.0f; pathData[1] = 1.0f; pathSegs[1] = VG_LINE_TO_ABS; pathData[2] = -4.0f; pathData[3] = 3.0f; pathSegs[2] = VG_HLINE_TO_ABS; pathData[4] = -7.0f; pathSegs[3] = VG_VLINE_TO_ABS; pathData[5] = 8.0f; pathSegs[4] = VG_QUAD_TO_ABS; pathData[6] = -4.0f; pathData[7] = 12.0f; pathData[8] = 2.0f; pathData[9] = 12.0f; pathSegs[5] = VG_CUBIC_TO_ABS; pathData[10] = 2.0f; pathData[11] = 8.0f; pathData[12] = 4.0f; pathData[13] = 6.0f; pathData[14] = 7.0f; pathData[15] = 6.0f; pathSegs[6] = VG_SQUAD_TO_ABS; pathData[16] = 10.0f; pathData[17] = 4.0f; pathSegs[7] = VG_SCUBIC_TO_ABS; pathData[18] = 7.0f; pathData[19] = 2.0f; pathData[20] = 7.0f; pathData[21] = 0.0f; // rx, ry, rot, x0, y0 pathSegs[8] = VG_LCWARC_TO_ABS; pathData[22] = 1.5f; pathData[23] = 3.0f; pathData[24] = 0.0f; pathData[25] = 4.0f; pathData[26] = 0.0f; pathSegs[9] = VG_LCCWARC_TO_ABS; pathData[27] = 2.1213f; pathData[28] = 3.5355f; pathData[29] = 135.0f; pathData[30] = 1.0f; pathData[31] = 3.0f; pathSegs[10] = VG_SCWARC_TO_ABS; pathData[32] = 2.0f; pathData[33] = 1.0f; pathData[34] = 0.0f; pathData[35] = 1.0f; pathData[36] = 1.0f; pathSegs[11] = VG_SCCWARC_TO_ABS; pathData[37] = 4.2426f; pathData[38] = 2.8284f; pathData[39] = 225.0f; pathData[40] = -5.0f; pathData[41] = -5.0f; pathSegs[12] = VG_CLOSE_PATH; vgAppendPathData(path0, 13, pathSegs, pathData); writeInt(f, vgGetError(), "vgAppendPathData(path0, 24, pathSegs, pathData)"); writePathParameters(f, path0); // check every segment length fVal = vgPathLength(path0, 0, 1); writeFloat(f, fVal, "vgPathLength(path0, 0, 1)"); fVal = vgPathLength(path0, 1, 1); writeFloat(f, fVal, "vgPathLength(path0, 1, 1)"); fVal = vgPathLength(path0, 2, 1); writeFloat(f, fVal, "vgPathLength(path0, 2, 1)"); fVal = vgPathLength(path0, 3, 1); writeFloat(f, fVal, "vgPathLength(path0, 3, 1)"); fVal = vgPathLength(path0, 4, 1); writeFloat(f, fVal, "vgPathLength(path0, 4, 1)"); fVal = vgPathLength(path0, 5, 1); writeFloat(f, fVal, "vgPathLength(path0, 5, 1)"); fVal = vgPathLength(path0, 6, 1); writeFloat(f, fVal, "vgPathLength(path0, 6, 1)"); fVal = vgPathLength(path0, 7, 1); writeFloat(f, fVal, "vgPathLength(path0, 7, 1)"); fVal = vgPathLength(path0, 8, 1); writeFloat(f, fVal, "vgPathLength(path0, 8, 1)"); fVal = vgPathLength(path0, 9, 1); writeFloat(f, fVal, "vgPathLength(path0, 9, 1)"); fVal = vgPathLength(path0, 10, 1); writeFloat(f, fVal, "vgPathLength(path0, 10, 1)"); fVal = vgPathLength(path0, 11, 1); writeFloat(f, fVal, "vgPathLength(path0, 11, 1)"); fVal = vgPathLength(path0, 12, 1); writeFloat(f, fVal, "vgPathLength(path0, 12, 1)"); // write path point and tangent evaluations writePath(f, path0, 30, VG_TRUE, "Path evaluations"); // destroy path vgDestroyPath(path0);