From 6ce55a8aea6ea872e2d9ef70ec46301d7bc9d9a5 Mon Sep 17 00:00:00 2001 From: jesus Date: Fri, 22 Mar 2013 18:28:53 +0000 Subject: [PATCH] =?UTF-8?q?CairoCanvas,=20implements=20text=20rotation,=20?= =?UTF-8?q?from=20Julio=20Jim=C3=A9nez=20Borreguero?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: trunk@40620 - --- components/cairocanvas/cairocanvas.pas | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/components/cairocanvas/cairocanvas.pas b/components/cairocanvas/cairocanvas.pas index 7323d15e4f..c7cfcc7092 100644 --- a/components/cairocanvas/cairocanvas.pas +++ b/components/cairocanvas/cairocanvas.pas @@ -7,7 +7,7 @@ unit CairoCanvas; interface uses - Types, Graphics, GraphMath, LCLType, Classes, SysUtils, Printers, Cairo + Types, Graphics, GraphMath, LCLType, Classes, SysUtils, Printers, Cairo, math {$ifdef pangocairo} ,Pango, PangoCairo, GLib2 {$endif} @@ -537,14 +537,8 @@ end; //Toy interface procedure TCairoPrinterCanvas.SelectFont; -var - h: Integer; begin - if Font.Size > 0 then - h := Font.Size - else - h := Font.Height; - SelectFontEx(Font.Style, Font.Name, h); + SelectFontEx(Font.Style, Font.Name, abs(Font.Size)); SetSourceColor(Font.Color); end; @@ -570,11 +564,23 @@ var e: cairo_font_extents_t; begin Changing; + RequiredState([csHandleValid, csFontValid, csBrushValid]); SelectFont; cairo_font_extents(cr, @e); - cairo_move_to(cr, SX(X), SY(Y)+e.ascent); - cairo_show_text(cr, PChar(Text)); //Reference point is on the base line + if Font.Orientation = 0 then + begin + cairo_move_to(cr, SX(X), SY(Y)+e.ascent); + cairo_show_text(cr, PChar(Text)); //Reference point is on the base line + end + else + begin + cairo_save(cr); + cairo_move_to(cr, SX(X)+e.ascent, SY(Y)); + cairo_rotate(cr, -gradtorad(Font.Orientation)); + cairo_show_text(cr, PChar(Text)); + cairo_restore(cr); + end; Changed; end;