From: <hba...@us...> - 2009-07-18 23:13:14
|
Revision: 10159 http://plplot.svn.sourceforge.net/plplot/?rev=10159&view=rev Author: hbabcock Date: 2009-07-18 23:13:11 +0000 (Sat, 18 Jul 2009) Log Message: ----------- Fix text clipping so that it handles plots w/ arbitrary rotations Modified Paths: -------------- trunk/drivers/cairo.c Modified: trunk/drivers/cairo.c =================================================================== --- trunk/drivers/cairo.c 2009-07-18 18:03:49 UTC (rev 10158) +++ trunk/drivers/cairo.c 2009-07-18 23:13:11 UTC (rev 10159) @@ -589,7 +589,7 @@ { int textXExtent, textYExtent; char *textWithPangoMarkup; - PLFLT rotation, shear, stride, cos_rot, sin_rot, cos_shear, sin_shear; + PLFLT rotation, shear, stride, cos_rot, sin_rot, cos_shear, sin_shear, diorot_rad; cairo_matrix_t *cairoTransformMatrix; cairo_font_options_t *cairoFontOptions; PangoContext *context; @@ -617,15 +617,25 @@ pango_layout_context_changed(layout); cairo_font_options_destroy(cairoFontOptions); - /* Save current transform matrix & clipping region */ - cairo_save(aStream->cairoContext); - /* Set up the clipping region if we are doing text clipping */ if(aStream->text_clipping){ + cairo_save(aStream->cairoContext); + diorot_rad = pls->diorot * 2.0/3.14159; + rotate_cairo_surface(pls, + cos(diorot_rad), + sin(diorot_rad), + -sin(diorot_rad), + cos(diorot_rad), + 0.5 * pls->xlength, + 0.5 * pls->ylength); cairo_rectangle(aStream->cairoContext, aStream->downscale * pls->clpxmi, aStream->downscale * pls->clpymi, aStream->downscale * (pls->clpxma - pls->clpxmi), aStream->downscale * (pls->clpyma - pls->clpymi)); cairo_clip(aStream->cairoContext); + cairo_restore(aStream->cairoContext); } + /* Save current transform matrix & clipping region */ + cairo_save(aStream->cairoContext); + /* Move to the string reference point */ cairo_move_to(aStream->cairoContext, aStream->downscale * (double) args->x, aStream->downscale * (double) args->y); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |