2
// TextLayoutBackendHandler.cs
5
// Lluis Sanchez <lluis@xamarin.com>
6
// Lytico (http://limada.sourceforge.net)
8
// Copyright (c) 2011 Xamarin Inc
10
// Permission is hereby granted, free of charge, to any person obtaining a copy
11
// of this software and associated documentation files (the "Software"), to deal
12
// in the Software without restriction, including without limitation the rights
13
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
// copies of the Software, and to permit persons to whom the Software is
15
// furnished to do so, subject to the following conditions:
17
// The above copyright notice and this permission notice shall be included in
18
// all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
32
using Xwt.CairoBackend;
34
namespace Xwt.GtkBackend
36
public class TextLayoutBackendHandler: ITextLayoutBackendHandler
38
static Cairo.Context SharedContext;
40
public double Heigth = -1;
42
static TextLayoutBackendHandler ()
44
Cairo.Surface sf = new Cairo.ImageSurface (Cairo.Format.ARGB32, 1, 1);
45
SharedContext = new Cairo.Context (sf);
48
public object Create (Context context)
50
CairoContextBackend c = (CairoContextBackend) WidgetRegistry.GetBackend (context);
51
return Pango.CairoHelper.CreateLayout (c.Context);
54
public object Create (ICanvasBackend canvas)
56
return Pango.CairoHelper.CreateLayout (SharedContext);
59
public void SetText (object backend, string text)
61
Pango.Layout tl = (Pango.Layout) backend;
65
public void SetFont (object backend, Xwt.Drawing.Font font)
67
Pango.Layout tl = (Pango.Layout)backend;
68
tl.FontDescription = (Pango.FontDescription)WidgetRegistry.GetBackend (font);
71
public void SetWidth (object backend, double value)
73
Pango.Layout tl = (Pango.Layout)backend;
74
tl.Width = (int) (value * Pango.Scale.PangoScale);
77
public void SetHeight (object backend, double value)
82
public void SetTrimming (object backend, TextTrimming textTrimming)
84
Pango.Layout tl = (Pango.Layout)backend;
85
if (textTrimming == TextTrimming.WordElipsis)
86
tl.Ellipsize = Pango.EllipsizeMode.End;
87
if (textTrimming == TextTrimming.Word)
88
tl.Ellipsize = Pango.EllipsizeMode.None;
92
public Size GetSize (object backend)
94
Pango.Layout tl = (Pango.Layout) backend;
96
tl.GetPixelSize (out w, out h);
97
return new Size ((double)w, (double)h);