全网首发:JDK绘制文字:二、绘制句柄的初始化流程

简介: 全网首发:JDK绘制文字:二、绘制句柄的初始化流程

接上文

全网首发:JDK绘制文字一:绘制流程_柳鲲鹏的博客-CSDN博客

  现在来分析,绘制句柄是如何初始化的。

  • GraphicsPrimitiveMgr.c

  在GetNativePrim()中可以看到,绘制句柄是通过反射得到的(对应的变量pNativePrimID,则由反射JAVA字段pNativePrim得到的)。

  问题就变成了:绘制句柄是如何初始化和传递的?

  • DrawGlyphList.java

  是GraphicsPrimitive.java的子类,绘制句柄pNativePrim是GraphicsPrimitive的字段。

  DrawGlyphList构造函数中收到此参数,传递给父类GraphicsPrimitive完成初始化。

  • GraphicsPrimitiveMgr.java

  在静态块中,调用本地函数registerNativeLoops()。

  提前说明,在registerNativeLoops(),又层层调用到NativePrimitive,通过反射调回JAVA,即DrawGlyphList构造函数。

  • GraphicsPrimitiveMgr.c

  Java_sun_java2d_loops_GraphicsPrimitiveMgr_registerNativeLoops,声明了各种格式的RegisterFunc,然后逐个调用进行初始化(这就是loops名字的原因)。从六石编程学来说,应该想办法使用数组。
  以bitmpa来说,应该是RegisterByteBinary1Bit()。我们以此为例,继续分析流程。

  • ByteBinary1Bit.c

声明了本格式的绘制句柄,ByteBinary1BitPrimitives。

调用RegisterPrimitives,传递参数绘制句柄ByteBinary1BitPrimitives。

  • GraphicsPrimitiveMgr.c

NativePrimitive:

  新建了JAVA数组primitives。

  通过for()循环,对绘制句柄的各个函数进行初始化(具体未分析),产生新JAVA对象prim(此处回调到JAVA的DrawGlyphList构造函数,传递参数绘制句柄pPrim。参考registerNativeLoops),然后把设置到primitives中。

  最后把primitives传递到JAVA层,判断为GraphicsPrimitiveMgr的register()。

  至此,绘制句柄初始化流程完成。

目录
相关文章
|
2月前
|
Java 大数据 Maven
jdk17出现错误无法初始化主类 和NoClassDefFoundError:Vector的解决方法
在JDK 17中使用孵化模块Vector时遇到的“无法初始化主类”和“NoClassDefFoundError: Vector”错误的解决方法,通过在Maven项目中配置编译插件、编写测试代码、配置Java运行时环境,并提供了运行项目的示例。
157 9
jdk17出现错误无法初始化主类 和NoClassDefFoundError:Vector的解决方法
|
4月前
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
|
5月前
|
Java 编译器 程序员
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
JVM常见面试题(一):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别
|
7月前
|
算法 Java
Java【算法分享 01】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
Java【算法分享 01】道格拉斯-普克 Douglas-Peucker 抽稀算法(算法流程图解+使用JDK8方法实现+详细注解源码)
345 0
|
Java
JDK中字符的宽度计算流程
JDK中字符的宽度计算流程
112 0
|
缓存 Java
全网首发:JDK绘制文字:七、使用字体图像进行绘制
全网首发:JDK绘制文字:七、使用字体图像进行绘制
117 0
|
Java
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
全网首发:JDK绘制文字:六、字符对应的字体图像加载流程
103 0
|
Java
全网首发:JDK绘制文字:四、绘制文字的具体函数分析
全网首发:JDK绘制文字:四、绘制文字的具体函数分析
103 0
|
Java
JDK绘制文字的流程与代码分析
JDK绘制文字的流程与代码分析
109 0
|
3月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
378 3