[cairo] Serious concerns about cairo
Bill Spitzak
spitzak at d2.com
Tue Sep 26 17:04:54 PDT 2006
Behdad Esfahbod wrote:
> Can you elaborate? What is the area-preserving box? What we currently
> return is the bounding box of the rotated glyph bounding box.
The returned box has the same area as the transformed bounding box, and
should circumscribe the ellipse that results from transforming an
ellipse inscribed in the input bounding box.
This is some math I am using, but I don't think it is correct, as it is
not a continuous function. It does produce the correct area:
* Transform the vectors w,0 and 0,h to the output space as vectors A and B.
float dot = A.x*B.y-A.y*B.x;
float W = A.x*A.x+B.x*B.x;
float H = A.y*A.y+B.y*B.y;
if (W > H) {
W = sqrt(W);
H = absf(dot/W);
} else if (H > 0) {
H = sqrt(H);
W = absf(dot/H);
} else {
W = H = 0;
}
* Transform the center point x,y of the bounding box to output space as X,Y.
* output bounding box corners are (X-W/2,Y-H/2),(X+W/2,Y+H/2)
More information about the cairo
mailing list