JDK绘制文字的流程与代码分析

简介: JDK绘制文字的流程与代码分析

还没整理,简单的把总结放这里:


绘制动作

FreetypeFontScaler.getGlyphImageNative()

FileFont.getGlyphImage()

FileFontStrike.getGlyphImagePtrs()

{

images[i] = setCachedGlyphPtr(glyphCode, glyphPtr);

}

GlyphList.mapChars():位图信息保存在images


sun.java2d.loops.DrawGlyphList.DrawGlyphList

DrawGlyphListFunc

具体调用是:

pPrim->funcs.drawglyphlist()


初始化流程

NativePrimitive *pPrim;

GetNativePrim()

反射字段pNativePrim

JNU_GetLongFieldAsPtr


GraphicsPrimitiveMgr.registerNativeLoops

RegisterPrimitives

registerNativeLoops


在RegisterAnyInt初始化中完成。

AnyInt.c

NativePrimitive AnyIntPrimitives[] = {

//REGISTER_FILLRECT, REGISTER_PRIMITIVE, 1

   REGISTER_SOLID_FILLRECT(AnyInt),


//REGISTER_FILLSPANS, REGISTER_PRIMITIVE, 1

   REGISTER_SOLID_FILLSPANS(AnyInt),


//REGISTER_PRIMITIVE, 2

   REGISTER_SOLID_PARALLELOGRAM(AnyInt),


//REGISTER_LINE_PRIMITIVES, REGISTER_PRIMITIVE, 5

   REGISTER_SOLID_LINE_PRIMITIVES(AnyInt),


//REGISTER_FILLRECT, REGISTER_PRIMITIVE, 1

   REGISTER_XOR_FILLRECT(AnyInt),


//REGISTER_FILLSPANS, REGISTER_PRIMITIVE, 1

   REGISTER_XOR_FILLSPANS(AnyInt),


//REGISTER_LINE_PRIMITIVES, REGISTER_PRIMITIVE, 5

   REGISTER_XOR_LINE_PRIMITIVES(AnyInt),


//REGISTER_DRAWGLYPHLIST, REGISTER_PRIMITIVE, 1

//字体使用这个进行绘制。

   REGISTER_SOLID_DRAWGLYPHLIST(AnyInt),


//REGISTER_DRAWGLYPHLIST, REGISTER_PRIMITIVE, 1

//REGISTER_DRAWGLYPHLISTAA, REGISTER_PRIMITIVE, 1

   REGISTER_XOR_DRAWGLYPHLIST(AnyInt),

//共19个

};


DEFINE_SOLID_DRAWGLYPHLIST是定义在LoopMacros.h的宏。

具体来说:

NAME_SOLID_DRAWGLYPHLIST

目录
相关文章
|
3月前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
4月前
|
Java 编译器 程序员
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
|
6月前
|
算法 Java
Java【算法分享 01】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
Java【算法分享 01】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
299 0
|
Java
JDK中字符的宽度计算流程
JDK中字符的宽度计算流程
106 0
|
缓存 Java
全网首发:JDK绘制文字:七、使用字体图像进行绘制
全网首发:JDK绘制文字:七、使用字体图像进行绘制
116 0
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
100 0
|
Java
全网首发:JDK绘制文字:四、绘制文字的具体函数分析
全网首发:JDK绘制文字:四、绘制文字的具体函数分析
99 0
|
2月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
337 3
|
3月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
59 1
|
3月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
708 4