for (auto &i : mDrawableList) {
matteRle = matteRle + i->rle();
}
-
if (!inheritMatte.empty())
matteRle = matteRle & inheritMatte;
} else {
if (rle.empty()) continue;
if (!matteRle.empty()) {
- if (mLayerData->mMatteType == MatteType::AlphaInv) {
+ if (matteType() == MatteType::AlphaInv) {
rle = rle - matteRle;
} else {
rle = rle & matteRle;
matteRle = matteRle + i->rle();
}
+ if (matteType() == MatteType::AlphaInv ) {
+ matteRle = VRle::toRle(painter->clipBoundingRect()) - matteRle;
+ }
+
if (!inheritMatte.empty())
matteRle = matteRle & inheritMatte;
} else {
virtual void updateStaticProperty();
virtual void render(VPainter *painter, const VRle &mask, const VRle &inheritMatte, LOTLayerItem *matteSource);
bool hasMatte() { if (mLayerData->mMatteType == MatteType::None) return false; return true; }
+ MatteType matteType() const { return mLayerData->mMatteType;}
bool visible() const;
virtual void buildLayerNode();
LOTLayerNode * layerNode() const {return mLayerCNode.get();}