From f5c48d325559d2c33e0d27074cc67fa79b3c2d87 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Bruyère Date: Tue, 15 Sep 2026 15:17:09 +0200 Subject: debug svg wip --- external/vkvg-svg | 2 +- include/vkvg-svg.h | 34 ++++++++------------------------ src/nsvg/vkvg_nsvg.c | 2 ++ tests/vkvg-svg/svg-viewer.c | 47 +++++++++++++++++++++++++++------------------ 4 files changed, 39 insertions(+), 46 deletions(-) diff --git a/external/vkvg-svg b/external/vkvg-svg index ed6f798..38fcd07 160000 --- a/external/vkvg-svg +++ b/external/vkvg-svg @@ -1 +1 @@ -Subproject commit ed6f7983809488661c140dc0b52e2b9e2c7867e0 +Subproject commit 38fcd079e2e681f19d371977f8a3cff2a24cf6b2 diff --git a/include/vkvg-svg.h b/include/vkvg-svg.h index 878134c..fd4d348 100644 --- a/include/vkvg-svg.h +++ b/include/vkvg-svg.h @@ -1,36 +1,18 @@ -/* - * Copyright (c) 2018-2022 Jean-Philippe Bruyère - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the - * Software, and to permit persons to whom the Software is furnished to do so, subject - * to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ +// Copyright (c) 2018-2026 Jean-Philippe Bruyère +// +// This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) + #ifndef VKVG_SVG_H #define VKVG_SVG_H +#include "vkvg.h" + #ifdef __cplusplus extern "C" { #endif -#ifdef VKVG_SVG -typedef struct _vkvg_svg_t* VkvgSvg; -#else -typedef struct NSVGimage* VkvgSvg; -#endif +typedef struct _svg_placeholder* VkvgSvg; + /** * @brief load svg file into @ref surface * diff --git a/src/nsvg/vkvg_nsvg.c b/src/nsvg/vkvg_nsvg.c index f3518eb..58b116f 100644 --- a/src/nsvg/vkvg_nsvg.c +++ b/src/nsvg/vkvg_nsvg.c @@ -23,6 +23,8 @@ #include "vkvg_device_internal.h" #include "vkvg_context_internal.h" +#define _svg_placeholder NSVGimage + #define NANOSVG_IMPLEMENTATION // Expands implementation #include "nanosvg.h" #include "vkvg-svg.h" diff --git a/tests/vkvg-svg/svg-viewer.c b/tests/vkvg-svg/svg-viewer.c index 455cb5a..48a27b7 100644 --- a/tests/vkvg-svg/svg-viewer.c +++ b/tests/vkvg-svg/svg-viewer.c @@ -12,6 +12,8 @@ #include #include +#include +#include static VkvgDevice dev; static VkvgSurface svgSurf = NULL; @@ -270,25 +272,31 @@ int main(int argc, char* argv[]) { if (!filename && !directory) print_help_and_exit(); - VkEngine e = vkengine_create(VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PRESENT_MODE_FIFO_KHR, width, height); - vkengine_set_key_callback(e, key_callback); - vkengine_set_scroll_callback(e, scroll_callback); - vkvg_device_create_info_t info = {samples, - false, - vkh_app_get_inst(e->app), - vkengine_get_physical_device(e), - vkengine_get_device(e), - vkengine_get_queue_fam_idx(e), - 0}; - dev = vkvg_device_create(&info); + //vkh_log_level = VKVG_LOG_INFO; VkvgSurface surf = NULL; if (output) { + vkvg_device_create_info_t info = {0}; + dev = vkvg_device_create(&info); surf = vkvg_surface_create_from_svg(dev, width, height, filename); vkvg_surface_write_to_png(surf, output); + if (svgSurf) + vkvg_surface_destroy(svgSurf); + vkvg_surface_destroy(surf); + vkvg_device_destroy(dev); } else { - + VkEngine e = vkengine_create(VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PRESENT_MODE_FIFO_KHR, width, height); + vkengine_set_key_callback(e, key_callback); + vkengine_set_scroll_callback(e, scroll_callback); + vkvg_device_create_info_t info = {samples, + false, + vkh_app_get_inst(e->app), + vkengine_get_physical_device(e), + vkengine_get_device(e), + vkengine_get_queue_fam_idx(e), + 0}; + dev = vkvg_device_create(&info); surf = vkvg_surface_create(dev, width, height); vkh_presenter_build_blit_cmd(e->renderer, vkvg_surface_get_vk_image(surf), width, height); @@ -316,9 +324,9 @@ int main(int argc, char* argv[]) { } while (!vkengine_should_close(e)) { - // vkvg_log_level = VKVG_LOG_INFO_CMD; + //vkh_log_level = VKVG_LOG_INFO | VKVG_LOG_DEBUG | VKVG_LOG_ERR; readSVG(e); - // vkvg_log_level = VKVG_LOG_ERR; + //vkh_log_level = VKVG_LOG_ERR; VkvgContext ctx = vkvg_create(surf); vkvg_set_source_rgb(ctx, 0.1, 0.1, 0.1); @@ -352,13 +360,14 @@ int main(int argc, char* argv[]) { } vkengine_wait_idle(e); + + if (svgSurf) + vkvg_surface_destroy(svgSurf); + vkvg_surface_destroy(surf); + vkvg_device_destroy(dev); + vkengine_destroy(e); } - if (svgSurf) - vkvg_surface_destroy(svgSurf); - vkvg_surface_destroy(surf); - vkvg_device_destroy(dev); - vkengine_destroy(e); if (pCurrentDir) closedir(pCurrentDir); -- cgit v1.3.1-4-g156e