|
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.
|