Parse <svg> percentage width for automatic sizing
Instead of calculating percentage coordinates relative to 1px, we calculate them relative to 0px width, that way an explicit <svg width="100%"> will be converted to <svg width="0px"> and trigger the bounding-box sizing calculation.
This commit is contained in:
parent
1f17a7ecea
commit
d6eabf29c9
@ -2494,9 +2494,9 @@ static void nsvg__parseSVG(NSVGparser* p, const char** attr)
|
|||||||
for (i = 0; attr[i]; i += 2) {
|
for (i = 0; attr[i]; i += 2) {
|
||||||
if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
|
if (!nsvg__parseAttr(p, attr[i], attr[i + 1])) {
|
||||||
if (strcmp(attr[i], "width") == 0) {
|
if (strcmp(attr[i], "width") == 0) {
|
||||||
p->image->width = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 1.0f);
|
p->image->width = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f);
|
||||||
} else if (strcmp(attr[i], "height") == 0) {
|
} else if (strcmp(attr[i], "height") == 0) {
|
||||||
p->image->height = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 1.0f);
|
p->image->height = nsvg__parseCoordinate(p, attr[i + 1], 0.0f, 0.0f);
|
||||||
} else if (strcmp(attr[i], "viewBox") == 0) {
|
} else if (strcmp(attr[i], "viewBox") == 0) {
|
||||||
sscanf(attr[i + 1], "%f%*[%%, \t]%f%*[%%, \t]%f%*[%%, \t]%f", &p->viewMinx, &p->viewMiny, &p->viewWidth, &p->viewHeight);
|
sscanf(attr[i + 1], "%f%*[%%, \t]%f%*[%%, \t]%f%*[%%, \t]%f", &p->viewMinx, &p->viewMiny, &p->viewWidth, &p->viewHeight);
|
||||||
} else if (strcmp(attr[i], "preserveAspectRatio") == 0) {
|
} else if (strcmp(attr[i], "preserveAspectRatio") == 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user