AGG AGG与FreeType库

AGG学习之十一----font_cache_manager使用(FreeType在Rasterizer层应用) font_cache_manager 1.  定义: template class font_cache_manager;          可以对FreeType与win32两种font Engine进行包装. 2. typedef path_adaptor_type 把字体数据包装成顶点源的类 typedef gray8_adaptor_t 阅读详情

Linux、 FreeBSD等开源操作系统里一般使用FreeType来显示文字,Windows下的一些软件如Foxit也有FreeType的身影。

AGG的font_engine_freetype_int16字 体引擎就使用FreeType来取得字模,在Windows里,在使用font_engine_freetype_int16之前,我们得先编译好 FreeType:

  1. 从www.freetype.org下 载FreeType2,偶下载的是目前最新的freetype-2.3.9,解压。
  2. 以VC2005 Express为例,直接打开/builds/win32/vc2005里的freetype.sln编译即可。(不过这个版本的 freetype.sln好 像好点问题,要用文本编辑器打开,把第一行“Microsoft Visual Studio Solution File, Format Version 10.00”后面的“10.00”改成“9.00”才行)
  3. 对于其它编译器,如C++Builder,直接把/docs/INSTALL.ANY里列出的文件加入项目即可(不过加入这些东 西还真是比较麻烦,可以点 这里下载C++Builder的FreeType2库编译工程)。
  4. 把编译后的库文件(在/objs/win32里,注意编译版本)加入项目,并设置include路径为freetype- 2.3.9/include就可 以了
AGG使用FreeType的源代码:

typedef agg::font_engine_freetype_int16 fe_type;
typedef fe_type::path_adaptor_type vs_type;

fe_type fe;
if(!fe.load_font("c://windows//fonts//simhei.ttf",0,agg::glyph_ren_outline)) return;
fe.height(36.0);
fe.flip_y(true);
fe.hinting(true);

wchar_t *s = L"C++编程";
std::vector<agg::int8u> data;
vs_type vs;
agg::conv_curve<vs_type> ccvs(vs);
int x=20,y=100;
for(;*s;s++)
{
 if(!fe.prepare_glyph(*s)) continue;
 data.resize( fe.data_size() );
 fe.write_glyph_to( &data[0] );
 vs.init(&data[0], data.size(), x, y);
 x += fe.advance_x();
 y += fe.advance_y();
 ras.add_path(ccvs);
 agg::render_scanlines_aa_solid(ras,sl,renb,agg::rgba(0,0,1));
}

 

深入解析AGG:高性能2D图形渲染库的核心架构与应用实践 在计算机图形学领域,2D图形渲染是构建用户界面、数据可视化和嵌入式显示系统的核心技术。其基本原理是将矢量几何图元通过坐标变换、路径生成、光栅化等流程转换为像素图像,最终呈现到显示设备。这一技术对于需要高质量图形输出和跨平台兼容性的应用场景具有重要价值,尤其在资源受限的嵌入式环境或需要软件渲染的特定系统中。AGG(Anti-Grain Geometry)作为一个开源的高性能2D图形渲染库,通过模块化的流水线设计和模板元编程技术,实现了对渲染过程的极致控制与优化。它不依赖特定图形API,完全基于CPU进行高质量 阅读详情

相关推荐

Freetype 字体引擎分析与指南

这份文档提供了FreeType 2函数库设计与实现的细节。本文档的目标是让开发人员更好的理解FreeType 2是如何组织的,并让他们扩充、定制和调试它。 首先,我们先了解这个库的目的,也就是说,为什么会写这个库: * 它让客户应用程序方便的访问字体文件,无论字体文件存储在哪里,并且与字体格式无关。 * 方便的提取全局字体数据,这些数据在平常的字体格式中普遍存在。(例如:全局度量标准,字符编码/字符映射表,等等) * 方便的提取某个字符的字形数据(度量标准,图像,名字,其他任何东西) * 访问字体格式特定的功能(例如,SFNT表,多重控制,OpenType轮廓表) Freetype 2的设计也受如下要求很大的影响: * 高可移植性。这个库必须可以运行在任何环境中。这个要求引入了一些非常激烈的选择,这些是FreeType2的低级系统界面的一部分。 * 可扩展性。新特性应该可以在极少改动库基础代码的前提下添加。这个要求引入了非常简单的设计:几乎所有操作都是以模块的形式提供的。 * 可定制。它应该能够很容易建立一个只包含某个特定项目所需的特性的版本。当你需要集成它到一个嵌入式图形库的字体服务器中时,这是非常重要的。 * 简洁高效。这个库的主要目标是只有很少cpu和内存资源的嵌入式系统。 这份文档的其他部分分为几个部分。首先,一些章节介绍了库的基本设计以及Freetype 2内部对象/数据的管理。 接下来的章节专注于库的定制和与这个话题相关的系统特定的界面,如何写你自己的模块和如何按需裁减库初始化和编译。

