From b2ed006db6dc46c57b163f572391ac74a94f4a4f Mon Sep 17 00:00:00 2001 From: hgn Date: Sun, 19 Dec 2021 14:26:42 +0000 Subject: [PATCH] . --- fishladder.c | 1 + fishladder_resources.h | 105 ++++++++++++++++++++++++++++++++++++++++- textures/ubuntu.png | Bin 0 -> 50561 bytes vg/vg.h | 12 ++++- vg/vg_ui.h | 16 ++++++- vg/vg_vector.h | 9 ++++ 6 files changed, 139 insertions(+), 4 deletions(-) create mode 100644 textures/ubuntu.png create mode 100644 vg/vg_vector.h diff --git a/fishladder.c b/fishladder.c index 8b64ffc..7520c2c 100644 --- a/fishladder.c +++ b/fishladder.c @@ -1,5 +1,6 @@ // Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved +//#define VG_CAPTURE_MODE #define VG_STEAM #define VG_STEAM_APPID 1218140U #include "vg/vg.h" diff --git a/fishladder_resources.h b/fishladder_resources.h index 98abd62..9b787d5 100644 --- a/fishladder_resources.h +++ b/fishladder_resources.h @@ -1,3 +1,106 @@ +// FONTS +vg_tex2d tex_ubuntu = { .path = "textures/ubuntu.qoi" }; + +static Character characters_Ubuntu[] = { + {983, 90, 18, 18, 9, 9, 7}, + {55, 90, 23, 40, 7, 31, 9}, + {794, 90, 27, 26, 7, 33, 13}, + {356, 49, 36, 40, 7, 31, 21}, + {307, 0, 32, 46, 7, 34, 18}, + {564, 0, 42, 41, 7, 31, 27}, + {646, 0, 38, 41, 8, 31, 21}, + {821, 90, 21, 26, 7, 33, 7}, + {118, 0, 26, 49, 6, 34, 10}, + {144, 0, 26, 49, 9, 34, 10}, + {674, 90, 31, 31, 8, 31, 15}, + {511, 90, 33, 34, 7, 26, 18}, + {771, 90, 23, 27, 8, 12, 8}, + {957, 90, 26, 21, 8, 20, 9}, + {900, 90, 23, 22, 7, 13, 8}, + {0, 0, 32, 49, 10, 34, 12}, + {791, 0, 33, 41, 7, 32, 18}, + {28, 90, 27, 40, 6, 31, 18}, + {956, 0, 32, 41, 7, 32, 18}, + {988, 0, 32, 41, 7, 32, 18}, + {604, 49, 34, 40, 8, 31, 18}, + {0, 49, 32, 41, 7, 31, 18}, + {872, 49, 32, 40, 7, 31, 18}, + {740, 49, 33, 40, 7, 31, 18}, + {824, 0, 33, 41, 7, 31, 18}, + {773, 49, 33, 40, 7, 31, 18}, + {446, 90, 23, 35, 7, 25, 8}, + {78, 90, 23, 40, 8, 26, 8}, + {608, 90, 33, 33, 7, 26, 18}, + {738, 90, 33, 27, 7, 23, 18}, + {641, 90, 33, 33, 7, 26, 18}, + {64, 49, 30, 41, 8, 31, 13}, + {339, 0, 44, 45, 7, 31, 30}, + {204, 49, 39, 40, 9, 31, 21}, + {638, 49, 34, 40, 6, 31, 20}, + {684, 0, 36, 41, 7, 31, 20}, + {392, 49, 36, 40, 6, 31, 23}, + {806, 49, 33, 40, 6, 31, 18}, + {904, 49, 32, 40, 6, 31, 17}, + {720, 0, 36, 41, 7, 31, 21}, + {464, 49, 35, 40, 6, 31, 22}, + {101, 90, 21, 40, 6, 31, 8}, + {968, 49, 31, 40, 9, 31, 16}, + {499, 49, 35, 40, 6, 31, 20}, + {936, 49, 32, 40, 6, 31, 16}, + {162, 49, 42, 40, 7, 31, 28}, + {428, 49, 36, 40, 6, 31, 23}, + {606, 0, 40, 41, 7, 31, 25}, + {672, 49, 34, 40, 6, 31, 19}, + {267, 0, 40, 46, 7, 31, 25}, + {756, 0, 35, 41, 6, 31, 20}, + {857, 0, 33, 41, 8, 32, 17}, + {534, 49, 35, 40, 8, 31, 18}, + {569, 49, 35, 40, 6, 31, 22}, + {243, 49, 39, 40, 9, 31, 21}, + {116, 49, 46, 40, 8, 31, 29}, + {282, 49, 37, 40, 8, 31, 20}, + {319, 49, 37, 40, 9, 31, 19}, + {706, 49, 34, 40, 8, 31, 18}, + {170, 0, 25, 49, 6, 34, 10}, + {32, 0, 32, 49, 10, 34, 12}, + {195, 0, 25, 49, 9, 34, 10}, + {705, 90, 33, 30, 7, 31, 18}, + {923, 90, 34, 21, 9, 6, 15}, + {842, 90, 24, 24, 7, 34, 12}, + {295, 90, 31, 35, 8, 26, 16}, + {383, 0, 33, 43, 6, 34, 19}, + {326, 90, 31, 35, 7, 26, 15}, + {416, 0, 33, 43, 7, 34, 19}, + {197, 90, 33, 35, 7, 26, 18}, + {512, 0, 28, 43, 6, 34, 12}, + {32, 49, 32, 41, 7, 26, 18}, + {481, 0, 31, 43, 6, 34, 18}, + {94, 49, 22, 41, 7, 32, 8}, + {241, 0, 26, 47, 11, 32, 8}, + {449, 0, 32, 43, 6, 34, 16}, + {540, 0, 24, 43, 7, 34, 8}, + {122, 90, 41, 35, 6, 26, 27}, + {357, 90, 31, 35, 6, 26, 18}, + {163, 90, 34, 35, 7, 26, 19}, + {890, 0, 33, 41, 6, 26, 19}, + {923, 0, 33, 41, 7, 26, 19}, + {418, 90, 28, 35, 6, 26, 12}, + {388, 90, 30, 35, 8, 26, 14}, + {0, 90, 28, 40, 7, 31, 13}, + {263, 90, 32, 35, 7, 25, 18}, + {544, 90, 33, 34, 8, 25, 16}, + {469, 90, 42, 34, 8, 25, 25}, + {230, 90, 33, 35, 8, 26, 16}, + {839, 49, 33, 40, 9, 25, 16}, + {577, 90, 31, 34, 8, 25, 15}, + {64, 0, 27, 49, 8, 34, 10}, + {220, 0, 21, 49, 6, 34, 9}, + {91, 0, 27, 49, 9, 34, 10}, + {866, 90, 34, 23, 8, 21, 18}, +}; + +static Font font_Ubuntu = { "Ubuntu", 32, 0, 0, 1024, 256, 95, characters_Ubuntu }; + // TEXTURES // =========================================================================================================== @@ -10,7 +113,7 @@ vg_tex2d tex_monofur = { .path = "textures/ascii.qoi", .flags = VG_TEXTURE_NO_ vg_tex2d tex_unkown = { .path = "textures/unkown.qoi" }; vg_tex2d tex_buttons = { .path = "textures/buttons.qoi" }; -vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_background, &tex_ball_noise, &tex_monofur, &tex_unkown, &tex_buttons }; +vg_tex2d *texture_list[] = { &tex_tile_detail, &tex_tile_data, &tex_wood, &tex_background, &tex_ball_noise, &tex_monofur, &tex_unkown, &tex_buttons, &tex_ubuntu }; // AUDIO // =========================================================================================================== diff --git a/textures/ubuntu.png b/textures/ubuntu.png new file mode 100644 index 0000000000000000000000000000000000000000..33972e1f2e3a788637148d771b9364bf7941b575 GIT binary patch literal 50561 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 IclBTV54Lo<761SM literal 0 HcmV?d00001 diff --git a/vg/vg.h b/vg/vg.h index 13f3d63..b7ebb2f 100644 --- a/vg/vg.h +++ b/vg/vg.h @@ -39,8 +39,13 @@ GLFWwindow* vg_window; // 1366, 768 // 1920, 1080 +#ifdef VG_CAPTURE_MODE +int vg_window_x = 1920; +int vg_window_y = 1080; +#else int vg_window_x = 1366; int vg_window_y = 768; +#endif v2f vg_mouse; v3f vg_mouse_ws; @@ -154,8 +159,13 @@ static void vg_init( int argc, char *argv[], const char *window_name ) glfwWindowHint( GLFW_CONTEXT_VERSION_MINOR, 3 ); glfwWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE ); glfwWindowHint( GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE ); - glfwWindowHint( GLFW_RESIZABLE, GLFW_TRUE ); +#ifdef VG_CAPTURE_MODE + glfwWindowHint( GLFW_RESIZABLE, GLFW_FALSE ); +#else + glfwWindowHint( GLFW_RESIZABLE, GLFW_TRUE ); +#endif + glfwWindowHint( GLFW_SAMPLES, 4 ); GLFWmonitor *monitor_primary = glfwGetPrimaryMonitor(); diff --git a/vg/vg_ui.h b/vg/vg_ui.h index 1172850..70d30aa 100644 --- a/vg/vg_ui.h +++ b/vg/vg_ui.h @@ -93,7 +93,7 @@ struct ui_ctx struct ui_vert { ui_px co[2]; //32 4 - u8 uv[2]; //16 2 + i16 uv[2]; //32 4 u32 colour; //32 4 ui_rect clip; //64 8 } @@ -134,6 +134,18 @@ struct ui_ctx int image_count; }; +struct ui_sdf_char +{ + int x, y, width, height, originX, originY, advance; +}; + +struct ui_sdf_font +{ + const char *name; + int size, width, height; + struct ui_sdf_char *characters; +}; + // Globals // =========================================================================================================== @@ -185,7 +197,7 @@ static void ui_init_context( ui_ctx *ctx, int index_buffer_size ) glEnableVertexAttribArray( 0 ); // UV - glVertexAttribPointer( 1, 2, GL_UNSIGNED_BYTE, GL_FALSE, stride, (void *)offsetof( struct ui_vert, uv ) ); + glVertexAttribPointer( 1, 2, GL_SHORT, GL_FALSE, stride, (void *)offsetof( struct ui_vert, uv ) ); glEnableVertexAttribArray( 1 ); // COLOUR diff --git a/vg/vg_vector.h b/vg/vg_vector.h new file mode 100644 index 0000000..384fdd9 --- /dev/null +++ b/vg/vg_vector.h @@ -0,0 +1,9 @@ +// Copyright (C) 2021 Harry Godden (hgn) - All Rights Reserved + +struct vg_vector_vert +{ + u16 co[2]; // 8b + u16 uv[2]; // 8b + u32 colour; // 4b + ui_rect clip; //64 8 +} -- 2.25.1