mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 13:43:43 +00:00
wg_engine: code refactoring
- apply thorvg compact coding style. - separate private / public methods designated in sectors.
This commit is contained in:
parent
1932107097
commit
8be44e66d2
2 changed files with 39 additions and 36 deletions
|
@ -24,6 +24,10 @@
|
|||
|
||||
#define WG_SSAA_SAMPLES (2)
|
||||
|
||||
/************************************************************************/
|
||||
/* Internal Class Implementation */
|
||||
/************************************************************************/
|
||||
|
||||
WgRenderer::WgRenderer()
|
||||
{
|
||||
}
|
||||
|
@ -69,6 +73,25 @@ void WgRenderer::release()
|
|||
}
|
||||
|
||||
|
||||
void WgRenderer::clearDisposes()
|
||||
{
|
||||
if (mDisposed.renderDatas.count == 0) return;
|
||||
|
||||
for (auto p = mDisposed.renderDatas.begin(); p < mDisposed.renderDatas.end(); p++) {
|
||||
auto renderData = (WgRenderDataPaint*)(*p);
|
||||
if (renderData->type() == Type::Shape) {
|
||||
mRenderDataShapePool.free(mContext, (WgRenderDataShape*)renderData);
|
||||
} else {
|
||||
renderData->release(mContext);
|
||||
}
|
||||
}
|
||||
mDisposed.renderDatas.clear();
|
||||
}
|
||||
|
||||
/************************************************************************/
|
||||
/* External Class Implementation */
|
||||
/************************************************************************/
|
||||
|
||||
RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper)
|
||||
{
|
||||
// get or create render data shape
|
||||
|
@ -231,19 +254,6 @@ void WgRenderer::dispose(RenderData data) {
|
|||
}
|
||||
|
||||
|
||||
void WgRenderer::clearDisposes()
|
||||
{
|
||||
for (uint32_t i = 0; i < mDisposed.renderDatas.count; i++) {
|
||||
auto renderData = (WgRenderDataPaint*)mDisposed.renderDatas[i];
|
||||
if (renderData->type() == Type::Shape)
|
||||
mRenderDataShapePool.free(mContext, (WgRenderDataShape*)renderData);
|
||||
else
|
||||
renderData->release(mContext);
|
||||
}
|
||||
mDisposed.renderDatas.clear();
|
||||
}
|
||||
|
||||
|
||||
RenderRegion WgRenderer::region(TVG_UNUSED RenderData data)
|
||||
{
|
||||
return { 0, 0, INT32_MAX, INT32_MAX };
|
||||
|
|
|
@ -27,11 +27,6 @@
|
|||
|
||||
class WgRenderer : public RenderMethod
|
||||
{
|
||||
private:
|
||||
WgRenderer();
|
||||
~WgRenderer();
|
||||
void initialize();
|
||||
void release();
|
||||
public:
|
||||
RenderData prepare(const RenderShape& rshape, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override;
|
||||
RenderData prepare(const Array<RenderData>& scene, RenderData data, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) override;
|
||||
|
@ -60,41 +55,39 @@ public:
|
|||
static WgRenderer* gen();
|
||||
static bool init(uint32_t threads);
|
||||
static bool term();
|
||||
|
||||
private:
|
||||
// render handles
|
||||
WGPUCommandEncoder mCommandEncoder{};
|
||||
// intermidiate buffer to render
|
||||
WgRenderStorage mRenderStorageInterm;
|
||||
// root render storage
|
||||
WgRenderStorage mRenderStorageRoot;
|
||||
// storage with data after antializing
|
||||
WgRenderStorage mRenderStorageScreen;
|
||||
// pool to hold render tree storages
|
||||
WgRenderStoragePool mRenderStoragePool;
|
||||
// opacity, blend methods and composite methods pool
|
||||
WgBindGroupOpacityPool mOpacityPool;
|
||||
WgRenderer();
|
||||
~WgRenderer();
|
||||
void initialize();
|
||||
void release();
|
||||
void clearDisposes();
|
||||
|
||||
WGPUCommandEncoder mCommandEncoder{}; // render handles
|
||||
WgRenderStorage mRenderStorageInterm; // intermidiate buffer to render
|
||||
WgRenderStorage mRenderStorageRoot; // root render storage
|
||||
WgRenderStorage mRenderStorageScreen; // storage with data after antializing
|
||||
WgRenderStoragePool mRenderStoragePool; // pool to hold render tree storages
|
||||
WgBindGroupOpacityPool mOpacityPool; // opacity, blend methods and composite methods pool
|
||||
WgBindGroupBlendMethodPool mBlendMethodPool;
|
||||
WgBindGroupCompositeMethodPool mCompositeMethodPool;
|
||||
// render data shpes pool
|
||||
WgRenderDataShapePool mRenderDataShapePool;
|
||||
WgRenderDataShapePool mRenderDataShapePool; // render data shpes pool
|
||||
|
||||
// render tree stacks
|
||||
Array<Compositor*> mCompositorStack;
|
||||
Array<WgRenderStorage*> mRenderStorageStack;
|
||||
|
||||
// native window handles
|
||||
WgContext mContext;
|
||||
WgPipelines mPipelines;
|
||||
Surface mTargetSurface;
|
||||
// current blend method
|
||||
BlendMethod mBlendMethod{};
|
||||
|
||||
BlendMethod mBlendMethod{}; // current blend method
|
||||
|
||||
// disposed resources, they should be released on synced call.
|
||||
struct {
|
||||
Array<RenderData> renderDatas{};
|
||||
Key key;
|
||||
} mDisposed;
|
||||
void clearDisposes();
|
||||
};
|
||||
|
||||
#endif /* _TVG_WG_RENDERER_H_ */
|
||||
|
|
Loading…
Add table
Reference in a new issue