summaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2026-09-15 15:17:09 +0200
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2026-09-24 03:57:50 +0200
commitf5c48d325559d2c33e0d27074cc67fa79b3c2d87 (patch)
tree9edded8fa78a428b10c3784b02577e551823ebc6
parent0fd233ec8c49ecb2f2727d2ce193676ba038eca2 (diff)
debug svg wip
m---------external/vkvg-svg0
-rw-r--r--include/vkvg-svg.h34
-rw-r--r--src/nsvg/vkvg_nsvg.c2
-rw-r--r--tests/vkvg-svg/svg-viewer.c47
4 files changed, 38 insertions, 45 deletions
diff --git a/external/vkvg-svg b/external/vkvg-svg
-Subproject ed6f7983809488661c140dc0b52e2b9e2c7867e
+Subproject 38fcd079e2e681f19d371977f8a3cff2a24cf6b
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 <jp_bruyere@hotmail.com>
- *
- * 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 <jp_bruyere@hotmail.com>
+//
+// 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 <stdarg.h>
#include <ctype.h>
+#include <string.h>
+#include <math.h>
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);