@@ -91,8 +91,8 @@ def __init__(self):
91
91
self .is_mirrored = 0
92
92
93
93
self ._points_count = 0
94
- self ._xy_points = []
95
- self ._uv_points = []
94
+ self ._xy_points : List [ Point ] = []
95
+ self ._uv_points : List [ Point ] = []
96
96
self ._transformed_points : List [Point ] or None = None
97
97
98
98
self .texture = None
@@ -128,19 +128,32 @@ def load(self, swf, tag: int):
128
128
def render (self ):
129
129
self ._transformed_points = self ._xy_points
130
130
131
- width , height = get_size (* self .get_sides ())
131
+ left , top , right , bottom = self .get_sides ()
132
+ width , height = get_size (left , top , right , bottom )
132
133
width , height = max (width , 1 ), max (height , 1 )
133
134
134
135
self .rotation , self .is_mirrored = self .calculate_rotation (True )
135
136
136
137
rendered_region = self .get_image ()
138
+ if sum (rendered_region .size ) == 2 :
139
+ fill_color = rendered_region .getpixel ((0 , 0 ))
140
+
141
+ # noinspection PyTypeChecker
142
+ rendered_polygon = Image .new (rendered_region .mode , (width , height ))
143
+ drawable_image = ImageDraw .Draw (rendered_polygon )
144
+ drawable_image .polygon (
145
+ [(point .x - left , point .y - top ) for point in self ._transformed_points ],
146
+ fill = fill_color
147
+ )
148
+ return rendered_polygon
149
+
137
150
rendered_region = rendered_region .rotate (- self .rotation , expand = True )
138
151
if self .is_mirrored :
139
152
rendered_region = rendered_region .transpose (Image .FLIP_LEFT_RIGHT )
140
153
rendered_region = rendered_region .resize ((width , height ), Image .ANTIALIAS )
141
154
return rendered_region
142
155
143
- def get_image (self ):
156
+ def get_image (self ) -> Image :
144
157
img_mask = Image .new ('L' , (self .texture .width , self .texture .height ), 0 )
145
158
146
159
color = 255
0 commit comments