]> O.S.I.I.S - jp/vkvg.git/commitdiff
check if defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>
Wed, 13 Jan 2021 13:08:04 +0000 (14:08 +0100)
committerj-p <jp_bruyere@hotmail.com>
Mon, 10 May 2021 06:46:18 +0000 (08:46 +0200)
src/vkvg_context.c
src/vkvg_device_internal.c
src/vkvg_fonts.c
src/vkvg_fonts.h
src/vkvg_internal.h
tests/common/test.c

index bc47d44d369f2ceac0225f7955c3aa7597061621..fbf7cec67230ee978bcd0499f2330d7e4a50359b 100644 (file)
@@ -31,6 +31,7 @@ static vec2 debugLinePoints[1000];
 static uint32_t dlpCount = 0;
 #endif
 
+//todo:this could be used to define a default background
 static VkClearValue clearValues[3] = {
        { {{0}} },
        { {{1.0f, 0}} },
index 8fef5bdab97376cdd36fe643cd2464f705acea65..f76c94ccbf054cf6e0f286d760122f32541f65c8 100644 (file)
@@ -56,7 +56,7 @@ void _flush_all_contexes (VkvgDevice dev){
                ctx = ctx->pPrev;
        }
 }
-
+//TODO:save/reload cache in user temp directory
 void _create_pipeline_cache(VkvgDevice dev){
 
        VkPipelineCacheCreateInfo pipelineCacheCreateInfo = {.sType = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO};
@@ -282,7 +282,7 @@ void _setupPipelines(VkvgDevice dev)
                                                                                        .pCode = (uint32_t*)vkvg_main_vert_spv,
                                                                                        .codeSize = vkvg_main_vert_spv_len };
        VK_CHECK_RESULT(vkCreateShaderModule(dev->vkDev, &createInfo, NULL, &modVert));
-#ifdef VKVG_LCD_FONT_FILTER
+#if defined(VKVG_LCD_FONT_FILTER) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
        createInfo.pCode = (uint32_t*)vkvg_main_lcd_frag_spv;
        createInfo.codeSize = vkvg_main_lcd_frag_spv_len;
 #else
index 268a1cebed0a9012f41ee0b4d3344cf04f2eb5ae..2255754f0a3820a75b29059471e2066a189f867f 100644 (file)
@@ -42,7 +42,7 @@ void _init_fonts_cache (VkvgDevice dev){
        FT_CHECK_RESULT(FT_Init_FreeType(&cache->library));
 
 
-#ifdef VKVG_LCD_FONT_FILTER
+#if defined(VKVG_LCD_FONT_FILTER) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
        FT_CHECK_RESULT(FT_Library_SetLcdFilter (cache->library, FT_LCD_FILTER_LIGHT));
        cache->texFormat = FB_COLOR_FORMAT;
        cache->texPixelSize = 4;
@@ -261,7 +261,7 @@ void _flush_chars_to_tex (VkvgDevice dev, _vkvg_font_t* f) {
 //create a new char entry and put glyph in stagging buffer, ready for upload.
 _char_ref* _prepare_char (VkvgDevice dev, _vkvg_font_t* f, FT_UInt gindex){
 
-#ifdef VKVG_LCD_FONT_FILTER
+#if defined(VKVG_LCD_FONT_FILTER) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
        FT_CHECK_RESULT(FT_Load_Glyph(f->face, gindex, FT_LOAD_TARGET_NORMAL));
        FT_CHECK_RESULT(FT_Render_Glyph(f->face->glyph, FT_RENDER_MODE_LCD));
 #else
@@ -273,7 +273,7 @@ _char_ref* _prepare_char (VkvgDevice dev, _vkvg_font_t* f, FT_UInt gindex){
        uint8_t*        data    = dev->fontCache->hostBuff;
        uint32_t        bmpWidth= bmp.width;   //real width in pixel of char bitmap
 
-#ifdef VKVG_LCD_FONT_FILTER
+#if defined(VKVG_LCD_FONT_FILTER) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
        bmpWidth /= 3;
 #endif
 
@@ -286,7 +286,7 @@ _char_ref* _prepare_char (VkvgDevice dev, _vkvg_font_t* f, FT_UInt gindex){
        int penX = dev->fontCache->stagingX;
        for(uint32_t y=0; y<bmp.rows; y++) {
                for(uint32_t x=0; x<bmpWidth; x++) {
-#ifdef VKVG_LCD_FONT_FILTER
+#if defined(VKVG_LCD_FONT_FILTER) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
                        unsigned char r = bmp.buffer[y * bmp.pitch + x * 3];
                        unsigned char g = bmp.buffer[y * bmp.pitch + x * 3 + 1];
                        unsigned char b = bmp.buffer[y * bmp.pitch + x * 3 + 2];
index e2d17dd2e8ab8efe51b08abbd77fc6d21b7771b0..d6bd37edad75d6a870d3e49af242c0533c7f1830 100644 (file)
@@ -28,7 +28,7 @@
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
-#ifdef VKVG_LCD_FONT_FILTER
+#if defined(VKVG_LCD_FONT_FILTER) && defined(FT_CONFIG_OPTION_SUBPIXEL_RENDERING)
 #include <freetype/ftlcdfil.h>
 #endif
 
index 8ff017752afaf4649ced4e09ea98e641602ab74b..a7402bdce3abafc9666f7200217d46d2c3ccabd7 100644 (file)
@@ -50,8 +50,8 @@
 
 #define PATH_CLOSED_BIT     0x80000000              /* most significant bit of path elmts is closed/open path state */
 #define PATH_HAS_CURVES_BIT 0x40000000              /* 2rd most significant bit of path elmts is curved status
-                                                                                                        * for main path, this indicate that curve datas are present
-                                                                                                        * for segments, this indicate that the segment is curved or not */
+                                                     * for main path, this indicate that curve datas are present.
+                                                     * For segments, this indicate that the segment is curved or not */
 #define PATH_ELT_MASK       0x3FFFFFFF              /* Bit mask for fetching path element value */
 
 #define ROUNDF(f, c) (((float)((int)((f) * (c))) / (c)))
index f145e7d5283dbd3494b8ac68ba09a3532870950a..c64f002444ba922f4f344425dc652d0f11b80308 100644 (file)
@@ -679,4 +679,4 @@ void draw_random_curve (VkvgContext ctx) {
        float x = truncf((w-z)*rand()/RAND_MAX);
        float y = truncf((h-v)*rand()/RAND_MAX);
        vkvg_rectangle(ctx, x, y, z, v);
-}*/
\ No newline at end of file
+}*/