601 lines
16 KiB
C
601 lines
16 KiB
C
//#include <windows.h>
|
|
#include <vg/openvg.h>
|
|
#include <vg/vgu.h>
|
|
#include <EGL/egl.h>
|
|
#include <stdio.h>
|
|
#include <assert.h>
|
|
#include <string.h>
|
|
#include <time.h>
|
|
#include <math.h>
|
|
#include "reversing_auxiliary_line.h"
|
|
|
|
|
|
// 红黄绿辅助线及轨迹线的原始SVG数据.
|
|
// 直接运行.\image\run.bat, 将原始的SVG格式设计数据转换为OpenVG格式的C数据文件.
|
|
// 注意: SVG格式的坐标系是自顶向下, 使用时应将其转换到OpenVG坐标系.
|
|
//
|
|
// 参考如下 do_paint_auxiliary_line 代码中的坐标映射
|
|
// VGfloat m[9];
|
|
// // 设置自顶向下(SVG坐标系)到自底向上(OpenVG)的坐标映射, 将SVG坐标转换为OpenVG坐标
|
|
// // 以下红黄绿辅助线及轨迹线均使用SVG元素绘制.
|
|
// vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
|
|
// vgGetMatrix(m);
|
|
// m[4] = -1;
|
|
// m[7] = VG_H;
|
|
// vgLoadMatrix(m);
|
|
//
|
|
#include ".\image\bg.c"
|
|
#include ".\image\BackLine001.c"
|
|
#include ".\image\BackLine002.c"
|
|
#include ".\image\BackLine003.c"
|
|
#include ".\image\BackLine004.c"
|
|
#include ".\image\BackLine005.c"
|
|
#include ".\image\BackLine006.c"
|
|
#include ".\image\BackLine007.c"
|
|
#include ".\image\BackLine008.c"
|
|
#include ".\image\BackLine009.c"
|
|
#include ".\image\BackLine010.c"
|
|
#include ".\image\BackLine011.c"
|
|
#include ".\image\BackLine012.c"
|
|
#include ".\image\BackLine013.c"
|
|
#include ".\image\BackLine014.c"
|
|
#include ".\image\BackLine015.c"
|
|
#include ".\image\BackLine016.c"
|
|
#include ".\image\BackLine017.c"
|
|
#include ".\image\BackLine018.c"
|
|
#include ".\image\BackLine019.c"
|
|
#include ".\image\BackLine020.c"
|
|
#include ".\image\BackLine021.c"
|
|
#include ".\image\BackLine022.c"
|
|
#include ".\image\BackLine023.c"
|
|
#include ".\image\BackLine024.c"
|
|
#include ".\image\BackLine025.c"
|
|
#include ".\image\BackLine026.c"
|
|
#include ".\image\BackLine027.c"
|
|
#include ".\image\BackLine028.c"
|
|
#include ".\image\BackLine029.c"
|
|
#include ".\image\BackLine030.c"
|
|
#include ".\image\BackLine031.c"
|
|
#include ".\image\BackLine032.c"
|
|
#include ".\image\BackLine033.c"
|
|
#include ".\image\BackLine034.c"
|
|
#include ".\image\BackLine035.c"
|
|
#include ".\image\BackLine036.c"
|
|
#include ".\image\BackLine037.c"
|
|
#include ".\image\BackLine038.c"
|
|
#include ".\image\BackLine039.c"
|
|
#include ".\image\BackLine040.c"
|
|
#include ".\image\BackLine041.c"
|
|
#include ".\image\BackLine042.c"
|
|
#include ".\image\BackLine043.c"
|
|
#include ".\image\BackLine044.c"
|
|
#include ".\image\BackLine045.c"
|
|
#include ".\image\BackLine046.c"
|
|
#include ".\image\BackLine047.c"
|
|
#include ".\image\BackLine048.c"
|
|
#include ".\image\BackLine049.c"
|
|
#include ".\image\BackLine050.c"
|
|
#include ".\image\BackLine051.c"
|
|
#include ".\image\BackLine052.c"
|
|
#include ".\image\BackLine053.c"
|
|
#include ".\image\BackLine054.c"
|
|
#include ".\image\BackLine055.c"
|
|
#include ".\image\BackLine056.c"
|
|
#include ".\image\BackLine057.c"
|
|
#include ".\image\BackLine058.c"
|
|
#include ".\image\BackLine059.c"
|
|
#include ".\image\BackLine060.c"
|
|
#include ".\image\BackLine061.c"
|
|
#include ".\image\BackLine062.c"
|
|
#include ".\image\BackLine063.c"
|
|
#include ".\image\BackLine064.c"
|
|
#include ".\image\BackLine065.c"
|
|
#include ".\image\BackLine066.c"
|
|
#include ".\image\BackLine067.c"
|
|
#include ".\image\BackLine068.c"
|
|
#include ".\image\BackLine069.c"
|
|
#include ".\image\BackLine070.c"
|
|
#include ".\image\BackLine071.c"
|
|
#include ".\image\BackLine072.c"
|
|
#include ".\image\BackLine073.c"
|
|
#include ".\image\BackLine074.c"
|
|
#include ".\image\BackLine075.c"
|
|
#include ".\image\BackLine076.c"
|
|
#include ".\image\BackLine077.c"
|
|
#include ".\image\BackLine078.c"
|
|
#include ".\image\BackLine079.c"
|
|
#include ".\image\BackLine080.c"
|
|
#include ".\image\BackLine081.c"
|
|
#include ".\image\BackLine082.c"
|
|
#include ".\image\BackLine083.c"
|
|
#include ".\image\BackLine084.c"
|
|
#include ".\image\BackLine085.c"
|
|
#include ".\image\BackLine086.c"
|
|
#include ".\image\BackLine087.c"
|
|
#include ".\image\BackLine088.c"
|
|
#include ".\image\BackLine089.c"
|
|
#include ".\image\BackLine090.c"
|
|
#include ".\image\BackLine091.c"
|
|
#include ".\image\BackLine092.c"
|
|
#include ".\image\BackLine093.c"
|
|
#include ".\image\BackLine094.c"
|
|
#include ".\image\BackLine095.c"
|
|
#include ".\image\BackLine096.c"
|
|
#include ".\image\BackLine097.c"
|
|
#include ".\image\BackLine098.c"
|
|
#include ".\image\BackLine099.c"
|
|
#include ".\image\BackLine100.c"
|
|
#include ".\image\BackLine101.c"
|
|
#include ".\image\BackLine102.c"
|
|
#include ".\image\BackLine103.c"
|
|
#include ".\image\BackLine104.c"
|
|
#include ".\image\BackLine105.c"
|
|
#include ".\image\BackLine106.c"
|
|
#include ".\image\BackLine107.c"
|
|
#include ".\image\BackLine108.c"
|
|
#include ".\image\BackLine109.c"
|
|
#include ".\image\BackLine110.c"
|
|
#include ".\image\BackLine111.c"
|
|
#include ".\image\BackLine112.c"
|
|
#include ".\image\BackLine113.c"
|
|
|
|
|
|
// 轨迹线描述结构
|
|
typedef struct {
|
|
const VGubyte *command;
|
|
int cb_command;
|
|
const VGfloat *coordinate;
|
|
} BACK_LINE;
|
|
|
|
#define L_DEF(num) { BackLine##num##_path_0_commands , sizeof(BackLine##num##_path_0_commands )/sizeof(BackLine##num##_path_0_commands [0]), BackLine##num##_path_0_coordinates }
|
|
#define R_DEF(num) { BackLine##num##_path_1_commands , sizeof(BackLine##num##_path_1_commands )/sizeof(BackLine##num##_path_1_commands [0]), BackLine##num##_path_1_coordinates }
|
|
|
|
// 左轨迹数据
|
|
static const BACK_LINE back_lines_left[] = {
|
|
L_DEF(001),
|
|
L_DEF(002),
|
|
L_DEF(003),
|
|
L_DEF(004),
|
|
L_DEF(005),
|
|
L_DEF(006),
|
|
L_DEF(007),
|
|
L_DEF(008),
|
|
L_DEF(009),
|
|
L_DEF(010),
|
|
L_DEF(011),
|
|
L_DEF(012),
|
|
L_DEF(013),
|
|
L_DEF(014),
|
|
L_DEF(015),
|
|
L_DEF(016),
|
|
L_DEF(017),
|
|
L_DEF(018),
|
|
L_DEF(019),
|
|
L_DEF(020),
|
|
L_DEF(021),
|
|
L_DEF(022),
|
|
L_DEF(023),
|
|
L_DEF(024),
|
|
L_DEF(025),
|
|
L_DEF(026),
|
|
L_DEF(027),
|
|
L_DEF(028),
|
|
L_DEF(029),
|
|
L_DEF(030),
|
|
L_DEF(031),
|
|
L_DEF(032),
|
|
L_DEF(033),
|
|
L_DEF(034),
|
|
L_DEF(035),
|
|
L_DEF(036),
|
|
L_DEF(037),
|
|
L_DEF(038),
|
|
L_DEF(039),
|
|
L_DEF(040),
|
|
L_DEF(041),
|
|
L_DEF(042),
|
|
L_DEF(043),
|
|
L_DEF(044),
|
|
L_DEF(045),
|
|
L_DEF(046),
|
|
L_DEF(047),
|
|
L_DEF(048),
|
|
L_DEF(049),
|
|
L_DEF(050),
|
|
L_DEF(051),
|
|
L_DEF(052),
|
|
L_DEF(053),
|
|
L_DEF(054),
|
|
L_DEF(055),
|
|
L_DEF(056),
|
|
L_DEF(057),
|
|
L_DEF(058),
|
|
L_DEF(059),
|
|
L_DEF(060),
|
|
L_DEF(061),
|
|
L_DEF(062),
|
|
L_DEF(063),
|
|
L_DEF(064),
|
|
L_DEF(065),
|
|
L_DEF(066),
|
|
L_DEF(067),
|
|
L_DEF(068),
|
|
L_DEF(069),
|
|
L_DEF(070),
|
|
L_DEF(071),
|
|
L_DEF(072),
|
|
L_DEF(073),
|
|
L_DEF(074),
|
|
L_DEF(075),
|
|
L_DEF(076),
|
|
L_DEF(077),
|
|
L_DEF(078),
|
|
L_DEF(079),
|
|
L_DEF(080),
|
|
L_DEF(081),
|
|
L_DEF(082),
|
|
L_DEF(083),
|
|
L_DEF(084),
|
|
L_DEF(085),
|
|
L_DEF(086),
|
|
L_DEF(087),
|
|
L_DEF(088),
|
|
L_DEF(089),
|
|
L_DEF(090),
|
|
L_DEF(091),
|
|
L_DEF(092),
|
|
L_DEF(093),
|
|
L_DEF(094),
|
|
L_DEF(095),
|
|
L_DEF(096),
|
|
L_DEF(097),
|
|
L_DEF(098),
|
|
L_DEF(099),
|
|
L_DEF(100),
|
|
L_DEF(101),
|
|
L_DEF(102),
|
|
L_DEF(103),
|
|
L_DEF(104),
|
|
L_DEF(105),
|
|
L_DEF(106),
|
|
L_DEF(107),
|
|
L_DEF(108),
|
|
L_DEF(109),
|
|
L_DEF(110),
|
|
L_DEF(111),
|
|
L_DEF(112),
|
|
L_DEF(113),
|
|
};
|
|
|
|
// 右轨迹数据
|
|
static const BACK_LINE back_lines_right[] = {
|
|
R_DEF(001),
|
|
R_DEF(002),
|
|
R_DEF(003),
|
|
R_DEF(004),
|
|
R_DEF(005),
|
|
R_DEF(006),
|
|
R_DEF(007),
|
|
R_DEF(008),
|
|
R_DEF(009),
|
|
R_DEF(010),
|
|
R_DEF(011),
|
|
R_DEF(012),
|
|
R_DEF(013),
|
|
R_DEF(014),
|
|
R_DEF(015),
|
|
R_DEF(016),
|
|
R_DEF(017),
|
|
R_DEF(018),
|
|
R_DEF(019),
|
|
R_DEF(020),
|
|
R_DEF(021),
|
|
R_DEF(022),
|
|
R_DEF(023),
|
|
R_DEF(024),
|
|
R_DEF(025),
|
|
R_DEF(026),
|
|
R_DEF(027),
|
|
R_DEF(028),
|
|
R_DEF(029),
|
|
R_DEF(030),
|
|
R_DEF(031),
|
|
R_DEF(032),
|
|
R_DEF(033),
|
|
R_DEF(034),
|
|
R_DEF(035),
|
|
R_DEF(036),
|
|
R_DEF(037),
|
|
R_DEF(038),
|
|
R_DEF(039),
|
|
R_DEF(040),
|
|
R_DEF(041),
|
|
R_DEF(042),
|
|
R_DEF(043),
|
|
R_DEF(044),
|
|
R_DEF(045),
|
|
R_DEF(046),
|
|
R_DEF(047),
|
|
R_DEF(048),
|
|
R_DEF(049),
|
|
R_DEF(050),
|
|
R_DEF(051),
|
|
R_DEF(052),
|
|
R_DEF(053),
|
|
R_DEF(054),
|
|
R_DEF(055),
|
|
R_DEF(056),
|
|
R_DEF(057),
|
|
R_DEF(058),
|
|
R_DEF(059),
|
|
R_DEF(060),
|
|
R_DEF(061),
|
|
R_DEF(062),
|
|
R_DEF(063),
|
|
R_DEF(064),
|
|
R_DEF(065),
|
|
R_DEF(066),
|
|
R_DEF(067),
|
|
R_DEF(068),
|
|
R_DEF(069),
|
|
R_DEF(070),
|
|
R_DEF(071),
|
|
R_DEF(072),
|
|
R_DEF(073),
|
|
R_DEF(074),
|
|
R_DEF(075),
|
|
R_DEF(076),
|
|
R_DEF(077),
|
|
R_DEF(078),
|
|
R_DEF(079),
|
|
R_DEF(080),
|
|
R_DEF(081),
|
|
R_DEF(082),
|
|
R_DEF(083),
|
|
R_DEF(084),
|
|
R_DEF(085),
|
|
R_DEF(086),
|
|
R_DEF(087),
|
|
R_DEF(088),
|
|
R_DEF(089),
|
|
R_DEF(090),
|
|
R_DEF(091),
|
|
R_DEF(092),
|
|
R_DEF(093),
|
|
R_DEF(094),
|
|
R_DEF(095),
|
|
R_DEF(096),
|
|
R_DEF(097),
|
|
R_DEF(098),
|
|
R_DEF(099),
|
|
R_DEF(100),
|
|
R_DEF(101),
|
|
R_DEF(102),
|
|
R_DEF(103),
|
|
R_DEF(104),
|
|
R_DEF(105),
|
|
R_DEF(106),
|
|
R_DEF(107),
|
|
R_DEF(108),
|
|
R_DEF(109),
|
|
R_DEF(110),
|
|
R_DEF(111),
|
|
R_DEF(112),
|
|
R_DEF(113),
|
|
};
|
|
|
|
#define LEFT_PATH_ORG_X (0.0f)
|
|
#define LEFT_PATH_ORG_Y (0.0f)
|
|
|
|
#define RIGHT_PATH_ORG_X (0.0f)
|
|
#define RIGHT_PATH_ORG_Y (0.0f)
|
|
|
|
#define BACK_LINE_WIDTH 7.0f // 红黄绿辅助线线宽
|
|
|
|
|
|
static VGPath back_line_path_0; // 绿色标线
|
|
static VGPath back_line_path_1; // 黄色标线
|
|
static VGPath back_line_path_2; // 红色标线
|
|
static int vg_w, vg_h;
|
|
|
|
|
|
// 绘制红黄绿辅助线及轨迹线
|
|
// path_line_index 轨迹线图片索引
|
|
static void do_paint_auxiliary_line (int path_line_index)
|
|
{
|
|
VGfloat line_color[4];
|
|
VGPaint colorPaint;
|
|
|
|
if (path_line_index < 0 || path_line_index >= sizeof(back_lines_left) / sizeof(back_lines_left[0])
|
|
|| path_line_index >= sizeof(back_lines_right) / sizeof(back_lines_right[0]))
|
|
return;
|
|
|
|
// 设置单位矩阵
|
|
vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
|
|
vgLoadIdentity();
|
|
|
|
// 创建一个纯色画笔对象
|
|
colorPaint = vgCreatePaint();
|
|
vgSetParameteri(colorPaint, VG_PAINT_TYPE, VG_PAINT_TYPE_COLOR);
|
|
|
|
VGfloat m[9];
|
|
// 设置自顶向下(SVG坐标系)到自底向上(OpenVG)的坐标映射, 将SVG坐标转换为OpenVG坐标
|
|
// 以下红黄绿辅助线及轨迹线均使用SVG元素绘制.
|
|
vgSeti(VG_MATRIX_MODE, VG_MATRIX_PATH_USER_TO_SURFACE);
|
|
vgGetMatrix(m);
|
|
m[4] = -1;
|
|
m[7] = vg_h;
|
|
vgLoadMatrix(m);
|
|
|
|
// 绘制红黄绿辅助线 (以下路径使用的坐标为SVG坐标, 通过上面的转换矩阵m进行坐标系转换)
|
|
|
|
// 绘制绿色标线
|
|
// SVG代码
|
|
// <path d="M568.5 199L499 148H223L152.5 199" stroke="#00FF00" stroke-width="7" stroke-linecap="round"/>
|
|
// 创建绿色画笔
|
|
line_color[0] = 0.00f; // 绿色
|
|
line_color[1] = 1.00f;
|
|
line_color[2] = 0.00f;
|
|
line_color[3] = 1.00f;
|
|
vgSetParameterfv (colorPaint, VG_PAINT_COLOR, 4, line_color);
|
|
// 标记画笔对象colorPaint用于下面的路径描边操作
|
|
vgSetPaint (colorPaint, VG_STROKE_PATH);
|
|
// 设置笔宽度
|
|
vgSetf (VG_STROKE_LINE_WIDTH, BACK_LINE_WIDTH);
|
|
// 设置笔帽类型
|
|
vgSetf (VG_STROKE_CAP_STYLE, VG_CAP_ROUND);
|
|
// 绘制绿色标线
|
|
vgDrawPath (back_line_path_0, VG_STROKE_PATH);
|
|
|
|
// 绘制黄色标线
|
|
// SVG代码
|
|
// <path d="M653.5 266.5L568.5 199H152.51L66.5 266.5" stroke="#FFFF00" stroke-width="7" stroke-linecap="round"/>
|
|
// 创建黄色画笔
|
|
line_color[0] = 1.00f; // 黄色
|
|
line_color[1] = 1.00f;
|
|
line_color[2] = 0.00f;
|
|
line_color[3] = 1.00f;
|
|
vgSetParameterfv (colorPaint, VG_PAINT_COLOR, 4, line_color);
|
|
// 标记画笔对象colorPaint用于下面的路径描边操作
|
|
vgSetPaint (colorPaint, VG_STROKE_PATH);
|
|
// 设置笔宽度
|
|
vgSetf (VG_STROKE_LINE_WIDTH, BACK_LINE_WIDTH);
|
|
// 设置笔帽类型
|
|
vgSetf (VG_STROKE_CAP_STYLE, VG_CAP_ROUND);
|
|
// 绘制黄色标线
|
|
vgDrawPath (back_line_path_1, VG_STROKE_PATH);
|
|
|
|
// 绘制红色标线
|
|
// SVG代码
|
|
// <path d="M713.5 316.5L653 266H67L3.5 319.5" stroke="#FF0000" stroke-width="7" stroke-linecap="round"/>
|
|
// 创建红色画笔
|
|
line_color[0] = 1.00f; // 红色
|
|
line_color[1] = 0.00f;
|
|
line_color[2] = 0.00f;
|
|
line_color[3] = 1.00f;
|
|
vgSetParameterfv (colorPaint, VG_PAINT_COLOR, 4, line_color);
|
|
// 标记画笔对象colorPaint用于下面的路径描边操作
|
|
vgSetPaint (colorPaint, VG_STROKE_PATH);
|
|
// 设置笔宽度
|
|
vgSetf (VG_STROKE_LINE_WIDTH, BACK_LINE_WIDTH);
|
|
// 设置笔帽类型
|
|
vgSetf (VG_STROKE_CAP_STYLE, VG_CAP_ROUND);
|
|
// 绘制红色标线
|
|
vgDrawPath (back_line_path_2, VG_STROKE_PATH);
|
|
|
|
|
|
// 绘制倒车轨迹
|
|
// leftBackLine001.svg
|
|
// <path d="M6.5 4C15 3.99996 41.6468 9.29998 43 30.4997C44.5 54 18 84 3 98.4997" stroke="#FFFF00" stroke-width="7"/>
|
|
line_color[0] = 1.00f; // 黄色
|
|
line_color[1] = 1.00f;
|
|
line_color[2] = 0.00f;
|
|
line_color[3] = 1.00f;
|
|
vgSetParameterfv (colorPaint, VG_PAINT_COLOR, 4, line_color);
|
|
// 标记画笔对象colorPaint用于下面的路径填充操作
|
|
vgSetPaint (colorPaint, VG_STROKE_PATH);
|
|
// 设置笔宽度
|
|
vgSetf (VG_STROKE_LINE_WIDTH, BACK_LINE_WIDTH);
|
|
// 设置笔帽类型
|
|
vgSetf (VG_STROKE_CAP_STYLE, VG_CAP_BUTT); // VG_CAP_BUTT为缺省类型
|
|
|
|
// 绘制左边的轨迹线
|
|
// 移至坐标原点至左轨迹SVG相对于VG背景的偏移位置
|
|
vgTranslate(LEFT_PATH_ORG_X, LEFT_PATH_ORG_Y);
|
|
const BACK_LINE *back_line_left = back_lines_left + path_line_index;
|
|
// 创建左轨迹路径
|
|
VGPath path_line_path_left = vgCreatePath (VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL);
|
|
if (path_line_path_left != VG_INVALID_HANDLE)
|
|
{
|
|
// 以下VG命令个数 - 1 "back_line_left->cb_command - 1"的作用是去除最后的 VG_CLOSE_PATH 命令. SVG2OPENVG.exe工具转换时自动在所有路径命令上补全 VG_CLOSE_PATH
|
|
vgAppendPathData (path_line_path_left, back_line_left->cb_command - 1, back_line_left->command, back_line_left->coordinate);
|
|
// 绘制左轨迹
|
|
vgDrawPath (path_line_path_left, VG_STROKE_PATH);
|
|
}
|
|
// 释放左轨迹路径资源
|
|
vgDestroyPath (path_line_path_left);
|
|
vgTranslate (-LEFT_PATH_ORG_X, -LEFT_PATH_ORG_Y);
|
|
|
|
// 绘制右边的轨迹线
|
|
// 移至坐标原点至右轨迹SVG相对于VG背景的偏移位置
|
|
vgTranslate (RIGHT_PATH_ORG_X, RIGHT_PATH_ORG_Y);
|
|
const BACK_LINE *back_line_right = back_lines_right + path_line_index;
|
|
// 创建右轨迹路径
|
|
VGPath path_line_path_right = vgCreatePath (VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL);
|
|
if (path_line_path_right != VG_INVALID_HANDLE)
|
|
{
|
|
// 以下VG命令个数 - 1 "back_line_right->cb_command - 1"的作用是去除最后的 VG_CLOSE_PATH 命令. SVG2OPENVG.exe工具转换时自动在所有路径命令上补全 VG_CLOSE_PATH
|
|
vgAppendPathData (path_line_path_right, back_line_right->cb_command - 1, back_line_right->command, back_line_right->coordinate);
|
|
vgDrawPath (path_line_path_right, VG_STROKE_PATH);
|
|
}
|
|
// 释放右轨迹路径资源
|
|
vgDestroyPath (path_line_path_right);
|
|
vgTranslate (-RIGHT_PATH_ORG_X, -RIGHT_PATH_ORG_Y);
|
|
|
|
// 设置无效句柄用于路径描边, 将colorPaint的引用次数减1
|
|
vgSetPaint (VG_INVALID_HANDLE, VG_STROKE_PATH);
|
|
// 释放colorPaint资源
|
|
vgDestroyPaint (colorPaint);
|
|
|
|
vgFinish();
|
|
}
|
|
|
|
int reversing_auxiliary_line_draw (int index)
|
|
{
|
|
vgSeti(VG_IMAGE_QUALITY, VG_IMAGE_QUALITY_BETTER);
|
|
vgSeti(VG_RENDERING_QUALITY, VG_RENDERING_QUALITY_BETTER);
|
|
do_paint_auxiliary_line(index);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int reversing_auxiliary_line_init (int width, int height)
|
|
{
|
|
vg_w = width;
|
|
vg_h = height;
|
|
|
|
(void)vg_w;
|
|
(void)vg_h;
|
|
|
|
// 创建红黄绿辅助线路径对象
|
|
// 以下VG命令个数 - 1 "sizeof(bg_path_0_commands) / sizeof(VGubyte) - 1"的作用是去除最后的 VG_CLOSE_PATH 命令. SVG2OPENVG.exe工具转换时自动在所有路径命令上补全 VG_CLOSE_PATH
|
|
back_line_path_0 = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL);
|
|
if(back_line_path_0 != VG_INVALID_HANDLE)
|
|
vgAppendPathData(back_line_path_0, sizeof(bg_path_0_commands) / sizeof(VGubyte) - 1, bg_path_0_commands, bg_path_0_coordinates);
|
|
|
|
back_line_path_1 = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL);
|
|
if (back_line_path_1 != VG_INVALID_HANDLE)
|
|
vgAppendPathData(back_line_path_1, sizeof(bg_path_1_commands) / sizeof(VGubyte) - 1, bg_path_1_commands, bg_path_1_coordinates);
|
|
|
|
back_line_path_2 = vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F, 1.0f, 0.0f, 0, 0, VG_PATH_CAPABILITY_ALL);
|
|
if (back_line_path_2 != VG_INVALID_HANDLE)
|
|
vgAppendPathData(back_line_path_2, sizeof(bg_path_2_commands) / sizeof(VGubyte) - 1, bg_path_2_commands, bg_path_2_coordinates);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int reversing_auxiliary_line_exit (void)
|
|
{
|
|
// 释放背景轨迹路径对象
|
|
if (back_line_path_0 != VG_INVALID_HANDLE)
|
|
{
|
|
vgDestroyPath(back_line_path_0);
|
|
back_line_path_0 = VG_INVALID_HANDLE;
|
|
}
|
|
if (back_line_path_1 != VG_INVALID_HANDLE)
|
|
{
|
|
vgDestroyPath(back_line_path_1);
|
|
back_line_path_1 = VG_INVALID_HANDLE;
|
|
}
|
|
if (back_line_path_2 != VG_INVALID_HANDLE)
|
|
{
|
|
vgDestroyPath(back_line_path_2);
|
|
back_line_path_2 = VG_INVALID_HANDLE;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
|