AGG学习之十----FreeType库 raster方式绘制字符

FreeType库的引用: 下载FreeType源码,  载地址为: http://www.freetype.org/index2.html, 我使用的版本为2.4.4.在VS2008下编译成静态库使用FreeType库 设置FreeType头文件目录   //freetype//includes//引用库   #pragma comment(lib, "freetype.li

ErikLiu的专栏 3331

RS232/RS485/CAN_BUS 通信原理总结与通信波形分析

分析一:232串口信号要点:RS232,全双工,采用三线制传输分别为TXD\RXD\GND,其中TXD为发送信号,RXD为接收信号。在RS232中任何一条信号线的电压均为负逻辑关系。即:-15v ~ -3v 代表1 +3v ~ +15v 代表0测试结果与分析:如图所示,以传输一个8位二进制数值“01101010”为例,异步传输数据的一般格式为:起始位+校验位+数据位+停止位。其中,校验位为可选项。...

乔木鱼 1万+

【渲染引擎】agg字体介绍

agg字体可以使用第三方字体库,比如Freetype或者window下的字体。当你选择使用某种字体的时候,就必须把相应字体的头文件包含进去。 #include <agg_font_win32_tt.h> //for window #include <agg_font_freetype.h> //for freetype这里只介绍如何使用freetype。freetype是一个字体库,现在freet

zwan0518的专栏 1598

基于新张量核范数的TRPCA:多维数据低秩稀疏分解的理论与实践

本文深入探讨了基于新张量核范数的TRPCA(张量鲁棒主成分分析)技术。该技术通过t-product运算和新定义的张量核范数,能有效从多维数据(如视频、彩色图像)中分离低秩背景与稀疏前景/噪声。文章结合理论、核心算法(ADMM、t-SVT)及图像恢复、视频背景建模等实战案例,展示了其在处理复杂多维数据分解任务中的强大优势。

weixin_29173777的博客 269

matlab中高频变压器怎么找,干货|手把手教你绕制高频变压器

