libpag API
介绍
libpag是基于仓颉语言适配的动画渲染库。
1. 提供PAGView动画播放组件
1.1 PAGView
通用动画渲染组件,支持实时 PAG 动画播放及交互效果。
public class PAGView {
/**
* 初始化PAGView组件
*
* @param controller - PAGViewController控制器
*/
PAGView(controller: PAGViewController)
}
1.2 PAGViewController
PAGView控制器。
public class PAGViewController <: XComponentController {
/*
* 设置新的PAGComposition。当多个PAGView共用一个PAGComposition,仅在最后一个PAGView中展示PAGComposition
*
* @param composition - PAGComposition对象,表示要渲染的动画内容
* @return Unit - Unit
*/
public func setComposition(composition: Option<PAGComposition>)
/*
* 返回当前PAGComposition
*
* @return Option<PAGComposition> - 返回PAGComposition对象
*/
public func getComposition():Option<PAGComposition>
/*
* 获取pag文件的路径字符串。
*
* @return String - 返回设置的pag文件的路径字符串
*/
public func getPath():String
/*
* 设置pag文件路径。如果文件不存在或数据不是pag文件则返回false。
*
* @param path - PAG文件的沙箱路径.目前只支持/data/storage/el1/bundle/entry/resources/resfile下的沙箱路径。
* @return Bool - 返回设置结果。true是设置成功
*/
public func setPath(path: String): Bool
/*
* 异步设置pag文件路径,该路径可以是网络路径或本地路径。
*
* @param path - 加载pag文件的路径。可以是网络路径或本地路径
* @param callback - 自定义回调函数。这里操作动画仅支持在回调函数中控制动画
*/
public func setPathAsync(path: String, callback: (Option<PAGFile>) -> Unit): Unit
/*
* 播放动画
*/
public func play(): Unit
/*
* 暂停播放
*
* @return Unit - Unit
*/
public func pause(): Unit
/*
* 判断动画是否播放
*
* @return Bool - true代表正在播放,否则相反
*/
public func isPlaying(): Bool
/*
* 判断是否同步播放
*
* @return Bool - 如果PAGView正在同步播放,则返回true。默认值为false。
*/
public func isSync(): Bool
/*
* 设置是否同步播放
*
* @param isSync - true是同步
*/
public func setSync(isSync: Bool): Unit
/*
* 设置动画播放的次数。
*
* @param repeatCount - 动画播放次数。小于或等于0:动画将无限循环播放。
*/
public func setRepeatCount(repeatCount: Int32): Unit
/*
* 播放动画的总次数
*
* @return Int32 - 播放动画的总次数
*/
public func repeatCount(): Int32
/*
* 获取videoEnabled的属性值
*
* @return Bool - 当前videoEnabled的属性值
*/
public func videoEnabled(): Bool
/*
* 设置videoEnabled属性的值。控制是否启用播放 PAG 文件中嵌入的视频内容。
*
* @param enable - 是否支持视频渲染
*/
public func setVideoEnabled(enable: Bool): Unit
/*
* 获取 cacheEnabled 属性值。
* @return Bool - 返回当前cacheEnabled属性值
*/
public func cacheEnabled(): Bool
/*
* 设置cacheEnabled属性的值。如果该值为 true,通过缓存技术来提升复杂动画的渲染效率
*
* @param enable - 设置是否启用PAG 渲染器的位图缓存功能
*/
public func setCacheEnabled(enable: Bool): Unit
/*
* 获取是否启用了磁盘缓存功能。
*
* @return Bool - 返回是否启用缓存功能
*/
public func useDiskCache(): Bool
/*
* 设置useDiskCache属性的值。如果设置为 true,渲染数据被缓存到磁盘文件中
*
* @param value - 是否启用缓存功能
*/
public func setUseDiskCache(value: Bool): Unit
/*
* 获取cacheScale属性值
*
* @return Float32 - 缩放因子值
*/
public func cacheScale(): Float32
/*
* 设置cacheScale属性的值。设置范围从 0.0 到 1.0。小于 1.0 的缩放因子可能会导致输出图像模糊,但可以减少图形内存的使用,从而提高性能。默认值为 1.0。
*
* @param value - 缩放因子值
*/
public func setCacheScale(value: Float32): Unit
/*
* 获取动画渲染的最大帧率。
*
* @return Float32 - 最大帧率
*/
public func maxFrameRate(): Float32
/*
* 设置渲染的最大帧率。如果设置的值低于 PAGFile 实际帧率,则会丢帧以提升性能;否则该设置不产生影响。默认值为 60。
*
* @param value - 最大帧率值
*/
public func setMaxFrameRate(value: Float32): Unit
/*
* 获取当前缩放模式。
*
* @return PAGScaleMode - 缩放模式
*/
public func scaleMode(): PAGScaleMode
/*
* 设置缩放模式
*
* @param mode - 缩放模式。PAGScaleMode.None(内容不缩放)、PAGScaleMode.Stretch(内容拉伸以适应区域)、PAGScaleMode.LetterBox(按原始比例缩放,默认模式)、PAGScaleMode.Zoom(按原始比例缩放并裁剪超出的部分)
*/
public func setScaleMode(mode: PAGScaleMode): Unit
/*
* 获取当前动画变换矩阵
*
* @return Array<Float32> - 当前变换矩阵
*/
public func matrix(): Array<Float32>
/*
* 设置将应用于合成的变换。调用此方法时,scaleMode属性将设置为None。
*
* @param value - 要设置的变换矩阵。按以下顺序提供六个Float32值:
* - values[0]: scaleX - 水平缩放因子,控制X轴方向的缩放。
* - values[1]: skewX - 水平倾斜角度,控制X轴方向的倾斜。
* - values[2]: transX - 水平平移距离,控制X轴方向的平移。
* - values[3]: skewY - 垂直倾斜角度,控制Y轴方向的倾斜。
* - values[4]: scaleY - 垂直缩放因子,控制Y轴方向的缩放。
* - values[5]: transY - 垂直平移距离,控制Y轴方向的平移。
*/
public func setMatrix(values: Array<Float32>): Unit
/*
* 当前加载动画的总时长(以微秒为单位)
*
* @return Int64 - 返回当前加载动画的总时长
*/
public func duration(): Int64
/*
* 获取当前播放位置的进度,该值在0.0到1.0之间。
*
* @return Float64 - 当前播放位置的进度值
*/
public func getProgress(): Float64
/*
* 设置播放位置的进度,有效值为0.0到1.0。
*
* @param value - 要设置的播放进度
*/
public func setProgress(value: Float64): Unit
/*
* 获取当前帧。
*
* @return Int32 - 当前帧
*/
public func currentFrame(): Int32
/*
* 调用此方法可立即渲染当前位置。请注意,之前对 PAGView 所做的所有更改仅在此方法被
* 调用后才会生效。如果已经调用了 play() 方法,则无需手动调用此方法,因为它会在每一
* 帧自动被调用。如果内容发生了变化,则返回 true。
*
* @return Bool - 内容是否发生变化
*/
public func flush(): Bool
/*
* 获取位于指定点下方的图层数组。该点以像素为单位。
*
* @param x - 指定点的水平方向上的坐标
* @param y - 指定点的垂直方向上的坐标
* @return Array<PAGLayer> - 返回位于指定点下方的图层数组
*/
public func getLayersUnderPoint(x: Float32, y: Float32): Array<PAGLayer>
/*
* 立即释放pag视图创建的缓存。可以调用以减轻内存压力。
*
*/
public func freeCache(): Unit
/*
*获取当前帧的图像快照。如果PAGView尚未显示,则返回null。
*
* @return Option<PixelMap> - PAGView当前帧的图像快照PixelMap
*/
public func makeSnapshot(): Option<PixelMap>
/*
* 获取一个以像素为单位的矩形,该矩形定义了指定层的显示区域位于PAGView的坐标系中。
*
* @param layer - 需要获取显示区域的图层
* @return Rect - 原始区域矩形
*/
public func getBounds(layer: PAGLayer): Rect
/*
* 添加一个监听器到监听器集合中,这些监听器会在动画的生命周期内接收到事件,例如开始、重复和结束事件。
*
* @param listener - 要添加的动画监听器对象
*
*/
public func addListener(listener: PAGViewListener)
/*
* 从集合中删除收听此动画的收听者。
*
* @param listener - 要删除的动画监听器对象
*
*/
public func removeListener(listener: PAGViewListener)
/*
* 立即释放 PAGViewController 实例所使用的资源
*
*/
public func releaseAll(): Unit
/*
* 获取当前 PAGView 实例的唯一标识符
*
* @return String - 返回当前 PAGView 对象对应的唯一字符串ID
*/
public func uniqueID(): String
/*
* 手动触发动画的帧更新
*
*/
public func update(): Unit
}
1.3 PAGViewListener
PAGView动画监听。
public class PAGViewListener {
/*
* 构造一个 PAGViewListener 实例,并指定动画相关的回调函数。
*
* @param onAnimationStart - 动画开始时触发的回调函数
* @param onAnimationEnd - 动画结束时触发的回调函数
* @param onAnimationRepeat - 动画重复时触发的回调函数
* @param onAnimationCancel - 动画取消时触发的回调函数
* @param onAnimationUpdate - 动画更新时触发的回调函数
*/
public init(
onAnimationStart: (PAGViewController) -> Unit,
onAnimationEnd: (PAGViewController) -> Unit,
onAnimationRepeat: (PAGViewController) -> Unit,
onAnimationCancel: (PAGViewController) -> Unit,
onAnimationUpdate: (PAGViewController) -> Unit
)
/*
* 通知动画开始
*
* @param viewController - 动画控制器
*/
public func onAnimationStart(viewController: PAGViewController): Unit
/*
* 通知动画结束
*
* @param viewController - 动画控制器
*/
public func onAnimationEnd(viewController: PAGViewController): Unit
/*
* 通知动画重复
*
* @param viewController - 动画控制器
*/
public func onAnimationRepeat(viewController: PAGViewController): Unit
/*
* 通知动画被取消
*
* @param viewController - 动画控制器
*/
public func onAnimationCancel(viewController: PAGViewController): Unit
/*
* 通知动画帧更新
*
* @param viewController - 动画控制器
*/
public func onAnimationUpdate(viewController: PAGViewController): Unit
}
2. 提供PAGImageView动画播放组件
2.1 PAGImageView
PAGImageView 主要应用于 UI 列表以及页面中含有多个 pag 文件同时渲染的场景。
public class PAGImageView {
/**
* 初始化PAGImageView组件
*
* @param controller - PAGImageViewController控制器
*/
PAGImageView(controller: PAGImageViewController)
}
2.2 PAGImageViewController
PAGImageView控制器。
public class PAGImageViewController <: XComponentController {
/*
* 获取 PAGImageView 中的当前 PAGComposition。
*
* @return Option<PAGComposition> - 返回 PAGImageView 中的当前 PAGComposition,可能为 null
*/
public func getComposition(): Option<PAGComposition>
/*
* 设置PAGComposition,并将最大帧率设置为 30 fps。如果该PAGComposition已添加到另一个 PAGImageView,
* 它将从之前的 PAGImageView 中移除
*
* @param composition - 要设置的 PAGComposition
* @param maxFrameRate - 可选参数,设置最大帧率,默认为 30.0
*/
public func setComposition(composition: Option<PAGComposition>, maxFrameRate!: Float64 = 30.0): Unit
/*
* 获取pag文件的路径字符串
*
* @return String - 返回 pag 文件的路径字符串
*/
public func getPath(): String
/*
* 设置pag文件路径。
*
* @param path - 要加载的 pag 文件的路径。目前只支持/data/storage/el1/bundle/entry/resources/resfile下的沙箱路径。
* @param maxFrameRate - 可选参数,设置最大帧率,默认为 30.0
* @return Bool - 返回加载是否成功,true 表示成功,false 表示失败
*/
public func setPath(path: String, maxFrameRate!: Float64 = 30.0): Bool
/*
* 获取当前的缩放模式
*
* @return PAGScaleMode - 返回当前的缩放模式
*/
public func scaleMode(): PAGScaleMode
/*
* 设置缩放模式
*
* @param mode - 缩放模式。PAGScaleMode.None(内容不缩放)、PAGScaleMode.Stretch(内容拉伸以适应区域)、PAGScaleMode.LetterBox(按原始比例缩放,默认模式)、PAGScaleMode.Zoom(按原始比例缩放并裁剪超出的部分)
*/
public func setScaleMode(mode: PAGScaleMode): Unit
/*
* 获取当前动画变换矩阵
*
* @return Array<Float32> - 当前变换矩阵
*/
public func matrix(): Array<Float32>
/*
* 设置将应用于合成的变换。调用此方法时,scaleMode属性将设置为None。
*
* @param value - 要设置的变换矩阵。按以下顺序提供六个Float32值:
* - values[0]: scaleX - 水平缩放因子,控制X轴方向的缩放。
* - values[1]: skewX - 水平倾斜角度,控制X轴方向的倾斜。
* - values[2]: transX - 水平平移距离,控制X轴方向的平移。
* - values[3]: skewY - 垂直倾斜角度,控制Y轴方向的倾斜。
* - values[4]: scaleY - 垂直缩放因子,控制Y轴方向的缩放。
* - values[5]: transY - 垂直平移距离,控制Y轴方向的平移。
*/
public func setMatrix(values: Array<Float32>): Unit
/*
* 渲染时对图像的缩放比例。范围从 0.0 到 1.0。小于 1.0 的缩放因子可能导致输出
* 模糊,但可以减少图形内存使用,提高渲染性能。默认值为 1.0
*
* @return Float64 - 返回当前的缩放比例
*/
public func renderScale(): Float64
/*
* 设置图像的缩放比例
*
* @param renderScale - 要设置的缩放比例
*/
public func setRenderScale(renderScale: Float32): Unit
/*
* 获取 cacheAllFramesInMemory 属性的值。
* 如果设置为 true,PAGImageView 将所有图像帧加载到内存中,这将显著提高渲染性能,但可能会
* 消耗大量额外内存。如果优先考虑渲染速度而不是内存使用,请将其设置为 true。如果设置为
* false,PAGImageView 一次只将一个图像帧加载到内存中。默认值为 false
*
* @return Bool - 返回是否缓存所有帧到内存中的状态
*/
public func cacheAllFramesInMemory(): Bool
/*
* 设置 cacheAllFramesInMemory 属性的值
*
* @param enable - 要设置的缓存状态
*/
public func setCacheAllFramesInMemory(enable: Bool): Unit
/*
* 获取 PAGImageView 正在渲染的当前帧数
*
* @return Int64 - 返回当前帧数
*/
public func currentFrame(): Int64
/*
* 设置 PAGImageView 到指定帧
*
* @param currentFrame - 指定帧
*/
public func setCurrentFrame(currentFrame: Int64): Unit
/*
* 获取当前 PAGImageView 位图的快照信息
*
* @return Option<PixelMap> - 返回当前 PAGImageView 内容的 PixelMap
*/
public func currentImage(): Option<PixelMap>
/*
* 播放动画
*/
public func play(): Unit
/*
* 判断动画是否播放
*
* @return Bool - true代表正在播放,否则相反
*/
public func isPlaying(): Bool
/*
* 暂停播放
*
*/
public func pause(): Unit
/*
* 播放动画的总次数
*
* @return Int64 - 播放动画的总次数
*/
public func repeatCount(): Int64
/*
* 设置动画播放的次数
*
* @param repeatCount - 动画播放次数。小于或等于0:动画将无限循环播放。
*/
public func setRepeatCount(repeatCount: Int64): Unit
/*
* 添加一个监听器到动画生命周期事件监听器集合中,例如开始、重复和结束事件
*
* @param listener - 要添加的 PAGImageViewListener 监听器
*/
public func addListener(listener: PAGImageViewListener): Unit
/*
* 从动画监听器集合中移除一个监听器
*
* @param listener - 要移除的 PAGImageViewListener 监听器
*/
public func removeListener(listener: PAGImageViewListener): Unit
/*
* 异步设置pag文件路径,该路径可以是网络路径或本地路径。
*
* @param path - 加载pag文件的路径。可以是网络路径或本地路径
* @param callback - 自定义回调函数。这里操作动画仅支持在回调函数中控制动画
* @param maxFrameRate - 可选参数,设置最大帧率,默认为 30.0
*/
public func setPathAsync(path: String, callback: (Option<PAGFile>) -> Unit, maxFrameRate!: Float64 = 30.0): Unit
/*
* 立即释放 PAGImaegViewController 实例所使用的资源
*
*/
public func releaseAll(): Unit
/*
* 获取当前 PAGImageView 实例的唯一标识符
*
* @return String - 返回当前 PAGImageView 对象对应的唯一字符串ID
*/
public func uniqueID(): String
/*
* 手动触发动画的帧更新
*
*/
public func update(): Unit
/*
* 立即渲染当前图像帧并将所有已修改的属性应用到渲染表面。
*
* 该方法会强制 PAGImageView 立刻刷新显示内容。此前对图层、
* 图像或其他属性的更改只有在调用本方法后才会生效。
*
* 若当前已处于播放状态(通过 play() 启动),无需手动调用,
* 因为 flush() 会在每一帧渲染时自动执行。
*
* @return Bool - 若渲染内容自上次刷新后发生变化,则返回 true;
* 若内容无变化,则返回 false。
*/
public func flush(): Bool
}
2.3 PAGImageViewListener
PAGImageView动画监听。
public class PAGImageViewListener {
/*
* 构造一个 PAGImageViewListener 实例,并指定图像动画相关的回调函数。
*
* @param onAnimationStart - 动画开始时触发的回调函数
* @param onAnimationEnd - 动画结束时触发的回调函数
* @param onAnimationRepeat - 动画重复时触发的回调函数
* @param onAnimationCancel - 动画取消时触发的回调函数
* @param onAnimationUpdate - 动画更新时触发的回调函数
*/
public init(
onAnimationStart: (PAGImageViewController) -> Unit,
onAnimationEnd: (PAGImageViewController) -> Unit,
onAnimationRepeat: (PAGImageViewController) -> Unit,
onAnimationCancel: (PAGImageViewController) -> Unit,
onAnimationUpdate: (PAGImageViewController) -> Unit
)
/*
* 通知动画开始
*
* @param imageViewController - 动画控制器
*/
public func onAnimationStart(imageViewController: PAGImageViewController): Unit
/*
* 通知动画结束
*
* @param imageViewController - 动画控制器
*/
public func onAnimationEnd(imageViewController: PAGImageViewController): Unit
/*
* 通知动画重复
*
* @param imageViewController - 动画控制器
*/
public func onAnimationRepeat(imageViewController: PAGImageViewController): Unit
/*
* 通知动画被取消
*
* @param imageViewController - 动画控制器
*/
public func onAnimationCancel(imageViewController: PAGImageViewController): Unit
/*
* 通知动画帧更新
*
* @param imageViewController - 动画控制器
*/
public func onAnimationUpdate(imageViewController: PAGImageViewController): Unit
}
3.其他接口
介绍
这些接口主要用于配合 PAGView 与 PAGImageView 的功能实现,根据具体使用场景可按需调用。
3.1 PAG
PAG 类用于获取 PAG SDK 的版本信息。
public class PAG {
/*
* 获取 SDK 的版本信息
*
* @return String - 返回当前 SDK 的版本号
*/
public static func sdkVersion(): String
}
3.2 PAGComposition
PAGComponsition 是渲染树中的容器,继承于 PAGLayer,可以包含多个 PAGLayer,支持用户自己创建,支持增加、删除、更换渲染顺序,支持通过图层名称获取该名称对应的图层。
public class PAGComposition <: PAGLayer {
/*
* 创建一个指定大小的空 PAGComposition
*
* @param width - PAGComposition 的宽度
* @param height - PAGComposition 的高度
*
* @return Option<PAGComposition> - 返回一个空 PAGComposition 的选项
*/
public static func make(width: Int32, height: Int32): Option<PAGComposition>
/*
* 将 PAGLayer 添加到当前 PAGComposition 的顶部
*
* @param pagLayer - 要添加到 PAGComposition 的 PAGLayer
*
* @return Bool - 返回操作是否成功
*/
public func addLayer(pagLayer: PAGLayer): Bool
/*
* 将 PAGLayer 添加到当前 PAGComposition 的指定索引位置
*
* @param pagLayer - 要添加到 PAGComposition 的 PAGLayer
* @param index - 要添加 PAGLayer 的目标索引位置
*
* @return Bool - 返回操作是否成功
*/
public func addLayerAt(pagLayer: PAGLayer, index: Int64): Bool
/*
* 获取此动画的音频数据,音频数据是 MPEG-4 容器中的 AAC 音频
*
* @return Array<UInt8> - 返回音频数据的字节数组
*/
public func audioBytes(): Array<UInt8>
/*
* 获取该动画中与音频相关的标记信息
*
* @return Array<PAGMarker> - 返回音频标签的数组
*/
public func audioMarkers(): Array<PAGMarker>
/*
* 指示动画片段时间轴中音频第一帧的播放时间
*
* @return Int64 - 返回音频第一帧播放的时间位置
*/
public func audioStartTime(): Int64
/*
* 检查当前 PAGComposition 是否包含指定的 pagLayer
*
* @param pagLayer - 要检查是否包含在 PAGComposition 中的 PAGLayer
*
* @return Bool - 返回当前 PAGComposition 是否包含指定的 pagLayer
*/
public func contains(pagLayer: PAGLayer): Bool
/*
* 返回指定索引位置的子层
*
* @param index - 子层的索引位置
*
* @return Option<PAGLayer> - 返回指定索引位置的子层
*/
public func getLayerAt(index: Int64): Option<PAGLayer>
/*
* 返回指定子层的索引位置
*
* @param layer - 要被识别的层实例
*
* @return Int64 - 返回要被识别的子层的索引位置。当layer不存在时,返回-1。
*/
public func getLayerIndex(layer: PAGLayer): Int64
/*
* 返回与指定图层名称匹配的图层数组
*
* @param layerName - 要匹配的图层名称
*
* @return Array<PAGLayer> - 返回匹配的图层数组
*/
public func getLayersByName(layerName: String): Array<PAGLayer>
/*
* 返回位于指定点下方的图层数组。该点以像素为单位,来自 PAG 组合的本地坐标
*
* @param localX - 点的 x 坐标,以像素为单位
* @param localY - 点的 y 坐标,以像素为单位
*
* @return Array<PAGLayer> - 返回位于指定点下方的图层数组
*/
public func getLayersUnderPoint(localX: Float32, localY: Float32): Array<PAGLayer>
/*
* 返回合成物的高度
*
* @return Int64 - 返回合成物的高度
*/
public func height(): Int64
/*
* 返回此组合中子层的数量
*
* @return Int64 - 返回子层的数量
*/
public func numChildren(): Int64
/*
* 从当前 PAGComposition 中移除所有 PAG 层
*
* @return Unit - 无返回值
*/
public func removeAllLayers(): Unit
/*
* 从当前 PAGComposition 中移除指定的 PAGLayer
*
* @param pagLayer - 要从 PAGComposition 中移除的 PAGLayer
*
* @return Option<PAGLayer> - 返回被移除的 PAGLayer,如果未找到则返回 None
*/
public func removeLayer(pagLayer: PAGLayer): Option<PAGLayer>
/*
* 从当前 PAGComposition 中移除指定索引位置的 PAGLayer
*
* @param index - 要从 PAGComposition 中移除的 PAGLayer 的索引位置
*
* @return Option<PAGLayer> - 返回被移除的 PAGLayer,如果未找到则返回 None
*/
public func removeLayerAt(index: Int64): Option<PAGLayer>
/*
* 设置合成物的大小
*
* @param width - 要设置的合成物的宽度
* @param height - 要设置的合成物的高度
*/
public func setContentSize(width: Int64, height: Int64): Unit
/*
* 更改容器中现有子项的位置。这将影响子层的层叠顺序。
*
* @param layer - 需要更改索引的子层
* @param index - 子层的目标索引
*/
public func setLayerIndex(layer: PAGLayer, index: Int64): Unit
/*
* 交换两个 PAG 层的位置
*
* @param pagLayer1 - 要交换的第一个 PAGLayer
* @param pagLayer2 - 要交换的第二个 PAGLayer
*/
public func swapLayer(pagLayer1: PAGLayer, pagLayer2: PAGLayer): Unit
/*
* 交换指定索引位置的两个 PAG 层
*
* @param index1 - 要交换的第一个 PAGLayer 的索引位置
* @param index2 - 要交换的第二个 PAGLayer 的索引位置
*
* @return Unit - 无返回值
*/
public func swapLayerAt(index1: Int64, index2: Int64): Unit
/*
* 返回合成物的宽度
*
* @return Int64 - 返回合成物的宽度
*/
public func width(): Int64
}
3.3 PAGDecoder
PAGDecoder 提供了一个实用程序,可以直接从 PAG 组件读取图像帧,并将图像帧作为序列文件缓存在磁盘上,这可能会大大加快读取过程,具体取决于 PAG 文件的复杂性。您可以使用 PAGDiskCache 的 SetMaxDiskSize() 方法来管理磁盘使用的缓存限制。
public class PAGDecoder {
/*
* 创建具有 PAG 组成、帧速率限制和解码图像大小比例因子的 PAGDecoder。
* 如果需要在功能中修改 PAGComposition,请仅保留对它的外部引用。
* 否则,在相关磁盘缓存完成后,内部组合将不会自动释放,这可能会消耗比所需更多的内存。 如果 pagComposition 为无效实例,则返回 None。
* 请注意,如果将关联的 PAGComposition 添加到 PAGPlayer 或另一个 PAGDecoder 中,则返回的 PAGDecode 可能会无效。
*
* @param pagComposition - PAGComposition 实例
*
* @return Option<PAGDecoder> - 返回一个 PAGDecoder 实例,失败时返回 None。
*/
public static func make(pagComposition: PAGComposition): Option<PAGDecoder>
/*
* 使用合成的帧速率和大小,使用指定的 PAGComposition 创建新的 PAGDecoder。
* 如果需要在功能中修改 PAGComposition,请仅保留对它的外部引用。
* 否则,在相关磁盘缓存完成后,内部组合将不会自动释放,这可能会消耗比所需更多的内存。如果 pagComposition 为无效实例,则返回 None。
* 请注意,如果将关联的 PAGComposition 添加到 PAGPlayer 或另一个 PAGDecoder 中,则返回的 PAGDecode 可能会无效。
*
* @param pagComposition - PAGComposition 实例
* @param maxFrameRate - 最大帧速率
* @param scale - PAGComposition 大小
*
* @return Option<PAGDecoder> - 返回一个 PAGDecoder 实例,失败时返回 None。
*/
public static func make(pagComposition: PAGComposition, maxFrameRate: Float32, scale: Float32): Option<PAGDecoder>
/*
* 如果给定索引处的帧自上次调用以来发生了变化,则返回 true。
* 如果帧没有改变,呼叫者应该跳过相应的呼叫。
*
* @param index - 给定索引
*
* @return Bool - 发生了变化,返回 true,否则返回 false。
*/
public func checkFrameChanged(index: Int32): Bool
/*
* 获取解码图像帧的帧率。
* 如果修改了关联的 PAGComposition,则该值可能会更改。
*
* @return Float32 - 解码图像帧的帧率。
*/
public func frameRate(): Float32
/*
* 获取解码图像帧的高度。
*
* @return Int64 - 解码图像帧的高度。
*/
public func height(): Int64
/*
* 获取 PAGDecoder 中的帧数。
* 请注意,如果修改了关联的 PAGComposition,则该值可能会更改。
*
* @return Int64 - 解码图像帧的高度。
*/
public func numFrames(): Int64
/*
* 将给定索引处的图像帧像素读取到指定的PixelMap中。如果失败,则返回 None。
*
* @param index - 给定索引
*
* @return Option<PixelMap> - 捕获的位图,或 None
*/
public func readFrame(index: Int64): Option<PixelMap>
/*
* 立即释放 PAGDecoder 实例使用的资源。
*/
public func release(): Unit
/*
* 获取解码图像帧的宽度。
*
* @return Int64 - 解码图像帧的宽度。
*/
public func width(): Int64
}
3.4 PAGDiskCache
PAGDiskCache 用于读取、设置磁盘缓存大小,以及清除磁盘缓存内容。
public class PAGDiskCache {
/*
* 获取磁盘缓存的最大大小限制(以字节为单位),默认值为 1 GB。
*
* @return Int64 - 当前磁盘缓存大小上限
*/
public static func maxDiskSize(): Int64
/*
* 清除所有磁盘缓存文件。
* 所有已打开的文件将在关闭后一并移除。
*/
public static func removeAll(): Unit
/*
* 设置磁盘缓存的最大大小限制(以字节为单位)。
* 如果磁盘使用超过该限制,将触发缓存清理。
* 已打开的文件不会立即删除,在关闭后会再次检查。
*
* @param size - 设置的最大缓存大小(字节)
*/
public static func setMaxDiskSize(size: Int64): Unit
}
3.5 PAGFile
PAG 动画文件加载器,解析并准备动画资源以供渲染。
public class PAGFile <: PAGComposition {
/*
* 从 assets 加载一个 PAG 文件,如果文件不存在或数据不是 PAG 文件,则返回 None。注意:通过
* 相同路径加载的资源在内存中是共享的,直到文件被释放。如果文件可能会被更改,请使用
* PAGFile.LoadFromBytes() 方法。
*
* @param manager - 资源管理对象
* @param name - resources\rawfile目录下的pag文件名。
* @return Option<PAGFile> - 返回PAGFile对象
*/
public static func LoadFromAssets(manager: ResourceManager, name: String): Option<PAGFile>
/*
* 从Array加载pag文件,如果数据为空或不是有效的pag文件则返回null。
*
* @param bytes - pag文件的Array数据
* @return Option<PAGFile> - 返回PAGFile对象
*/
public static func LoadFromBytes(bytes: Array<UInt8>): Option<PAGFile>
/*
* 从本地路径加载一个 PAG 文件,如果文件不存在或数据不是 PAG 文件,则返回 None。
* 注意:通过相同路径加载的所有 PAGFile 实例共享同一个内部缓存。内部缓存会一直存在,
* 直到所有 PAGFile 实例都被释放。如果你不想从内部缓存加载 PAGFile,可以使用
* PAGFile.LoadFromBytes() 方法。
*
* @param path - PAG文件的沙箱路径.目前只支持/data/storage/el1/bundle/entry/resources/resfile下的沙箱路径。
* @return Option<PAGFile> - 返回PAGFile对象
*/
public static func LoadFromPath(path: String): Option<PAGFile>
/*
* 从指定的路径(可以是网络路径或本地路径)加载一个 PAG 文件,如果文件不存在或数据不是
* PAG 文件,则返回 None。注意:通过相同路径加载的所有 PAGFile 实例共享同一个内部缓存。
* 内部缓存会一直存在,直到所有PAGFile 实例都被释放。如果你不想从内部缓存加载 PAGFile,
* 可以使用 PAGFile.LoadFromBytes() 方法。
*
* @param callback - 回调函数,接收一个 Option 类型的 PAGFile 对象。
* @param filePath - PAG文件路径。本地路径目前只支持/data/storage/el1/bundle/entry/resources/resfile下的沙箱路径。
*/
public static func LoadFromPathAsync(filePath: String, callback: (Option<PAGFile>) -> Unit): Unit
/*
* 获取当前SDK支持的最大标记级别。
*
* @return UInt32 - UInt32
*/
public static func MaxSupportedTagLevel(): UInt32
/*
* 复制原始文件,对当前文件的任何修改都不会对结果文件产生影响。
*
* @return Option<PAGFile> 返回复制原始文件的PAGFile对象
*/
public func copyOriginal(): Option<PAGFile>
/*
* 获取此 PAGFile 中可编辑图层的索引。如果某个 PAGLayer 的 editableIndex 不在返回的索引中,
* 则该 PAGLayer 不应被视为可编辑。
*
* @param layerType - 图层类型
* @return Array<Int64> 返回此PAGFile中可编辑图层的索引数组
*/
public func getEditableIndices(layerType: Int32): Array<Int64>
/*
* 按指定的可编辑索引和图层类型获取图层数组。
*
* @param index - 可编辑图层索引
* @param layerType - 图层类型
* @return Array<PAGLayer> - 返回指定可编辑索引和图层类型的图层数组
*/
public func getLayersByEditableIndex(index: Int32, layerType: Int32): Array<PAGLayer>
/*
* 获取指定索引的文本数据。索引的范围从0到numTexts-1。注意:它总是返回默认的文本数据。
*
* @param index - 文本数据索引
* @return PAGText - 返回PAGText对象
*/
public func getTextData(index: Int32): PAGText
/*
* 获取可替换图像的数量。
*
* @return Int64 - 返回可替换图像的数量
*/
public func numImages(): Int64
/*
* 获取可编辑文本的数量。
*
* @return Int64 - 返回可编辑文本的数量
*/
public func numTexts(): Int64
/*
* 获取视频数量。
*
* @return Int64 - 返回视频作品的数量。
*/
public func numVideos(): Int64
/*
* 获取文件的路径字符串。如果文件是从字节流加载的,则此文件的路径字符串将返回空字符串。
*
* @return String - 返回文件的路径字符串
*/
public func path(): String
/*
* 替换指定索引的图像数据。索引的范围从0到PAGFile.numImages-1。传入null后,图像参数将重置为默认图像数据。
*
* @param index - 图像数据索引
* @param pagImage - 要替换的PAGImage对象
*/
public func replaceImage(index: Int32, pagImage: Option<PAGImage>)
/*
* 替换指定图层名称的图像数据。为图像参数传入null将使其重置为默认图像数据。
*
* @param layerName - 图像数据的图层名称
* @param pagImage - 要替换的PAGImage对象
*/
public func replaceImageByName(layerName: String, pagImage: Option<PAGImage>): Unit
/*
* 替换指定索引的文本数据。索引的范围从0到PAGFile.numTexts-1。为textData参数传递null将其重置为默认文本数据。
*
* @param index - 文本数据索引
* @param pagText - 要替换的PAGText对象
*/
public func replaceText(index: Int32, pagText: PAGText): Unit
/*
* 设置此PAG文件的持续时间。传递小于或等于0的值会将持续时间重置为默认值。
*
* @param duration - 要设置的PAG文件持续时间
*/
public func setDuration(duration: Int64): Unit
/*
* 获取当前的时间拉伸模式的属性值。指示在文件时长发生变化时,如何拉伸原始时长以适应目标时长。默认值为 PAGTimeStretchMode.Repeat。
*
* @return PAGTimeStretchMode 返回当前的时间拉伸模式。PAGTimeStretchMode.None(保持原速,不足时显示最后一帧)PAGTimeStretchMode.Scale(调整播放速度以适应时长)PAGTimeStretchMode.Repeat(保持原速,不足时重复内容,默认模式)PAGTimeStretchMode.RepeatInverted(保持原速,不足时反向重复内容)
*/
public func timeStretchMode(): PAGTimeStretchMode
/*
* 设置此文件的timeStretchMode。
*
* @param mode - 要设置的时间拉伸模式
*/
public func setTimeStretchMode(mode: PAGTimeStretchMode): Unit
/*
* 此pag文件所需的标记级别。
*
* @return Int64 - 返回标记级别
*/
public func tagLevel(): Int64
/*
* 立即释放 PAGFile 实例使用的资源。
*/
public func release(): Unit
}
3.6 PAGFont
PAGFont 用于管理字体资源的类。
public class PAGFont {
/*
* 从指定路径注册字体文件。
*
* @param fontPath - 字体文件路径
* @param ttcIndex - 可选的 TTC 索引(默认值为 0)
* @param fontFamily - 可选的字体家族名
* @param fontStyle - 可选的字体样式
* @return PAGFont - 注册成功的字体对象
*/
public static func registerFontFromPath(
fontPath: String,
ttcIndex!: Int32,
fontFamily!: String = "",
fontStyle!: String = ""
): PAGFont
/*
* 从应用资源中注册字体文件。
*
* @param context - 上下文对象
* @param fileName - 字体文件名
* @param ttcIndex - 可选的 TTC 索引(默认值为 0)
* @param fontFamily - 可选的字体家族名
* @param fontStyle - 可选的字体样式
* @return PAGFont - 注册成功的字体对象
*/
public static func registerFontFromAsset(
context: Option<AbilityContext>,
fileName: String,
ttcIndex!: Int32,
fontFamily!: String = "",
fontStyle!: String = ""
): PAGFont
/*
* 取消注册指定字体。
*
* @param font - 要取消注册的 PAGFont 实例
*/
public static func unregisterFont(font: PAGFont): Unit
}
3.7 PAGImage
PAG 动画中的图像工具类,支持纹理操作与图像处理。
public class PAGImage {
/*
* 从资源加载图像文件,如果文件不存在或数据不是有效的图像文件,则返回null。传入非图像文件也可能导致不确定行为。
*
* @param manager - 资源管理对象
* @param name - resources\rawfile目录下的图像文件。
* @return Option<PAGImage> - 返回PAGImage对象
*/
public static func LoadFromAssets(manager: ResourceManager, name: String): Option<PAGImage>
/*
* 根据指定的图像字节数据创建PAGImage对象。如果字节为空,则返回null。如果传入的字节数据不是有效的图像数据,将导致不确定行为。
*
* @param path - 图像字节数据
* @return Option<PAGImage> - 返回PAGImage对象
*/
public static func FromBytes(bytes: Array<UInt8>): Option<PAGImage>
/*
* 从图像文件的路径创建PAGImage对象,如果该文件不存在或不是有效的图像文件,则返回null。传入非图像类型的文件路径也可能导致不确定行为。
*
* @param path - 图像文件的沙箱路径.目前只支持/data/storage/el1/bundle/entry/resources/resfile下的沙箱路径。
* @return Option<PAGImage> - 返回PAGImage对象
*/
public static func FromPath(path: String): Option<PAGImage>
/*
* 返回图像的高度(像素)。
*
* @return Int64 - 返回图像的高度
*/
public func height(): Int64
/*
* 获取当前矩阵的副本。
*
* @return Array<Float32> - 返回当前矩阵的副本
*/
public func matrix(): Array<Float32>
/*
* 设置将应用于图像内容的变换。
*
* @param values - 要设置的变换矩阵
*/
public func setMatrix(values: Array<Float32>): Unit
/*
* 获取当前缩放模式。
*
* @return PAGScaleMode - 返回当前缩放模式
*/
public func scaleMode(): PAGScaleMode
/*
* 设置缩放模式
*
* @param mode - 缩放模式。PAGScaleMode.None(内容不缩放)、PAGScaleMode.Stretch(内容拉伸以适应区域)、PAGScaleMode.LetterBox(按原始比例缩放,默认模式)、PAGScaleMode.Zoom(按原始比例缩放并裁剪超出的部分)
*/
public func setScaleMode(mode: PAGScaleMode): Unit
/*
* 获取图像的宽度(像素)。
*
* @return Int64 - 返回图像的宽度
*/
public func width(): Int64
/**
* 通过 PixelMap 创建一个 PAGImage 对象。如果传入的 PixelMap 为空或无效,则返回 None。
*
* @param pixelMap - 像素图类,用于读取或写入图像数据,并获取图像信息。
* @returns Option<PAGImage> - 创建成功返回 PAGImage,失败则返回 None。
*/
public static func fromPixelMap(pixelMap: PixelMap): Option<PAGImage>
/*
* 立即释放 PAGImage 实例使用的资源。
*/
public func release(): Unit
}
3.8 PAGImageLayer
PAGImageView 为图片图层,支持通过 replaceImage 的方法替换默认占位图,同时支持通过 imageBytes 获取默认占位图的数据。
public class PAGImageLayer <: PAGLayer {
/*
* 创建一个 PAGImageLayer 实例,需指定宽度、高度以及时长(微秒)。
*
* @param width - 图层宽度(像素)
* @param height - 图层高度(像素)
* @param duration - 图层时长(微秒)
* @return Option<PAGImageLayer> - 新建的图像图层,或 None
*/
public static func make(width: Int64, height: Int64, duration: Int64): Option<PAGImageLayer>
/*
* 获取图层内容的时长(微秒),表示替换内容所需的最小时长。
*
* @return Int64 - 图层内容时长(微秒)
*/
public func contentDuration(): Int64
/*
* 获取用于替换的源视频的时间范围数组。
*
* @return Array<PAGVideoRange> - 视频时间段数组
*/
public func getVideoRanges(): Array<PAGVideoRange>
/*
* 获取该图层默认图像的字节数据(WebP 格式)。
*
* @return Array<UInt8> - 图像数据的字节数组
*/
public func imageBytes(): Array<UInt8>
/*
* 用指定的 PAGImage 对象替换图层原始图像内容。
* 如果传入 None,则恢复为默认图像内容。
* 仅修改当前 PAGImageLayer 的内容。
*
* @param image - 要替换的 PAGImage 对象
*/
public func setImage(image: Option<PAGImage>): Unit
}
3.9 PAGLayer
PAG 的渲染图层,PAG 是一个树状结构,PAGLayer 相当于树状结构中的叶子节点。
public class PAGLayer {
/*
* 获取绑定的原生对象指针
*
* @return Int64 - 本地层对象指针
*/
public func getptr(): Int64
/*
* 获取层的当前时间,单位为微秒,如果当前时间不在可见区间内,则层不可见
* (startTime <= currentTime < startTime + duration)
*
* @return Int64 - 当前时间(微秒)
*/
public func currentTime(): Int64
/*
* 获取层的持续时间,单位为微秒,表示可见区间长度
*
* @return Int64 - 层持续时间(微秒)
*/
public func duration(): Int64
/*
* 获取可编辑索引:
* - 如果层类型是文本,范围为 0 到 PAGFile.numTexts - 1
* - 如果层类型是图片,范围为 0 到 PAGFile.numImages - 1
* - 否则返回 -1
*
* @return Int32 - 可编辑索引
*/
public func editableIndex(): Int32
/*
* 判断 PAGLayer 实例是否相当。
*
* @param obj - PAGLayer 实例
*
* @return Bool - 相等返回 true,否则返回 false。
*/
public func equals(obj: PAGLayer): Bool
/*
* 判断该层是否被排除在父级时间线之外,若为 true,则该层当前时间不会随父级当前时间变化
*
* @return Bool - 是否排除在父级时间线之外
*/
public func excludedFromTimeline(): Bool
/*
* 获取该层的帧率
*
* @return Float32 - 帧率
*/
public func frameRate(): Float32
/*
* 获取定义层原始区域的矩形(像素单位),不受矩阵变换影响
*
* @return Rect - 原始区域矩形
*/
public func getBounds(): Rect
/*
* 获取当前播放进度,取值范围为 0.0 到 1.0
*
* @return Float64 - 播放进度
*/
public func getProgress(): Float64
/*
* 获取用于显示的最终矩阵,是 matrix 属性与动画当前矩阵的组合
*
* @return Matrix4 - 最终显示矩阵
*/
public func getTotalMatrix(): Matrix4
/*
* 将 PAGSurface 的全局时间转换为 PAGLayer 的本地时间,单位为微秒
*
* @param globalTime - 全局时间(微秒)
*
* @return Int64 - 本地时间(微秒)
*/
public func globalToLocalTime(globalTime: Int64): Int64
/*
* 获取层的名称
*
* @return String - 层名称
*/
public func layerName(): String
/*
* 获取层类型,类型定义参见 LayerTypeXXX 常量
*
* @return Int8 - 层类型
*/
public func layerType(): Int8
/*
* 将 PAGLayer 的本地时间转换为 PAGSurface 的全局时间,单位为微秒
*
* @param localTime - 本地时间(微秒)
* @return Int64 - 全局时间(微秒)
*/
public func localTimeToGlobal(localTime: Int64): Int64
/*
* 获取该层的标记数组
*
* @return Array<PAGMarker> - 标记列表
*/
public func markers(): Array<PAGMarker>
/*
* 获取影响层缩放、旋转和平移的矩阵,该矩阵不会改变动画矩阵,而是与动画矩阵级联用于显示
*
* @return Matrix4 - 变换矩阵
*/
public func matrix(): Matrix4
/*
* 获取包含该层的 PAGComposition 实例,如果无父级则返回 None
*
* @return Option<PAGComposition> - 父级 PAGComposition
*/
public func parent(): Option<PAGComposition>
/*
* 重置矩阵为默认值
*/
public func resetMatrix(): Unit
/*
* 设置层的当前时间,单位为微秒
*
* @param time - 当前时间(微秒)
*/
public func setCurrentTime(time: Int64): Unit
/*
* 设置该层是否排除在父级时间线之外
*
* @param value - 是否排除
*/
public func setExcludedFromTimeline(value: Bool): Unit
/*
* 设置影响层缩放、旋转和平移的矩阵,该矩阵不会改变动画矩阵,而是与动画矩阵级联用于显示
*
* @param matrix - 变换矩阵
*/
public func setMatrix(matrix: Matrix4): Unit
/*
* 设置播放进度,取值范围 0.0 到 1.0,0.0 表示 startTime 帧,1.0 表示持续时间末尾帧
*
* @param value - 播放进度
*/
public func setProgress(value: Float64): Unit
/*
* 设置层的开始时间,单位为微秒
*
* @param time - 开始时间(微秒)
*/
public func setStartTime(time: Int64): Unit
/*
* 设置层的可见性
*
* @param value - 是否可见
*/
public func setVisible(value: Bool): Unit
/*
* 获取层的开始时间,单位为微秒,表示可见区间的起点,可能为负值
*
* @return Int64 - 开始时间(微秒)
*/
public func startTime(): Int64
/*
* 获取该层的 trackMatte 层,如果没有则返回 None
*
* @return Option<PAGLayer> - trackMatte 层
*/
public func trackMatteLayer(): Option<PAGLayer>
/*
* 判断层是否可见
*
* @return Bool - 层是否可见
*/
public func visible(): Bool
}
3.10 PAGMarker
Marker 存储评论和其他元数据,并在构图或图层中标记重要时间。
public class PAGMarker {
/*
* 根据参数,创建 PAGMarker 实例。
*
* @param startTime - 开始的时间
* @param duration - 持续时间
* @param comment - 评论信息
*/
public PAGMarker(startTime: Int64, duration: Int64, comment: String)
}
3.11 PAGPlayer
PAG 动画核心播放控制器,管理时间轴、事件及渲染流程。
public class PAGPlayer {
/*
* 获取 cacheEnabled 属性值。如果设置为 true,PAGPlayer 会为每个图层缓存静态内容的内
* 部位图表示,这种缓存可以提高包含复杂矢量内容的图层的性能,执行速度会根据内容的复杂
* 度显著加快,但需要额外的图形内存,默认值为 true。
*
* @return Bool - 返回是否启用为每个图层缓存静态内容的内部位图表示的功能
*/
public func cacheEnabled(): Bool
/*
* 获取缩放因子值。该值定义了内部图形缓存的缩放因子,范围从 0.0 到 1.0。小于 1.0 的缩放因子可能会导致输
* 出模糊,但可以减少图形内存的使用,从而提高性能。默认值为 1.0。
*
* @return Float32 - 缩放因子值
*/
public func cacheScale(): Float32
/*
* 获取当前帧。
*
* @return Int64 - 当前帧
*/
public func currentFrame(): Int64
/*
* 获取当前合成的持续时间(以微秒为单位)
*
* @return Float64 - 返回当前合成的持续时间
*/
public func duration(): Float64
/*
* 立即将所有待处理的更改应用到目标表面 如果内容已更改则返回 true
*
* @return Bool - 内容是否发生变化
*/
public func flush(): Bool
/*
* 获取一个以像素为单位的矩形。该矩形定义了指定图层在 PAGSurface 坐标系中的显示区域
*
* @param layer - 需要获取显示区域的图层
* @return Array<Float32> - 返回一个以像素为单位的矩形
*/
public func getBounds(layer: PAGLayer): Array<Float32>
/*
* 获取PAGPlayer渲染为内容的当前PAGComposition。
*
* @return Option<PAGComposition> - 返回PAGPlayer渲染为内容的当前PAGComposition
*/
public func getComposition(): Option<PAGComposition>
/*
* 获取位于指定点下方的图层数组 该点以像素为单位 且基于表面的坐标系
*
* @param surfaceX - 指定点的水平方向上的坐标
* @param surfaceY - 指定点的垂直方向上的坐标
* @return Array<PAGLayer> - 返回位于指定点下方的图层数组
*/
public func getLayersUnderPoint(surfaceX: Float32, surfaceY: Float32): Array<PAGLayer>
/*
* 获取当前播放位置的进度,该值在0.0到1.0之间。
*
* @return Float64 - 当前播放位置的进度值
*/
public func getProgress(): Float64
/*
* 获取PAGPlayer要渲染的PAGSurface对象。
*
* @return Option<PAGSurface> - 返回PAGPlayer要渲染的PAGSurface对象
*/
public func getSurface(): Option<PAGSurface>
/*
* 评估 PAGLayer 是否与基于 PAGSurface 坐标系(而非包含该 PAGLayer 的 PAGComposition)的
* 指定点重叠或相交,如果 PAGLayer 或其父级(或更高层级的父级)未被添加到此 PAGPlayer,
* 则始终返回 false,pixelHitTest 参数用于指示是否检查对象的实际像素(true)或边界框
* (false),若 PAGLayer 与指定点重叠或相交则返回 true。
*
* @param layer - 要检查的 PAGLayer
* @param surfaceX - 指定点的水平方向上的坐标
* @param surfaceY - 指定点的垂直方向上的坐标
* @param pixelHitTest - 指示是否检查对象的实际像素(true)或边界框(false)
* @return Bool - 如果 PAGLayer 与指定点重叠或相交则返回 true
*/
public func hitTestPoint(layer: Option<PAGLayer>, surfaceX: Float32, surfaceY: Float32, pixelHitTest: Bool): Bool
/*
* 获取当前矩阵的副本。
*
* @return Array<Float32> - 当前矩阵的副本
*/
public func matrix(): Array<Float32>
/*
* 该设置定义了渲染的最大帧率,其取值范围在 1 到 60 之间。如果将其设置为一个低于合成
* 内容实际帧率的值,系统会丢弃部分帧以降低渲染压力,从而提高性能。反之,如果设置的值
* 不低于实际帧率,则该设置不会产生任何效果。默认值为 60。
*
* @return Float32 - 最大帧速率
*/
public func maxFrameRate(): Float32
/*
* 为下一次的 flush() 调用准备播放器 它会收集从当前合成进度开始的所有 CPU 任务 并异步并行地执行它们 这通常用于加速首帧的渲染
*
*/
public func prepare(): Unit
/*
* 立即释放 PAGPlayer 实例占用的资源,而不是依赖垃圾回收器在未来某个时间点自动释放。
*
*/
public func release(): Unit
/*
* 设置cacheEnabled属性的值。
*
* @param value - 设置是否启用为每个图层缓存静态内容的内部位图表示的功能
*/
public func setCacheEnabled(value: Bool): Unit
/*
* 设置cacheScale属性的值。设置范围从 0.0 到 1.0。小于 1.0 的缩放因子可能会导致输出图像模糊,但可以减少图形内存的使用,从而提高性能。默认值为 1.0。
*
* @param value - 缩放因子值
*/
public func setCacheScale(value: Float32): Unit
/*
* 为 PAGPlayer 设置一个新的 PAGComposition 作为渲染内容。注意:如果该合成(composition)
* 已经被添加到另一个 PAGPlayer 中,它将会从之前的 PAGPlayer 中移除。
*
* @param composition - 要设置的新的PAGComposition
*/
public func setComposition(composition: Option<PAGComposition>)
/*
* 设置将应用于合成的变换。scaleMode属性调用此方法时,将设置为PAGScaleMode::None。
*
* @param value - 要设置的变换矩阵
*/
public func setMatrix(values: Array<Float32>): Unit
/*
* 设置渲染的最大帧速率。
*
* @param value - 最大帧速率值
*/
public func setMaxFrameRate(value: Float32): Unit
/*
* 设置播放位置的进度,该值范围在 0.0 到 1.0 之间。此设置仅在合成对象不为空时生效
*
* @param value - 要设置的播放进度
*/
public func setProgress(value: Float64): Unit
/*
* 获取当前缩放模式。
*
* @return PAGScaleMode - 缩放模式
*/
public func scaleMode(): PAGScaleMode
/*
* 设置缩放模式
* 当调用此方法时,相关的变换矩阵(matrix)会随之更新。
*
* @param mode - 缩放模式。PAGScaleMode.None(内容不缩放)、PAGScaleMode.Stretch(内容拉伸以适应区域)、PAGScaleMode.LetterBox(按原始比例缩放,默认模式)、PAGScaleMode.Zoom(按原始比例缩放并裁剪超出的部分)
*/
public func setScaleMode(mode: PAGScaleMode): Unit
/*
* 设置PAGPlayer要渲染的PAGSurface对象。
*
* @param surface - 要渲染的PAGSurface对象
*/
public func setSurface(surface: Option<PAGSurface>): Unit
/*
* 设置useDiskCache属性的值。
*
* @param value - 设置是否启用了将相关渲染数据缓存到磁盘文件的功能
*/
public func setUseDiskCache(value: Bool): Unit
/*
* 设置videoEnabled属性的值。如果设置为false,播放器将跳过视频合成的渲染。
*
* @param value - 是否支持视频渲染
*/
public func setVideoEnabled(value: Bool): Unit
/*
* 获取是否启用了磁盘缓存功能。如果设置为 true,PAG 会将相关的渲染数据缓存到磁盘文件中,例如视频合成的解码图像帧,
* 这有助于减少内存使用并提高渲染性能。
*
* @return Bool - 返回当前是否启用了将相关渲染数据缓存到磁盘文件的功能
*/
public func useDiskCache(): Bool
/*
* 获取videoEnabled的属性值
*
* @return Bool - 是否跳过视频合成的渲染。false表示跳过视频合成的渲染
*/
public func videoEnabled(): Bool
}
3.12 PAGScaleMode
public enum PAGScaleMode <: Equatable<PAGScaleMode> {
/**
* 内容不缩放。
*/
| None
/**
* 内容拉伸以适应区域。
*/
| Stretch
/**
* 按原始比例缩放,保持宽高比。默认值。
*/
| LetterBox
/**
* 按原始比例缩放并裁剪一部分。
*/
| Zoom
/**
* 比较两个 `PAGScaleMode` 是否相等。
*/
public operator func ==(that: PAGScaleMode): Bool
/**
* 比较两个 `PAGScaleMode` 是否不相等。
*/
public operator func !=(that: PAGScaleMode): Bool
}
3.13 PAGShapeLayer
PAGShapeLayer 为图形图层,用于处理矢量图形和形状动画。
public class PAGShapeLayer <: PAGLayer {
}
3.14 PAGSolidLayer
PAGSolidLayer 为实色图层,支持修改实色图层的颜色。
public class PAGSolidLayer <: PAGLayer {
/*
* 设置图层的纯色颜色值。
*
* @param solidColor - 要设置的颜色值
*/
public func setSolidColor(solidColor: Int64): Unit
/*
* 获取当前图层的纯色颜色值。
*
* @return Int64 - 图层的颜色值
*/
public func solidColor(): Int64
}
3.15 PAGSurface
PAGSurface 提供多格式单帧渲染数据接口。
public class PAGSurface {
/*
* 获取该表面的唯一标识符 (CID)
*
* @return Int64 - 表面的唯一标识符
*/
public func getCID(): Int64
/*
* 通过表面ID创建 PAGSurface 实例。
*
* @param surfaceId - 表面ID
* @return Option<PAGSurface> - PAGSurface 实例,或 None
*/
public static func fromSurfaceID(surfaceId: Int64): Option<PAGSurface>
/*
* 创建一个新的离屏渲染 PAGSurface,基于指定宽高分配像素内存,
* 可通过 readPixels() 访问。如果尺寸无效则返回 None。
*
* @param width - 表面宽度(像素)
* @param height - 表面高度(像素)
* @return Option<PAGSurface> - 新建的离屏 PAGSurface,或 None
*/
public static func makeOffscreen(width: Int32, height: Int32): Option<PAGSurface>
/*
* 使用透明色清除该表面所有像素。
*
* @return Bool - 内容是否发生变化
*/
public func clearAll(): Bool
/*
* 立即释放该表面创建的缓存,可用于降低内存压力。
*/
public func freeCache(): Unit
/*
* 获取表面的高度(像素)。
*
* @return Int64 - 高度(像素)
*/
public func height(): Int64
/*
* 获取一个捕获该 PAGSurface 内容的位图图像,后续渲染将不包含在内。
*
* @return Option<PixelMap> - 捕获的位图,或 None
*/
public func makeSnapshot(): Option<PixelMap>
/*
* 释放该 PAGSurface 占用的资源。
*/
public func release(): Unit
/*
* 更新表面尺寸。表面尺寸变化时应调用此方法。
*/
public func updateSize(): Unit
/*
* 获取表面的宽度(像素)。
*
* @return Int64 - 宽度(像素)
*/
public func width(): Int64
}
3.16 PAGText
PAGSurface 提供多格式单帧渲染数据接口。
public class PAGText <: ToString {
/**
* 如果为 true,文本层将显示填充。
*/
public var applyFill: Bool
/**
* 如果为 true,文本层将显示笔划。
*/
public var applyStroke: Bool
/**
* 文本层的背景 alpha。000%透明,25500%不透明。
*/
public var backgroundAlpha: UInt8
/**
* 文本层的背景颜色。
*/
public var backgroundColor: UInt32
/**
* 只读、外部修改无效。
*/
public var baselineShift: Float32
/**
* 当为 true 时,文本层是段落(有界)文本。只读、外部修改无效。
*/
public var boxText: Bool
/**
* 对于框文本,文本边界的像素边界。只读、外部修改无效。
*/
public var boxTextRect: Rect
public var fauxBold: Bool
public var fauxItalic: Bool
/**
* 文本层的填充颜色。
*/
public var fillColor: UInt32
/**
* 只读、外部修改无效。
*/
public var firstBaseLine: Float32
/**
* 具有字体系列名称的字符串。
*/
public var fontFamily: String
/**
* 文本层的字体大小(像素)。
*/
public var fontSize: Float32
/**
* 带有样式信息的字符串,例如“粗体”、“斜体”。
*/
public var fontStyle: String = ""
/**
* 文本层的段落对齐。如:PAG 论证左论证,PAG 论证中心论证...
*/
public var justification: PAGTextJustification
/**
* 行之间的空格 0 表示 “auto”,其字体为 Size * 1.2
*/
public var leading: Float32
/**
* 文本层的笔划颜色。
*/
public var strokeColor: UInt32
/**
* 指示文本层的填充和笔划的渲染顺序。只读、外部修改无效。
*/
public var strokeOverFill: Bool
/**
* 文本层的笔划粗细。
*/
public var strokeWidth: Float32
/**
* 文本图层的“源文本”值。
*/
public var text: String
/**
* 字符之间的文本层间距。
*/
public var tracking: Float32
}
3.17 PAGTextJustification
public enum PAGTextJustification {
| Left //对应常数值:0
| Center //对应常数值:1
| Right //对应常数值:2
| FullJustifyLastLineLeft //对应常数值:3
| FullJustifyLastLineRight //对应常数值:4
| FullJustifyLastLineCenter //对应常数值:5
| FullJustifyLastLineFull //对应常数值:6
}
3.18 PAGTextLayer
为文本图层,支持用户修改默认的文本信息、文本颜色、更换字体、字体大小等。
public class PAGTextLayer <: PAGLayer {
/*
* 获取文字图层的填充颜色。
*
* @return Int64 - 颜色值
*/
public func fillColor(): Int64
/*
* 获取文字图层所使用的字体对象。
*
* @return PAGFont - 字体对象
*/
public func font(): PAGFont
/*
* 获取文字图层的字号。
*
* @return Float64 - 字号大小
*/
public func fontSize(): Float64
/*
* 重置文字图层为默认的文本数据。
*/
public func reset(): Unit
/*
* 设置文字图层的填充颜色。
*
* @param color - 填充颜色值
*/
public func setFillColor(color: Int64): Unit
/*
* 设置文字图层所使用的字体。
*
* @param font - 字体对象
*/
public func setFont(font: PAGFont): Unit
/*
* 设置文字图层的字号。
*
* @param fontSize - 字号大小
*/
public func setFontSize(fontSize: Float64): Unit
/*
* 设置文字图层的描边颜色。
*
* @param color - 描边颜色值
*/
public func setStrokeColor(color: Int64): Unit
/*
* 设置文字图层的文本内容。
*
* @param text - 文本内容
*/
public func setText(text: String): Unit
/*
* 获取文字图层的描边颜色。
*
* @return Int64 - 描边颜色值
*/
public func strokeColor(): Int64
/*
* 获取当前文字图层的文本内容。
*
* @return String - 文本内容
*/
public func text(): String
}
3.19 PAGTimeStretchMode
定义 PAGFile 的 setTimeStretchMode 方法中使用的值。
public enum PAGTimeStretchMode {
/**
* 保持原始播放速度,如果内容的持续时间小于目标持续时间,则显示最后一帧。
*/
| None
/**
* 保持原始播放速度,但如果内容的持续时间小于目标持续时间,则重复播放内容。这是默认模式。
*/
| Repeat
/**
* 保持原始播放速度,但如果内容的持续时间小于目标持续时间,则反向重复内容。
*/
| RepeatInverted
/*
* 更改内容的播放速度以适应目标持续时间。
*/
| Scale
/**
* 比较两个 `PAGTimeStretchMode` 是否相等。
*/
public operator func ==(that: PAGTimeStretchMode): Bool
/**
* 比较两个 `PAGTimeStretchMode` 是否不相等。
*/
public operator func !=(that: PAGTimeStretchMode): Bool
}
3.20 PAGVideoRange
表示从 PAGImageLayer 内容开始的时间范围。
public class PAGVideoRange {
/**
* 源视频(不包括在内)的结束时间,单位为微秒。
*/
public var endTime: Int64
/**
* 施加速度后的游戏持续时间。
*/
public var playDuration: Int64
/**
* 指示视频是否应向后播放。
*/
public var reversed: Bool = false
/**
* 源视频的开始时间,单位为微秒。
*/
public var startTime: Int64
/*
* 根据参数,创建 PAGVideoRange 实例。
*
* @param startTime - 源视频的开始时间,单位为微秒。
* @param endTime - 源视频(不包括在内)的结束时间,单位为微秒。
* @param playDuration - 施加速度后的游戏持续时间。
* @param reversed - 指示视频是否应向后播放。
*/
public init(startTime: Int64, endTime: Int64, playDuration: Int64, reversed: Bool)
}
3.21 TraceImage
记录图像信息。
public class TraceImage {
/*
* 记录图像。
*
* @param tag - tag名称
* @param byteBuffer - 像素信息
* @param width - 图像宽度
* @param height - 图像高度
*/
public static func trace(tag: String, byteBuffer: Array<UInt8>, width: Int64, height: Int64): Unit
}
3.22 VideoDecoder
public abstract class VideoDecoder {
/**
* 注册软件解码器工厂以实现解码器回退机制。
*/
public static func registerSoftwareDecoderFactory(factory: Int64): Unit
/**
* 设置可以创建的硬件视频解码器的最大数量。
*/
public static func setMaxHardwareDecoderCount(maxCount: Int32): Unit
}
3.23 Matrix4类
/**
* 表示一个 4x4 的矩阵对象,用于图形计算、变换等操作
*/
public class Matrix4 {
/*
* 存储矩阵的16个元素,按列主序(column-major order)排列
*/
public var props: Array<Float32> = Array<Float32>(16, repeat: 0.0)
/**
* 使用指定矩阵数据构造 Matrix4 对象
*
* @param props - 包含16个 Float32 元素的数组,按列主序排列
*/
public init(props: Array<Float32>)
}
3.24 Rect类
public class Rect: ToString {
/*
* 上边距
*
* @property top - 类型为 Float32,表示矩形的上边距。
*/
public var top: Float32 = 0.0
/*
* 左边距
*
* @property left - 类型为 Float32,表示矩形的左边距。
*/
public var left: Float32 = 0.0
/*
* 右边距
*
* @property right - 类型为 Float32,表示矩形的右边距。
*/
public var right: Float32 = 0.0
/*
* 下边距
*
* @property bottom - 类型为 Float32,表示矩形的下边距。
*/
public var bottom: Float32 = 0.0
/**
* 创建一个默认的 Rect 实例,所有边距初始化为 0.0。
*/
public init() {}
/**
* 根据参数创建一个 Rect 实例。
*
* @param left - 类型为 Float32,矩形的左边距。
* @param top - 类型为 Float32,矩形的上边距。
* @param right - 类型为 Float32,矩形的右边距。
* @param bottom - 类型为 Float32,矩形的下边距。
*/
public init(left: Float32, top: Float32, right: Float32, bottom: Float32)
/**
* 将 Rect 实例转换为字符串形式并返回。
*
* @return 类型为 String,表示矩形的字符串描述。
*/
public func toString(): String
}
3.25 PAGLayerType
public enum PAGLayerType <: Equatable<PAGLayerType> {
/**
* 未知图层类型
*/
| Unknown
/**
* 空图层
*/
| Null
/**
* 实心图层
*/
| Solid
/**
* 文本图层
*/
| Text
/**
* 形状图层
*/
| Shape
/**
* 图像图层
*/
| Image
/**
* 预合成图层
*/
| PreCompose
/**
* 比较两个 `PAGLayerType` 是否相等。
*/
public operator func ==(that: PAGLayerType): Bool
/**
* 比较两个 `PAGLayerType` 是否不相等。
*/
public operator func !=(that: PAGLayerType): Bool
}