struct Position
struct Position
{
PosType x;
PosType y;
Position() :x(0),y(0){}
Position(const PosType _x, const PosType _y): x(_x), y(_y) {}
bool operator!=(const Position &other) const {return x != other.x || y != other.y;}
bool operator==(const Position &other) const {return x == other.x || y == other.y;}
Position offset(const Position pos) const {return Position(x + pos.x,y + pos.y);}
Position offset(const PosType _x,const PosType _y) const {return Position(x + _x,y + _y);}
void repositionTo(const Position newPos) {x = newPos.x; y = newPos.y;}
void relativeTo (const Position origin) {x -= origin.x; y -= origin.y;}
Position operator-(const Position &other) {return Position(x-other.x, y-other.y);}
};
应该是包含了图像的位置信息,坐标x,y,提供了两种构造函数,在其中重载了 == ,!= 和 - 两个运算符,用来判断位置是否相等,以及相减操作
定义了offset成员函数,用来给当前的位置增加偏移量,达到改变当前位置的效果
定义了repositionTo成员函数,用来更新当前的位置信息:x,y
定义了relativeTo成员函数,返回当前位置减去形参数据的新位置
struct Size
应该是用来保存当前块的大小,定义了 width和height两个成员变量,提供了两种构造函数,重载了 == 和 != 两个运算符判断是否相等
定义了area() 成员函数,返回当前块的大小(或者说面积,像素点数量)
定义了resizeTo()方法,裁剪当前块的大小,或者说调整区域大小
struct Area
继承了两个基类,分别是Position和Size,分别存在有三个构造函数
定义pos()和size()两个成员函数,用来返回当前区域的坐标信息和区域信息
分别定义了四个成员函数,分别返回左上,右上,左下和右下的坐标
分别定义和重载了两个contains()函数,返回值为布尔类型,判断当前坐标或者area是否包含形参变量代表的区域
重载了 == 和 != 运算符,判断两个区域是否想和或不等
struct UnitScale
这个类是用来进行缩放操作的,目标分别是模板类型,Position,Size,Area
struct CompArea
这个类在继承了Area类的基础上,也就是在定义了位置position,大小size两种信息之后,为这个区域提供了编码格式(444,420,422 etc.)和编码的通道信息(Y,Cb,Cr)。
其中定义了chromaPos(),lumaPos(),chromaSize(),lumaSize(),compPos(),chanPos()等成员函数,用来返回对应的position和size,不过总感觉chromaPos()和chromaSize()函数没搞明白,因为如果是luma的话,chromaPos() 和chromaSize() 返回的值并没有改变,还是luma对应的值,如果有大佬看懂了的话,请教教我
还有返回左上,左下,右上,右下四个位置position的函数,但需要根据具体的形参决定返回的是luma还是chroma的position。
valid()成员函数返回值为bool类型,返回当前的compArea是否可用,判断条件为chromaFormat < NUM_CHROMA_FORMAT && compID < MAX_NUM_TBLOCKS && width != 0 && height != 0;
重载了 == 和 != 运算符,同前面一样,不再赘述。
定义了该类的resizeTo(), repositionTo(), positionRelativeTo(),分别调用了对应的父类方法。
未完待续