23 #if defined(VG_FEATURE_PATH) && defined(VG_FEATURE_PATH_SINGLE_ARRAY) && \
24 (VG_FEATURE_PATH == VG_FEATURE_PATH_SINGLE_ARRAY)
33 #include <LLVG_PATH_impl.h>
50 static int32_t _extend_path(
VG_PATH_HEADER_t *path, jint length, jint cmd, uint32_t nb_fields) {
55 if (length >= (index + extra_size)) {
69 static int32_t _close_path(
VG_PATH_HEADER_t *path, jint length, jfloat x1, jfloat y1, jfloat x2, jfloat y2) {
70 int32_t index = _extend_path(path, length, LLVG_PATH_CMD_CLOSE, 0);
71 int32_t ret = LLVG_SUCCESS;
103 return (nbParams + (uint32_t)1 ) *
sizeof(uint32_t);
108 uint32_t *data = (uint32_t *)(path + offset);
110 return sizeof(uint32_t);
115 uint32_t *data = (uint32_t *)(path + offset);
118 *data = JFLOAT_TO_UINT32_t(x);
120 *data = JFLOAT_TO_UINT32_t(y);
121 return (uint32_t)3 *
sizeof(uint32_t);
126 jfloat x2, jfloat y2) {
127 uint32_t *data = (uint32_t *)(path + offset);
130 *data = JFLOAT_TO_UINT32_t(x1);
132 *data = JFLOAT_TO_UINT32_t(y1);
134 *data = JFLOAT_TO_UINT32_t(x2);
136 *data = JFLOAT_TO_UINT32_t(y2);
137 return (uint32_t)5 *
sizeof(uint32_t);
142 jfloat x2, jfloat y2, jfloat x3, jfloat y3) {
143 uint32_t *data = (uint32_t *)(path + offset);
146 *data = JFLOAT_TO_UINT32_t(x1);
148 *data = JFLOAT_TO_UINT32_t(y1);
150 *data = JFLOAT_TO_UINT32_t(x2);
152 *data = JFLOAT_TO_UINT32_t(y2);
154 *data = JFLOAT_TO_UINT32_t(x3);
156 *data = JFLOAT_TO_UINT32_t(y3);
157 return (uint32_t)7 *
sizeof(uint32_t);
165 jint LLVG_PATH_IMPL_initializePath(jbyte *jpath, jint length) {
168 jint ret = LLVG_SUCCESS;
170 if (length >= header_size) {
182 jint LLVG_PATH_IMPL_appendPathCommand1(jbyte *jpath, jint length, jint cmd, jfloat x, jfloat y) {
184 jint ret = LLVG_SUCCESS;
186 int32_t index = _extend_path(path, length, cmd, 2);
198 jint LLVG_PATH_IMPL_appendPathCommand2(jbyte *jpath, jint length, jint cmd, jfloat x1, jfloat y1, jfloat x2,
201 jint ret = LLVG_SUCCESS;
203 if (LLVG_PATH_CMD_CLOSE == cmd) {
205 ret = _close_path(path, length, x1, y1, x2, y2);
207 int32_t index = _extend_path(path, length, cmd, 4);
220 jint LLVG_PATH_IMPL_appendPathCommand3(jbyte *jpath, jint length, jint cmd, jfloat x1, jfloat y1, jfloat x2, jfloat y2,
221 jfloat x3, jfloat y3) {
223 jint ret = LLVG_SUCCESS;
225 int32_t index = _extend_path(path, length, cmd, 6);
237 void LLVG_PATH_IMPL_reopenPath(jbyte *jpath) {
Map a jbyte array that represents a path.
MicroEJ MicroVG library low level API: enable some features according to the hardware capacities.
MicroEJ MicroVG library low level API: helper to implement library natives methods.
MicroEJ MicroVG library low level API: implementation of Path.
uint32_t VG_PATH_append_path_command1(jbyte *path, jint array_length, jint cmd, jfloat x, jfloat y)
Appends the command with 1 point parameter in the path's array.
void VG_PATH_initialize(void)
Initializes the path builder.
uint32_t VG_PATH_append_path_command0(jbyte *path, jint array_length, jint cmd)
Appends the command with zero parameter in the path's array.
uint32_t VG_PATH_append_path_command3(jbyte *path, jint array_length, jint cmd, jfloat x1, jfloat y1, jfloat x2, jfloat y2, jfloat x3, jfloat y3)
Appends the command with 3 points parameter in the path's array.
uint32_t VG_PATH_convert_path_command(jint command)
Converts the command in destination format.
uint32_t VG_PATH_append_path_command2(jbyte *path, jint array_length, jint cmd, jfloat x1, jfloat y1, jfloat x2, jfloat y2)
Appends the command with 2 points parameter in the path's array.
struct MICROVG_PATH_HEADER VG_PATH_HEADER_t
Map a jbyte array that represents a path.
uint32_t VG_PATH_get_path_command_size(jint command, uint32_t nbParams)
Gets the size to add in the path array to encode the command and its parameters.
uint32_t VG_PATH_get_path_header_size(void)
Gets the path's array header size.
uint8_t VG_PATH_get_path_encoder_format(void)
Gets the path's array format used to encode the commands and parameters. This format is stored into t...