%!
% draw rectangle with rounded corner : x y width height radius
/rectar {
4 index 3 index 2 div add % x y w h r (x + w/2)
4 index % x y w h r x y
moveto % x y w h r
4 index 3 index add 4 index % x y w h r x2 y2
1 index 1 index 5 index neg add % x y w h r x2 y2 x3 y3
4 index % x y w h r x2 y2 x3 y3 r
arcto 4 {pop} repeat % x y w h r
4 index 3 index add % x y w h r x3
4 index 3 index neg add % x y w h r x3 y3
6 index 1 index % x y w h r x3 y3 x4 y4
4 index % x y w h r x3 y3 x4 y4 r
arcto 4 {pop} repeat % x y w h r
4 index 4 index 3 index neg add % x y w h r x4 y4
6 index 6 index % x y w h r x4 y4 x y
4 index
arcto 4 {pop} repeat % x y w h r
4 index 4 index % x y w h r x y
1 index 5 index add 1 index % x y w h r x y x2 y2
4 index
arcto 4 {pop} repeat % x y w h r
closepath
5 {pop} repeat % clean stack
stroke
} def
/wid 10 def
wid setlinewidth
/x 400 def
/y 400 def
/dx 100 def
/dy 50 def
/rad wid def
x y dx dy rad rectar
showpage