当前位置: 首页 > news >正文

TouchGFX之字体缓存

使用二进制字体需要将整个字体加载到存储器。 在某些情况下,如果字体很大,如大字号中文字体,则这样做可能不可取。

字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上,而是只需保存在更大的文件系统上。

字体文件阅读器

FileDataReader.hpp#ifndef FILEDATAREADER_HPP
#define FILEDATAREADER_HPP
#include <fonts/FontCache.hpp>
#include <stdio.h>using namespace touchgfx;class FileDataReader : public FontDataReader
{
public:virtual ~FileDataReader() { }virtual void open(){fp = fopen("generated/fonts/bin/Font_verdana_20_4bpp.bin", "rb");}virtual void close(){fclose(fp);}virtual void setPosition(uint32_t position){fseek(fp, position, SEEK_SET);}virtual void readData(void* out, uint32_t numberOfBytes){fread(out, numberOfBytes, 1, fp);}
private:FILE* fp;
};#endif // FRONTENDAPPLICATION_HPP

创建FontCache、存储缓冲区和文件系统阅读器对象,然后安装CachedFont:

#include <gui/common/FrontendApplication.hpp>
#include <BitmapDatabase.hpp>
#include <texts/TextKeysAndLanguages.hpp>
#include <texts/TypedTextDatabase.hpp>
#include <gui/common/FileDataReader.hpp>
#include <fonts/CachedFont.hpp>
#include <fonts/FontCache.hpp>uint8_t fontdata[5120];
FileDataReader reader;
FontCache fontCache;
CachedFont cachedFont;  //Cached Font objectLOCATION_PRAGMA_NOLOAD("TouchGFX_Cache")
uint16_t Cache[1024 * 604] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Cache");FrontendApplication::FrontendApplication(Model& m, FrontendHeap& heap): FrontendApplicationBase(m, heap)
{
#ifdef SIMULATORconst uint32_t cacheSize = 0x300000; //3 MB, as exampleuint16_t* const cacheStartAddr = (uint16_t*)malloc(cacheSize);Bitmap::setCache(cacheStartAddr, cacheSize, 4);
#elseBitmap::setCache(Cache, sizeof(Cache));
#endif//setup the font cache with buffer and size; and file reader objectfontCache.setMemory(fontdata, sizeof(fontdata));fontCache.setReader(&reader);TypedText text = TypedText(T___SINGLEUSE_2OJQ);fontCache.initializeCachedFont(text, &cachedFont);//replace the linked in font in TouchGFX with cachedFontTypedTextDatabase::setFont(Typography::DEFAULT, &cachedFont);Unicode::UnicodeChar* str = const_cast<Unicode::UnicodeChar*>(text.getText());fontCache.cacheString(text, str);
}

运行模拟器

相关文章:

TouchGFX之字体缓存

使用二进制字体需要将整个字体加载到存储器。 在某些情况下&#xff0c;如果字体很大&#xff0c;如大字号中文字体&#xff0c;则这样做可能不可取。 字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上&#xff…...

windows系统关闭软件开机自启的常用两种方法

win10中安装软件时经常会默认开机自启动&#xff0c;本文主要介绍两种关闭软件开机自启动方法。 方法1 通过任务管理器设置 1.在任务管理器中禁用开机自启动&#xff1a;打开任务管理器&#xff0c;右键已启动的软件&#xff0c;选择禁用。 方法2 通过windows服务控制开机自启…...

巧用@Conditional注解根据配置文件注入不同的bean对象

项目中使用了mq&#xff0c;kafka两种消息队列进行发送数据&#xff0c;为了避免硬编码&#xff0c;在项目中通过不同的配置文件自动识别具体消息队列策略。这里整理两种实施方案&#xff0c;仅供参考&#xff01; 方案一&#xff1a;创建一个工具类&#xff0c;然后根据配置文…...

论文笔记(整理):轨迹相似度顶会论文中使用的数据集

0 汇总 数据类型数据名称数据处理出租车数据波尔图 原始数据&#xff1a;2013年7月到2014年6月&#xff0c;170万条数据 ICDE 2023 Contrastive Trajectory Similarity Learning with Dual-Feature Attention 过滤位于城市&#xff08;或国家&#xff09;区域之外的轨迹 过…...

Python实现单例模式

使用函数装饰器 def singleton(cls):_instance {}def inner():if cls not in _instance:_instance[cls] cls()return _instance[cls]return innersingleton class Demo(object):def __init__(self):passdef test():b1 Demo()b2 Demo()print(b1, b2)使用类装饰器 class si…...

spark相关网站

Spark的五种JOIN策略解析 https://www.cnblogs.com/jmx-bigdata/p/14021183.html 万字详解整个数据仓库建设体系&#xff08;好文值得收藏&#xff09; https://mp.weixin.qq.com/s?__bizMzg2MzU2MDYzOA&mid2247484692&idx1&snf624672e62ba6cd4cc69bdb6db28756a&…...

ThreeJS-3D教学四-光源

