您当前的位置: 首页 > 

柳鲲鹏

暂无认证

  • 0浏览

    0关注

    4642博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

柳鲲鹏 发布时间:2021-05-21 14:42:51 ,浏览量:0

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

  • 绘制动作

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  

关注
打赏
1665724893
查看更多评论
立即登录/注册

微信扫码登录

0.0815s