svg_loader: _applySvgViewFlag refactored

This commit is contained in:
Mira Grudzinska 2023-04-17 13:37:16 +02:00 committed by Hermet Park
parent 158e36f7c9
commit e61857f27d

View file

@ -756,19 +756,23 @@ static unique_ptr<Scene> _sceneBuildHelper(const SvgNode* node, const Box& vBox,
static void _applySvgViewFlag(const Scene* scene, float& vx, float& vy, float& vw, float& vh, float& w, float& h, SvgViewFlag viewFlag)
{
if (!((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Viewbox)) {
bool noViewbox = !((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Viewbox);
bool noWidth = !((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Width);
bool noHeight = !((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Height);
if (noViewbox) {
float x, y;
scene->bounds(&x, &y, &vw, &vh, false);
if (!((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Width) && !((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Height)) {
if (noWidth && noHeight) {
vx = x;
vy = y;
} else {
if ((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Width) vw = w;
if ((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Height) vh = h;
vw = noWidth ? vw : w;
vh = noHeight ? vh : h;
}
}
if (!((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Width)) w = vw;
if (!((uint32_t)viewFlag & (uint32_t)SvgViewFlag::Height)) h = vh;
w = noWidth ? vw : w;
h = noHeight ? vh : h;
}
/************************************************************************/