+ if (x1e!=0) // maybe draw left edge
+ {
+ surface_pen.move_to(x1-1,y1-1);
+ if (y1e!=0) // maybe draw top left pixel
+ {
+ surface_pen.set_alpha(x1e*y1e);
+ surface_pen.put_value(color);
+ }
+ surface_pen.inc_y();
+ surface_pen.set_alpha(x1e);
+ for(int i=y1; i<y2; i++) // maybe draw pixels along the left edge
+ {
+ surface_pen.put_value(color);
+ surface_pen.inc_y();
+ }
+ if (y2e!=0) // maybe draw bottom left pixel
+ {
+ surface_pen.set_alpha(x1e*y2e);
+ surface_pen.put_value(color);
+ }
+ surface_pen.inc_x();
+ }
+ else
+ surface_pen.move_to(x1,y2);
+
+ if (y2e!=0) // maybe draw bottom edge
+ {
+ surface_pen.set_alpha(y2e);
+ for(int i=x1; i<x2; i++) // maybe draw pixels along the bottom edge
+ {
+ surface_pen.put_value(color);
+ surface_pen.inc_x();
+ }
+ if (x2e!=0) // maybe draw bottom right pixel
+ {
+ surface_pen.set_alpha(x2e*y2e);
+ surface_pen.put_value(color);
+ }
+ surface_pen.dec_y();
+ }
+ else
+ surface_pen.move_to(x2,y2-1);
+
+ if (x2e!=0) // maybe draw right edge
+ {
+ surface_pen.set_alpha(x2e);
+ for(int i=y1; i<y2; i++) // maybe draw pixels along the right edge
+ {
+ surface_pen.put_value(color);
+ surface_pen.dec_y();
+ }
+ if (y1e!=0) // maybe draw top right pixel
+ {
+ surface_pen.set_alpha(x2e*y1e);
+ surface_pen.put_value(color);
+ }
+ surface_pen.dec_x();
+ }
+ else
+ surface_pen.move_to(x2-1,y1-1);
+
+ if (y1e!=0) // maybe draw top edge
+ {
+ surface_pen.set_alpha(y1e);
+ for(int i=x1; i<x2; i++) // maybe draw pixels along the top edge
+ {
+ surface_pen.put_value(color);
+ surface_pen.dec_x();
+ }
+ }