下你所需,载你所想!
汇集开发技术源码资料

Direct2D文本图片渲染/剪辑转换模块源码

:1.529MB :1 :2019-12-16 09:31:10

部分简介

.子程序 取字体表数据, 字节集, 公开, TryGetFontTable
.参数 参数_OpenType标记, 整数型, , “DW字体特征标签_”开头常量 或 使用 D2D取OpenType标记() 全局方法返回
.参数 参数_是否存在, 逻辑型, 参考 可空
.局部变量 hr, 整数型
.局部变量 tableData, 整数型
.局部变量 tableSize, 整数型
.局部变量 tableContext, 整数型
.局部变量 ret, 字节集

hr = IDWriteFontFace_TryGetFontTable (Base.取指针 (), 参数_OpenType标记, tableData, tableSize, tableContext, 参数_是否存在)
Base.置最后错误 (hr)
.如果真 (hr = 0)
ret = 指针到字节集 (tableData, tableSize)
.如果真结束
IDWriteFontFace_ReleaseFontTable (Base.取指针 (), tableContext)
返回 (ret)

.子程序 取字形轮廓回调, 逻辑型, 公开, GetGlyphRunOutline 通过将一串字形回调到轮廓接收器接口来计算这些字形的轮廓。
.参数 参数_几何接收器, D2D几何接收器简单, , 指向被回调以执行轮廓绘制操作的接口
.参数 参数_EM大小, 小数型, , 字体的逻辑大小(以 DIP 为单位)
.参数 参数_字形索引, 短整数型, 数组, 这些字形以逻辑顺序排序并且步进方向取决于 参数_是否右到左
.参数 参数_字形步进, 小数型, 可空 数组, 字形的步进是指在绘制字形后的位置上的步进量(朝基线方向)。必须和“参数_字形索引”成员相同
.参数 参数_字形偏移量, DW_字形偏移, 可空 数组, 其中每个字形偏移量都指定字形相对于当前笔位置的基线水平偏移量和垂直偏离量。必须和“参数_字形索引”成员相同
.参数 参数_是否垂直, 逻辑型, 可空, 如果为 TRUE,则字形的升部沿基线运行。如果为 FALSE,则字形的升部垂直于基线运行。
.参数 参数_是否右到左, 逻辑型, 可空, 字形的视觉顺序。如果此参数为 FALSE,则字形从左向右步进。如果为 TRUE,则步进方向为从右向左。
.局部变量 hr, 整数型
.局部变量 count, 整数型
.局部变量 pglyphAdvances, 整数型
.局部变量 pglyphOffsets, 整数型
.局部变量 i, 整数型

count = 取数组成员数 (参数_字形索引)
pglyphAdvances = 选择 (是否为空 (参数_字形步进), 0, _取指针数组 (参数_字形步进))
.如果真 (是否为空 (参数_字形偏移量) = 假)
pglyphOffsets = _Alloc (count × 8)
.计次循环首 (count, i)
RtlMoveMemory (pglyphOffsets + (i - 1) × 8, _取指针Struct (参数_字形偏移量 [i]), 8)
.计次循环尾 ()
.如果真结束
hr = IDWriteFontFace_GetGlyphRunOutline (Base.取指针 (), 参数_EM大小, _取指针数组 (参数_字形索引), pglyphAdvances, pglyphOffsets, count, 参数_是否垂直, 参数_是否右到左, 参数_几何接收器.取指针 ())
.如果真 (pglyphOffsets ≠ 0)
_Free (pglyphOffsets)
.如果真结束

Base.置最后错误 (hr)
返回 (hr = 0)

.子程序 取建议渲染模式, 整数型, 公开, GetRecommendedRenderingMode 返回“DW渲染模式_”开头常量
.参数 参数_EM大小, 小数型, , 字体的逻辑大小(以 DIP 为单位)
.参数 参数_DIP像素, 小数型, , 每个 DIP 的物理像素数。例如,如果呈现表面的 DPI 为 96,则此值为 1.0f。如果 DPI 为 120,则此值为 120.0f/96。
.参数 参数_度量模式, 整数型, , “DW度量模式_”开头常量。将用于字体中的字形的度量方法。
.参数 参数_渲染参数, DW渲染参数
.局部变量 hr, 整数型
.局部变量 rendingMode, 整数型

hr = IDWriteFontFace_GetRecommendedRenderingMode (Base.取指针 (), 参数_EM大小, 参数_DIP像素, 参数_度量模式, 参数_渲染参数.取指针 (), rendingMode)
Base.置最后错误 (hr)
返回 (rendingMode)

.子程序 取GDI兼容度量, DW_字体度量, 公开, GetGdiCompatibleMetrics
.参数 参数_EM大小, 小数型, , 字体的逻辑大小(以 DIP 为单位)
.参数 参数_DIP像素, 小数型, , 每个 DIP 的物理像素数。例如,如果呈现表面的 DPI 为 96,则此值为 1.0f。如果 DPI 为 120,则此值为 120.0f/96。
.参数 参数_矩阵, D2D_矩阵3X2, 可空, 应用于字形及其位置的可选转换。执行由字号和 参数_DIP像素 指定的缩放后应用此转换。
.局部变量 hr, 整数型
.局部变量 transfrom, 整数型
.局部变量 p, 字节集
.局部变量 metrics, DW_字体度量
.局部变量 i, 整数型

transfrom = 选择 (是否为空 (参数_矩阵), 0, _取指针Struct (参数_矩阵))
p = 取空白字节集 (20)
hr = IDWriteFontFace_GetGdiCompatibleMetrics (Base.取指针 (), 参数_EM大小, 参数_DIP像素, transfrom, _取指针字节集 (p))
i = 1
metrics.EM大小 = 取字节集数据 (p, #短整数型, i)
metrics.上升值 = 取字节集数据 (p, #短整数型, i)
metrics.下降值 = 取字节集数据 (p, #短整数型, i)
metrics.行间距 = 取字节集数据 (p, #短整数型, i)
metrics.大写高度 = 取字节集数据 (p, #短整数型, i)
metrics.X高度 = 取字节集数据 (p, #短整数型, i)
metrics.下划线位置 = 取字节集数据 (p, #短整数型, i)
metrics.下划线粗细 = 取字节集数据 (p, #短整数型, i)
metrics.删除线位置 = 取字节集数据 (p, #短整数型, i)
metrics.删除线粗细 = 取字节集数据 (p, #短整数型, i)
Base.置最后错误 (hr)
返回 (metrics)

Direct2D文本图片渲染/剪辑转换模块源码

热门推荐

相关文章