three模拟的真实3D环境&#xff0c;一个非常炫酷的功能便是对光源的操控&#xff0c;之前教学一中已经简单的描述了多种光源&#xff0c;这次咱们就详细的讲下一些最常见的光源&#xff1a; AmbientLight 该灯光在全局范围内平等地照亮场景中的所有对象。 该灯光不能用于投射阴…...

Linux 回收内存到底怎么计算anon/file回收比例,只是swappiness这么简单?

概述 Linux内核为了区分冷热内存,将page以链表的形式保存,主要分为5个链表,除去evictable,我们主要关注另外四个链表:active file/inactive file,active anon和inactive anon链表,可以看到这主要分为两类,file和anon page,内存紧张的时候,内核开始从inactive tail定…...

软件测试中的测试工具和自动化测试

1. 测试工具 测试工具也分为不同人员使用的 开发人员&#xff1a;测试框架&#xff0c;编写测试用例&#xff1b;各类线上dump分析工具如windgb&#xff1b;开发时的集成IDE工具如Visual Studio&#xff0c;idea等等 面向不同测试需求的测试工具 软件测试是软件开发生命周期…...

个人博客系统测试报告

个人博客系统测试报告 一.项目背景二.项目功能三.测试用例3.1 功能测试3.2 自动化测试&#xff08;部分测试&#xff09;3.2.1登陆页面3.2.2博客详情页3.2.3博客编辑页3.2.4个人列表页3.2.5测试结果 3.3 性能测试 一.项目背景 当学习完一项技能后&#xff0c;我们总会习惯通过博…...

高效搜索,提升编程效率

一、搜索效率 1.1魔法上网 网址&#xff1a; 一个很变态但可以让你快速学会计算机的方法…………_哔哩哔哩_bilibili 谷歌镜像&#xff1a; https://search.fuyeor.com/zh-cn/Google 谷歌学术&#xff1a; https://link.zhihu.com/?targethttps%3A//scholar.lanfanshu.cn/…...

Java编程技巧:文件上传、下载、预览

