本文整理汇总了C#中Pango类的典型用法代码示例。如果您正苦于以下问题:C# Pango类的具体用法?C# Pango怎么用?C# Pango使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
Pango类属于命名空间,在下文中一共展示了Pango类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Ellipsize
public static string Ellipsize(Pango.Layout layout, string newtext, int bound, int ellipsis_width, int en_width)
{
int width, tmp;
layout.SetText (newtext);
layout.GetPixelSize (out width, out tmp);
if (width < bound)
return newtext;
if (bound <= ellipsis_width)
return ellipsis;
string ellipsized = "";
int i = 0;
i = (bound - ellipsis_width) / (en_width);
if (i >= newtext.Length)
i = 0;
ellipsized = newtext.Substring (0, i);
while (true)
{
ellipsized = ellipsized + newtext[i];
layout.SetText (ellipsized);
layout.GetPixelSize (out width, out tmp);
if (i == newtext.Length - 1) {
ellipsized = "";
i = 0;
continue;
}
if (width > bound - ellipsis_width)
break;
i++;
}
ellipsized = ellipsized.Remove (ellipsized.Length - 1, 1);
ellipsized += ellipsis;
return ellipsized;
}
示例2: FormattedTextImpl
public FormattedTextImpl(
Pango.Context context,
string text,
string fontFamily,
double fontSize,
FontStyle fontStyle,
TextAlignment textAlignment,
FontWeight fontWeight)
{
Contract.Requires<ArgumentNullException>(context != null);
Contract.Requires<ArgumentNullException>(text != null);
Layout = new Pango.Layout(context);
_text = text;
Layout.SetText(text);
Layout.FontDescription = new Pango.FontDescription
{
Family = fontFamily,
Size = Pango.Units.FromDouble(CorrectScale(fontSize)),
Style = (Pango.Style)fontStyle,
Weight = fontWeight.ToCairo()
};
Layout.Alignment = textAlignment.ToCairo();
Layout.Attributes = new Pango.AttrList();
}
示例3: DrawHorizontalSectionIndicator
protected void DrawHorizontalSectionIndicator(string text, Cairo.Context cr, Pango.Layout layout, double x, double y, double w, out double h)
{
cr.MoveTo(x,y);
cr.LineTo(x,y+SectionSerifeWidth*2);
cr.MoveTo(x,y+SectionSerifeWidth);
cr.LineTo(x+w,y+SectionSerifeWidth);
cr.MoveTo(x+w,y);
cr.LineTo(x+w,y+SectionSerifeWidth*2);
cr.Color = new Cairo.Color(0, 0, 0);
cr.LineWidth = 1;
cr.Stroke();
layout.Width = (int)(w*Pango.Scale.PangoScale);
layout.Alignment = Pango.Alignment.Center;
layout.SetText (text);
layout.Ellipsize = EllipsizeMode.Middle;
layout.Justify = true;
cr.Color = new Cairo.Color(0, 0, 0);
cr.MoveTo(x,y+SectionSerifeWidth*2);
Pango.CairoHelper.ShowLayout (cr, layout);
int lw,lh;
layout.GetPixelSize(out lw, out lh);
h=(double)lh+SectionSerifeWidth*2;
}
示例4: Write
public static void Write(BinaryWriter file, Pango.Rectangle box)
{
file.Write(box.X);
file.Write(box.Y);
file.Write(box.Width);
file.Write(box.Height);
}
示例5: Layout
public Layout (Pango.Context context) : base (IntPtr.Zero)
{
if (GetType () != typeof (Layout)) {
throw new InvalidOperationException ("Can't override this constructor.");
}
Raw = pango_layout_new(context == null ? IntPtr.Zero : context.Handle);
}
示例6: Draw
public override void Draw (TextEditor editor, Cairo.Context cr, Pango.Layout layout, bool selected, int startOffset, int endOffset, double y, double startXPos, double endXPos)
{
int markerStart = LineSegment.Offset + System.Math.Max (StartCol - 1, 0);
int markerEnd = LineSegment.Offset + (EndCol < 1 ? LineSegment.Length : EndCol - 1);
if (markerEnd < startOffset || markerStart > endOffset)
return;
bool drawOverlay = result.InspectionMark == IssueMarker.GrayOut;
if (drawOverlay && editor.IsSomethingSelected) {
var selectionRange = editor.SelectionRange;
if (selectionRange.Contains (markerStart) && selectionRange.Contains (markerEnd))
return;
if (selectionRange.Contains (markerEnd))
markerEnd = selectionRange.Offset;
if (selectionRange.Contains (markerStart))
markerStart = selectionRange.EndOffset;
if (markerEnd <= markerStart)
return;
}
double drawFrom;
double drawTo;
if (markerStart < startOffset && endOffset < markerEnd) {
drawFrom = startXPos;
drawTo = endXPos;
} else {
int start = startOffset < markerStart ? markerStart : startOffset;
int end = endOffset < markerEnd ? endOffset : markerEnd;
int /*lineNr,*/ x_pos;
x_pos = layout.IndexToPos (start - startOffset).X;
drawFrom = startXPos + (int)(x_pos / Pango.Scale.PangoScale);
x_pos = layout.IndexToPos (end - startOffset).X;
drawTo = startXPos + (int)(x_pos / Pango.Scale.PangoScale);
}
drawFrom = System.Math.Max (drawFrom, editor.TextViewMargin.XOffset);
drawTo = System.Math.Max (drawTo, editor.TextViewMargin.XOffset);
if (drawFrom >= drawTo)
return;
double height = editor.LineHeight / 5;
cr.Color = ColorName == null ? Color : editor.ColorStyle.GetColorFromDefinition (ColorName);
if (drawOverlay) {
cr.Rectangle (drawFrom, y, drawTo - drawFrom, editor.LineHeight);
var color = editor.ColorStyle.Default.CairoBackgroundColor;
color.A = 0.6;
cr.Color = color;
cr.Fill ();
} else if (Wave) {
Pango.CairoHelper.ShowErrorUnderline (cr, drawFrom, y + editor.LineHeight - height, drawTo - drawFrom, height);
} else {
cr.MoveTo (drawFrom, y + editor.LineHeight - 1);
cr.LineTo (drawTo, y + editor.LineHeight - 1);
cr.Stroke ();
}
}
示例7: RenderPlaceholderText
internal static void RenderPlaceholderText (Gtk.Entry entry, Gtk.ExposeEventArgs args, string placeHolderText, ref Pango.Layout layout)
{
// The Entry's GdkWindow is the top level window onto which
// the frame is drawn; the actual text entry is drawn into a
// separate window, so we can ensure that for themes that don't
// respect HasFrame, we never ever allow the base frame drawing
// to happen
if (args.Event.Window == entry.GdkWindow)
return;
if (entry.Text.Length > 0)
return;
if (layout == null) {
layout = new Pango.Layout (entry.PangoContext);
layout.FontDescription = entry.PangoContext.FontDescription.Copy ();
}
int wh, ww;
args.Event.Window.GetSize (out ww, out wh);
int width, height;
layout.SetText (placeHolderText);
layout.GetPixelSize (out width, out height);
using (var gc = new Gdk.GC (args.Event.Window)) {
gc.Copy (entry.Style.TextGC (Gtk.StateType.Normal));
Color color_a = entry.Style.Base (Gtk.StateType.Normal).ToXwtValue ();
Color color_b = entry.Style.Text (Gtk.StateType.Normal).ToXwtValue ();
gc.RgbFgColor = color_b.BlendWith (color_a, 0.5).ToGtkValue ();
args.Event.Window.DrawLayout (gc, 2, (wh - height) / 2 + 1, layout);
}
}
示例8: AddTag
/// <summary>
/// Adds a tag to a text buffer.
/// </summary>
public static void AddTag(this TextBuffer buff, string tagName, string foreground, string family, Pango.Style style)
{
TextTag tag = new TextTag(tagName);
tag.Foreground = foreground;
tag.Family = family;
tag.Style = style;
buff.TagTable.Add(tag);
}
示例9: GetRange
public void GetRange (out int start, out int len, out Pango.Script script)
{
IntPtr start_ptr;
IntPtr end_ptr;
pango_script_iter_get_range (Handle, out start_ptr, out end_ptr, out script);
start = (int)g_utf8_pointer_to_offset (native_text, start_ptr);
len = (int)g_utf8_pointer_to_offset (start_ptr, end_ptr);
}
示例10: GetGlyphExtents
public void GetGlyphExtents(uint glyph, Pango.Rectangle ink_rect, Pango.Rectangle logical_rect) {
IntPtr native_ink_rect = GLib.Marshaller.StructureToPtrAlloc (ink_rect);
IntPtr native_logical_rect = GLib.Marshaller.StructureToPtrAlloc (logical_rect);
pango_font_get_glyph_extents(Handle, glyph, native_ink_rect, native_logical_rect);
ink_rect = Pango.Rectangle.New (native_ink_rect);
Marshal.FreeHGlobal (native_ink_rect);
logical_rect = Pango.Rectangle.New (native_logical_rect);
Marshal.FreeHGlobal (native_logical_rect);
}
示例11: LayoutProxy
public LayoutProxy (LayoutCache layoutCache, Pango.Layout layout)
{
if (layoutCache == null)
throw new ArgumentNullException ("layoutCache");
if (layout == null)
throw new ArgumentNullException ("layout");
this.layoutCache = layoutCache;
this.layout = layout;
}
示例12: GetExtents
public void GetExtents(ref Pango.Rectangle ink_rect, ref Pango.Rectangle logical_rect) {
IntPtr native_ink_rect = GLib.Marshaller.StructureToPtrAlloc (ink_rect);
IntPtr native_logical_rect = GLib.Marshaller.StructureToPtrAlloc (logical_rect);
pango_layout_line_get_extents(Handle, native_ink_rect, native_logical_rect);
ink_rect = Pango.Rectangle.New (native_ink_rect);
Marshal.FreeHGlobal (native_ink_rect);
logical_rect = Pango.Rectangle.New (native_logical_rect);
Marshal.FreeHGlobal (native_logical_rect);
}
示例13: ExtentsRange
public void ExtentsRange(int start, int end, Pango.Font font, Pango.Rectangle ink_rect, Pango.Rectangle logical_rect) {
IntPtr native_ink_rect = GLib.Marshaller.StructureToPtrAlloc (ink_rect);
IntPtr native_logical_rect = GLib.Marshaller.StructureToPtrAlloc (logical_rect);
pango_glyph_string_extents_range(Handle, start, end, font == null ? IntPtr.Zero : font.Handle, native_ink_rect, native_logical_rect);
ink_rect = Pango.Rectangle.New (native_ink_rect);
Marshal.FreeHGlobal (native_ink_rect);
logical_rect = Pango.Rectangle.New (native_logical_rect);
Marshal.FreeHGlobal (native_logical_rect);
}
示例14: GetClusterExtents
public void GetClusterExtents(out Pango.Rectangle ink_rect, out Pango.Rectangle logical_rect) {
IntPtr native_ink_rect = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Pango.Rectangle)));
IntPtr native_logical_rect = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (Pango.Rectangle)));
pango_layout_iter_get_cluster_extents(Handle, native_ink_rect, native_logical_rect);
ink_rect = Pango.Rectangle.New (native_ink_rect);
Marshal.FreeHGlobal (native_ink_rect);
logical_rect = Pango.Rectangle.New (native_logical_rect);
Marshal.FreeHGlobal (native_logical_rect);
}
示例15: CopyModified
public static FontDescription CopyModified(this FontDescription font, double? scale = null, Pango.Weight? weight = null)
{
font = font.Copy ();
if (scale.HasValue)
Scale (font, scale.Value);
if (weight.HasValue)
font.Weight = weight.Value;
return font;
}