LOTLayerItem::LOTLayerItem(LOTLayerData *layerData):mLayerData(layerData),
mParentLayer(nullptr),
+ mPrecompLayer(nullptr),
mFrameNo(-1),
mDirtyFlag(DirtyFlagBit::All)
{
if (mParentLayer)
mParentLayer->updateStaticProperty();
- mStatic = mParentLayer ? (mLayerData->isStatic() & mParentLayer->isStatic()) : mLayerData->isStatic();
+ mStatic = mLayerData->isStatic();
+ mStatic = mParentLayer ? (mStatic & mParentLayer->isStatic()) : mStatic;
+ mStatic = mPrecompLayer ? (mStatic & mPrecompLayer->isStatic()) : mStatic;
}
void LOTLayerItem::update(int frameNo, const VMatrix &parentMatrix, float parentAlpha)
i->setParentLayer(parentLayer);
}
}
+ i->setPrecompLayer(this);
}
- for(auto i : mLayers) {
+}
+
+void LOTCompLayerItem::updateStaticProperty()
+{
+ LOTLayerItem::updateStaticProperty();
+
+ for(auto i : mLayers) {
i->updateStaticProperty();
- }
+ }
}
LOTCompLayerItem::~LOTCompLayerItem()
int id() const {return mLayerData->id();}
int parentId() const {return mLayerData->parentId();}
void setParentLayer(LOTLayerItem *parent){mParentLayer = parent;}
+ void setPrecompLayer(LOTLayerItem *precomp){mPrecompLayer = precomp;}
virtual void update(int frameNo, const VMatrix &parentMatrix, float parentAlpha);
VMatrix matrix(int frameNo) const;
virtual void renderList(std::vector<VDrawable *> &list){}
- void updateStaticProperty();
+ virtual void updateStaticProperty();
void render(VPainter *painter);
protected:
virtual void updateContent() = 0;
std::vector<std::unique_ptr<LOTMaskItem>> mMasks;
LOTLayerData *mLayerData;
LOTLayerItem *mParentLayer;
+ LOTLayerItem *mPrecompLayer;
VMatrix mCombinedMatrix;
float mCombinedAlpha;
int mFrameNo;
~LOTCompLayerItem();
LOTCompLayerItem(LOTLayerData *layerData);
void renderList(std::vector<VDrawable *> &list)final;
+ void updateStaticProperty() final;
protected:
void updateContent() final;
private: