@@ -80,7 +80,12 @@ def flush(self) -> Image.Image:
8080 return self .image
8181
8282 def render (
83- self , op : str , xy : Coords , pen : Pen | Brush | None , brush : Brush | Pen | None = None
83+ self ,
84+ op : str ,
85+ xy : Coords ,
86+ pen : Pen | Brush | None ,
87+ brush : Brush | Pen | None = None ,
88+ ** kwargs : Any ,
8489 ) -> None :
8590 # handle color arguments
8691 outline = fill = None
@@ -101,35 +106,51 @@ def render(
101106 path .transform (self .transform )
102107 xy = path
103108 # render the item
104- if op == "arc" :
105- self .draw .arc (xy , fill = outline )
106- elif op == "line" :
107- self .draw .line (xy , fill = outline , width = width )
109+ if op in ("arc" , "line" ):
110+ kwargs .setdefault ("fill" , outline )
108111 else :
109- getattr (self .draw , op )(xy , fill = fill , outline = outline )
112+ kwargs .setdefault ("fill" , fill )
113+ kwargs .setdefault ("outline" , outline )
114+ if op == "line" :
115+ kwargs .setdefault ("width" , width )
116+ getattr (self .draw , op )(xy , ** kwargs )
110117
111118 def settransform (self , offset : tuple [float , float ]) -> None :
112119 """Sets a transformation offset."""
113120 (xoffset , yoffset ) = offset
114121 self .transform = (1 , 0 , xoffset , 0 , 1 , yoffset )
115122
116- def arc (self , xy : Coords , pen : Pen | Brush | None , start , end , * options : Any ) -> None :
123+ def arc (
124+ self ,
125+ xy : Coords ,
126+ pen : Pen | Brush | None ,
127+ start : float ,
128+ end : float ,
129+ * options : Any ,
130+ ) -> None :
117131 """
118132 Draws an arc (a portion of a circle outline) between the start and end
119133 angles, inside the given bounding box.
120134
121135 .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.arc`
122136 """
123- self .render ("arc" , xy , pen , start , end , * options )
137+ self .render ("arc" , xy , pen , * options , start = start , end = end )
124138
125- def chord (self , xy : Coords , pen : Pen | Brush | None , start , end , * options : Any ) -> None :
139+ def chord (
140+ self ,
141+ xy : Coords ,
142+ pen : Pen | Brush | None ,
143+ start : float ,
144+ end : float ,
145+ * options : Any ,
146+ ) -> None :
126147 """
127148 Same as :py:meth:`~PIL.ImageDraw2.Draw.arc`, but connects the end points
128149 with a straight line.
129150
130151 .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.chord`
131152 """
132- self .render ("chord" , xy , pen , start , end , * options )
153+ self .render ("chord" , xy , pen , * options , start = start , end = end )
133154
134155 def ellipse (self , xy : Coords , pen : Pen | Brush | None , * options : Any ) -> None :
135156 """
@@ -147,14 +168,21 @@ def line(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None:
147168 """
148169 self .render ("line" , xy , pen , * options )
149170
150- def pieslice (self , xy : Coords , pen : Pen | Brush | None , start , end , * options : Any ) -> None :
171+ def pieslice (
172+ self ,
173+ xy : Coords ,
174+ pen : Pen | Brush | None ,
175+ start : float ,
176+ end : float ,
177+ * options : Any ,
178+ ) -> None :
151179 """
152180 Same as arc, but also draws straight lines between the end points and the
153181 center of the bounding box.
154182
155183 .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.pieslice`
156184 """
157- self .render ("pieslice" , xy , pen , start , end , * options )
185+ self .render ("pieslice" , xy , pen , * options , start = start , end = end )
158186
159187 def polygon (self , xy : Coords , pen : Pen | Brush | None , * options : Any ) -> None :
160188 """
@@ -169,7 +197,7 @@ def polygon(self, xy: Coords, pen: Pen | Brush | None, *options: Any) -> None:
169197 """
170198 self .render ("polygon" , xy , pen , * options )
171199
172- def rectangle (self , xy : Coords , pen : Pen | Brush | None , * options ) -> None :
200+ def rectangle (self , xy : Coords , pen : Pen | Brush | None , * options : Any ) -> None :
173201 """
174202 Draws a rectangle.
175203
0 commit comments