mirror of
https://github.com/thorvg/thorvg.git
synced 2025-07-26 16:16:46 +00:00
wg_engine: fix stroke update
The stroke was not updated because the update function handled flags related to the color/gradient only.
This commit is contained in:
parent
6c4a74e7f1
commit
4e98f12743
3 changed files with 54 additions and 49 deletions
|
@ -223,10 +223,8 @@ void WgImageData::release(WgContext& context)
|
|||
// WgRenderSettings
|
||||
//***********************************************************************
|
||||
|
||||
void WgRenderSettings::update(WgContext& context, const Fill* fill, const RenderColor& c, const RenderUpdateFlag flags)
|
||||
void WgRenderSettings::updateFill(WgContext& context, const Fill* fill)
|
||||
{
|
||||
// setup fill properties
|
||||
if ((flags & (RenderUpdateFlag::Gradient)) && fill) {
|
||||
rasterType = WgRenderRasterType::Gradient;
|
||||
// get gradient transfrom matrix
|
||||
Matrix invFillTransform;
|
||||
|
@ -260,7 +258,11 @@ void WgRenderSettings::update(WgContext& context, const Fill* fill, const Render
|
|||
sampler, texViewGradient, bufferGroupGradient, bufferGroupTransfromGrad);
|
||||
}
|
||||
skip = false;
|
||||
} else if ((flags & RenderUpdateFlag::Color) && !fill) {
|
||||
};
|
||||
|
||||
|
||||
void WgRenderSettings::updateColor(WgContext& context, const RenderColor& c)
|
||||
{
|
||||
rasterType = WgRenderRasterType::Solid;
|
||||
WgShaderTypeVec4f solidColor(c);
|
||||
if (context.allocateBufferUniform(bufferGroupSolid, &solidColor, sizeof(solidColor))) {
|
||||
|
@ -269,7 +271,6 @@ void WgRenderSettings::update(WgContext& context, const Fill* fill, const Render
|
|||
}
|
||||
fillType = WgRenderSettingsType::Solid;
|
||||
skip = (c.a == 0);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -89,7 +89,8 @@ struct WgRenderSettings
|
|||
WgRenderRasterType rasterType{};
|
||||
bool skip{};
|
||||
|
||||
void update(WgContext& context, const Fill* fill, const RenderColor& c, const RenderUpdateFlag flags);
|
||||
void updateFill(WgContext& context, const Fill* fill);
|
||||
void updateColor(WgContext& context, const RenderColor& c);
|
||||
void release(WgContext& context);
|
||||
};
|
||||
|
||||
|
|
|
@ -160,9 +160,12 @@ RenderData WgRenderer::prepare(const RenderShape& rshape, RenderData data, const
|
|||
// setup fill settings
|
||||
renderDataShape->viewport = mViewport;
|
||||
renderDataShape->opacity = opacity;
|
||||
renderDataShape->renderSettingsShape.update(mContext, rshape.fill, rshape.color, flags);
|
||||
if (rshape.stroke)
|
||||
renderDataShape->renderSettingsStroke.update(mContext, rshape.stroke->fill, rshape.stroke->color, flags);
|
||||
if (flags & RenderUpdateFlag::Gradient && rshape.fill) renderDataShape->renderSettingsShape.updateFill(mContext, rshape.fill);
|
||||
else if (flags & RenderUpdateFlag::Color) renderDataShape->renderSettingsShape.updateColor(mContext, rshape.color);
|
||||
if (rshape.stroke) {
|
||||
if (flags & RenderUpdateFlag::GradientStroke && rshape.stroke->fill) renderDataShape->renderSettingsStroke.updateFill(mContext, rshape.stroke->fill);
|
||||
else if (flags & RenderUpdateFlag::Stroke) renderDataShape->renderSettingsStroke.updateColor(mContext, rshape.stroke->color);
|
||||
}
|
||||
|
||||
// store clips data
|
||||
renderDataShape->updateClips(clips);
|
||||
|
|
Loading…
Add table
Reference in a new issue