Pango/Cairo中的动态文字
Dynamic text in Pango/Cairo
我有一种感觉,我可能会因为pango缺少一些东西。API中的几乎所有内容似乎都旨在显示静态文本,除了两个功能以在特定位置绘制/移动光标,这表明可能有一种内置的方式来实现编辑文本。
例如,要用鼠标标记一块文本(即在两个点之间更改背景颜色),我可以为每次鼠标移动带有更改标签的文本,或者在开罗中绘制矩形,然后使用pango在顶部绘制具有透明背景的文本。是否有一种将属性应用于范围的方法,而无需再生或重新绘制整个屏幕?
同样,如果我让pango绘制光标并处理钥匙按下事件,是否可以替代整个屏幕?
gtktextbuffer不是一个选择 - 我随时都不拥有所有文本,并且从紧凑的二进制格式并使用一组不断变化的过滤器的集合可以即时显示需要显示的内容要高得多。除了被肿,多余的和不贵的人,它也很慢。
在没有最稀少的文档之外,我检查了gtktextview(https://git.gnome.org.org/browse/gtk growse/gtk tree/gtk/gtk/gtktextview.c.c.c.c.c.c.c.c.c.c.c.c.ctview。)查看GTK本身中如何使用Pango布局。
看来,每当按下键或鼠标更改鼠标时,标记的区域是其问题的最少,而优化(而比GTK的灵活性也不那么灵活)都超出了它们的使用。
例如,文本标记涉及将标签插入渲染树中,重新计算树,然后对输出进行双重屏蔽 - 这应该是巨大的过度杀伤,并保留用于3D渲染。滚动是通过抓住输出的图像然后渲染文本的子段来加速滚动的。
我想彻底的解决方案是返回gtktextbuffer/gtktextview,以更符合MVC模型,而不是提前更高文本,但是现在我想我会坚持对用户划分的次要优化小部件。
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- C++中的动态铸造故障
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 内联映射初始化的动态atexit析构函数崩溃
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- constexpr 函数中的非文字(通过 std::is_constant_evaluated)
- 我可以使用条件运算符初始化C风格的字符串文字吗
- 控制允许动态运行c++的并发操作数
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 输出没有重复元素的动态数组(收缩数组)C++
- C++为线程工作动态地分割例程
- 正在插入动态数组
- 如何使用字符串文字作为宏参数
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- Pango/Cairo中的动态文字
- 动态分配字符串文字
- 如何在C++中使用字符串文字初始化字符的动态数组
- std::map 其中键是动态的或字符串文字