+++ /dev/null
-#include "test.h"
-#include "vectors.h"
-#include "vkvg_context_internal.h"
-
-vkvg_fill_rule_t fillrule = VKVG_FILL_RULE_NON_ZERO;
-static VkSampleCountFlags samples = VK_SAMPLE_COUNT_8_BIT;
-float lineWidth = 3.0f;
-vkvg_line_join_t lineJoin = VKVG_LINE_JOIN_MITER;
-vkvg_line_cap_t lineCap = VKVG_LINE_CAP_BUTT;
-bool isClosed = false;
-bool startWithArc = false, endWithArc = false;
-float angle = 0;
-float r;
-vec2 mouse;
-
-void draw (){
- angle += 0.001f;
-
- VkvgContext ctx = vkvg_create(surf);
- vkvg_clear(ctx);
-
- float r = fabsf(test_width/2 - mouse.x)/zoom;
-
- vkvg_new_path(ctx);
- vkvg_set_source_rgba(ctx,1,0,0,1);
- vkvg_set_line_width (ctx,lineWidth/zoom);
-
- vkvg_translate(ctx, test_width/2, test_height/2);
- vkvg_scale(ctx, zoom, zoom);
- //vkvg_rotate (ctx, angle);
-
- vkvg_matrix_t mat;
- vkvg_get_matrix(ctx, &mat);
- float sx, sy;
- vkvg_matrix_get_scale(&mat, &sx, &sy);
-
- vkvg_arc (ctx,0,0,r, 0, M_PIF*2);
- vkvg_fill(ctx);
-
- float steps = _get_arc_step(ctx, r);
- vkvg_identity_matrix(ctx);
-
- vkvg_set_source_rgba(ctx,1,1,1,1);
- char txt[100];
- sprintf(txt, "scale: %f, %f", sx, sy);
- vkvg_move_to(ctx,10,10);
- vkvg_show_text(ctx,txt);
- sprintf(txt, "angle: %f", angle);
- vkvg_move_to(ctx,10,25);
- vkvg_show_text(ctx,txt);
- sprintf(txt, "radius: %f", r);
- vkvg_move_to(ctx,10,40);
- vkvg_show_text(ctx,txt);
- sprintf(txt, "zoom: %f", zoom);
- vkvg_move_to(ctx,10,55);
- vkvg_show_text(ctx,txt);
- sprintf(txt, "arc step: %f", steps);
- vkvg_move_to(ctx,10,70);
- vkvg_show_text(ctx,txt);
- sprintf(txt, "steps: %d", (int)roundf(2.0f*M_PI / steps));
- vkvg_move_to(ctx,10,85);
- vkvg_show_text(ctx,txt);
-
- vkvg_destroy(ctx);
-}
-static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {
- if (action != GLFW_PRESS)
- return;
- switch (key) {
- case GLFW_KEY_ESCAPE :
- glfwSetWindowShouldClose(window, GLFW_TRUE);
- break;
- case GLFW_KEY_KP_ADD :
- zoom *= 2.0f;
- break;
- case GLFW_KEY_KP_SUBTRACT :
- zoom *= 0.5f;
- break;
-#ifdef VKVG_WIRED_DEBUG
- case GLFW_KEY_F1:
- vkvg_wired_debug ^= (1U << 0);
- break;
- case GLFW_KEY_F2:
- vkvg_wired_debug ^= (1U << 1);
- break;
- case GLFW_KEY_F3:
- vkvg_wired_debug ^= (1U << 2);
- break;
-#endif
- }
-}
-static void mouse_move_callback(GLFWwindow* window, double x, double y){
- if (mouseDown) {
- mouse = (vec2) {x, y};
- }
-}
-static void scroll_callback(GLFWwindow* window, double x, double y){
- if (y<0.f)
- zoom *= 0.5f;
- else
- zoom *= 2.0f;
-}
-static void mouse_button_callback(GLFWwindow* window, int but, int state, int modif){
- if (but != GLFW_MOUSE_BUTTON_1)
- return;
- if (state == GLFW_TRUE)
- mouseDown = true;
- else
- mouseDown = false;
-}
-
-
-
-int main(int argc, char* argv[]) {
-
- _parse_args (argc, argv);
- VkEngine e;
- e = vkengine_create (VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PRESENT_MODE_FIFO_KHR, test_width, test_height);
-
- VkhPresenter r = e->renderer;
- vkengine_set_key_callback (e, key_callback);
- vkengine_set_mouse_but_callback(e, mouse_button_callback);
- vkengine_set_cursor_pos_callback(e, mouse_move_callback);
- vkengine_set_scroll_callback(e, scroll_callback);
-
- bool deferredResolve = false;
-
- device = vkvg_device_create_from_vk_multisample(vkh_app_get_inst(e->app), r->dev->phy, r->dev->dev, r->qFam, 0, samples, deferredResolve);
- surf = vkvg_surface_create(device, test_width, test_height);
-
- vkh_presenter_build_blit_cmd (r, vkvg_surface_get_vk_image(surf), test_width, test_height);
-
- mouse = (vec2){test_width*0.75,test_height*0.5f};
-
- while (!vkengine_should_close (e)) {
- glfwPollEvents();
-
- draw ();
-
- if (!vkh_presenter_draw (r)){
- vkh_presenter_get_size (r, &test_width, &test_height);
- vkvg_surface_destroy (surf);
- surf = vkvg_surface_create(device, test_width, test_height);
- vkh_presenter_build_blit_cmd (r, vkvg_surface_get_vk_image(surf), test_width, test_height);
- vkDeviceWaitIdle(r->dev->dev);
- continue;
- }
- }
- vkDeviceWaitIdle(e->dev->dev);
-
- vkvg_surface_destroy (surf);
-
- vkvg_device_destroy (device);
-
- vkengine_destroy (e);
-
- return 0;
-}
--- /dev/null
+#include "test.h"
+#include "vectors.h"
+#include "vkvg_context_internal.h"
+
+vkvg_fill_rule_t fillrule = VKVG_FILL_RULE_NON_ZERO;
+static VkSampleCountFlags samples = VK_SAMPLE_COUNT_8_BIT;
+float lineWidth = 3.0f;
+vkvg_line_join_t lineJoin = VKVG_LINE_JOIN_MITER;
+vkvg_line_cap_t lineCap = VKVG_LINE_CAP_BUTT;
+bool isClosed = false;
+bool startWithArc = false, endWithArc = false;
+float angle = 0;
+float r;
+vec2 mouse;
+
+void draw (){
+ angle += 0.001f;
+
+ VkvgContext ctx = vkvg_create(surf);
+ vkvg_clear(ctx);
+
+ float r = fabsf(test_width/2 - mouse.x)/zoom;
+
+ vkvg_new_path(ctx);
+ vkvg_set_source_rgba(ctx,1,0,0,1);
+ vkvg_set_line_width (ctx,lineWidth/zoom);
+
+ vkvg_translate(ctx, test_width/2, test_height/2);
+ vkvg_scale(ctx, zoom, zoom);
+ //vkvg_rotate (ctx, angle);
+
+ vkvg_matrix_t mat;
+ vkvg_get_matrix(ctx, &mat);
+ float sx, sy;
+ vkvg_matrix_get_scale(&mat, &sx, &sy);
+
+ vkvg_arc (ctx,0,0,r, 0, M_PIF*2);
+ vkvg_fill(ctx);
+
+ float steps = _get_arc_step(ctx, r);
+ vkvg_identity_matrix(ctx);
+
+ vkvg_set_source_rgba(ctx,1,1,1,1);
+ char txt[100];
+ sprintf(txt, "scale: %f, %f", sx, sy);
+ vkvg_move_to(ctx,10,10);
+ vkvg_show_text(ctx,txt);
+ sprintf(txt, "angle: %f", angle);
+ vkvg_move_to(ctx,10,25);
+ vkvg_show_text(ctx,txt);
+ sprintf(txt, "radius: %f", r);
+ vkvg_move_to(ctx,10,40);
+ vkvg_show_text(ctx,txt);
+ sprintf(txt, "zoom: %f", zoom);
+ vkvg_move_to(ctx,10,55);
+ vkvg_show_text(ctx,txt);
+ sprintf(txt, "arc step: %f", steps);
+ vkvg_move_to(ctx,10,70);
+ vkvg_show_text(ctx,txt);
+ sprintf(txt, "steps: %d", (int)roundf(2.0f*M_PI / steps));
+ vkvg_move_to(ctx,10,85);
+ vkvg_show_text(ctx,txt);
+
+ vkvg_destroy(ctx);
+}
+static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) {
+ if (action != GLFW_PRESS)
+ return;
+ switch (key) {
+ case GLFW_KEY_ESCAPE :
+ glfwSetWindowShouldClose(window, GLFW_TRUE);
+ break;
+ case GLFW_KEY_KP_ADD :
+ zoom *= 2.0f;
+ break;
+ case GLFW_KEY_KP_SUBTRACT :
+ zoom *= 0.5f;
+ break;
+#ifdef VKVG_WIRED_DEBUG
+ case GLFW_KEY_F1:
+ vkvg_wired_debug ^= (1U << 0);
+ break;
+ case GLFW_KEY_F2:
+ vkvg_wired_debug ^= (1U << 1);
+ break;
+ case GLFW_KEY_F3:
+ vkvg_wired_debug ^= (1U << 2);
+ break;
+#endif
+ }
+}
+static void mouse_move_callback(GLFWwindow* window, double x, double y){
+ if (mouseDown) {
+ mouse = (vec2) {x, y};
+ }
+}
+static void scroll_callback(GLFWwindow* window, double x, double y){
+ if (y<0.f)
+ zoom *= 0.5f;
+ else
+ zoom *= 2.0f;
+}
+static void mouse_button_callback(GLFWwindow* window, int but, int state, int modif){
+ if (but != GLFW_MOUSE_BUTTON_1)
+ return;
+ if (state == GLFW_TRUE)
+ mouseDown = true;
+ else
+ mouseDown = false;
+}
+
+
+
+int main(int argc, char* argv[]) {
+
+ _parse_args (argc, argv);
+ VkEngine e;
+ e = vkengine_create (VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PRESENT_MODE_FIFO_KHR, test_width, test_height);
+
+ VkhPresenter r = e->renderer;
+ vkengine_set_key_callback (e, key_callback);
+ vkengine_set_mouse_but_callback(e, mouse_button_callback);
+ vkengine_set_cursor_pos_callback(e, mouse_move_callback);
+ vkengine_set_scroll_callback(e, scroll_callback);
+
+ bool deferredResolve = false;
+
+ device = vkvg_device_create_from_vk_multisample(vkh_app_get_inst(e->app), r->dev->phy, r->dev->dev, r->qFam, 0, samples, deferredResolve);
+ surf = vkvg_surface_create(device, test_width, test_height);
+
+ vkh_presenter_build_blit_cmd (r, vkvg_surface_get_vk_image(surf), test_width, test_height);
+
+ mouse = (vec2){test_width*0.75,test_height*0.5f};
+
+ while (!vkengine_should_close (e)) {
+ glfwPollEvents();
+
+ draw ();
+
+ if (!vkh_presenter_draw (r)){
+ vkh_presenter_get_size (r, &test_width, &test_height);
+ vkvg_surface_destroy (surf);
+ surf = vkvg_surface_create(device, test_width, test_height);
+ vkh_presenter_build_blit_cmd (r, vkvg_surface_get_vk_image(surf), test_width, test_height);
+ vkDeviceWaitIdle(r->dev->dev);
+ continue;
+ }
+ }
+ vkDeviceWaitIdle(e->dev->dev);
+
+ vkvg_surface_destroy (surf);
+
+ vkvg_device_destroy (device);
+
+ vkengine_destroy (e);
+
+ return 0;
+}