comparison Discovery/Src/gfx_engine.c @ 567:1c95f811967c

-Add 12HR Time Support -Add firmware image only font extensions -Show english units when required in log's graphs -Show decompression info with Font84 if 10 characters long -Remove usage of ' symbol to denote minutes and instead use min abbreviation -Show english units when required on the simulation configuration screen -Remove usage of ' symbol to denote feet in in non-metric mode and use ft abbrevation
author izzni
date Tue, 24 Nov 2020 13:22:23 -0600
parents 7b56d4eda695
children 3860b8fa4b29
comparison
equal deleted inserted replaced
566:7761dd028386 567:1c95f811967c
2654 * @retval Ydelta: 0x0000FFFF if not successful or char_truncated 2654 * @retval Ydelta: 0x0000FFFF if not successful or char_truncated
2655 */ 2655 */
2656 2656
2657 static uint32_t GFX_write_char(GFX_DrawCfgWindow* hgfx, GFX_CfgWriteString* cfg, uint8_t character, tFont *Font) 2657 static uint32_t GFX_write_char(GFX_DrawCfgWindow* hgfx, GFX_CfgWriteString* cfg, uint8_t character, tFont *Font)
2658 { 2658 {
2659 Font = GFX_Check_Extra_Font(character, Font);
2659 if(cfg->doubleSize) 2660 if(cfg->doubleSize)
2660 { 2661 {
2661 return GFX_write_char_doubleSize(hgfx, cfg, character, Font); 2662 return GFX_write_char_doubleSize(hgfx, cfg, character, Font);
2662 } 2663 }
2663 2664
3136 else 3137 else
3137 { 3138 {
3138 decodeUTF8 = *(char*)pText; /* place ASCII char */ 3139 decodeUTF8 = *(char*)pText; /* place ASCII char */
3139 } 3140 }
3140 3141
3141 for(i=0;i<ptargetFont->length;i++) 3142 Xsum += GFX_Character_Width(decodeUTF8, ptargetFont);
3142 { 3143
3143 if(ptargetFont->chars[i].code == decodeUTF8)
3144 {
3145 Xsum += ptargetFont->chars[i].image->width;
3146 break;
3147 }
3148 }
3149 pText++; 3144 pText++;
3150 j++; 3145 j++;
3151 if((ptargetFont == &FontT144) && (*(char*)pText != 0)) 3146 if((ptargetFont == &FontT144) && (*(char*)pText != 0))
3152 Xsum += 3; 3147 Xsum += 3;
3153 else 3148 else
3246 } 3241 }
3247 else 3242 else
3248 { 3243 {
3249 decodeUTF8 = *(char*)pText; 3244 decodeUTF8 = *(char*)pText;
3250 } 3245 }
3251 for(i=0;i<font->length;i++) /* lookup character and add width */ 3246 Xsum += GFX_Character_Width(decodeUTF8, font); /* lookup character and add width */
3252 {
3253 if(font->chars[i].code == decodeUTF8)
3254 {
3255 Xsum += font->chars[i].image->width;
3256 break;
3257 }
3258 }
3259 } 3247 }
3260 pText++; 3248 pText++;
3261 j++; 3249 j++;
3262 if((font == &FontT144) && (*(char*)pText != 0)) 3250 if((font == &FontT144) && (*(char*)pText != 0))
3263 Xsum += 3; 3251 Xsum += 3;
3871 *(__IO uint8_t*)(pDestination++) = 0; 3859 *(__IO uint8_t*)(pDestination++) = 0;
3872 } 3860 }
3873 } 3861 }
3874 */ 3862 */
3875 } 3863 }
3864
3865 tFont* GFX_Check_Extra_Font(uint8_t character, tFont *Font)
3866 {
3867 uint32_t i;
3868 uint32_t found;
3869
3870 found = 0;
3871 for(i=0;i<Font->length;i++)
3872 {
3873 if(Font->chars[i].code == character)
3874 {
3875 found = 1;
3876 break;
3877 }
3878 }
3879 if (!found && Font == &FontT54)
3880 {
3881 Font = &FontT54Extra;
3882 }
3883 else if (!found && (Font == &FontT84 || Font == &FontT84Spaced))
3884 {
3885 Font = &FontT84Extra;
3886 }
3887 else if (!found && Font == &FontT105)
3888 {
3889 Font = &FontT105Extra;
3890 }
3891
3892 return Font;
3893 }
3894
3895 uint32_t GFX_Character_Width(uint8_t character, tFont *Font)
3896 {
3897 uint32_t i;
3898 uint32_t found;
3899
3900 for(i=0;i<Font->length;i++)
3901 {
3902 if(Font->chars[i].code == character)
3903 {
3904 return Font->chars[i].image->width;
3905 }
3906 }
3907
3908 found = 0;
3909 if (Font == &FontT54)
3910 {
3911 found = 1;
3912 Font = &FontT54Extra;
3913 }
3914 else if (Font == &FontT84 || Font == &FontT84Spaced)
3915 {
3916 found = 1;
3917 Font = &FontT84Extra;
3918 }
3919 else if (Font == &FontT105)
3920 {
3921 found = 1;
3922 Font = &FontT105Extra;
3923 }
3924
3925 if (found)
3926 {
3927 for(i=0;i<Font->length;i++)
3928 {
3929 if(Font->chars[i].code == character)
3930 {
3931 return Font->chars[i].image->width;
3932 }
3933 }
3934 }
3935
3936 return 0;
3937 }