-/* HRGN Buffer;
- Buffer = CreateEllipticRgn( x, y, x + w, y + h );
- CombineRgn( Rgn, Buffer, Rgn, 0x2 );
- DeleteObject( Buffer );*/
- /*FIXME*/
+ GdkRegion *Buffer;
+ GdkRectangle rect;
+ rect.height = 1;
+
+ double ex, ey;
+ double a = w / 2;
+ double b = h / 2;
+
+ if( !a || !b )
+ return;
+
+ for( ey = 0; ey < h; ey++ )
+ {
+ // Calculate coords
+ ex = a * sqrt( 1 - ey * ey / ( b * b ) );
+
+ // Upper line
+ rect.x = (gint)( x + a - ex );
+ rect.y = (gint)( y + b - ey );
+ rect.width = (gint)( 2 * ex );
+ Buffer = gdk_region_rectangle( &rect );
+ gdk_region_union( Rgn, Buffer );
+ gdk_region_destroy( Buffer );
+
+ // Lower line
+ rect.y = (gint)( y + b + ey );
+ Buffer = gdk_region_rectangle( &rect );
+ gdk_region_union( Rgn, Buffer );
+ gdk_region_destroy( Buffer );
+ }