原标题:干货|手把手教你绕制高频变压器绕制一个变压器所需材料:磁芯、骨架、各种铜线、麦拉胶带。变压器参数:磁芯:EE22原边:134T(1-3脚),辅助:32T(5-4脚),输出:15T(10-9脚)原边电感:1380±10%uH漏感:≤44uH引脚分布图: 特别注意:绕制方法为网上下载,其中变压器绕制方法是对的,但其中存在着很多问题(比如,正规变压器的绕组的头和尾是要添加铁氟龙套管的,每一层之间...

weixin_30895121的博客 2125

一个字体库引起的坑(续)

前面描述了一个字体库引起的坑:https://blog.youkuaiyun.com/chijingjing/article/details/80549289; 通过三方字体编辑软件重新给字体库编码得到了解决,但是这不是一个很好的解决方案,经过再三研究尝试,总算是有两点眉目. 问题的根本原因: 字体库的字体都是有特定编码映射的, 我们的系统存储的unicode字符编码,所以GIS内核也使用unicode来兼...

CJJ的专栏 721

Monocle2在R 4.3环境下的终极避坑指南:从安装到可视化全流程解析

本文提供了在R 4.3环境下安装和运行Monocle2的完整解决方案,重点解决了依赖包兼容性、源码修改及BEAM分析报错等关键问题。文章详细解析了从环境准备、依赖包处理、源码安装验证到从Seurat对象转换、拟时轨迹构建、高级可视化及性能优化的全流程,旨在帮助用户顺利完成单细胞拟时分析。

weixin_29206669的博客 1355

Agg在Windows下的编译与使用

Agg在Windows下的编译与使用flyfishAgg简介 AGG(Anti-Grain Geometry)是一个开源免费的图形库。官网地址: www.antigrain.com主要是编译称为Lib库,然后提供给其他程序使用 环境: Win10 x64 Visual Studio 2013 字符集 Unicode下载已经编译好Lib的库的地址(包含源码)函数替换 sprintf sp

二分掌柜的 2772

基于高光谱的物质反演与分类 — 技术文章(原理详解 + 深度代码实现)

高光谱遥感 / 近场光谱采集产生逐像素上百波段的光谱曲线,是物质识别与定量反演(abundance / composition estimation)和语义分类(landcover / material class)的一把利器。本文第一部分对常用模型(线性混合模型、非线性辐射传输、稀疏反演、降维与特征选择、分类器/神经网络)进行数学推导与理论分析;第二部分给出两套完整实现:A. 基于 LMM 的约束最小二乘 / 稀疏反演流水线(含端到端评估);

VectorShift的博客 220

【Python】-- 趣味代码 - 发牌游戏

Python -- 趣味代码 - 发牌游戏

银尘博客 351

agg的基本使用

agg 是一个可跨平台的2D绘制库,最小的库只包括一个cpp和h,地址:点击打开链接此库对于初学者还是有一定难度,可能是模版太多了吧,今天尝试使用他绘制一些基本的线测试,发现以下问题。在记录问题之前先学一下基本流程,也是官方的例子:几大对象: agg::rendering_buffer, 就是一块像素内存,一般rgb的new w*h*3,  rgba new w*h*4.             ...

CJJ的专栏 4669

orange软件:入门使用

orange做数据分析契机实验手册目录orange软件部分界面展示小试牛刀:数据导入和展示小试牛刀:散点图绘制总结 契机 今天在上大数据时代实验课,作为一名软件工程专业的大三学生,在上这节公选课之前就决定这节课做完这个学期所有的实验报告,可以说“有亿点”不屑;尤其当老师说Python很麻烦的时候,我更是震惊了,因为我接触过这么多编程语言,Python真的很友好了,很傻瓜,但是当老师打开实验手册的时候,我真香了!!!下面先来看看手册的目录: 实验手册目录 为什么会真香呢,因为目录里这些有好多机器学习算法!

weixin_45880844的博客 1万+

AGG 使用字体引擎(Font Engine)

方式二、使用字体引擎(Font Engine)AGG的字体引擎利用WinAPI:GetGlyphOutline或FreeType库得到字体数据(字模),它可以处于 “Scanline Rasterizer”层或“顶点源”层。要使用字体引擎,要把相应的字体引擎源码(agg_font_win32_tt.cpp或 agg_font_freetype.cpp)加入项目一起编译。头文件

bitasd的专栏 3087

基于知识图谱的智能决策系统

作者:禅与计算机程序设计艺术 1.简介 知识图谱(Knowledge Graph)最早由美国斯坦福大学的Jure Sifne等人于2013年提出,它是一个用于存储、整理和推理复杂多变的网络结构信息的数据模型。它的基本特征是每个事实都有一个统一的标识符ID,并且可以以图形的方式展示各种关系及其边缘。因此,

AI天才研究院 2184

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Win7 64位 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6

有人可能想为什么这里都设置好了路径,上面还要建立libpng和zlib,pixman目录,这主要是因为官方那个编译文件默认是写死的,只找他默认改名后的目录和文件,然后新建一个Win32 Project,也就是窗口程序,实际上我建的Win32 Console空工程,然后在工程设置又改成的窗口,怎么弄都行。还没完,AGG最叼的是自带演示工程水平非常高,在源码中有一个叫examples的目录,直接拖一个idea.cpp编译,如图。主要不同的是,我的libpng和zlib编译好了,直接从pixman开始的。

lmrylll的博客 1298

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

用AGG实现高质量图形输出(四)

本文介绍了 AGG 输出字符的几种方法:自带的 gsv_text 对象、 WinAPI 字体引擎、 FreeType 字体引擎以及字体缓存管理器。并简单介绍了 FreeType 在 VC 和 C++Builder 里的编译方法。 AGG 的字符输出本文介绍了AGG输出字符的几种方法:自带的gsv_text对象、WinAPI字体引擎、FreeType字体引擎以及字体缓存管理器。并简单介绍了 Free

bitasd的专栏 1778

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

AGG学习之十二----font_cache_manager使用(FreeType在vertex source层应用)

样例代码: #pragma comment(lib, "freetype.lib") #include #include #include #include #include #include #include #include #include #include #include "agg_font_cache_manager.h" #include using

ErikLiu的专栏 1885

Termux里Python库安装总报错?可能是这些依赖没装对(附Pillow、Matplotlib避坑指南)

本文详细解析了在Termux中安装Python科学计算库时常见的报错原因及解决方案,特别针对Pillow和Matplotlib等常用库提供了避坑指南。通过系统依赖安装、环境变量配置和编译优化等步骤,帮助用户在Android设备上高效搭建Python开发环境。

weixin_33724659的博客 322

【渲染引擎】agg介绍

AGG是一款功能非常强大的渲染引擎。它使用标准的C++和基本的C函数实现,但是它并没有使用C++里的一些模版函数,因此AGG可以在很多场合下使用,甚至在一些端和嵌入式开发中也可以使用。AGG也可以用在web服务端,你可以在服务端渲染出一个图片返回给客户端,AGG支持各种格式的数据,具有很好的跨平台性。 AGG的设计理念也是基于插件式的开发模式,所以在AGG的使用中,你可以使用任何其他第三方库。比如

zwan0518的专栏 6002

AGG绘图库编译方法

今天在同事的推荐下,下载了AGG的源代码进行编译,AGG在GIS系统中经常用到,比如mapguide,mapnik等用到了AGG。现在很多导航公司也使用AGG作为地图绘制的引擎。 这个引擎绘制出来的效果非常好,据说还可以反锯齿。抱着好奇的心态就试了一下。    1、下载源码,去http://www.antigrain.com/download/index.html就可以下载源码包。 2、在V

心如止水-GISer的成长之路 6189

AGG入门(1):VS2013编译agg源码

1.源码下载:http://www.antigrain.com/download/index.html 这里我们下载最新版本agg2.52.打开VS2013,新建一个空项目,将下载的agg源码包解压,拷贝以下cpp到VS2013的工程中:./src/ 目录下所有cpp文件【核心库】* ./src/ctrl/ 目录下所有cpp文件【控件库】* ./src/platform/ 下对应平台目录(win

KingW 2520

AGG学习之九----自带gsv_text对象raster方式绘制字符

使用AGG绘制字符方式有很多种: 使用AGG自带的 gsv_text 对象;使用 WinAPI 字体引擎;使用 FreeType 字体引擎;使用字体缓存管理器。 首先,我们使用自带的gsv_text对象,在rastser方式下绘制字符。样例代码如下: #include #include #include #include #include #include #incl

ErikLiu的专栏 2073

FreeType 2 教程

<br />第一步 -- 简易的字形装载 <br />介绍 <br />这是“FreeType2 教程”的第一部分。它将教会你如何: <br />* 初始化库 <br />* 通过创建一个新的 face 对象来打开一个字体文件 <br />* 以点或者象素的形式选择一个字符大小 <br />* 装载一个字形(glyph)图像,并把它转换为位图 <br />* 渲染一个简单的字符串 <br />* 容易地渲染一个旋转的字符串 <br /><1>.头文件 <br />下面的内容是编译一个使用了FreeType2

cpq37的专栏 729

python安装matplotlib需要c编译_在Python 3.9上安装matplotlib提示需要FreeType更高版本的解决...

在Python 3.9(在Deepin系统中采用源码安装Python 3.9版本的方法)上安装matplotlib提示需要FreeType 2.3或更高版本,可以将MPLLOCALFREETYPE环境变量设置为1,以使Matplotlib下载它的提示,以下是错误信息和解决方法。错误信息gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -...

weixin_36278982的博客 2173

Agg学习笔记

很久前就听一大牛说起Agg,据说是一个架构极度牛B的2D引擎,沉寂了许久,最后花了两周时间走马观花地把它过了一遍。果然如那大牛所言,这家伙简直就是巧夺天工的艺术品。今天稍稍瞄了一下Google扔出来的,也宣称极度牛B的2D引擎Skia,不过个人感觉整体架构大不如Agg漂亮。至于两者的性能,没做过比较,只是听说skia性能表现优异。       在啃这块骨头之前,有两点建议: 稍了解一点...

weixin_34348805的博客 144
上一篇: AGG 使用字体引擎(Font Engine)
下一篇: AGG 字体缓存管理器
bitasd
博客等级 码龄19年 11粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值