目录 1、上传文件1.1、代码1.2、postman测试截图 2、下载resources目录中的模板文件2.1、项目结构2.2、代码2.3、使用场景 3、预览文件3.1、项目结构3.2、代码3.3、使用场景 1、上传文件 1.1、代码 PostMapping("/uploadFile") public String uploadFile(Multipart…...

【蓝桥杯选拔赛真题63】Scratch云朵降雨 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch云朵降雨 一、题目要求 编程实现 二、案例分析 1、角色分析...

【新版】系统架构设计师 - 软件架构的演化与维护

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 软件架构的演化与维护考点摘要软件架构演化和定义面向对象软件架构演化对象演化消息演化复合片段演化约束演化 软件架构演化方式静态演化动态演化 软件架构演化原则软件架构演化评估方法大型网站架…...

安卓循环遍历计时器

计时器循环遍历 计时器的使用 我习惯两种方式如下&#xff1a; 第一种使用 handler&#xff1a; 1&#xff0c;初始化 声明 public static final int REGULAR_TIME 1000; //1秒 时间间隔private Handler mUiHandler;private int index0;Runnable runnable new Runnable()…...

Docker-基本了解

Docker-基本了解 一、基本概念1、镜像2、容器 二、执行流程三、体系结构 一、基本概念 Docker是容器化平台&#xff0c;提供应用打包&#xff0c;部署与运行应用的容器化平台&#xff0c;应用程序通过docker engine&#xff08;Docker 引擎获取可用资源&#xff09;&#xff0…...

Leetcode383. 赎金信

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每…...

overleaf杂谈-Springer文献格式问题

目录 overleaf写作问题记录1.Latex中的%问题&#xff08;文本变成灰色&#xff09;2.Springer文献格式问题2.1 新建reference.bib2.2 谷歌学术搜索文章并引用2.3 复制BibTex2.4 复制进reference.bib2.5 在sn-article.tex的\end{document}前添加语句2.6 引用文献2.7 Springer模板…...

No148.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

BASH shell脚本篇4——函数

这篇文章介绍下BASH shell中的函数。之前有介绍过shell的其它命令&#xff0c;请参考&#xff1a; BASH shell脚本篇1——基本命令 BASH shell脚本篇2——条件命令 BASH shell脚本篇3——字符串处理 函数是代码重用的最重要方式。Bash函数可以定义为一组命令&#xff0c;在b…...

VisualStudio配置OpenCV环境

VS2022配置OpenCV环境 记录一下Windows上VS配置OpenCV环境的过程。&#xff08;VS2022 OpenCV4.8&#xff09; 一、下载OpenCV 从官网或者镜像网站下载Windows版OpenCV。4.8版本的文件为opencv-4.8.0-windows.exe 双击解压到自定义目录&#xff0c;我这边是&#xff1a;E:…...

C++手写NMS

文章目录 前言一、NMS是什么&#xff1f;二、代码展示三、代码实现思路总结 前言 目标检测模型推理后&#xff0c;一般都需要进行NMS操作进行多余框去重&#xff0c;板端部署一般不用opencv自带的NMS&#xff0c;所以记录下手写NMS的代码。 一、NMS是什么&#xff1f; 非极大…...

第9讲:VUE中监听器WATCH使用详解

目录 监听器介绍 监听普通属性 监听对象属性 监听路由属性监听器watch 监听器:它是侦听属性值或者计算属性的变化,一旦发生变化可以在函数中进行相应的操作,从而达到change事件监听的效果!监听器是一个对象,以 key-value 的形式表示。key 是需要监听的表达式,value 是对…...

微信小程序开发基础(一)认识小程序

微信小程序&#xff0c;小程序的一种&#xff0c;英文名Wechat Mini Program&#xff0c;是一种不需要下载安装即可使用的应用&#xff0c;它实现了应用“触手可及”的梦想&#xff0c;用户扫一扫或搜一下即可打开应用。微信小程序是一种不用下载就能使用的应用&#xff0c;也是…...

LeetCode 1049. 最后一块石头的重量 II

1049. 最后一块石头的重量 II - 力扣&#xff08;LeetCode&#xff09; 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&am…...

Golang中的类型转换介绍

Golang中存在4种类型转换&#xff0c;分别是&#xff1a;断言、显式、隐式、强制。下面我将一一介绍每种转换使用场景和方法 一、断言类型转换 主要是判断变量是否可以转换成某一类型。断言主要用于变量是interface{}类型&#xff08;接口类型&#xff09;的情况&#xff0c;…...

本人碰到的RN项目的坑

1.路径问题 路径不能含有中文 2.下载jar\aar包超时问题 手动下载:任意位置新建个文件夹,然后点击超时的jar包链接跳转到浏览器后下载到这个文件夹内,返回报错的地方找到报错的包名(com或者org开头的),然后去这个路径下找到对应的包名 C:\Users\22560\.gradle\caches\module…...

EcmaScript标准-导入与导出-js

ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff0c;European Computer Manufacturers Association&#xff09;通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛&#xff0c;它往往被称为JavaScript或JScript&#xff0c;所以它…...

如何将matlab中的mat矩阵文件在python中读取出来

先安装hdf5storage这个包 pip3 install hdf5storage 然后在当前目录下放入要读取的mat文件 # 将matlab中的mat文件读取出来 import hdf5storagedata hdf5storage.loadmat(inputWeights.mat) print(data[inputWeights])...

解释C语言中 6.18f (浮点数常量后缀)

在C语言中&#xff0c;例如6.18f &#xff0c;这是一个浮点数常量。 6.18 是一个浮点数&#xff0c;而后缀 f 表示该浮点数是单精度浮点数。 在C语言中&#xff0c;默认的浮点数常量类型是双精度浮点数&#xff0c;如果希望使用单精度浮点数&#xff0c;可以在常量后面加上 f…...

网站建设的相关技术/网络推广代理

我不是作者的程序P需要阅读F.我希望F的内容来自另一个’生成器’程序G,每当P试图读取F(将F作为普通文件)而不是之前的任何时候.我尝试过以下操作&#xff1a;$mkfifo /well-known/path/to/F # line #1$G > /well-known/path/to/F # line #2现在,当P启动并尝试读取F时,它似乎…...

服务器免费/中山seo关键词

目录1. Chrome DevTools功能简介2. 使用Elements调试DOM2.1 查看编辑HTML和DOM2.2 在Console中访问节点2.3 在DOM中断点调试3. 调试样式及CSS3.1 查看和编辑CSS3.2 在元素中动态添加类与伪类3.3 快速调试CSS数值及颜色图形动画等4. 使用 Console 和 Sources 调试 JavaScript4.1…...

都匀网站建设公司/百度 营销中心

在开发中,可能须要动态设置控件的大小 比如为一个gridview设置宽度: LinearLayout.LayoutParams linearParams2 (LinearLayout.LayoutParams)head_gridView.getLayoutParams();int realwidth Utils.Dp2Px(context, 32);linearParams2.width(headAdapter.getCount())*(realwid…...

网站域名申请费用/站内优化怎么做

如何制作动态图片在线制作动态图片不完全教程&#xff0c;由动态图片基地【ASQQL.com】原创制作&#xff0c;如有疑问&#xff0c;请通过QQ方式与我们联系&#xff01;联系方式见网站底部&#xff01;动态图片制作步骤分为以下几步&#xff1a;第一步&#xff1a;上传视频或者寻…...

烟台网站建设推荐企汇互联见效付款/在线网站建设平台

文章目录题目原文Input Specification:Output Specification:Sample Input:Sample Output:题目大意:强烈推荐,刷PTA的朋友都认识一下柳神–PTA解法大佬本文由参考于柳神博客写成 柳神的CSDN博客,这个可以搜索文章 柳神的个人博客,这个没有广告,但是不能搜索 PS 题目原文 T…...

省建设厅网站/成人职业培训学校

试题二&#xff08;25分&#xff09; 阅读以下关于变更的叙述&#xff0c;回答问题1至问题3。 【说明】 在一个正在实施的系统集成项目中出现了下述情况&#xff1a;一个系统的用户向他所认识的一个项目开发人员抱怨系统软件中的一项功能问题&#xff0c;并且表示希望能够进…...