png: handle 9-patch ends with stretch

Summary:
The strech region has paired information; total and strechable.
Refer to function _strech_region_load retrieving strech region info.

But if 9-patch information line ends with strechable,
png did not push the strechable information.
And it leads to devide by zero.

This patch is adding strechable info to the strech region,
if 9-patch information ends with strechable.

Test Plan:
[Code]
{F4219278}
{F4219280}

[Test]
ECORE_EVAS_ENGINE=opengl_x11 ./evas-image-9patch ./end_with_strech.9.png

Reviewers: Hermet, jsuya, herb, cedric

Reviewed By: Hermet

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12204
This commit is contained in:
Shinwoo Kim 2020-12-07 16:52:54 +09:00
parent 1aef7c697a
commit 25dba9ebcf
1 changed files with 14 additions and 0 deletions

View File

@ -473,6 +473,13 @@ evas_image_load_file_head_with_data_png(void *loader_data,
evas_loader_helper_stretch_region_push(&prop->stretch.horizontal.region,
&current, stretchable);
}
// End with strechable, add length info
if (stretchable)
{
evas_loader_helper_stretch_region_push(&prop->stretch.horizontal.region,
&current, stretchable);
stretchable = !stretchable;
}
current = 0;
@ -513,6 +520,13 @@ evas_image_load_file_head_with_data_png(void *loader_data,
evas_loader_helper_stretch_region_push(&prop->stretch.vertical.region,
&current, stretchable);
}
// End with strechable, add length info
if (stretchable)
{
evas_loader_helper_stretch_region_push(&prop->stretch.vertical.region,
&current, stretchable);
stretchable = !stretchable;
}
// Content zone is optional, if not provided, we should use the one we guessed
if (prop->content.x == 0 || prop->content.y == 0)