I have written generic Point classes, line/line intersection algorithms and Layer administration code more times than I can remember. I don't like menial programming, so this is effectively my code library. But you can use it too!
The language used is Processing, which is a mostly-Java-syntax language. I hardly ever use Java-specific ninja code, so rewriting any of these snippets to your favourite language is less than a minute's worth of work, typically.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29  | final float CIRCLE_ARC = 4.0 * (sqrt(2)-1)/3.0;
void setup() {
  size(600,600);
  noLoop();
}
void draw() {
  roundrect(10,10,width-20,height-20,50,CIRCLE_ARC);
}
/**
 * Draw a rounded rect using bezier corners.
 * k controls the tightness of the rounded corner.
 */
void roundrect(float x, float y, float w, float h, float r, float k) {
  float xw=x+w, yh=y+h, xr=x+r, yr=y+r, mk=1-k, km=k-1;
  beginShape();
  vertex(xr, y);
  vertex(xw-r, y);
  bezierVertex(xw + km*r, y, xw, y + mk*r, xw, yr);
  vertex(xw, yh-r);
  bezierVertex(xw, yh + km*r, xw + km*r, yh, xw-r, yh);
  vertex(xr, yh);
  bezierVertex(x + mk*r, yh, x, yh + km*r, x, yh-r);
  vertex(x, yr);
  bezierVertex(x, y + mk*r, x + mk*r, y, xr, y);
  endShape(CLOSE);
} | 
Written and maintained by Mike "Pomax" Kamermans. All code snippets on this site are "do whatever you want with it" licensed.