| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- //
- // KSYGPUPipBlendFilter.h
- // GPUImage
- //
- // Created by pengbin on 16/8/26.
- // Copyright © 2016年 ksyun. All rights reserved.
- #import <GPUImage/GPUImage.h>
- /** 图像混合filter
-
- * 将多个图层的内容进行叠加
- * 每个图层有index, [0~n]
- * 叠加顺序为0在最下层, index 越大在更上层
- * 可以每个图层分别指定位置和大小
- * 可以每个图层分别制定透明度
- * 可以动态交换图层
- * 可以动态刷新图层内容(支持视频)
- * 输出的刷新率 与 masterLayer 保持一致
- */
- @interface KSYGPUPicMixer : GPUImageFilter {
- };
- /**
- @abstract 初始化
- @discussion 输出大小等于主要图层的大小
- */
- - (id)init;
- /**
- @abstract 初始化,并制定输出图像的大小
- @param sz 输出图像的大小
- */
- - (id)initWithOutputSize:(CGSize)sz;
- /**
- @abstract 设置主要图层 (默认为0)
- @discussion 主要图层一般为视频图层, 当主要图层的输入刷新时, 输出才刷新
- */
- @property (nonatomic, assign) NSUInteger masterLayer;
- /**
- @abstract 设置图层的位置和大小 (单位为: 像素值 或者百分比)
- @param rect 大小和位置
- @param idx 图层的索引
- @discussion 缩放变形到对应的位置, 数值有如下两种表示方式
- - 像素值:rect中宽度或高度的值必须大于1.0, 则认为是像素值
- - 百分比:rect中宽度或高度的值必须小于等于1.0, 则认为是对应输出图像大小的百分比
- @discussion 保持宽高比的设置方法
- - 宽为0, 则按照高度和输入图像的宽高比计算出宽度
- - 高为0, 则按照宽度和输入图像的宽高比计算出高度
- @discussion 左上角的位置如果为非负值,则和宽高一样;如果为负数, 则自动居中放置
- */
- -(void)setPicRect: (CGRect) rect
- ofLayer: (NSInteger) idx;
- /**
- @abstract 获取图层的位置和大小 (单位为: 像素值 或者百分比)
- @param idx 图层的索引
- @return 位置和大小
- */
- -(CGRect) getPicRectOfLayer:(NSInteger) idx;
- /**
- @abstract 设置图层的透明度 (默认为1.0)
- @param alpha 透明度(0~1.0), 0为全透明
- @param idx 图层的索引
- */
- -(void)setPicAlpha: (CGFloat) alpha
- ofLayer: (NSInteger) idx;
- /**
- @abstract 获取图层的透明度
- @param idx 图层的索引
- @return 透明度
- */
- -(CGFloat) getPicAlphaOfLayer:(NSInteger) idx;
- /**
- @abstract 设置图层的旋转 (默认为norotation)
- @param rotation 透明度(0~1.0), 0为全透明
- @param idx 图层的索引
- @discussion 可用于设置镜像 (kGPUImageFlipHorizonal)
- */
- -(void)setPicRotation: (GPUImageRotationMode) rotation
- ofLayer: (NSInteger) idx;
- /**
- @abstract 获取图层的旋转模式
- @param idx 图层的索引
- @return 旋转模式
- */
- -(GPUImageRotationMode) getPicRotationOfLayer:(NSInteger) idx;
- /**
- @abstract 清除特定图层的画面内容
- @param index 指定被清除的图层
- @discussion 比如切换不同的视频内容时,避免出现黑色背景
- */
- -(void)clearPicOfLayer:(NSInteger) index;
- /**
- @abstract 刷新前是否清除画布 (默认 YES)
- @discussion 清除画布就是将画布的每个像素恢复为背景颜色
- @discussion 当存在覆盖整个画布的不透明图层时, 可以将本属性设为NO, 可以节省部分计算资源
- */
- @property (nonatomic, assign) BOOL clearCanvasBeforeDraw;
- @end
|