<Type Name="LayoutLine" FullName="Pango.LayoutLine">
  <TypeSignature Language="C#" Value="public sealed struct LayoutLine;" Maintainer="auto" />
  <AssemblyInfo>
    <AssemblyName>pango-sharp</AssemblyName>
    <AssemblyPublicKey>
    </AssemblyPublicKey>
    <AssemblyVersion>0.0.0.0</AssemblyVersion>
    <AssemblyCulture>neutral</AssemblyCulture>
    <Attributes />
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>Represents one of the lines resulting from laying out a paragraph via <see cref="T:Pango.Layout" />.</summary>
    <remarks>
      <see cref="T:Pango.LayoutLine" />s are obtained by calling <see cref="M:Pango.Layout.GetLine(System.Int32)" /> and are only valid until the text, attributes, or settings of the parent <see cref="T:Pango.Layout" /> are modified.</remarks>
  </Docs>
  <Base>
    <BaseTypeName>GLib.Opaque</BaseTypeName>
  </Base>
  <Interfaces />
  <Attributes />
  <Members>
    <Member MemberName="Ref">
      <MemberSignature Language="C#" Value="public void Ref ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Increases the reference count of a <see cref="T:Pango.LayoutLine" /> by one.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Unref">
      <MemberSignature Language="C#" Value="public void Unref ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Decreases the reference count of a <see cref="T:Pango.LayoutLine" /> by one.</summary>
        <remarks>If the result is zero, the line and all associated memory will be freed.</remarks>
      </Docs>
    </Member>
    <Member MemberName="XToIndex">
      <MemberSignature Language="C#" Value="public bool XToIndex (int x_pos, out int index_, out int trailing);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="x_pos" Type="System.Int32" />
        <Parameter Name="index_" Type="System.Int32&amp;" RefType="out" />
        <Parameter Name="trailing" Type="System.Int32&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <summary>Converts from x offset to the byte index of the corresponding character within the text of the layout.</summary>
        <param name="x_pos"> the x offset (in <see cref="T:Pango.GlyphUnit" />) from the left edge of the line.</param>
        <param name="index_"> location to store calculated byte offset for the grapheme in which the user clicked.</param>
        <param name="trailing"> location to store a integer indicating where in the grapheme the user clicked. It will either be zero, or the number of characters in the grapheme. 0 represents the trailing edge of the cluster.</param>
        <returns>
          <see langword="false" /> if x_pos was outside the line, <see langword="true" /> if inside</returns>
        <remarks>If <paramref name="x_pos" /> is outside the line, the start or end of the line will be stored at <paramref name="index_" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetExtents">
      <MemberSignature Language="C#" Value="public void GetExtents (ref Pango.Rectangle ink_rect, ref Pango.Rectangle logical_rect);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="ink_rect" Type="Pango.Rectangle&amp;" RefType="ref" />
        <Parameter Name="logical_rect" Type="Pango.Rectangle&amp;" RefType="ref" />
      </Parameters>
      <Docs>
        <summary>Computes the logical and ink extents of a layout line.</summary>
        <param name="ink_rect"> rectangle used to store the extents of the glyph string as drawn or <see langword="null" /> to indicate that the result is not needed.</param>
        <param name="logical_rect"> rectangle used to store the logical extents of the glyph string or <see langword="null" /> to indicate that the result is not needed.</param>
        <remarks>See the documentation for <see cref="M:Pango.Font.GetGlyphExtents()" /> for details about the interpretation of the rectangles.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetPixelExtents">
      <MemberSignature Language="C#" Value="public void GetPixelExtents (ref Pango.Rectangle ink_rect, ref Pango.Rectangle logical_rect);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="ink_rect" Type="Pango.Rectangle&amp;" RefType="ref" />
        <Parameter Name="logical_rect" Type="Pango.Rectangle&amp;" RefType="ref" />
      </Parameters>
      <Docs>
        <summary>Computes the logical and ink extents of a layout line.</summary>
        <param name="ink_rect"> rectangle used to store the extents of the glyph string as drawn or <see langword="null" /> to indicate that the result is not needed.</param>
        <param name="logical_rect"> rectangle used to store the logical extents of the glyph string or <see langword="null" /> to indicate that the result is not needed.</param>
        <remarks>See the documentation for <see cref="T:Pango.Font.GetGlyphExtents()" /> for details about the interpretation of the rectangles. The returned rectangles are in device units, as opposed to <see cref="T:Pango.LayoutLine.GetExtents()" />, which returns the extents in <see cref="T:Pango.GlyphUnit" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IndexToX">
      <MemberSignature Language="C#" Value="public int IndexToX (int index_, bool trailing);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="index_" Type="System.Int32" />
        <Parameter Name="trailing" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <summary>Converts an index within a line to a X position.</summary>
        <param name="index_"> byte offset of a grapheme within the layout</param>
        <param name="trailing"> Indicates the edge of the grapheme to retrieve the position of. If <see langword="true" />, the trailing edge of the grapheme, if <see langword="false" />, the leading of the grapheme.</param>
        <returns>the x_offset (in <see cref="T:Pango.GlyphUnit" />)</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Layout">
      <MemberSignature Language="C#" Value="public Pango.Layout Layout { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Pango.Layout</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>The parent <see cref="T:Pango.Layout" /> for this line.</summary>
        <returns>a <see cref="T:Pango.Layout" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="StartIndex">
      <MemberSignature Language="C#" Value="public int StartIndex { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>the start of the line as byte index into <see cref="P:Pango.Layout.Text" />.</summary>
        <returns>a <see cref="T:System.Int32" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Length">
      <MemberSignature Language="C#" Value="public int Length { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>the length of the line in bytes.</summary>
        <returns>a <see cref="T:System.Int32" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public LayoutLine (IntPtr raw);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Internal constructor.</summary>
        <param name="raw">a <see cref="T:System.IntPtr" /></param>
        <returns>a <see cref="T:Pango.LayoutLine" /></returns>
        <remarks>This is an internal constructor, and should not be used by user code.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetXRanges">
      <MemberSignature Language="C#" Value="public void GetXRanges (int start_index, int end_index, out Int32[] [] ranges);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="start_index" Type="System.Int32" />
        <Parameter Name="end_index" Type="System.Int32" />
        <Parameter Name="ranges" Type="System.Int32[][]&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <summary>Gets a list of visual ranges corresponding to a given logical range.</summary>
        <param name="start_index"> Start byte index of the logical range. If this value is less than the start index for the line, then the first range will extend all the way to the leading edge of the layout. Otherwise it will start at the leading edge of the first character.</param>
        <param name="end_index"> Ending byte index of the logical range. If this value is greater than the end index for the line, then the last range will extend all the way to the trailing edge of the layout. Otherwise, it will end at the trailing edge of the last character.</param>
        <param name="ranges"> location to store an array of ranges. The array will be of length 2*n_ranges, with each range starting at (*ranges)[2*n]  and of width (*ranges)[2*n + 1] - (*ranges)[2*n]. This array must be freed with g_free(). The coordinates are relative to the layout and are in <see cref="T:Pango.GlyphUnit" />.</param>
        <remarks>This list is not necessarily minimal - there may be consecutive ranges which are adjacent. The ranges will be sorted from left to right. The ranges are with respect to the left edge of the entire layout, not with respect to the line.</remarks>
      </Docs>
    </Member>
  </Members>
</Type>