diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2024-10-27 20:03:31 +0000 |
|---|---|---|
| committer | j-p <jp_bruyere@hotmail.com> | 2025-03-24 19:12:00 +0100 |
| commit | 15ecf40ff47bfbdedddd3161b7d6d9d1418e64bb (patch) | |
| tree | 49001433bd5b102118593642bf1a749494e7ea54 /src/vkvg_pattern.c | |
| parent | 7b2f17b8d8f3763d974c52bfbe9a429779aa6f7b (diff) | |
clang format
Diffstat (limited to 'src/vkvg_pattern.c')
| -rw-r--r-- | src/vkvg_pattern.c | 339 |
1 files changed, 167 insertions, 172 deletions
diff --git a/src/vkvg_pattern.c b/src/vkvg_pattern.c index acefab6..2aad091 100644 --- a/src/vkvg_pattern.c +++ b/src/vkvg_pattern.c @@ -25,225 +25,220 @@ #include "vkvg_device_internal.h" #include "vkvg_pattern.h" -VkvgPattern vkvg_pattern_create_for_surface (VkvgSurface surf){ - VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t)); - if (!pat) - return (VkvgPattern)&_no_mem_status; +VkvgPattern vkvg_pattern_create_for_surface(VkvgSurface surf) { + VkvgPattern pat = (vkvg_pattern_t *)calloc(1, sizeof(vkvg_pattern_t)); + if (!pat) + return (VkvgPattern)&_no_mem_status; - pat->type = VKVG_PATTERN_TYPE_SURFACE; - pat->extend = VKVG_EXTEND_NONE; - pat->data = surf; - pat->references = 1; + pat->type = VKVG_PATTERN_TYPE_SURFACE; + pat->extend = VKVG_EXTEND_NONE; + pat->data = surf; + pat->references = 1; - vkvg_surface_reference (surf); - if (surf->status) - pat->status = surf->status; + vkvg_surface_reference(surf); + if (surf->status) + pat->status = surf->status; - return pat; + return pat; } -vkvg_status_t vkvg_pattern_get_linear_points (VkvgPattern pat, float* x0, float* y0, float* x1, float* y1) { - if (pat->status) - return pat->status; - if (pat->type != VKVG_PATTERN_TYPE_LINEAR) - return VKVG_STATUS_PATTERN_TYPE_MISMATCH; +vkvg_status_t vkvg_pattern_get_linear_points(VkvgPattern pat, float *x0, float *y0, float *x1, float *y1) { + if (pat->status) + return pat->status; + if (pat->type != VKVG_PATTERN_TYPE_LINEAR) + return VKVG_STATUS_PATTERN_TYPE_MISMATCH; - vkvg_gradient_t* grad = (vkvg_gradient_t*)pat->data; + vkvg_gradient_t *grad = (vkvg_gradient_t *)pat->data; - *x0 = grad->cp[0].x; - *y0 = grad->cp[0].y; - *x1 = grad->cp[0].z; - *y1 = grad->cp[0].w; - return VKVG_STATUS_SUCCESS; + *x0 = grad->cp[0].x; + *y0 = grad->cp[0].y; + *x1 = grad->cp[0].z; + *y1 = grad->cp[0].w; + return VKVG_STATUS_SUCCESS; } -vkvg_status_t vkvg_pattern_edit_linear (VkvgPattern pat, float x0, float y0, float x1, float y1){ - if (pat->status) - return pat->status; - if (pat->type != VKVG_PATTERN_TYPE_LINEAR) - return VKVG_STATUS_PATTERN_TYPE_MISMATCH; +vkvg_status_t vkvg_pattern_edit_linear(VkvgPattern pat, float x0, float y0, float x1, float y1) { + if (pat->status) + return pat->status; + if (pat->type != VKVG_PATTERN_TYPE_LINEAR) + return VKVG_STATUS_PATTERN_TYPE_MISMATCH; - vkvg_gradient_t* grad = (vkvg_gradient_t*)pat->data; + vkvg_gradient_t *grad = (vkvg_gradient_t *)pat->data; - grad->cp[0] = (vec4){{x0}, {y0}, {x1}, {y1}}; - return VKVG_STATUS_SUCCESS; + grad->cp[0] = (vec4){{x0}, {y0}, {x1}, {y1}}; + return VKVG_STATUS_SUCCESS; } -VkvgPattern vkvg_pattern_create_linear (float x0, float y0, float x1, float y1){ - VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t)); - if (!pat) - return (VkvgPattern)&_no_mem_status; - pat->type = VKVG_PATTERN_TYPE_LINEAR; - pat->extend = VKVG_EXTEND_NONE; +VkvgPattern vkvg_pattern_create_linear(float x0, float y0, float x1, float y1) { + VkvgPattern pat = (vkvg_pattern_t *)calloc(1, sizeof(vkvg_pattern_t)); + if (!pat) + return (VkvgPattern)&_no_mem_status; + pat->type = VKVG_PATTERN_TYPE_LINEAR; + pat->extend = VKVG_EXTEND_NONE; - pat->data = (void*)calloc(1,sizeof(vkvg_gradient_t)); + pat->data = (void *)calloc(1, sizeof(vkvg_gradient_t)); - if (pat->data) { - vkvg_pattern_edit_linear(pat, x0, y0, x1, y1); - pat->references = 1; - } else - pat->status = VKVG_STATUS_NO_MEMORY; + if (pat->data) { + vkvg_pattern_edit_linear(pat, x0, y0, x1, y1); + pat->references = 1; + } else + pat->status = VKVG_STATUS_NO_MEMORY; - return pat; + return pat; } -vkvg_status_t vkvg_pattern_edit_radial (VkvgPattern pat, - float cx0, float cy0, float radius0, - float cx1, float cy1, float radius1) { - if (pat->status) - return pat->status; - if (pat->type != VKVG_PATTERN_TYPE_RADIAL) - return VKVG_STATUS_PATTERN_TYPE_MISMATCH; +vkvg_status_t vkvg_pattern_edit_radial(VkvgPattern pat, float cx0, float cy0, float radius0, float cx1, float cy1, + float radius1) { + if (pat->status) + return pat->status; + if (pat->type != VKVG_PATTERN_TYPE_RADIAL) + return VKVG_STATUS_PATTERN_TYPE_MISMATCH; - vkvg_gradient_t* grad = (vkvg_gradient_t*)pat->data; + vkvg_gradient_t *grad = (vkvg_gradient_t *)pat->data; - vec2 c0 = {cx0, cy0}; - vec2 c1 = {cx1, cy1}; + vec2 c0 = {cx0, cy0}; + vec2 c1 = {cx1, cy1}; - if (radius0 > radius1 - 1.0f) - radius0 = radius1 - 1.0f; - vec2 u = vec2_sub (c0, c1); - float l = vec2_length(u); - if (l + radius0 + 1.0f >= radius1) { - vec2 v = vec2_div_s(u, l); - c0 = vec2_add(c1, vec2_mult_s (v, radius1 - radius0 - 1.0f)); - } + if (radius0 > radius1 - 1.0f) + radius0 = radius1 - 1.0f; + vec2 u = vec2_sub(c0, c1); + float l = vec2_length(u); + if (l + radius0 + 1.0f >= radius1) { + vec2 v = vec2_div_s(u, l); + c0 = vec2_add(c1, vec2_mult_s(v, radius1 - radius0 - 1.0f)); + } - grad->cp[0] = (vec4){{c0.x}, {c0.y},{radius0},{0}}; - grad->cp[1] = (vec4){{c1.x}, {c1.y},{radius1},{0}}; - return VKVG_STATUS_SUCCESS; + grad->cp[0] = (vec4){{c0.x}, {c0.y}, {radius0}, {0}}; + grad->cp[1] = (vec4){{c1.x}, {c1.y}, {radius1}, {0}}; + return VKVG_STATUS_SUCCESS; } -VkvgPattern vkvg_pattern_create_radial (float cx0, float cy0, float radius0, - float cx1, float cy1, float radius1){ - VkvgPattern pat = (vkvg_pattern_t*)calloc(1, sizeof(vkvg_pattern_t)); - if (!pat) - return (VkvgPattern)&_no_mem_status; - pat->type = VKVG_PATTERN_TYPE_RADIAL; - pat->extend = VKVG_EXTEND_NONE; +VkvgPattern vkvg_pattern_create_radial(float cx0, float cy0, float radius0, float cx1, float cy1, float radius1) { + VkvgPattern pat = (vkvg_pattern_t *)calloc(1, sizeof(vkvg_pattern_t)); + if (!pat) + return (VkvgPattern)&_no_mem_status; + pat->type = VKVG_PATTERN_TYPE_RADIAL; + pat->extend = VKVG_EXTEND_NONE; - pat->data = (void*)calloc(1,sizeof(vkvg_gradient_t)); + pat->data = (void *)calloc(1, sizeof(vkvg_gradient_t)); - if (pat->data) { - vkvg_pattern_edit_radial (pat, cx0, cy0, radius0, cx1, cy1, radius1); - pat->references = 1; - } else - pat->status = VKVG_STATUS_NO_MEMORY; + if (pat->data) { + vkvg_pattern_edit_radial(pat, cx0, cy0, radius0, cx1, cy1, radius1); + pat->references = 1; + } else + pat->status = VKVG_STATUS_NO_MEMORY; - return pat; + return pat; } -VkvgPattern vkvg_pattern_reference (VkvgPattern pat) { - if (!pat->status) - pat->references++; - return pat; +VkvgPattern vkvg_pattern_reference(VkvgPattern pat) { + if (!pat->status) + pat->references++; + return pat; } -uint32_t vkvg_pattern_get_reference_count (VkvgPattern pat) { - if (pat->status) - return 0; - return pat->references; +uint32_t vkvg_pattern_get_reference_count(VkvgPattern pat) { + if (pat->status) + return 0; + return pat->references; } -vkvg_status_t vkvg_pattern_add_color_stop (VkvgPattern pat, float offset, float r, float g, float b, float a) { - if (pat->status) - return pat->status; - if (pat->type == VKVG_PATTERN_TYPE_SURFACE || pat->type == VKVG_PATTERN_TYPE_SOLID) - return VKVG_STATUS_PATTERN_TYPE_MISMATCH; +vkvg_status_t vkvg_pattern_add_color_stop(VkvgPattern pat, float offset, float r, float g, float b, float a) { + if (pat->status) + return pat->status; + if (pat->type == VKVG_PATTERN_TYPE_SURFACE || pat->type == VKVG_PATTERN_TYPE_SOLID) + return VKVG_STATUS_PATTERN_TYPE_MISMATCH; - vkvg_gradient_t* grad = (vkvg_gradient_t*)pat->data; + vkvg_gradient_t *grad = (vkvg_gradient_t *)pat->data; #ifdef VKVG_PREMULT_ALPHA - vkvg_color_t c = {a*r,a*g,a*b,a}; + vkvg_color_t c = {a * r, a * g, a * b, a}; #else - vkvg_color_t c = {r,g,b,a}; + vkvg_color_t c = {r, g, b, a}; #endif - grad->colors[grad->count] = c; + grad->colors[grad->count] = c; #ifdef VKVG_ENABLE_VK_SCALAR_BLOCK_LAYOUT - grad->stops[grad->count] = offset; + grad->stops[grad->count] = offset; #else - grad->stops[grad->count].r = offset; + grad->stops[grad->count].r = offset; #endif - grad->count++; + grad->count++; } -void vkvg_pattern_set_extend (VkvgPattern pat, vkvg_extend_t extend){ - if (pat->status) - return; - pat->extend = extend; +void vkvg_pattern_set_extend(VkvgPattern pat, vkvg_extend_t extend) { + if (pat->status) + return; + pat->extend = extend; } -void vkvg_pattern_set_filter (VkvgPattern pat, vkvg_filter_t filter){ - if (pat->status) - return; - pat->filter = filter; +void vkvg_pattern_set_filter(VkvgPattern pat, vkvg_filter_t filter) { + if (pat->status) + return; + pat->filter = filter; } -vkvg_extend_t vkvg_pattern_get_extend (VkvgPattern pat){ - if (pat->status) - return (vkvg_extend_t)0; - return pat->extend; +vkvg_extend_t vkvg_pattern_get_extend(VkvgPattern pat) { + if (pat->status) + return (vkvg_extend_t)0; + return pat->extend; } -vkvg_filter_t vkvg_pattern_get_filter (VkvgPattern pat){ - if (pat->status) - return (vkvg_filter_t)0; - return pat->filter; +vkvg_filter_t vkvg_pattern_get_filter(VkvgPattern pat) { + if (pat->status) + return (vkvg_filter_t)0; + return pat->filter; } -vkvg_pattern_type_t vkvg_pattern_get_type (VkvgPattern pat){ - if (pat->status) - return (vkvg_pattern_type_t)0; - return pat->type; +vkvg_pattern_type_t vkvg_pattern_get_type(VkvgPattern pat) { + if (pat->status) + return (vkvg_pattern_type_t)0; + return pat->type; } -vkvg_status_t vkvg_pattern_get_color_stop_count (VkvgPattern pat, uint32_t* count) { - if (pat->status) - return pat->status; - if (pat->type == VKVG_PATTERN_TYPE_SURFACE || pat->type == VKVG_PATTERN_TYPE_SOLID) - return VKVG_STATUS_PATTERN_TYPE_MISMATCH; - vkvg_gradient_t* grad = (vkvg_gradient_t*)pat->data; - *count = grad->count; - return VKVG_STATUS_SUCCESS; +vkvg_status_t vkvg_pattern_get_color_stop_count(VkvgPattern pat, uint32_t *count) { + if (pat->status) + return pat->status; + if (pat->type == VKVG_PATTERN_TYPE_SURFACE || pat->type == VKVG_PATTERN_TYPE_SOLID) + return VKVG_STATUS_PATTERN_TYPE_MISMATCH; + vkvg_gradient_t *grad = (vkvg_gradient_t *)pat->data; + *count = grad->count; + return VKVG_STATUS_SUCCESS; } -vkvg_status_t vkvg_pattern_get_color_stop_rgba (VkvgPattern pat, uint32_t index, - float* offset, float* r, float* g, float* b, float* a) { - if (pat->status) - return pat->status; - if (pat->type == VKVG_PATTERN_TYPE_SURFACE || pat->type == VKVG_PATTERN_TYPE_SOLID) - return VKVG_STATUS_PATTERN_TYPE_MISMATCH; - vkvg_gradient_t* grad = (vkvg_gradient_t*)pat->data; - if (index >= grad->count) - return VKVG_STATUS_INVALID_INDEX; +vkvg_status_t vkvg_pattern_get_color_stop_rgba(VkvgPattern pat, uint32_t index, float *offset, float *r, float *g, + float *b, float *a) { + if (pat->status) + return pat->status; + if (pat->type == VKVG_PATTERN_TYPE_SURFACE || pat->type == VKVG_PATTERN_TYPE_SOLID) + return VKVG_STATUS_PATTERN_TYPE_MISMATCH; + vkvg_gradient_t *grad = (vkvg_gradient_t *)pat->data; + if (index >= grad->count) + return VKVG_STATUS_INVALID_INDEX; #ifdef VKVG_ENABLE_VK_SCALAR_BLOCK_LAYOUT - *offset = grad->stops[index]; + *offset = grad->stops[index]; #else - *offset = grad->stops[index].r; + *offset = grad->stops[index].r; #endif - vkvg_color_t c = grad->colors[index]; - *r = c.r; - *g = c.g; - *b = c.b; - *a = c.a; - return VKVG_STATUS_SUCCESS; + vkvg_color_t c = grad->colors[index]; + *r = c.r; + *g = c.g; + *b = c.b; + *a = c.a; + return VKVG_STATUS_SUCCESS; } -void vkvg_pattern_set_matrix (VkvgPattern pat, const vkvg_matrix_t* matrix) { - if (pat->status) - return; - pat->matrix = *matrix; - pat->hasMatrix = true; +void vkvg_pattern_set_matrix(VkvgPattern pat, const vkvg_matrix_t *matrix) { + if (pat->status) + return; + pat->matrix = *matrix; + pat->hasMatrix = true; } -void vkvg_pattern_get_matrix (VkvgPattern pat, vkvg_matrix_t* matrix) { - if (pat->status) - return; - if (pat->hasMatrix) - *matrix = pat->matrix; - else - *matrix = VKVG_IDENTITY_MATRIX; -} -vkvg_status_t vkvg_pattern_status (VkvgPattern pat) { - return pat->status; +void vkvg_pattern_get_matrix(VkvgPattern pat, vkvg_matrix_t *matrix) { + if (pat->status) + return; + if (pat->hasMatrix) + *matrix = pat->matrix; + else + *matrix = VKVG_IDENTITY_MATRIX; } +vkvg_status_t vkvg_pattern_status(VkvgPattern pat) { return pat->status; } -void vkvg_pattern_destroy(VkvgPattern pat) -{ - if (pat->status) - return; - pat->references--; - if (pat->references > 0) - return; +void vkvg_pattern_destroy(VkvgPattern pat) { + if (pat->status) + return; + pat->references--; + if (pat->references > 0) + return; - if (pat->type == VKVG_PATTERN_TYPE_SURFACE) { - VkvgSurface surf = (VkvgSurface)pat->data; - vkvg_surface_destroy (surf); - }else - free (pat->data); + if (pat->type == VKVG_PATTERN_TYPE_SURFACE) { + VkvgSurface surf = (VkvgSurface)pat->data; + vkvg_surface_destroy(surf); + } else + free(pat->data); - free(pat); + free(pat); } |