summaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
-rw-r--r--src/vkvg_device.c2
-rw-r--r--src/vkvg_fonts.c2
-rw-r--r--src/vkvg_fonts.h1
-rw-r--r--tests/test1.c58
4 files changed, 55 insertions, 8 deletions
diff --git a/src/vkvg_device.c b/src/vkvg_device.c
index 8d8a325..05b299f 100644
--- a/src/vkvg_device.c
+++ b/src/vkvg_device.c
@@ -92,7 +92,7 @@ void vkvg_device_destroy (VkvgDevice dev)
//vkDestroyPipelineCache (dev->vkDev, dev->pipelineCache, NULL);
vkDestroyRenderPass (dev->vkDev, dev->renderPass, NULL);
- vkWaitForFences (dev->vkDev, 1, &dev->fence, VK_TRUE, UINT64_MAX);
+ //vkWaitForFences (dev->vkDev, 1, &dev->fence, VK_TRUE, UINT64_MAX);
vkDestroyFence (dev->vkDev, dev->fence,NULL);
vkFreeCommandBuffers (dev->vkDev, dev->cmdPool, 1, &dev->cmd);
diff --git a/src/vkvg_fonts.c b/src/vkvg_fonts.c
index bc98068..c9e77c6 100644
--- a/src/vkvg_fonts.c
+++ b/src/vkvg_fonts.c
@@ -36,7 +36,7 @@ void _init_fonts_cache (VkvgDevice dev){
assert(!FT_Init_FreeType(&cache->library));
- FT_Library_SetLcdFilter (cache->library, FT_RENDER_MODE_LCD);
+ FT_Library_SetLcdFilter (cache->library, FT_LCD_FILTER_DEFAULT);
cache->cacheTexLength = FONT_CACHE_INIT_LAYERS;
cache->cacheTex = vkh_tex2d_array_create (dev, VK_FORMAT_R8_UNORM, FONT_PAGE_SIZE, FONT_PAGE_SIZE,
diff --git a/src/vkvg_fonts.h b/src/vkvg_fonts.h
index e132bab..1fa9041 100644
--- a/src/vkvg_fonts.h
+++ b/src/vkvg_fonts.h
@@ -24,6 +24,7 @@
#include <ft2build.h>
#include FT_FREETYPE_H
+#include <freetype/ftlcdfil.h>
#include <hb.h>
#include <hb-ft.h>
diff --git a/tests/test1.c b/tests/test1.c
index 5b8f28c..c9a4a7c 100644
--- a/tests/test1.c
+++ b/tests/test1.c
@@ -27,6 +27,7 @@
#include "nanosvg.h"
#include "vkh_device.h"
#include "vkh_presenter.h"
+#include "vectors.h"
VkvgDevice device;
VkvgSurface surf = NULL;
@@ -177,6 +178,45 @@ void vkvg_test_stroke(VkvgContext ctx){
vkvg_line_to(ctx,400,600);
vkvg_stroke(ctx);
}
+void drawTextTest (VkvgContext ctx, int x, int *y, const char* fontFace, uint32_t fontSize, vec4 background, vec4 foreground) {
+ const char * string = "abcdefghiiiiiiiiiiiiiiii jk";
+ vkvg_select_font_face (ctx, fontFace);
+ vkvg_set_font_size (ctx, fontSize);
+
+ vkvg_font_extents_t fe;
+ vkvg_font_extents (ctx,&fe);
+ vkvg_text_extents_t te;
+ vkvg_text_extents(ctx,string,&te);
+
+ vkvg_rectangle(ctx, x , (*y) - fe.ascent, te.width, fe.ascent + fe.descent);
+ vkvg_set_source_rgba(ctx, background.r, background.g, background.b, background.a);
+ vkvg_fill(ctx);
+
+ vkvg_set_source_rgba(ctx, foreground.r, foreground.g, foreground.b, foreground.a);
+ vkvg_move_to(ctx, x, (*y));
+ vkvg_show_text(ctx, string);
+ (*y) += fe.ascent + fe.descent;
+}
+void test_text2 (VkvgContext ctx) {
+ int penY = 250;
+ int penX = 100;
+ vec4 bg = {1,1,1,1};
+ vec4 fg = {0,0,0,1};
+
+ const char* font = "droid";
+
+ vkvg_set_source_rgba(ctx,0.2,0.2,0.2,1.0);
+ vkvg_paint(ctx);
+
+ drawTextTest(ctx, penX, &penY, font, 12, bg, fg);
+ drawTextTest(ctx, penX, &penY, font, 12, fg, bg);
+ drawTextTest(ctx, penX, &penY, font, 10, bg, fg);
+ drawTextTest(ctx, penX, &penY, font, 10, fg, bg);
+ drawTextTest(ctx, penX, &penY, font, 8, bg, fg);
+ drawTextTest(ctx, penX, &penY, font, 8, fg, bg);
+ drawTextTest(ctx, penX, &penY, font, 6, bg, fg);
+ drawTextTest(ctx, penX, &penY, font, 6, fg, bg);
+}
void test_text (VkvgContext ctx) {
int size = 40;
int penY = 250;
@@ -187,10 +227,10 @@ void test_text (VkvgContext ctx) {
//vkvg_select_font_face(ctx, "/usr/local/share/fonts/DroidSansMono.ttf");
//vkvg_select_font_face(ctx, "/usr/share/fonts/truetype/unifont/unifont.ttf");
- vkvg_set_font_size(ctx,12);
- vkvg_select_font_face(ctx, "times");
+ vkvg_set_font_size(ctx,10);
+ vkvg_select_font_face(ctx, "mono");
- vkvg_set_source_rgba(ctx,0.9,0.9,0.9,1.0);
+ vkvg_set_source_rgba(ctx,1.0,1.0,1.0,1.0);
vkvg_paint(ctx);
vkvg_move_to(ctx, penX,penY);
vkvg_set_source_rgba(ctx,0.1,0.1,0.1,1);
@@ -499,7 +539,8 @@ void multi_test1 () {
// vkvg_fill (ctx);
- test_text(ctx);
+ //test_text(ctx);
+ test_text2(ctx);
//vkvg_test_stroke(ctx);
@@ -1071,7 +1112,12 @@ int main(int argc, char *argv[]) {
vkengine_set_key_callback (e, key_callback);
device = vkvg_device_create (r->dev->phy, r->dev->dev, r->qFam, 0);
- surf = vkvg_surface_create(device, 1024, 800);
+ surf = vkvg_surface_create(device, 512, 512);
+
+ multi_test1();
+
+ //vkvg_surface_write_to_png(surf, "/mnt/data/test1.png");
+
//test_svg();
//test_img_surface();
@@ -1087,7 +1133,7 @@ int main(int argc, char *argv[]) {
glfwPollEvents();
//test_1();
//cairo_tests();
- multi_test1();
+ //multi_test1();
//test_painting();
if (!vkh_presenter_draw (r))
vkh_presenter_build_blit_cmd (r, vkvg_surface_get_vk_image(surf));