mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-19 14:31:39 +00:00
renderer: code refactoring
Some checks are pending
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
Some checks are pending
Android / build_x86_64 (push) Waiting to run
Android / build_aarch64 (push) Waiting to run
iOS / build_x86_64 (push) Waiting to run
iOS / build_arm64 (push) Waiting to run
macOS / build (push) Waiting to run
macOS / compact_test (push) Waiting to run
macOS / unit_test (push) Waiting to run
Ubuntu / build (push) Waiting to run
Ubuntu / compact_test (push) Waiting to run
Ubuntu / unit_test (push) Waiting to run
Windows / build (push) Waiting to run
Windows / compact_test (push) Waiting to run
Windows / unit_test (push) Waiting to run
unify the viewport methods among engines.
This commit is contained in:
parent
0c0c30bd36
commit
e96678df28
8 changed files with 27 additions and 53 deletions
|
@ -1399,7 +1399,7 @@ RenderData GlRenderer::prepare(RenderSurface* image, RenderData data, const Matr
|
|||
}
|
||||
|
||||
sdata->geometry.matrix = transform;
|
||||
sdata->geometry.viewport = mViewport;
|
||||
sdata->geometry.viewport = vport;
|
||||
|
||||
sdata->geometry.tesselate(image, flags);
|
||||
|
||||
|
@ -1454,7 +1454,7 @@ RenderData GlRenderer::prepare(const RenderShape& rshape, RenderData data, const
|
|||
if (sdata->updateFlag == RenderUpdateFlag::None) return sdata;
|
||||
|
||||
sdata->geometry.matrix = transform;
|
||||
sdata->geometry.viewport = mViewport;
|
||||
sdata->geometry.viewport = vport;
|
||||
|
||||
if (sdata->updateFlag & (RenderUpdateFlag::Color | RenderUpdateFlag::Stroke | RenderUpdateFlag::Gradient | RenderUpdateFlag::GradientStroke | RenderUpdateFlag::Transform | RenderUpdateFlag::Path))
|
||||
{
|
||||
|
@ -1470,19 +1470,6 @@ RenderData GlRenderer::prepare(const RenderShape& rshape, RenderData data, const
|
|||
}
|
||||
|
||||
|
||||
RenderRegion GlRenderer::viewport()
|
||||
{
|
||||
return mViewport;
|
||||
}
|
||||
|
||||
|
||||
bool GlRenderer::viewport(const RenderRegion& vp)
|
||||
{
|
||||
mViewport = vp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool GlRenderer::preUpdate()
|
||||
{
|
||||
if (mRootTarget.invalid()) return false;
|
||||
|
|
|
@ -80,8 +80,6 @@ public:
|
|||
bool postRender() override;
|
||||
void dispose(RenderData data) override;;
|
||||
RenderRegion region(RenderData data) override;
|
||||
RenderRegion viewport() override;
|
||||
bool viewport(const RenderRegion& vp) override;
|
||||
bool blend(BlendMethod method) override;
|
||||
ColorSpace colorSpace() override;
|
||||
const RenderSurface* mainSurface() override;
|
||||
|
@ -137,7 +135,6 @@ private:
|
|||
void* mContext = nullptr;
|
||||
RenderSurface surface;
|
||||
GLint mTargetFboId = 0;
|
||||
RenderRegion mViewport;
|
||||
GlStageBuffer mGpuBuffer;
|
||||
GlRenderTarget mRootTarget;
|
||||
Array<GlProgram*> mPrograms;
|
||||
|
|
|
@ -313,19 +313,6 @@ bool SwRenderer::sync()
|
|||
}
|
||||
|
||||
|
||||
RenderRegion SwRenderer::viewport()
|
||||
{
|
||||
return vport;
|
||||
}
|
||||
|
||||
|
||||
bool SwRenderer::viewport(const RenderRegion& vp)
|
||||
{
|
||||
vport = vp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool SwRenderer::target(pixel_t* data, uint32_t stride, uint32_t w, uint32_t h, ColorSpace cs)
|
||||
{
|
||||
if (!data || stride == 0 || w == 0 || h == 0 || w > stride) return false;
|
||||
|
|
|
@ -46,8 +46,6 @@ public:
|
|||
bool postRender() override;
|
||||
void dispose(RenderData data) override;
|
||||
RenderRegion region(RenderData data) override;
|
||||
RenderRegion viewport() override;
|
||||
bool viewport(const RenderRegion& vp) override;
|
||||
bool blend(BlendMethod method) override;
|
||||
ColorSpace colorSpace() override;
|
||||
const RenderSurface* mainSurface() override;
|
||||
|
@ -76,7 +74,6 @@ private:
|
|||
Array<SwTask*> tasks; //async task list
|
||||
Array<SwSurface*> compositors; //render targets cache list
|
||||
SwMpool* mpool; //private memory pool
|
||||
RenderRegion vport; //viewport
|
||||
bool sharedMpool; //memory-pool behavior policy
|
||||
|
||||
SwRenderer();
|
||||
|
|
|
@ -40,6 +40,20 @@ uint32_t RenderMethod::unref()
|
|||
return (--refCnt);
|
||||
}
|
||||
|
||||
|
||||
RenderRegion RenderMethod::viewport()
|
||||
{
|
||||
return vport;
|
||||
}
|
||||
|
||||
|
||||
bool RenderMethod::viewport(const RenderRegion& vp)
|
||||
{
|
||||
vport = vp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* RenderPath Class Implementation */
|
||||
/************************************************************************/
|
||||
|
|
|
@ -423,10 +423,17 @@ private:
|
|||
uint32_t refCnt = 0; //reference count
|
||||
Key key;
|
||||
|
||||
protected:
|
||||
RenderRegion vport; //viewport
|
||||
|
||||
public:
|
||||
//common implementation
|
||||
uint32_t ref();
|
||||
uint32_t unref();
|
||||
RenderRegion viewport();
|
||||
bool viewport(const RenderRegion& vp);
|
||||
|
||||
//main features
|
||||
virtual ~RenderMethod() {}
|
||||
virtual bool preUpdate() = 0;
|
||||
virtual RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) = 0;
|
||||
|
@ -438,8 +445,6 @@ public:
|
|||
virtual bool postRender() = 0;
|
||||
virtual void dispose(RenderData data) = 0;
|
||||
virtual RenderRegion region(RenderData data) = 0;
|
||||
virtual RenderRegion viewport() = 0;
|
||||
virtual bool viewport(const RenderRegion& vp) = 0;
|
||||
virtual bool blend(BlendMethod method) = 0;
|
||||
virtual ColorSpace colorSpace() = 0;
|
||||
virtual const RenderSurface* mainSurface() = 0;
|
||||
|
@ -447,10 +452,12 @@ public:
|
|||
virtual bool clear() = 0;
|
||||
virtual bool sync() = 0;
|
||||
|
||||
//compositions
|
||||
virtual RenderCompositor* target(const RenderRegion& region, ColorSpace cs, CompositionFlag flags) = 0;
|
||||
virtual bool beginComposite(RenderCompositor* cmp, MaskMethod method, uint8_t opacity) = 0;
|
||||
virtual bool endComposite(RenderCompositor* cmp) = 0;
|
||||
|
||||
//post effects
|
||||
virtual void prepare(RenderEffect* effect, const Matrix& transform) = 0;
|
||||
virtual bool region(RenderEffect* effect) = 0;
|
||||
virtual bool render(RenderCompositor* cmp, const RenderEffect* effect, bool direct) = 0;
|
||||
|
|
|
@ -146,7 +146,7 @@ RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const
|
|||
}
|
||||
|
||||
// setup fill settings
|
||||
renderDataShape->viewport = mViewport;
|
||||
renderDataShape->viewport = vport;
|
||||
if (flags & RenderUpdateFlag::Gradient && rshape.fill) renderDataShape->renderSettingsShape.update(mContext, rshape.fill);
|
||||
else if (flags & RenderUpdateFlag::Color) renderDataShape->renderSettingsShape.update(mContext, rshape.color);
|
||||
if (rshape.stroke) {
|
||||
|
@ -165,7 +165,7 @@ RenderData WgRenderer::prepare(RenderSurface* surface, RenderData data, const Ma
|
|||
auto renderDataPicture = data ? (WgRenderDataPicture*)data : mRenderDataPicturePool.allocate(mContext);
|
||||
|
||||
// update paint settings
|
||||
renderDataPicture->viewport = mViewport;
|
||||
renderDataPicture->viewport = vport;
|
||||
if (flags & (RenderUpdateFlag::Transform | RenderUpdateFlag::Blend)) {
|
||||
renderDataPicture->renderSettings.update(mContext, transform, surface->cs, opacity);
|
||||
}
|
||||
|
@ -280,18 +280,6 @@ RenderRegion WgRenderer::region(RenderData data)
|
|||
}
|
||||
|
||||
|
||||
RenderRegion WgRenderer::viewport() {
|
||||
return mViewport;
|
||||
}
|
||||
|
||||
|
||||
bool WgRenderer::viewport(const RenderRegion& vp)
|
||||
{
|
||||
mViewport = vp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool WgRenderer::blend(BlendMethod method)
|
||||
{
|
||||
mBlendMethod = method;
|
||||
|
|
|
@ -38,8 +38,6 @@ public:
|
|||
bool postRender() override;
|
||||
void dispose(RenderData data) override;
|
||||
RenderRegion region(RenderData data) override;
|
||||
RenderRegion viewport() override;
|
||||
bool viewport(const RenderRegion& vp) override;
|
||||
bool blend(BlendMethod method) override;
|
||||
ColorSpace colorSpace() override;
|
||||
const RenderSurface* mainSurface() override;
|
||||
|
@ -95,7 +93,6 @@ private:
|
|||
// rendering states
|
||||
RenderSurface mTargetSurface;
|
||||
BlendMethod mBlendMethod{};
|
||||
RenderRegion mViewport{};
|
||||
|
||||
// disposable data list
|
||||
Array<RenderData> mDisposeRenderDatas{};
|
||||
|
|
Loading…
Add table
Reference in a new issue