Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 86c1aa1008edd0cfec0ed724afe2ba4d > files > 104

ghc-pango-devel-0.11.2-2.fc14.i686.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://www.cs.york.ac.uk/fp/darcs/hscolour/ -->
<title>dist/build/Graphics/Rendering/Pango/Layout.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a>
<a name="line-2"></a><span class='hs-comment'>{-# LINE 2 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-3"></a><span class='hs-comment'>-- -*-haskell-*-</span>
<a name="line-4"></a><span class='hs-comment'>-- GIMP Toolkit (GTK) Pango text layout functions</span>
<a name="line-5"></a><span class='hs-comment'>--</span>
<a name="line-6"></a><span class='hs-comment'>-- Author : Axel Simon</span>
<a name="line-7"></a><span class='hs-comment'>--</span>
<a name="line-8"></a><span class='hs-comment'>-- Created: 8 Feburary 2003</span>
<a name="line-9"></a><span class='hs-comment'>--</span>
<a name="line-10"></a><span class='hs-comment'>-- Copyright (C) 1999-2005 Axel Simon</span>
<a name="line-11"></a><span class='hs-comment'>--</span>
<a name="line-12"></a><span class='hs-comment'>-- This library is free software; you can redistribute it and/or</span>
<a name="line-13"></a><span class='hs-comment'>-- modify it under the terms of the GNU Lesser General Public</span>
<a name="line-14"></a><span class='hs-comment'>-- License as published by the Free Software Foundation; either</span>
<a name="line-15"></a><span class='hs-comment'>-- version 2.1 of the License, or (at your option) any later version.</span>
<a name="line-16"></a><span class='hs-comment'>--</span>
<a name="line-17"></a><span class='hs-comment'>-- This library is distributed in the hope that it will be useful,</span>
<a name="line-18"></a><span class='hs-comment'>-- but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="line-19"></a><span class='hs-comment'>-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span>
<a name="line-20"></a><span class='hs-comment'>-- Lesser General Public License for more details.</span>
<a name="line-21"></a><span class='hs-comment'>--</span>
<a name="line-22"></a><span class='hs-comment'>-- Not bound:</span>
<a name="line-23"></a><span class='hs-comment'>--</span>
<a name="line-24"></a><span class='hs-comment'>-- - pango_layout_get_log_attrs : difficult since it returns an array, where</span>
<a name="line-25"></a><span class='hs-comment'>-- each element corresponds to a UTF8 character, conversion to wide</span>
<a name="line-26"></a><span class='hs-comment'>-- characters means we need to do some semantic merging</span>
<a name="line-27"></a><span class='hs-comment'>--</span>
<a name="line-28"></a><span class='hs-comment'>-- |</span>
<a name="line-29"></a><span class='hs-comment'>-- Maintainer : gtk2hs-users@lists.sourceforge.net</span>
<a name="line-30"></a><span class='hs-comment'>-- Stability : provisional</span>
<a name="line-31"></a><span class='hs-comment'>-- Portability : portable (depends on GHC)</span>
<a name="line-32"></a><span class='hs-comment'>--</span>
<a name="line-33"></a><span class='hs-comment'>-- Functions to run the rendering pipeline.</span>
<a name="line-34"></a><span class='hs-comment'>--</span>
<a name="line-35"></a><span class='hs-comment'>-- * The 'PangoLayout' object defined in this module contain a rendered</span>
<a name="line-36"></a><span class='hs-comment'>-- paragraph of text. This interface is the easiest way to render text into</span>
<a name="line-37"></a><span class='hs-comment'>-- a 'Graphics.UI.Gtk.Gdk.DrawWindow.DrawWindow' using Cairo.</span>
<a name="line-38"></a><span class='hs-comment'>--</span>
<a name="line-39"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>Layout</span> <span class='hs-layout'>(</span>
<a name="line-40"></a>  <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-41"></a>  <span class='hs-conid'>PangoLayout</span><span class='hs-layout'>,</span>
<a name="line-42"></a>  <span class='hs-varid'>layoutEmpty</span><span class='hs-layout'>,</span>
<a name="line-43"></a>  <span class='hs-varid'>layoutText</span><span class='hs-layout'>,</span>
<a name="line-44"></a>  <span class='hs-varid'>layoutCopy</span><span class='hs-layout'>,</span>
<a name="line-45"></a>  <span class='hs-varid'>layoutGetContext</span><span class='hs-layout'>,</span>
<a name="line-46"></a>  <span class='hs-varid'>layoutContextChanged</span><span class='hs-layout'>,</span>
<a name="line-47"></a>  <span class='hs-varid'>layoutSetText</span><span class='hs-layout'>,</span>
<a name="line-48"></a>  <span class='hs-varid'>layoutGetText</span><span class='hs-layout'>,</span>
<a name="line-49"></a>  <span class='hs-varid'>layoutSetMarkup</span><span class='hs-layout'>,</span>
<a name="line-50"></a>  <span class='hs-varid'>escapeMarkup</span><span class='hs-layout'>,</span>
<a name="line-51"></a>  <span class='hs-varid'>layoutSetMarkupWithAccel</span><span class='hs-layout'>,</span>
<a name="line-52"></a>  <span class='hs-varid'>layoutSetAttributes</span><span class='hs-layout'>,</span>
<a name="line-53"></a>  <span class='hs-varid'>layoutGetAttributes</span><span class='hs-layout'>,</span>
<a name="line-54"></a>  <span class='hs-varid'>layoutSetFontDescription</span><span class='hs-layout'>,</span>
<a name="line-55"></a>
<a name="line-56"></a>  <span class='hs-varid'>layoutGetFontDescription</span><span class='hs-layout'>,</span>
<a name="line-57"></a>
<a name="line-58"></a>  <span class='hs-varid'>layoutSetWidth</span><span class='hs-layout'>,</span>
<a name="line-59"></a>  <span class='hs-varid'>layoutGetWidth</span><span class='hs-layout'>,</span>
<a name="line-60"></a>  <span class='hs-conid'>LayoutWrapMode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-61"></a>  <span class='hs-varid'>layoutSetWrap</span><span class='hs-layout'>,</span>
<a name="line-62"></a>  <span class='hs-varid'>layoutGetWrap</span><span class='hs-layout'>,</span>
<a name="line-63"></a>
<a name="line-64"></a>  <span class='hs-conid'>EllipsizeMode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-65"></a>  <span class='hs-varid'>layoutSetEllipsize</span><span class='hs-layout'>,</span>
<a name="line-66"></a>  <span class='hs-varid'>layoutGetEllipsize</span><span class='hs-layout'>,</span>
<a name="line-67"></a>
<a name="line-68"></a>  <span class='hs-varid'>layoutSetIndent</span><span class='hs-layout'>,</span>
<a name="line-69"></a>  <span class='hs-varid'>layoutGetIndent</span><span class='hs-layout'>,</span>
<a name="line-70"></a>  <span class='hs-varid'>layoutSetSpacing</span><span class='hs-layout'>,</span>
<a name="line-71"></a>  <span class='hs-varid'>layoutGetSpacing</span><span class='hs-layout'>,</span>
<a name="line-72"></a>  <span class='hs-varid'>layoutSetJustify</span><span class='hs-layout'>,</span>
<a name="line-73"></a>  <span class='hs-varid'>layoutGetJustify</span><span class='hs-layout'>,</span>
<a name="line-74"></a>
<a name="line-75"></a>  <span class='hs-varid'>layoutSetAutoDir</span><span class='hs-layout'>,</span>
<a name="line-76"></a>  <span class='hs-varid'>layoutGetAutoDir</span><span class='hs-layout'>,</span>
<a name="line-77"></a>
<a name="line-78"></a>  <span class='hs-conid'>LayoutAlignment</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-79"></a>  <span class='hs-varid'>layoutSetAlignment</span><span class='hs-layout'>,</span>
<a name="line-80"></a>  <span class='hs-varid'>layoutGetAlignment</span><span class='hs-layout'>,</span>
<a name="line-81"></a>  <span class='hs-conid'>TabAlign</span><span class='hs-layout'>,</span>
<a name="line-82"></a>  <span class='hs-conid'>TabPosition</span><span class='hs-layout'>,</span>
<a name="line-83"></a>  <span class='hs-varid'>layoutSetTabs</span><span class='hs-layout'>,</span>
<a name="line-84"></a>  <span class='hs-varid'>layoutResetTabs</span><span class='hs-layout'>,</span>
<a name="line-85"></a>  <span class='hs-varid'>layoutGetTabs</span><span class='hs-layout'>,</span>
<a name="line-86"></a>  <span class='hs-varid'>layoutSetSingleParagraphMode</span><span class='hs-layout'>,</span>
<a name="line-87"></a>  <span class='hs-varid'>layoutGetSingleParagraphMode</span><span class='hs-layout'>,</span>
<a name="line-88"></a>  <span class='hs-varid'>layoutXYToIndex</span><span class='hs-layout'>,</span>
<a name="line-89"></a>  <span class='hs-varid'>layoutIndexToPos</span><span class='hs-layout'>,</span>
<a name="line-90"></a>  <span class='hs-varid'>layoutGetCursorPos</span><span class='hs-layout'>,</span>
<a name="line-91"></a>  <span class='hs-conid'>CursorPos</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-92"></a>  <span class='hs-varid'>layoutMoveCursorVisually</span><span class='hs-layout'>,</span>
<a name="line-93"></a>  <span class='hs-varid'>layoutGetExtents</span><span class='hs-layout'>,</span>
<a name="line-94"></a>  <span class='hs-varid'>layoutGetPixelExtents</span><span class='hs-layout'>,</span>
<a name="line-95"></a>  <span class='hs-varid'>layoutGetLineCount</span><span class='hs-layout'>,</span>
<a name="line-96"></a>  <span class='hs-varid'>layoutGetLine</span><span class='hs-layout'>,</span>
<a name="line-97"></a>  <span class='hs-varid'>layoutGetLines</span><span class='hs-layout'>,</span>
<a name="line-98"></a>  <span class='hs-conid'>LayoutIter</span><span class='hs-layout'>,</span>
<a name="line-99"></a>  <span class='hs-varid'>layoutGetIter</span><span class='hs-layout'>,</span>
<a name="line-100"></a>  <span class='hs-varid'>layoutIterNextItem</span><span class='hs-layout'>,</span>
<a name="line-101"></a>  <span class='hs-varid'>layoutIterNextChar</span><span class='hs-layout'>,</span>
<a name="line-102"></a>  <span class='hs-varid'>layoutIterNextCluster</span><span class='hs-layout'>,</span>
<a name="line-103"></a>  <span class='hs-varid'>layoutIterNextLine</span><span class='hs-layout'>,</span>
<a name="line-104"></a>  <span class='hs-varid'>layoutIterAtLastLine</span><span class='hs-layout'>,</span>
<a name="line-105"></a>  <span class='hs-varid'>layoutIterGetIndex</span><span class='hs-layout'>,</span>
<a name="line-106"></a>  <span class='hs-varid'>layoutIterGetBaseline</span><span class='hs-layout'>,</span>
<a name="line-107"></a>
<a name="line-108"></a>  <span class='hs-varid'>layoutIterGetItem</span><span class='hs-layout'>,</span>
<a name="line-109"></a>
<a name="line-110"></a>  <span class='hs-varid'>layoutIterGetLine</span><span class='hs-layout'>,</span>
<a name="line-111"></a>  <span class='hs-varid'>layoutIterGetCharExtents</span><span class='hs-layout'>,</span>
<a name="line-112"></a>  <span class='hs-varid'>layoutIterGetClusterExtents</span><span class='hs-layout'>,</span>
<a name="line-113"></a>  <span class='hs-varid'>layoutIterGetRunExtents</span><span class='hs-layout'>,</span>
<a name="line-114"></a>  <span class='hs-varid'>layoutIterGetLineYRange</span><span class='hs-layout'>,</span>
<a name="line-115"></a>  <span class='hs-varid'>layoutIterGetLineExtents</span><span class='hs-layout'>,</span>
<a name="line-116"></a>  <span class='hs-conid'>LayoutLine</span><span class='hs-layout'>,</span>
<a name="line-117"></a>  <span class='hs-varid'>layoutLineGetExtents</span><span class='hs-layout'>,</span>
<a name="line-118"></a>  <span class='hs-varid'>layoutLineGetPixelExtents</span><span class='hs-layout'>,</span>
<a name="line-119"></a>  <span class='hs-varid'>layoutLineIndexToX</span><span class='hs-layout'>,</span>
<a name="line-120"></a>  <span class='hs-varid'>layoutLineXToIndex</span><span class='hs-layout'>,</span>
<a name="line-121"></a>  <span class='hs-varid'>layoutLineGetXRanges</span>
<a name="line-122"></a>  <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-123"></a>
<a name="line-124"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Monad</span> <span class='hs-layout'>(</span><span class='hs-varid'>liftM</span><span class='hs-layout'>)</span>
<a name="line-125"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>ord</span><span class='hs-layout'>,</span> <span class='hs-varid'>chr</span><span class='hs-layout'>)</span>
<a name="line-126"></a>
<a name="line-127"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Glib</span><span class='hs-varop'>.</span><span class='hs-conid'>FFI</span>
<a name="line-128"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Glib</span><span class='hs-varop'>.</span><span class='hs-conid'>UTFString</span>
<a name="line-129"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Glib</span><span class='hs-varop'>.</span><span class='hs-conid'>GList</span> <span class='hs-layout'>(</span><span class='hs-varid'>readGSList</span><span class='hs-layout'>)</span>
<a name="line-130"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>System</span><span class='hs-varop'>.</span><span class='hs-conid'>Glib</span><span class='hs-varop'>.</span><span class='hs-conid'>GObject</span> <span class='hs-layout'>(</span><span class='hs-varid'>constructNewGObject</span><span class='hs-layout'>,</span> <span class='hs-varid'>makeNewGObject</span><span class='hs-layout'>)</span>
<a name="line-131"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>Structs</span>
<a name="line-132"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>BasicTypes</span>
<a name="line-133"></a><span class='hs-comment'>{-# LINE 132 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-134"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-135"></a>
<a name="line-136"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>Enums</span> <span class='hs-layout'>(</span><span class='hs-conid'>EllipsizeMode</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-137"></a>
<a name="line-138"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span> <span class='hs-comment'>-- for haddock</span>
<a name="line-139"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Graphics</span><span class='hs-varop'>.</span><span class='hs-conid'>Rendering</span><span class='hs-varop'>.</span><span class='hs-conid'>Pango</span><span class='hs-varop'>.</span><span class='hs-conid'>Attributes</span> <span class='hs-layout'>(</span> <span class='hs-varid'>withAttrList</span><span class='hs-layout'>,</span> <span class='hs-varid'>fromAttrList</span><span class='hs-layout'>)</span>
<a name="line-140"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>IORef</span>
<a name="line-141"></a>
<a name="line-142"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>OldException</span> <span class='hs-layout'>(</span> <span class='hs-conid'>Exception</span><span class='hs-layout'>(</span><span class='hs-conid'>ArrayException</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-143"></a>                              <span class='hs-conid'>ArrayException</span><span class='hs-layout'>(</span><span class='hs-conid'>IndexOutOfBounds</span><span class='hs-layout'>)</span><span class='hs-layout'>,</span>
<a name="line-144"></a>                              <span class='hs-varid'>throwIO</span> <span class='hs-layout'>)</span>
<a name="line-145"></a>
<a name="line-146"></a>
<a name="line-147"></a>
<a name="line-148"></a>
<a name="line-149"></a>
<a name="line-150"></a>
<a name="line-151"></a>
<a name="line-152"></a><span class='hs-comment'>{-# LINE 150 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-153"></a>
<a name="line-154"></a><a name="layoutEmpty"></a><span class='hs-comment'>-- | Create an empty 'Layout'.</span>
<a name="line-155"></a><span class='hs-comment'>--</span>
<a name="line-156"></a><span class='hs-definition'>layoutEmpty</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoContext</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>PangoLayout</span>
<a name="line-157"></a><span class='hs-definition'>layoutEmpty</span> <span class='hs-varid'>pc</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-158"></a>  <span class='hs-varid'>pl</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>constructNewGObject</span> <span class='hs-varid'>mkPangoLayoutRaw</span>
<a name="line-159"></a>    <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoContext</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_new</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>toPangoContext</span> <span class='hs-varid'>pc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-160"></a>  <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewPangoString</span> <span class='hs-str'>""</span>
<a name="line-161"></a>  <span class='hs-varid'>psRef</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>newIORef</span> <span class='hs-varid'>ps</span>
<a name="line-162"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span>
<a name="line-163"></a>
<a name="line-164"></a><a name="layoutText"></a><span class='hs-comment'>-- | Create a new layout.</span>
<a name="line-165"></a><span class='hs-comment'>--</span>
<a name="line-166"></a><span class='hs-definition'>layoutText</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoContext</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>PangoLayout</span>
<a name="line-167"></a><span class='hs-definition'>layoutText</span> <span class='hs-varid'>pc</span> <span class='hs-varid'>txt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-168"></a>  <span class='hs-varid'>pl</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>constructNewGObject</span> <span class='hs-varid'>mkPangoLayoutRaw</span>
<a name="line-169"></a>    <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoContext</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_new</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>toPangoContext</span> <span class='hs-varid'>pc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-170"></a>  <span class='hs-varid'>withUTFStringLen</span> <span class='hs-varid'>txt</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>strPtr</span><span class='hs-layout'>,</span><span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-171"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_text</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-varid'>strPtr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
<a name="line-172"></a>  <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewPangoString</span> <span class='hs-varid'>txt</span>
<a name="line-173"></a>  <span class='hs-varid'>psRef</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>newIORef</span> <span class='hs-varid'>ps</span>
<a name="line-174"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span>
<a name="line-175"></a>
<a name="line-176"></a><a name="layoutCopy"></a><span class='hs-comment'>-- | Create a copy of the 'Layout'.</span>
<a name="line-177"></a><span class='hs-comment'>--</span>
<a name="line-178"></a><span class='hs-definition'>layoutCopy</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>PangoLayout</span>
<a name="line-179"></a><span class='hs-definition'>layoutCopy</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>uc</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-180"></a>  <span class='hs-varid'>pl</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>constructNewGObject</span> <span class='hs-varid'>mkPangoLayoutRaw</span>
<a name="line-181"></a>    <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_copy</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span>
<a name="line-182"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>uc</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span>
<a name="line-183"></a>
<a name="line-184"></a><a name="layoutGetContext"></a><span class='hs-comment'>-- | Retrieves the 'PangoContext' from this layout.</span>
<a name="line-185"></a><span class='hs-comment'>--</span>
<a name="line-186"></a><span class='hs-definition'>layoutGetContext</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>PangoContext</span>
<a name="line-187"></a><span class='hs-definition'>layoutGetContext</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>makeNewGObject</span> <span class='hs-varid'>mkPangoContext</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-188"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_context</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-189"></a>
<a name="line-190"></a><a name="layoutContextChanged"></a><span class='hs-comment'>-- | Signal a 'PangoContext' change.</span>
<a name="line-191"></a><span class='hs-comment'>--</span>
<a name="line-192"></a><span class='hs-comment'>-- * Forces recomputation of any state in the 'PangoLayout' that</span>
<a name="line-193"></a><span class='hs-comment'>-- might depend on the layout's context. This function should</span>
<a name="line-194"></a><span class='hs-comment'>-- be called if you make changes to the context subsequent</span>
<a name="line-195"></a><span class='hs-comment'>-- to creating the layout.</span>
<a name="line-196"></a><span class='hs-comment'>--</span>
<a name="line-197"></a><span class='hs-definition'>layoutContextChanged</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-198"></a><span class='hs-definition'>layoutContextChanged</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-199"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_context_changed</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-200"></a>
<a name="line-201"></a><a name="layoutSetText"></a><span class='hs-comment'>-- | Set the string in the layout.</span>
<a name="line-202"></a><span class='hs-comment'>--</span>
<a name="line-203"></a><span class='hs-definition'>layoutSetText</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-204"></a><span class='hs-definition'>layoutSetText</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>txt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-205"></a>  <span class='hs-varid'>withUTFStringLen</span> <span class='hs-varid'>txt</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>strPtr</span><span class='hs-layout'>,</span><span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-206"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_text</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-varid'>strPtr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
<a name="line-207"></a>  <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewPangoString</span> <span class='hs-varid'>txt</span>
<a name="line-208"></a>  <span class='hs-varid'>writeIORef</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ps</span>
<a name="line-209"></a>
<a name="line-210"></a><a name="layoutGetText"></a><span class='hs-comment'>-- | Retrieve the string in the layout.</span>
<a name="line-211"></a><span class='hs-comment'>--</span>
<a name="line-212"></a><span class='hs-definition'>layoutGetText</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>String</span>
<a name="line-213"></a><span class='hs-definition'>layoutGetText</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-214"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_text</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-varop'>&gt;&gt;=</span> <span class='hs-varid'>peekUTFString</span>
<a name="line-215"></a>
<a name="line-216"></a><a name="layoutSetMarkup"></a><span class='hs-comment'>-- | Set the text of the layout, including attributes.</span>
<a name="line-217"></a><span class='hs-comment'>--</span>
<a name="line-218"></a><span class='hs-comment'>-- The string may include 'Markup'. To print markup characters like</span>
<a name="line-219"></a><span class='hs-comment'>-- @\'&lt;\'@, or @\'-\'@, apply 'escapeMarkup' to the string first.</span>
<a name="line-220"></a><span class='hs-comment'>--</span>
<a name="line-221"></a><span class='hs-comment'>-- The function returns the text that is actually shown.</span>
<a name="line-222"></a><span class='hs-comment'>--</span>
<a name="line-223"></a><span class='hs-definition'>layoutSetMarkup</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Markup</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>String</span>
<a name="line-224"></a><span class='hs-definition'>layoutSetMarkup</span> <span class='hs-varid'>pl</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-varid'>txt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-225"></a>  <span class='hs-varid'>withUTFStringLen</span> <span class='hs-varid'>txt</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>strPtr</span><span class='hs-layout'>,</span><span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-226"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_markup</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-varid'>strPtr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span>
<a name="line-227"></a>  <span class='hs-varid'>txt'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>layoutGetText</span> <span class='hs-varid'>pl</span>
<a name="line-228"></a>  <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewPangoString</span> <span class='hs-varid'>txt'</span>
<a name="line-229"></a>  <span class='hs-varid'>writeIORef</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ps</span>
<a name="line-230"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>txt'</span>
<a name="line-231"></a>
<a name="line-232"></a><a name="escapeMarkup"></a><span class='hs-comment'>-- | Escape markup characters.</span>
<a name="line-233"></a><span class='hs-comment'>--</span>
<a name="line-234"></a><span class='hs-comment'>-- * Used to display characters that normally denote markup. Note that this</span>
<a name="line-235"></a><span class='hs-comment'>-- function is strict in that it forces all characters in the input string</span>
<a name="line-236"></a><span class='hs-comment'>-- as soon as a single output character is requested.</span>
<a name="line-237"></a><span class='hs-comment'>--</span>
<a name="line-238"></a><span class='hs-definition'>escapeMarkup</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span>
<a name="line-239"></a><span class='hs-definition'>escapeMarkup</span> <span class='hs-varid'>str</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafePerformIO</span> <span class='hs-varop'>$</span> <span class='hs-varid'>withUTFStringLen</span> <span class='hs-varid'>str</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>strPtr</span><span class='hs-layout'>,</span><span class='hs-varid'>l</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-240"></a>  <span class='hs-varid'>resPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>g_markup_escape_text</span> <span class='hs-varid'>strPtr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>l</span><span class='hs-layout'>)</span>
<a name="line-241"></a>  <span class='hs-varid'>res</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peekUTFString</span> <span class='hs-varid'>resPtr</span>
<a name="line-242"></a>  <span class='hs-varid'>g_free</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>resPtr</span><span class='hs-layout'>)</span>
<a name="line-243"></a>  <span class='hs-varid'>return</span> <span class='hs-varid'>res</span>
<a name="line-244"></a>
<a name="line-245"></a><a name="layoutSetMarkupWithAccel"></a><span class='hs-comment'>-- | Set the string in the layout.</span>
<a name="line-246"></a><span class='hs-comment'>--</span>
<a name="line-247"></a><span class='hs-comment'>-- * The string may include 'Markup'. Furthermore, any underscore</span>
<a name="line-248"></a><span class='hs-comment'>-- character indicates that the next character will be</span>
<a name="line-249"></a><span class='hs-comment'>-- marked as accelerator (i.e. underlined). A literal underscore character</span>
<a name="line-250"></a><span class='hs-comment'>-- can be produced by placing it twice in the string.</span>
<a name="line-251"></a><span class='hs-comment'>--</span>
<a name="line-252"></a><span class='hs-comment'>-- * The character which follows the underscore is</span>
<a name="line-253"></a><span class='hs-comment'>-- returned so it can be used to add the actual keyboard shortcut.</span>
<a name="line-254"></a><span class='hs-comment'>-- The second element is the string after parsing.</span>
<a name="line-255"></a><span class='hs-comment'>--</span>
<a name="line-256"></a><span class='hs-definition'>layoutSetMarkupWithAccel</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Markup</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Char</span><span class='hs-layout'>,</span> <span class='hs-conid'>String</span><span class='hs-layout'>)</span>
<a name="line-257"></a><span class='hs-definition'>layoutSetMarkupWithAccel</span> <span class='hs-varid'>pl</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-varid'>txt</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-258"></a>  <span class='hs-varid'>modif</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>chrPtr</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-259"></a>    <span class='hs-varid'>withUTFStringLen</span> <span class='hs-varid'>txt</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>strPtr</span><span class='hs-layout'>,</span><span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-260"></a>      <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_markup_with_accel</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-varid'>strPtr</span>
<a name="line-261"></a>        <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ord</span> <span class='hs-chr'>'_'</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>chrPtr</span>
<a name="line-262"></a>      <span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-varid'>chr</span><span class='hs-varop'>.</span><span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>chrPtr</span>
<a name="line-263"></a>  <span class='hs-varid'>txt'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>layoutGetText</span> <span class='hs-varid'>pl</span>
<a name="line-264"></a>  <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewPangoString</span> <span class='hs-varid'>txt'</span>
<a name="line-265"></a>  <span class='hs-varid'>writeIORef</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ps</span>
<a name="line-266"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>modif</span><span class='hs-layout'>,</span> <span class='hs-varid'>txt'</span><span class='hs-layout'>)</span>
<a name="line-267"></a>
<a name="line-268"></a>
<a name="line-269"></a><a name="layoutSetAttributes"></a><span class='hs-comment'>-- | Set text attributes of the text in the layout.</span>
<a name="line-270"></a><span class='hs-comment'>--</span>
<a name="line-271"></a><span class='hs-comment'>-- * This function replaces any text attributes that this layout contained,</span>
<a name="line-272"></a><span class='hs-comment'>-- even those that were set by using 'layoutSetMarkup'.</span>
<a name="line-273"></a><span class='hs-comment'>--</span>
<a name="line-274"></a><span class='hs-definition'>layoutSetAttributes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>PangoAttribute</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-275"></a><span class='hs-definition'>layoutSetAttributes</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-varid'>attrs</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-276"></a>  <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-277"></a>  <span class='hs-varid'>withAttrList</span> <span class='hs-varid'>ps</span> <span class='hs-varid'>attrs</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>alPtr</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-278"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_attributes</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-varid'>alPtr</span>
<a name="line-279"></a>
<a name="line-280"></a><a name="layoutGetAttributes"></a><span class='hs-comment'>-- | Gets the list of attributes of the layout, if any.</span>
<a name="line-281"></a><span class='hs-comment'>--</span>
<a name="line-282"></a><span class='hs-comment'>-- * The attribute list is a list of lists of attribute. Each list describes</span>
<a name="line-283"></a><span class='hs-comment'>-- the attributes for the same span.</span>
<a name="line-284"></a><span class='hs-comment'>--</span>
<a name="line-285"></a><span class='hs-definition'>layoutGetAttributes</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-keyglyph'>[</span><span class='hs-conid'>PangoAttribute</span><span class='hs-keyglyph'>]</span><span class='hs-keyglyph'>]</span>
<a name="line-286"></a><span class='hs-definition'>layoutGetAttributes</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-287"></a>  <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>correct</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-288"></a>  <span class='hs-varid'>attrListPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_attributes</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span>
<a name="line-289"></a>  <span class='hs-varid'>fromAttrList</span> <span class='hs-varid'>correct</span> <span class='hs-varid'>attrListPtr</span>
<a name="line-290"></a>
<a name="line-291"></a><a name="layoutSetFontDescription"></a><span class='hs-comment'>-- | Set a specific font description for this layout.</span>
<a name="line-292"></a><span class='hs-comment'>--</span>
<a name="line-293"></a><span class='hs-comment'>-- * Specifying @Nothing@ will unset the current font description, that is,</span>
<a name="line-294"></a><span class='hs-comment'>-- the 'PangoLayout' will use the font description in the current</span>
<a name="line-295"></a><span class='hs-comment'>-- 'PangoContext'.</span>
<a name="line-296"></a><span class='hs-comment'>--</span>
<a name="line-297"></a><span class='hs-definition'>layoutSetFontDescription</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>FontDescription</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-298"></a><span class='hs-definition'>layoutSetFontDescription</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>fd</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-299"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>FontDescription</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg2</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr2</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_font_description</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>argPtr2</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-varid'>fd</span>
<a name="line-300"></a><span class='hs-definition'>layoutSetFontDescription</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>=</span>
<a name="line-301"></a>  <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>plr</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>plrPtr</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-302"></a>  <span class='hs-varid'>pango_layout_set_font_description</span> <span class='hs-varid'>plrPtr</span> <span class='hs-varid'>nullPtr</span>
<a name="line-303"></a>
<a name="line-304"></a>
<a name="line-305"></a><a name="layoutGetFontDescription"></a><span class='hs-comment'>-- | Ask for the specifically set font description of this layout.</span>
<a name="line-306"></a><span class='hs-comment'>--</span>
<a name="line-307"></a><span class='hs-comment'>-- * Returns @Nothing@ if this layout uses the font description in the</span>
<a name="line-308"></a><span class='hs-comment'>-- 'PangoContext' it was created in.</span>
<a name="line-309"></a><span class='hs-comment'>--</span>
<a name="line-310"></a><span class='hs-comment'>-- * Only available in Pango 1.8.0 or higher.</span>
<a name="line-311"></a><span class='hs-comment'>--</span>
<a name="line-312"></a><span class='hs-definition'>layoutGetFontDescription</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>FontDescription</span><span class='hs-layout'>)</span>
<a name="line-313"></a><span class='hs-definition'>layoutGetFontDescription</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-314"></a>  <span class='hs-varid'>fdPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_font_description</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span>
<a name="line-315"></a>  <span class='hs-keyword'>if</span> <span class='hs-varid'>fdPtr</span><span class='hs-varop'>==</span><span class='hs-varid'>nullPtr</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>liftM</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-316"></a>    <span class='hs-varid'>fdPtr'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>font_description_copy</span> <span class='hs-varid'>fdPtr</span>
<a name="line-317"></a>    <span class='hs-varid'>makeNewFontDescription</span> <span class='hs-varid'>fdPtr'</span>
<a name="line-318"></a>
<a name="line-319"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_font_description_copy"</span>
<a name="line-320"></a>  <span class='hs-varid'>font_description_copy</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>FontDescription</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>FontDescription</span><span class='hs-layout'>)</span>
<a name="line-321"></a>
<a name="line-322"></a>
<a name="line-323"></a>
<a name="line-324"></a><a name="layoutSetWidth"></a><span class='hs-comment'>-- | Set the width of this paragraph.</span>
<a name="line-325"></a><span class='hs-comment'>--</span>
<a name="line-326"></a><span class='hs-comment'>-- * Sets the width to which the lines of the 'PangoLayout'</span>
<a name="line-327"></a><span class='hs-comment'>-- should be wrapped.</span>
<a name="line-328"></a><span class='hs-comment'>--</span>
<a name="line-329"></a><span class='hs-comment'>-- * Pass in @Nothing@ to indicate that no wrapping is to be performed.</span>
<a name="line-330"></a><span class='hs-comment'>--</span>
<a name="line-331"></a><span class='hs-definition'>layoutSetWidth</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Maybe</span> <span class='hs-conid'>Double</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-332"></a><span class='hs-definition'>layoutSetWidth</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyglyph'>=</span>
<a name="line-333"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_width</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-334"></a><span class='hs-definition'>layoutSetWidth</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-varid'>pu</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-335"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_width</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>pu</span><span class='hs-layout'>)</span>
<a name="line-336"></a>
<a name="line-337"></a><a name="layoutGetWidth"></a><span class='hs-comment'>-- | Gets the width of this paragraph.</span>
<a name="line-338"></a><span class='hs-comment'>--</span>
<a name="line-339"></a><span class='hs-comment'>-- * Gets the width to which the lines of the 'PangoLayout'</span>
<a name="line-340"></a><span class='hs-comment'>-- should be wrapped.</span>
<a name="line-341"></a><span class='hs-comment'>--</span>
<a name="line-342"></a><span class='hs-comment'>-- * Returns is the current width, or @Nothing@ to indicate that</span>
<a name="line-343"></a><span class='hs-comment'>-- no wrapping is performed.</span>
<a name="line-344"></a><span class='hs-comment'>--</span>
<a name="line-345"></a><span class='hs-definition'>layoutGetWidth</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>Double</span><span class='hs-layout'>)</span>
<a name="line-346"></a><span class='hs-definition'>layoutGetWidth</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-347"></a>  <span class='hs-varid'>w</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_width</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-348"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-keyword'>if</span> <span class='hs-varid'>w</span><span class='hs-varop'>==</span><span class='hs-layout'>(</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span> <span class='hs-keyword'>then</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-varid'>intToPu</span> <span class='hs-varid'>w</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-349"></a>
<a name="line-350"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- | Enumerates how a line can be wrapped.</span>
<a name="line-351"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>--</span>
<a name="line-352"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- [@WrapWholeWords@] Breaks lines only between words.</span>
<a name="line-353"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>--</span>
<a name="line-354"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- * This variant does not guarantee that the requested width is not</span>
<a name="line-355"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- exceeded. A word that is longer than the paragraph width is not</span>
<a name="line-356"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- split.</span>
<a name="line-357"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>--</span>
<a name="line-358"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- [@WrapAnywhere@] Break lines anywhere.</span>
<a name="line-359"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>--</span>
<a name="line-360"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- [@WrapPartialWords@] Wrap within a word if it is the only one on</span>
<a name="line-361"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- this line.</span>
<a name="line-362"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>--</span>
<a name="line-363"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- * This option acts like 'WrapWholeWords' but will split</span>
<a name="line-364"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- a word if it is the only one on this line and it exceeds the</span>
<a name="line-365"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>-- specified width.</span>
<a name="line-366"></a><a name="LayoutWrapMode"></a><span class='hs-comment'>--</span>
<a name="line-367"></a><a name="LayoutWrapMode"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>LayoutWrapMode</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>WrapWholeWords</span>
<a name="line-368"></a>                    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>WrapAnywhere</span>
<a name="line-369"></a>                    <span class='hs-keyglyph'>|</span> <span class='hs-conid'>WrapPartialWords</span>
<a name="line-370"></a>                    <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Enum</span><span class='hs-layout'>)</span>
<a name="line-371"></a>
<a name="line-372"></a><span class='hs-comment'>{-# LINE 369 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-373"></a>
<a name="line-374"></a><a name="layoutSetWrap"></a><span class='hs-comment'>-- | Set how this paragraph is wrapped.</span>
<a name="line-375"></a><span class='hs-comment'>--</span>
<a name="line-376"></a><span class='hs-comment'>-- * Sets the wrap style; the wrap style only has an effect if a width</span>
<a name="line-377"></a><span class='hs-comment'>-- is set on the layout with 'layoutSetWidth'. To turn off</span>
<a name="line-378"></a><span class='hs-comment'>-- wrapping, call 'layoutSetWidth' with @Nothing@.</span>
<a name="line-379"></a><span class='hs-comment'>--</span>
<a name="line-380"></a><span class='hs-definition'>layoutSetWrap</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LayoutWrapMode</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-381"></a><span class='hs-definition'>layoutSetWrap</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>wm</span> <span class='hs-keyglyph'>=</span>
<a name="line-382"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_wrap</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span><span class='hs-varop'>.</span><span class='hs-varid'>fromEnum</span><span class='hs-layout'>)</span> <span class='hs-varid'>wm</span><span class='hs-layout'>)</span>
<a name="line-383"></a>
<a name="line-384"></a>
<a name="line-385"></a><a name="layoutGetWrap"></a><span class='hs-comment'>-- | Get the wrap mode for the layout.</span>
<a name="line-386"></a><span class='hs-comment'>--</span>
<a name="line-387"></a><span class='hs-definition'>layoutGetWrap</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>LayoutWrapMode</span>
<a name="line-388"></a><span class='hs-definition'>layoutGetWrap</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-varid'>toEnum</span><span class='hs-varop'>.</span><span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-389"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_wrap</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-390"></a>
<a name="line-391"></a>
<a name="line-392"></a><a name="layoutSetEllipsize"></a><span class='hs-comment'>-- | Set how long lines should be abbreviated.</span>
<a name="line-393"></a><span class='hs-comment'>--</span>
<a name="line-394"></a><span class='hs-definition'>layoutSetEllipsize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>EllipsizeMode</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-395"></a><span class='hs-definition'>layoutSetEllipsize</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>em</span> <span class='hs-keyglyph'>=</span>
<a name="line-396"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_ellipsize</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span><span class='hs-varop'>.</span><span class='hs-varid'>fromEnum</span><span class='hs-layout'>)</span> <span class='hs-varid'>em</span><span class='hs-layout'>)</span>
<a name="line-397"></a>
<a name="line-398"></a><a name="layoutGetEllipsize"></a><span class='hs-comment'>-- | Get the ellipsize mode for this layout.</span>
<a name="line-399"></a><span class='hs-comment'>--</span>
<a name="line-400"></a><span class='hs-definition'>layoutGetEllipsize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>EllipsizeMode</span>
<a name="line-401"></a><span class='hs-definition'>layoutGetEllipsize</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-varid'>toEnum</span><span class='hs-varop'>.</span><span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-402"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_ellipsize</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-403"></a>
<a name="line-404"></a>
<a name="line-405"></a><a name="layoutSetIndent"></a><span class='hs-comment'>-- | Set the indentation of this paragraph.</span>
<a name="line-406"></a><span class='hs-comment'>--</span>
<a name="line-407"></a><span class='hs-comment'>-- * Sets the amount by which the first line should</span>
<a name="line-408"></a><span class='hs-comment'>-- be indented. A negative value will produce a hanging indent, that is,</span>
<a name="line-409"></a><span class='hs-comment'>-- all subsequent lines will be indented while the first line has full</span>
<a name="line-410"></a><span class='hs-comment'>-- width.</span>
<a name="line-411"></a><span class='hs-comment'>--</span>
<a name="line-412"></a><span class='hs-definition'>layoutSetIndent</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-413"></a><span class='hs-definition'>layoutSetIndent</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>indent</span> <span class='hs-keyglyph'>=</span>
<a name="line-414"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_indent</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>indent</span><span class='hs-layout'>)</span>
<a name="line-415"></a>
<a name="line-416"></a><a name="layoutGetIndent"></a><span class='hs-comment'>-- | Gets the indentation of this paragraph.</span>
<a name="line-417"></a><span class='hs-comment'>--</span>
<a name="line-418"></a><span class='hs-comment'>-- * Gets the amount by which the first line or the rest of the paragraph</span>
<a name="line-419"></a><span class='hs-comment'>-- is indented.</span>
<a name="line-420"></a><span class='hs-comment'>--</span>
<a name="line-421"></a><span class='hs-definition'>layoutGetIndent</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Double</span>
<a name="line-422"></a><span class='hs-definition'>layoutGetIndent</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-423"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>intToPu</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_indent</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-424"></a>
<a name="line-425"></a>
<a name="line-426"></a><a name="layoutSetSpacing"></a><span class='hs-comment'>-- | Set the spacing between lines of this paragraph.</span>
<a name="line-427"></a><span class='hs-comment'>--</span>
<a name="line-428"></a><span class='hs-definition'>layoutSetSpacing</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-429"></a><span class='hs-definition'>layoutSetSpacing</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>spacing</span> <span class='hs-keyglyph'>=</span>
<a name="line-430"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_spacing</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>spacing</span><span class='hs-layout'>)</span>
<a name="line-431"></a>
<a name="line-432"></a><a name="layoutGetSpacing"></a><span class='hs-comment'>-- | Gets the spacing between the lines.</span>
<a name="line-433"></a><span class='hs-comment'>--</span>
<a name="line-434"></a><span class='hs-definition'>layoutGetSpacing</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Double</span>
<a name="line-435"></a><span class='hs-definition'>layoutGetSpacing</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-436"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>intToPu</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_spacing</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-437"></a>
<a name="line-438"></a><a name="layoutSetJustify"></a><span class='hs-comment'>-- | Set if text should be streched to fit width.</span>
<a name="line-439"></a><span class='hs-comment'>--</span>
<a name="line-440"></a><span class='hs-comment'>-- * Sets whether or not each complete line should be stretched to</span>
<a name="line-441"></a><span class='hs-comment'>-- fill the entire width of the layout. This stretching is typically</span>
<a name="line-442"></a><span class='hs-comment'>-- done by adding whitespace, but for some scripts (such as Arabic),</span>
<a name="line-443"></a><span class='hs-comment'>-- the justification is done by extending the characters.</span>
<a name="line-444"></a><span class='hs-comment'>--</span>
<a name="line-445"></a><span class='hs-comment'>-- * Note that as of Pango 1.4, this functionality is not yet implemented.</span>
<a name="line-446"></a><span class='hs-comment'>--</span>
<a name="line-447"></a><span class='hs-definition'>layoutSetJustify</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-448"></a><span class='hs-definition'>layoutSetJustify</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>j</span> <span class='hs-keyglyph'>=</span>
<a name="line-449"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_justify</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromBool</span> <span class='hs-varid'>j</span><span class='hs-layout'>)</span>
<a name="line-450"></a>
<a name="line-451"></a><a name="layoutGetJustify"></a><span class='hs-comment'>-- | Retrieve the justification flag.</span>
<a name="line-452"></a><span class='hs-comment'>--</span>
<a name="line-453"></a><span class='hs-comment'>-- * See 'layoutSetJustify'.</span>
<a name="line-454"></a><span class='hs-comment'>--</span>
<a name="line-455"></a><span class='hs-definition'>layoutGetJustify</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-456"></a><span class='hs-definition'>layoutGetJustify</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-457"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_justify</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-458"></a>
<a name="line-459"></a>
<a name="line-460"></a><a name="layoutSetAutoDir"></a><span class='hs-comment'>-- | Set if the base text direction should be overridden.</span>
<a name="line-461"></a><span class='hs-comment'>--</span>
<a name="line-462"></a><span class='hs-comment'>-- * Sets whether to calculate the bidirectional base direction for the</span>
<a name="line-463"></a><span class='hs-comment'>-- layout according to the contents of the layout; when this flag is on</span>
<a name="line-464"></a><span class='hs-comment'>-- (the default), then paragraphs in layout that begin with strong</span>
<a name="line-465"></a><span class='hs-comment'>-- right-to-left characters (Arabic and Hebrew principally), will have</span>
<a name="line-466"></a><span class='hs-comment'>-- right-to-left layout, paragraphs with letters from other scripts will</span>
<a name="line-467"></a><span class='hs-comment'>-- have left-to-right layout. Paragraphs with only neutral characters get</span>
<a name="line-468"></a><span class='hs-comment'>-- their direction from the surrounding paragraphs.</span>
<a name="line-469"></a><span class='hs-comment'>--</span>
<a name="line-470"></a><span class='hs-comment'>-- * When @False@, the choice between left-to-right and right-to-left</span>
<a name="line-471"></a><span class='hs-comment'>-- layout is done by according to the base direction of the layout's</span>
<a name="line-472"></a><span class='hs-comment'>-- 'PangoContext'. (See 'Graphics.Rendering.Pango.Context.contextSetTextDir').</span>
<a name="line-473"></a><span class='hs-comment'>--</span>
<a name="line-474"></a><span class='hs-comment'>-- * When the auto-computed direction or a paragraph differs from the base</span>
<a name="line-475"></a><span class='hs-comment'>-- direction of the context, then the interpretation of</span>
<a name="line-476"></a><span class='hs-comment'>-- 'AlignLeft' and 'AlignRight' are swapped.</span>
<a name="line-477"></a><span class='hs-comment'>--</span>
<a name="line-478"></a><span class='hs-definition'>layoutSetAutoDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-479"></a><span class='hs-definition'>layoutSetAutoDir</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>j</span> <span class='hs-keyglyph'>=</span>
<a name="line-480"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_auto_dir</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromBool</span> <span class='hs-varid'>j</span><span class='hs-layout'>)</span>
<a name="line-481"></a>
<a name="line-482"></a><a name="layoutGetAutoDir"></a><span class='hs-comment'>-- | Retrieve the auto direction flag.</span>
<a name="line-483"></a><span class='hs-comment'>--</span>
<a name="line-484"></a><span class='hs-comment'>-- * See 'layoutSetAutoDir'.</span>
<a name="line-485"></a><span class='hs-comment'>--</span>
<a name="line-486"></a><span class='hs-definition'>layoutGetAutoDir</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-487"></a><span class='hs-definition'>layoutGetAutoDir</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-488"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_auto_dir</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-489"></a>
<a name="line-490"></a>
<a name="line-491"></a>
<a name="line-492"></a><a name="LayoutAlignment"></a><span class='hs-comment'>-- | Enumerate to which side incomplete lines are flushed.</span>
<a name="line-493"></a><a name="LayoutAlignment"></a><span class='hs-comment'>--</span>
<a name="line-494"></a><a name="LayoutAlignment"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>LayoutAlignment</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>AlignLeft</span>
<a name="line-495"></a>                     <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AlignCenter</span>
<a name="line-496"></a>                     <span class='hs-keyglyph'>|</span> <span class='hs-conid'>AlignRight</span>
<a name="line-497"></a>                     <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Enum</span><span class='hs-layout'>)</span>
<a name="line-498"></a>
<a name="line-499"></a><span class='hs-comment'>{-# LINE 491 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-500"></a>
<a name="line-501"></a><a name="layoutSetAlignment"></a><span class='hs-comment'>-- | Set how this paragraph is aligned.</span>
<a name="line-502"></a><span class='hs-comment'>--</span>
<a name="line-503"></a><span class='hs-comment'>-- * Sets the alignment for the layout (how partial lines are</span>
<a name="line-504"></a><span class='hs-comment'>-- positioned within the horizontal space available.)</span>
<a name="line-505"></a><span class='hs-comment'>--</span>
<a name="line-506"></a><span class='hs-definition'>layoutSetAlignment</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>LayoutAlignment</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-507"></a><span class='hs-definition'>layoutSetAlignment</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>am</span> <span class='hs-keyglyph'>=</span>
<a name="line-508"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_alignment</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span><span class='hs-varop'>.</span><span class='hs-varid'>fromEnum</span><span class='hs-layout'>)</span> <span class='hs-varid'>am</span><span class='hs-layout'>)</span>
<a name="line-509"></a>
<a name="line-510"></a>
<a name="line-511"></a><a name="layoutGetAlignment"></a><span class='hs-comment'>-- | Get the alignment for the layout.</span>
<a name="line-512"></a><span class='hs-comment'>--</span>
<a name="line-513"></a><span class='hs-definition'>layoutGetAlignment</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>LayoutAlignment</span>
<a name="line-514"></a><span class='hs-definition'>layoutGetAlignment</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-varid'>toEnum</span><span class='hs-varop'>.</span><span class='hs-varid'>fromIntegral</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-515"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_alignment</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-516"></a>
<a name="line-517"></a><a name="TabAlign"></a><span class='hs-comment'>-- | Specify where the Tab stop appears relative to the text.</span>
<a name="line-518"></a><a name="TabAlign"></a><span class='hs-comment'>--</span>
<a name="line-519"></a><a name="TabAlign"></a><span class='hs-comment'>-- * Only Tab stops that align text to the left are supported right now.</span>
<a name="line-520"></a><a name="TabAlign"></a><span class='hs-comment'>--</span>
<a name="line-521"></a><a name="TabAlign"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>TabAlign</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>TabLeft</span>
<a name="line-522"></a>              <span class='hs-keyword'>deriving</span> <span class='hs-layout'>(</span><span class='hs-conid'>Enum</span><span class='hs-layout'>)</span>
<a name="line-523"></a>
<a name="line-524"></a><span class='hs-comment'>{-# LINE 513 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-525"></a>
<a name="line-526"></a><a name="TabPosition"></a><span class='hs-comment'>-- | A Tab position.</span>
<a name="line-527"></a><a name="TabPosition"></a><span class='hs-comment'>--</span>
<a name="line-528"></a><a name="TabPosition"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>TabPosition</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-conid'>Double</span><span class='hs-layout'>,</span> <span class='hs-conid'>TabAlign</span><span class='hs-layout'>)</span>
<a name="line-529"></a>
<a name="line-530"></a><a name="layoutSetTabs"></a><span class='hs-comment'>-- | Set a list of Tab positoins.</span>
<a name="line-531"></a><span class='hs-comment'>--</span>
<a name="line-532"></a><span class='hs-definition'>layoutSetTabs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TabPosition</span><span class='hs-keyglyph'>]</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-533"></a><span class='hs-definition'>layoutSetTabs</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>tabs</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-534"></a>  <span class='hs-keyword'>let</span> <span class='hs-varid'>len</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>length</span> <span class='hs-varid'>tabs</span><span class='hs-layout'>)</span>
<a name="line-535"></a>  <span class='hs-varid'>tabPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>pango_tab_array_new</span> <span class='hs-varid'>len</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromBool</span> <span class='hs-conid'>False</span><span class='hs-layout'>)</span>
<a name="line-536"></a>  <span class='hs-varid'>mapM_</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-varid'>idx</span><span class='hs-layout'>,</span> <span class='hs-layout'>(</span><span class='hs-varid'>pos</span><span class='hs-layout'>,</span> <span class='hs-varid'>align</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-537"></a>         <span class='hs-varid'>pango_tab_array_set_tab</span> <span class='hs-varid'>tabPtr</span> <span class='hs-varid'>idx</span>
<a name="line-538"></a>            <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromEnum</span> <span class='hs-varid'>align</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>pos</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>zip</span> <span class='hs-keyglyph'>[</span><span class='hs-num'>0</span><span class='hs-keyglyph'>..</span><span class='hs-keyglyph'>]</span> <span class='hs-varid'>tabs</span><span class='hs-layout'>)</span>
<a name="line-539"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_tabs</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-varid'>tabPtr</span>
<a name="line-540"></a>  <span class='hs-varid'>pango_tab_array_free</span> <span class='hs-varid'>tabPtr</span>
<a name="line-541"></a>
<a name="line-542"></a><a name="layoutResetTabs"></a><span class='hs-comment'>-- | Reset the original set of Tab positions.</span>
<a name="line-543"></a><span class='hs-comment'>--</span>
<a name="line-544"></a><span class='hs-comment'>-- * Restore the default which is a Tab stop every eight characters.</span>
<a name="line-545"></a><span class='hs-comment'>--</span>
<a name="line-546"></a><span class='hs-definition'>layoutResetTabs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-547"></a><span class='hs-definition'>layoutResetTabs</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_tabs</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-varid'>nullPtr</span>
<a name="line-548"></a>
<a name="line-549"></a><a name="layoutGetTabs"></a><span class='hs-comment'>-- | Retrieve the list of current Tab positions.</span>
<a name="line-550"></a><span class='hs-comment'>--</span>
<a name="line-551"></a><span class='hs-comment'>-- * If no Tab position where set, @Nothing@ is returned. In this case, Tab</span>
<a name="line-552"></a><span class='hs-comment'>-- positions are implicit at every eight characters.</span>
<a name="line-553"></a><span class='hs-comment'>--</span>
<a name="line-554"></a><span class='hs-definition'>layoutGetTabs</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>TabPosition</span><span class='hs-keyglyph'>]</span><span class='hs-layout'>)</span>
<a name="line-555"></a><span class='hs-definition'>layoutGetTabs</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-556"></a>  <span class='hs-varid'>tabPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_tabs</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-557"></a>  <span class='hs-keyword'>if</span> <span class='hs-varid'>tabPtr</span> <span class='hs-varop'>==</span> <span class='hs-varid'>nullPtr</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>liftM</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-558"></a>    <span class='hs-varid'>len</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>pango_tab_array_get_size</span> <span class='hs-varid'>tabPtr</span>
<a name="line-559"></a>    <span class='hs-varid'>mapM</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>idx</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>posPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>alignPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-560"></a>          <span class='hs-varid'>pango_tab_array_get_tab</span> <span class='hs-varid'>tabPtr</span> <span class='hs-varid'>idx</span> <span class='hs-varid'>alignPtr</span> <span class='hs-varid'>posPtr</span>
<a name="line-561"></a>          <span class='hs-varid'>align</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>alignPtr</span>
<a name="line-562"></a>          <span class='hs-varid'>pos</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>posPtr</span>
<a name="line-563"></a>          <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>intToPu</span> <span class='hs-varid'>pos</span><span class='hs-layout'>,</span> <span class='hs-varid'>toEnum</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>align</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>[</span><span class='hs-num'>0</span><span class='hs-keyglyph'>..</span><span class='hs-varid'>len</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-keyglyph'>]</span>
<a name="line-564"></a>
<a name="line-565"></a><a name="layoutSetSingleParagraphMode"></a><span class='hs-comment'>-- | Honor newlines or not.</span>
<a name="line-566"></a><span class='hs-comment'>--</span>
<a name="line-567"></a><span class='hs-comment'>-- * If @honor@ is @True@, do not treat newlines and</span>
<a name="line-568"></a><span class='hs-comment'>-- similar characters as paragraph separators; instead, keep all text in</span>
<a name="line-569"></a><span class='hs-comment'>-- a single paragraph, and display a glyph for paragraph separator</span>
<a name="line-570"></a><span class='hs-comment'>-- characters. Used when you want to allow editing of newlines on a</span>
<a name="line-571"></a><span class='hs-comment'>-- single text line.</span>
<a name="line-572"></a><span class='hs-comment'>--</span>
<a name="line-573"></a><span class='hs-definition'>layoutSetSingleParagraphMode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span>
<a name="line-574"></a><span class='hs-definition'>layoutSetSingleParagraphMode</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>honor</span> <span class='hs-keyglyph'>=</span>
<a name="line-575"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_set_single_paragraph_mode</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromBool</span> <span class='hs-varid'>honor</span><span class='hs-layout'>)</span>
<a name="line-576"></a>
<a name="line-577"></a><a name="layoutGetSingleParagraphMode"></a><span class='hs-comment'>-- | Retrieve if newlines are honored.</span>
<a name="line-578"></a><span class='hs-comment'>--</span>
<a name="line-579"></a><span class='hs-comment'>-- * See 'layoutSetSingleParagraphMode'.</span>
<a name="line-580"></a><span class='hs-comment'>--</span>
<a name="line-581"></a><span class='hs-definition'>layoutGetSingleParagraphMode</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-582"></a><span class='hs-definition'>layoutGetSingleParagraphMode</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-583"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_single_paragraph_mode</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-584"></a>
<a name="line-585"></a><span class='hs-comment'>-- a function is missing here</span>
<a name="line-586"></a>
<a name="line-587"></a><a name="layoutXYToIndex"></a><span class='hs-comment'>-- | Converts a device unit to a character index.</span>
<a name="line-588"></a><span class='hs-comment'>--</span>
<a name="line-589"></a><span class='hs-comment'>-- * Converts from @x@ and @y@ position within a layout to the index of</span>
<a name="line-590"></a><span class='hs-comment'>-- the closest character. If the @y@ position is not inside the layout,</span>
<a name="line-591"></a><span class='hs-comment'>-- the closest position is chosen (the position will be clamped inside</span>
<a name="line-592"></a><span class='hs-comment'>-- the layout). If the @x@ position is not within the layout, then the</span>
<a name="line-593"></a><span class='hs-comment'>-- start or the end of the line is chosen. If either the @x@ or @y@</span>
<a name="line-594"></a><span class='hs-comment'>-- positions were not inside the layout, then the function returns @False@;</span>
<a name="line-595"></a><span class='hs-comment'>-- on an exact hit, it returns @True@.</span>
<a name="line-596"></a><span class='hs-comment'>--</span>
<a name="line-597"></a><span class='hs-comment'>-- * The function returns the flag for the exact hit and the index into</span>
<a name="line-598"></a><span class='hs-comment'>-- the string. The third value is zero if the character corresponds to</span>
<a name="line-599"></a><span class='hs-comment'>-- one grapheme. If the grapheme is the result of a cluster, this value</span>
<a name="line-600"></a><span class='hs-comment'>-- may be greater than one, indicating where in the grapheme the position</span>
<a name="line-601"></a><span class='hs-comment'>-- lies. Zero represents the trailing edge on the grapheme.</span>
<a name="line-602"></a><span class='hs-comment'>--</span>
<a name="line-603"></a><span class='hs-definition'>layoutXYToIndex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span> <span class='hs-comment'>-- ^ the @x@ position</span>
<a name="line-604"></a>                <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span> <span class='hs-comment'>-- ^ the @y@ position</span>
<a name="line-605"></a>                <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Bool</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int</span><span class='hs-layout'>)</span>
<a name="line-606"></a><span class='hs-definition'>layoutXYToIndex</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>x</span> <span class='hs-varid'>y</span> <span class='hs-keyglyph'>=</span>
<a name="line-607"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>idxPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>trailPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-608"></a>    <span class='hs-varid'>res</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_xy_to_index</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>x</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>y</span><span class='hs-layout'>)</span>
<a name="line-609"></a>      <span class='hs-varid'>idxPtr</span> <span class='hs-varid'>trailPtr</span>
<a name="line-610"></a>    <span class='hs-varid'>idx</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>idxPtr</span>
<a name="line-611"></a>    <span class='hs-varid'>trail</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>trailPtr</span>
<a name="line-612"></a>    <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-613"></a>    <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>toBool</span> <span class='hs-varid'>res</span><span class='hs-layout'>,</span>
<a name="line-614"></a>            <span class='hs-varid'>ofsFromUTF</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>idx</span><span class='hs-layout'>)</span> <span class='hs-varid'>uc</span><span class='hs-layout'>,</span>
<a name="line-615"></a>            <span class='hs-varid'>ofsFromUTF</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>trail</span><span class='hs-layout'>)</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span>
<a name="line-616"></a>
<a name="line-617"></a><a name="layoutIndexToPos"></a><span class='hs-comment'>-- | Return the rectangle of the glyph at the given index.</span>
<a name="line-618"></a><span class='hs-comment'>--</span>
<a name="line-619"></a><span class='hs-comment'>-- * Converts from an index within a 'PangoLayout' to the onscreen position</span>
<a name="line-620"></a><span class='hs-comment'>-- corresponding to the grapheme at that index, which is represented as</span>
<a name="line-621"></a><span class='hs-comment'>-- rectangle. Note that, given a @PangoRectangle x y width height@, @x@</span>
<a name="line-622"></a><span class='hs-comment'>-- is always the leading edge of the grapheme and @x + width@ the</span>
<a name="line-623"></a><span class='hs-comment'>-- trailing edge of the grapheme. If the directionality of the grapheme</span>
<a name="line-624"></a><span class='hs-comment'>-- is right-to-left, then @width@ will be negative.</span>
<a name="line-625"></a><span class='hs-comment'>--</span>
<a name="line-626"></a><span class='hs-definition'>layoutIndexToPos</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>PangoRectangle</span>
<a name="line-627"></a><span class='hs-definition'>layoutIndexToPos</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-varid'>pos</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-628"></a>  <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-629"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>rectPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-630"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_index_to_pos</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsToUTF</span> <span class='hs-varid'>pos</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-631"></a>                                            <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>rectPtr</span><span class='hs-layout'>)</span>
<a name="line-632"></a>    <span class='hs-varid'>peek</span> <span class='hs-varid'>rectPtr</span>
<a name="line-633"></a>
<a name="line-634"></a><a name="twoRect"></a><span class='hs-definition'>twoRect</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-635"></a>           <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span>
<a name="line-636"></a><span class='hs-definition'>twoRect</span> <span class='hs-varid'>f</span> <span class='hs-keyglyph'>=</span>
<a name="line-637"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>inkPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>logPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-638"></a>  <span class='hs-varid'>f</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>inkPtr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>logPtr</span><span class='hs-layout'>)</span>
<a name="line-639"></a>  <span class='hs-varid'>ink</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>inkPtr</span>
<a name="line-640"></a>  <span class='hs-varid'>log</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>logPtr</span>
<a name="line-641"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>ink</span><span class='hs-layout'>,</span> <span class='hs-varid'>log</span><span class='hs-layout'>)</span>
<a name="line-642"></a>
<a name="line-643"></a><a name="layoutGetCursorPos"></a><span class='hs-comment'>-- | Return a cursor position.</span>
<a name="line-644"></a><span class='hs-comment'>--</span>
<a name="line-645"></a><span class='hs-comment'>-- * Given an index within a layout, determines the positions that of the</span>
<a name="line-646"></a><span class='hs-comment'>-- strong and weak cursors if the insertion point is at that index.</span>
<a name="line-647"></a><span class='hs-comment'>-- The position of each cursor is stored as a zero-width rectangle.</span>
<a name="line-648"></a><span class='hs-comment'>-- The strong cursor location is the location where characters of the</span>
<a name="line-649"></a><span class='hs-comment'>-- directionality equal to the base direction of the layout are inserted.</span>
<a name="line-650"></a><span class='hs-comment'>-- The weak cursor location is the location where characters of the</span>
<a name="line-651"></a><span class='hs-comment'>-- directionality opposite to the base direction of the layout are</span>
<a name="line-652"></a><span class='hs-comment'>-- inserted. The first element of the typle is the strong position,</span>
<a name="line-653"></a><span class='hs-comment'>-- the second the weak.</span>
<a name="line-654"></a><span class='hs-comment'>--</span>
<a name="line-655"></a><span class='hs-definition'>layoutGetCursorPos</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-656"></a>                      <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ @(strong, weak)@</span>
<a name="line-657"></a><span class='hs-definition'>layoutGetCursorPos</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-varid'>pos</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-658"></a>  <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-659"></a>  <span class='hs-varid'>twoRect</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_cursor_pos</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsToUTF</span> <span class='hs-varid'>pos</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-660"></a>
<a name="line-661"></a><a name="CursorPos"></a><span class='hs-comment'>-- | A new cursor position.</span>
<a name="line-662"></a><a name="CursorPos"></a><span class='hs-comment'>--</span>
<a name="line-663"></a><a name="CursorPos"></a><span class='hs-comment'>-- See 'layoutMoveCursorVisually'.</span>
<a name="line-664"></a><a name="CursorPos"></a><span class='hs-comment'>--</span>
<a name="line-665"></a><a name="CursorPos"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>CursorPos</span>
<a name="line-666"></a>  <span class='hs-keyglyph'>=</span> <span class='hs-conid'>CursorPosPrevPara</span> <span class='hs-comment'>-- ^ The cursor should move to the previous paragraph.</span>
<a name="line-667"></a>  <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CursorPos</span> <span class='hs-conid'>Int</span> <span class='hs-conid'>Int</span> <span class='hs-comment'>-- ^ The sum of the indices is the new cursor position.</span>
<a name="line-668"></a>  <span class='hs-keyglyph'>|</span> <span class='hs-conid'>CursorPosNextPara</span> <span class='hs-comment'>-- ^ The cursor should advance to the next paragraph.</span>
<a name="line-669"></a>
<a name="line-670"></a><a name="layoutMoveCursorVisually"></a><span class='hs-comment'>-- | Move a cursor visually.</span>
<a name="line-671"></a><span class='hs-comment'>--</span>
<a name="line-672"></a><span class='hs-comment'>-- * Compute a new cursor position from a previous cursor position. A value</span>
<a name="line-673"></a><span class='hs-comment'>-- of @True@ for the direction will move it to the right, independant of</span>
<a name="line-674"></a><span class='hs-comment'>-- the underlying direction. Hence the cursor position might jump if</span>
<a name="line-675"></a><span class='hs-comment'>-- left-to-right text is mixed with right-to-left text.</span>
<a name="line-676"></a><span class='hs-comment'>--</span>
<a name="line-677"></a><span class='hs-comment'>-- * The first flag should be @True@ if this cursor is the strong cursor.</span>
<a name="line-678"></a><span class='hs-comment'>-- The strong cursor is the cursor of the base direction of the current</span>
<a name="line-679"></a><span class='hs-comment'>-- layout (see 'layoutSetAutoDir'). The weak cursor is that of the</span>
<a name="line-680"></a><span class='hs-comment'>-- opposite direction.</span>
<a name="line-681"></a><span class='hs-comment'>--</span>
<a name="line-682"></a><span class='hs-comment'>-- * The previous cursor position is given by @idx@. If this text at this</span>
<a name="line-683"></a><span class='hs-comment'>-- position is a cluster, the cursor will only move to the end or</span>
<a name="line-684"></a><span class='hs-comment'>-- beginning of the cluster as opposed to past the next character.</span>
<a name="line-685"></a><span class='hs-comment'>-- The return value is either 'CursorPosNextPara' if the cursor moved</span>
<a name="line-686"></a><span class='hs-comment'>-- beyond this paragraph, it is 'CursorPosPrevPara' if the cursor moved</span>
<a name="line-687"></a><span class='hs-comment'>-- in front of this paragraph and it is 'CursorPos' @idx@ @trail@ to denote</span>
<a name="line-688"></a><span class='hs-comment'>-- the new cursor position @idx@. Note that @idx@ will always denote an</span>
<a name="line-689"></a><span class='hs-comment'>-- insertion point, that is, @idx@ will never point into the middle of</span>
<a name="line-690"></a><span class='hs-comment'>-- a cluster. The @trail@ value can contain a positive</span>
<a name="line-691"></a><span class='hs-comment'>-- value if the current cursor position is at the end of the current line.</span>
<a name="line-692"></a><span class='hs-comment'>-- In this case, @idx@ points past the last character of this line while</span>
<a name="line-693"></a><span class='hs-comment'>-- @trail@ contains the number of characters that are reponsible for the</span>
<a name="line-694"></a><span class='hs-comment'>-- line break such as newlines. The actual cursor position is always</span>
<a name="line-695"></a><span class='hs-comment'>-- @idx+trail@ where the visual cursor should be shown.</span>
<a name="line-696"></a><span class='hs-comment'>--</span>
<a name="line-697"></a><span class='hs-definition'>layoutMoveCursorVisually</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span>
<a name="line-698"></a>                         <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span> <span class='hs-comment'>-- ^ @True@ to create a strong cursor.</span>
<a name="line-699"></a>                         <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-comment'>-- ^ The previous position.</span>
<a name="line-700"></a>                         <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span> <span class='hs-comment'>-- ^ @True@ if the cursor should move right.</span>
<a name="line-701"></a>                         <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>CursorPos</span>
<a name="line-702"></a><span class='hs-definition'>layoutMoveCursorVisually</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>plr</span><span class='hs-layout'>)</span> <span class='hs-varid'>strong</span> <span class='hs-varid'>index</span> <span class='hs-varid'>dir</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-703"></a>  <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-704"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>idxPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>trailPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-705"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span> <span class='hs-varid'>arg6</span> <span class='hs-varid'>arg7</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_move_cursor_visually</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span> <span class='hs-varid'>arg6</span> <span class='hs-varid'>arg7</span><span class='hs-layout'>)</span> <span class='hs-varid'>plr</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromBool</span> <span class='hs-varid'>strong</span><span class='hs-layout'>)</span>
<a name="line-706"></a>      <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsToUTF</span> <span class='hs-varid'>index</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-num'>0</span>
<a name="line-707"></a>      <span class='hs-layout'>(</span><span class='hs-keyword'>if</span> <span class='hs-varid'>dir</span> <span class='hs-keyword'>then</span> <span class='hs-num'>1</span> <span class='hs-keyword'>else</span> <span class='hs-layout'>(</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-varid'>idxPtr</span> <span class='hs-varid'>trailPtr</span>
<a name="line-708"></a>    <span class='hs-varid'>idx</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>idxPtr</span>
<a name="line-709"></a>    <span class='hs-varid'>trail</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>trailPtr</span>
<a name="line-710"></a>    <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-keyword'>if</span> <span class='hs-varid'>idx</span><span class='hs-varop'>==</span><span class='hs-layout'>(</span><span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span> <span class='hs-keyword'>then</span> <span class='hs-conid'>CursorPosPrevPara</span> <span class='hs-keyword'>else</span>
<a name="line-711"></a>            <span class='hs-keyword'>if</span> <span class='hs-varid'>idx</span><span class='hs-varop'>==</span><span class='hs-varid'>maxBound</span> <span class='hs-keyword'>then</span> <span class='hs-conid'>CursorPosNextPara</span> <span class='hs-keyword'>else</span>
<a name="line-712"></a>            <span class='hs-conid'>CursorPos</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsFromUTF</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>idx</span><span class='hs-layout'>)</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>trail</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-713"></a>
<a name="line-714"></a><a name="layoutGetExtents"></a><span class='hs-comment'>-- | Computes the logical and ink extents of the 'PangoLayout'.</span>
<a name="line-715"></a><span class='hs-comment'>--</span>
<a name="line-716"></a><span class='hs-comment'>-- Logical extents are usually what you want for positioning things. Note that</span>
<a name="line-717"></a><span class='hs-comment'>-- both extents may have non-zero x and y. You may want to use those to offset</span>
<a name="line-718"></a><span class='hs-comment'>-- where you render the layout. Not doing that is a very typical bug that</span>
<a name="line-719"></a><span class='hs-comment'>-- shows up as right-to-left layouts not being correctly positioned in a</span>
<a name="line-720"></a><span class='hs-comment'>-- layout with a set width.</span>
<a name="line-721"></a><span class='hs-comment'>--</span>
<a name="line-722"></a><span class='hs-comment'>-- Layout coordinates begin at the top left corner of the layout.</span>
<a name="line-723"></a><span class='hs-comment'>--</span>
<a name="line-724"></a><span class='hs-definition'>layoutGetExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span>
<a name="line-725"></a>                 <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ @(ink, logical)@</span>
<a name="line-726"></a><span class='hs-definition'>layoutGetExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-727"></a>  <span class='hs-varid'>twoRect</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-728"></a>
<a name="line-729"></a><a name="layoutGetPixelExtents"></a><span class='hs-comment'>-- | Compute the physical size of the layout.</span>
<a name="line-730"></a><span class='hs-comment'>--</span>
<a name="line-731"></a><span class='hs-comment'>-- * Computes the ink and the logical size of the 'Layout' in device units,</span>
<a name="line-732"></a><span class='hs-comment'>-- that is, pixels for a screen. Identical to 'layoutGetExtents' and</span>
<a name="line-733"></a><span class='hs-comment'>-- converting the 'Double's in the 'PangoRectangle' to integers.</span>
<a name="line-734"></a><span class='hs-comment'>--</span>
<a name="line-735"></a><span class='hs-definition'>layoutGetPixelExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Rectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>Rectangle</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ @(ink, logical)@</span>
<a name="line-736"></a><span class='hs-definition'>layoutGetPixelExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-737"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>inkPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>logPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-738"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_pixel_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>inkPtr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>logPtr</span><span class='hs-layout'>)</span>
<a name="line-739"></a>  <span class='hs-varid'>ink</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peekIntPangoRectangle</span> <span class='hs-varid'>inkPtr</span>
<a name="line-740"></a>  <span class='hs-varid'>log</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peekIntPangoRectangle</span> <span class='hs-varid'>logPtr</span>
<a name="line-741"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>ink</span><span class='hs-layout'>,</span><span class='hs-varid'>log</span><span class='hs-layout'>)</span>
<a name="line-742"></a>
<a name="line-743"></a><a name="layoutGetLineCount"></a><span class='hs-comment'>-- | Ask for the number of lines in this layout.</span>
<a name="line-744"></a><span class='hs-comment'>--</span>
<a name="line-745"></a><span class='hs-definition'>layoutGetLineCount</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Int</span>
<a name="line-746"></a><span class='hs-definition'>layoutGetLineCount</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>fromIntegral</span> <span class='hs-varop'>$</span>
<a name="line-747"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_line_count</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-748"></a>
<a name="line-749"></a><a name="layoutGetLine"></a><span class='hs-comment'>-- | Extract a single lines of the layout.</span>
<a name="line-750"></a><span class='hs-comment'>--</span>
<a name="line-751"></a><span class='hs-comment'>-- * The given index starts from 0. The function throws an</span>
<a name="line-752"></a><span class='hs-comment'>-- 'ArrayException' if the index is out of bounds.</span>
<a name="line-753"></a><span class='hs-comment'>--</span>
<a name="line-754"></a><span class='hs-comment'>-- * The lines of each layout are regenerated if any attribute changes.</span>
<a name="line-755"></a><span class='hs-comment'>-- Thus the returned list does not reflect the current state of lines</span>
<a name="line-756"></a><span class='hs-comment'>-- after a change has been made.</span>
<a name="line-757"></a><span class='hs-comment'>--</span>
<a name="line-758"></a><span class='hs-definition'>layoutGetLine</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>LayoutLine</span>
<a name="line-759"></a><span class='hs-definition'>layoutGetLine</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-varid'>idx</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-760"></a>  <span class='hs-varid'>llPtr</span> <span class='hs-keyglyph'>&lt;-</span>
<a name="line-761"></a>
<a name="line-762"></a>    <span class='hs-comment'>-- use the optimised read-only version if available</span>
<a name="line-763"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_line_readonly</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span>
<a name="line-764"></a><span class='hs-comment'>{-# LINE 752 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-765"></a>
<a name="line-766"></a>
<a name="line-767"></a>
<a name="line-768"></a>      <span class='hs-varid'>pl</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>idx</span><span class='hs-layout'>)</span>
<a name="line-769"></a>  <span class='hs-keyword'>if</span> <span class='hs-varid'>llPtr</span><span class='hs-varop'>==</span><span class='hs-varid'>nullPtr</span> <span class='hs-keyword'>then</span>
<a name="line-770"></a>     <span class='hs-varid'>throwIO</span> <span class='hs-layout'>(</span><span class='hs-conid'>ArrayException</span> <span class='hs-layout'>(</span><span class='hs-conid'>IndexOutOfBounds</span>
<a name="line-771"></a>      <span class='hs-layout'>(</span><span class='hs-str'>"Graphics.Rendering.Pango.Layout.layoutGetLine: "</span><span class='hs-varop'>++</span>
<a name="line-772"></a>       <span class='hs-str'>"no line at index "</span><span class='hs-varop'>++</span><span class='hs-varid'>show</span> <span class='hs-varid'>idx</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-773"></a>  <span class='hs-varid'>ll</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewLayoutLineRaw</span> <span class='hs-varid'>llPtr</span>
<a name="line-774"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_ref</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span>
<a name="line-775"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span>
<a name="line-776"></a>
<a name="line-777"></a><a name="layoutGetLines"></a><span class='hs-comment'>-- | Extract the lines of the layout.</span>
<a name="line-778"></a><span class='hs-comment'>--</span>
<a name="line-779"></a><span class='hs-comment'>-- * The lines of each layout are regenerated if any attribute changes.</span>
<a name="line-780"></a><span class='hs-comment'>-- Thus the returned list does not reflect the current state of lines</span>
<a name="line-781"></a><span class='hs-comment'>-- after a change has been made.</span>
<a name="line-782"></a><span class='hs-comment'>--</span>
<a name="line-783"></a><span class='hs-definition'>layoutGetLines</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-conid'>LayoutLine</span><span class='hs-keyglyph'>]</span>
<a name="line-784"></a><span class='hs-definition'>layoutGetLines</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-785"></a>  <span class='hs-varid'>listPtr</span> <span class='hs-keyglyph'>&lt;-</span>
<a name="line-786"></a>
<a name="line-787"></a>    <span class='hs-comment'>-- use the optimised read-only version if available</span>
<a name="line-788"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_lines_readonly</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span>
<a name="line-789"></a><span class='hs-comment'>{-# LINE 776 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-790"></a>
<a name="line-791"></a>
<a name="line-792"></a>
<a name="line-793"></a>    <span class='hs-varid'>pl</span>
<a name="line-794"></a>  <span class='hs-varid'>list</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readGSList</span> <span class='hs-varid'>listPtr</span>
<a name="line-795"></a>  <span class='hs-varid'>pls</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>mapM</span> <span class='hs-varid'>makeNewLayoutLineRaw</span> <span class='hs-varid'>list</span>
<a name="line-796"></a>  <span class='hs-varid'>mapM_</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_ref</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pls</span>
<a name="line-797"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>map</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-varid'>psRef</span><span class='hs-layout'>)</span> <span class='hs-varid'>pls</span><span class='hs-layout'>)</span>
<a name="line-798"></a>
<a name="line-799"></a><a name="layoutGetIter"></a><span class='hs-comment'>-- | Create an iterator to examine a layout.</span>
<a name="line-800"></a><span class='hs-comment'>--</span>
<a name="line-801"></a><span class='hs-definition'>layoutGetIter</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>PangoLayout</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>LayoutIter</span>
<a name="line-802"></a><span class='hs-definition'>layoutGetIter</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoLayout</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>pl</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-803"></a>  <span class='hs-varid'>iterPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoLayoutRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_get_iter</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>pl</span>
<a name="line-804"></a>  <span class='hs-varid'>liftM</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-varid'>psRef</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span> <span class='hs-varid'>makeNewLayoutIterRaw</span> <span class='hs-varid'>iterPtr</span>
<a name="line-805"></a>
<a name="line-806"></a><a name="layoutIterNextItem"></a><span class='hs-comment'>-- | Move to the next 'GlyphItem'.</span>
<a name="line-807"></a><span class='hs-comment'>--</span>
<a name="line-808"></a><span class='hs-comment'>-- * Returns @False@ if this was the last item in the layout.</span>
<a name="line-809"></a><span class='hs-comment'>--</span>
<a name="line-810"></a><span class='hs-definition'>layoutIterNextItem</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-811"></a><span class='hs-definition'>layoutIterNextItem</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-812"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_next_run</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-813"></a>
<a name="line-814"></a><a name="layoutIterNextChar"></a><span class='hs-comment'>-- | Move to the next char.</span>
<a name="line-815"></a><span class='hs-comment'>--</span>
<a name="line-816"></a><span class='hs-comment'>-- * Returns @False@ if this was the last char in the layout.</span>
<a name="line-817"></a><span class='hs-comment'>--</span>
<a name="line-818"></a><span class='hs-definition'>layoutIterNextChar</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-819"></a><span class='hs-definition'>layoutIterNextChar</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-820"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_next_char</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-821"></a>
<a name="line-822"></a><a name="layoutIterNextCluster"></a><span class='hs-comment'>-- | Move to the next cluster.</span>
<a name="line-823"></a><span class='hs-comment'>--</span>
<a name="line-824"></a><span class='hs-comment'>-- * Returns @False@ if this was the last cluster in the layout.</span>
<a name="line-825"></a><span class='hs-comment'>--</span>
<a name="line-826"></a><span class='hs-definition'>layoutIterNextCluster</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-827"></a><span class='hs-definition'>layoutIterNextCluster</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-828"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_next_cluster</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-829"></a>
<a name="line-830"></a><a name="layoutIterNextLine"></a><span class='hs-comment'>-- | Move to the next line.</span>
<a name="line-831"></a><span class='hs-comment'>--</span>
<a name="line-832"></a><span class='hs-comment'>-- * Returns @False@ if this was the last line in the layout.</span>
<a name="line-833"></a><span class='hs-comment'>--</span>
<a name="line-834"></a><span class='hs-definition'>layoutIterNextLine</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-835"></a><span class='hs-definition'>layoutIterNextLine</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-836"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_next_line</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-837"></a>
<a name="line-838"></a><a name="layoutIterAtLastLine"></a><span class='hs-comment'>-- | Check if the iterator is on the last line.</span>
<a name="line-839"></a><span class='hs-comment'>--</span>
<a name="line-840"></a><span class='hs-comment'>-- * Returns @True@ if the iterator is on the last line of this</span>
<a name="line-841"></a><span class='hs-comment'>-- paragraph.</span>
<a name="line-842"></a><span class='hs-comment'>--</span>
<a name="line-843"></a><span class='hs-definition'>layoutIterAtLastLine</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Bool</span>
<a name="line-844"></a><span class='hs-definition'>layoutIterAtLastLine</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-845"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>toBool</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_at_last_line</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-846"></a>
<a name="line-847"></a><a name="layoutIterGetIndex"></a><span class='hs-comment'>-- | Get the character index.</span>
<a name="line-848"></a><span class='hs-comment'>--</span>
<a name="line-849"></a><span class='hs-comment'>-- * Note that iterating forward by char moves in visual order, not</span>
<a name="line-850"></a><span class='hs-comment'>-- logical order, so indexes may not be sequential. Also, the index</span>
<a name="line-851"></a><span class='hs-comment'>-- may be equal to the length of the text in the layout.</span>
<a name="line-852"></a><span class='hs-comment'>--</span>
<a name="line-853"></a><span class='hs-definition'>layoutIterGetIndex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Int</span>
<a name="line-854"></a><span class='hs-definition'>layoutIterGetIndex</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-855"></a>  <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-856"></a>  <span class='hs-varid'>idx</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_index</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-857"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsFromUTF</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>idx</span><span class='hs-layout'>)</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span>
<a name="line-858"></a>
<a name="line-859"></a><a name="layoutIterGetBaseline"></a><span class='hs-comment'>-- | Query the vertical position within the layout.</span>
<a name="line-860"></a><span class='hs-comment'>--</span>
<a name="line-861"></a><span class='hs-comment'>-- * Gets the y position of the current line's baseline (origin at top</span>
<a name="line-862"></a><span class='hs-comment'>-- left of the entire layout).</span>
<a name="line-863"></a><span class='hs-comment'>--</span>
<a name="line-864"></a><span class='hs-definition'>layoutIterGetBaseline</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Double</span>
<a name="line-865"></a><span class='hs-definition'>layoutIterGetBaseline</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-866"></a>  <span class='hs-varid'>liftM</span> <span class='hs-varid'>intToPu</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_baseline</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-867"></a>
<a name="line-868"></a>
<a name="line-869"></a><a name="layoutIterGetItem"></a><span class='hs-comment'>-- | Retrieve the current 'GlyphItem' under the iterator.</span>
<a name="line-870"></a><span class='hs-comment'>--</span>
<a name="line-871"></a><span class='hs-comment'>-- * Each 'LayoutLine' contains a list of 'GlyphItem's. This function</span>
<a name="line-872"></a><span class='hs-comment'>-- returns the 'GlyphItem' under the current iterator. If the iterator</span>
<a name="line-873"></a><span class='hs-comment'>-- is positioned past the last charactor of the paragraph, the function</span>
<a name="line-874"></a><span class='hs-comment'>-- returns @Nothing@.</span>
<a name="line-875"></a><span class='hs-comment'>--</span>
<a name="line-876"></a><span class='hs-definition'>layoutIterGetItem</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>GlyphItem</span><span class='hs-layout'>)</span>
<a name="line-877"></a><span class='hs-definition'>layoutIterGetItem</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-878"></a>  <span class='hs-varid'>giPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_run</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-879"></a>  <span class='hs-keyword'>if</span> <span class='hs-varid'>giPtr</span><span class='hs-varop'>==</span><span class='hs-varid'>nullPtr</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-varid'>liftM</span> <span class='hs-conid'>Just</span> <span class='hs-varop'>$</span> <span class='hs-keyword'>do</span>
<a name="line-880"></a>    <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-881"></a>    <span class='hs-varid'>pirPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span> <span class='hs-layout'>{</span><span class='hs-varid'>peekByteOff</span> <span class='hs-varid'>ptr</span> <span class='hs-num'>0</span> <span class='hs-keyglyph'>::</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoItemRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span> <span class='hs-varid'>giPtr</span>
<a name="line-882"></a>    <span class='hs-varid'>gsrPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-varid'>ptr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span> <span class='hs-layout'>{</span><span class='hs-varid'>peekByteOff</span> <span class='hs-varid'>ptr</span> <span class='hs-num'>4</span> <span class='hs-keyglyph'>::</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>GlyphStringRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>}</span><span class='hs-layout'>)</span> <span class='hs-varid'>giPtr</span>
<a name="line-883"></a>    <span class='hs-keyword'>let</span> <span class='hs-varid'>dummy</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>PangoItemRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_item_copy</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span>
<a name="line-884"></a><span class='hs-comment'>{-# LINE 870 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-885"></a>    <span class='hs-keyword'>let</span> <span class='hs-varid'>dummy</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>GlyphStringRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_glyph_string_copy</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span>
<a name="line-886"></a><span class='hs-comment'>{-# LINE 871 "./Graphics/Rendering/Pango/Layout.chs" #-}</span>
<a name="line-887"></a>    <span class='hs-varid'>pirPtr'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>pango_item_copy</span> <span class='hs-varid'>pirPtr</span>
<a name="line-888"></a>    <span class='hs-varid'>gsrPtr'</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>pango_glyph_string_copy</span> <span class='hs-varid'>gsrPtr</span>
<a name="line-889"></a>    <span class='hs-varid'>pir</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewPangoItemRaw</span> <span class='hs-varid'>pirPtr'</span>
<a name="line-890"></a>    <span class='hs-varid'>gsr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewGlyphStringRaw</span> <span class='hs-varid'>gsrPtr'</span>
<a name="line-891"></a>    <span class='hs-varid'>ps</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-892"></a>    <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>GlyphItem</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoItem</span> <span class='hs-varid'>ps</span> <span class='hs-varid'>pir</span><span class='hs-layout'>)</span> <span class='hs-varid'>gsr</span><span class='hs-layout'>)</span>
<a name="line-893"></a>
<a name="line-894"></a>
<a name="line-895"></a><a name="layoutIterGetLine"></a><span class='hs-comment'>-- | Extract the line under the iterator.</span>
<a name="line-896"></a><span class='hs-comment'>--</span>
<a name="line-897"></a><span class='hs-definition'>layoutIterGetLine</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Maybe</span> <span class='hs-conid'>LayoutLine</span><span class='hs-layout'>)</span>
<a name="line-898"></a><span class='hs-definition'>layoutIterGetLine</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-899"></a>  <span class='hs-varid'>llPtr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>castPtr</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_line</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-900"></a>  <span class='hs-keyword'>if</span> <span class='hs-layout'>(</span><span class='hs-varid'>llPtr</span><span class='hs-varop'>==</span><span class='hs-varid'>nullPtr</span><span class='hs-layout'>)</span> <span class='hs-keyword'>then</span> <span class='hs-varid'>return</span> <span class='hs-conid'>Nothing</span> <span class='hs-keyword'>else</span> <span class='hs-keyword'>do</span>
<a name="line-901"></a>    <span class='hs-varid'>ll</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>makeNewLayoutLineRaw</span> <span class='hs-varid'>llPtr</span>
<a name="line-902"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_ref</span> <span class='hs-varid'>argPtr1</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span>
<a name="line-903"></a>    <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-conid'>Just</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-904"></a>
<a name="line-905"></a><a name="layoutIterGetCharExtents"></a><span class='hs-comment'>-- | Retrieve a rectangle surrounding a character.</span>
<a name="line-906"></a><span class='hs-comment'>--</span>
<a name="line-907"></a><span class='hs-comment'>-- * Get the extents of the current character</span>
<a name="line-908"></a><span class='hs-comment'>-- (origin is the top left of the entire layout). Only logical extents</span>
<a name="line-909"></a><span class='hs-comment'>-- can sensibly be obtained for characters; ink extents make sense only</span>
<a name="line-910"></a><span class='hs-comment'>-- down to the level of clusters.</span>
<a name="line-911"></a><span class='hs-comment'>--</span>
<a name="line-912"></a><span class='hs-definition'>layoutIterGetCharExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>PangoRectangle</span>
<a name="line-913"></a><span class='hs-definition'>layoutIterGetCharExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>logPtr</span> <span class='hs-keyglyph'>-&gt;</span>
<a name="line-914"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_char_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>logPtr</span><span class='hs-layout'>)</span> <span class='hs-varop'>&gt;&gt;</span>
<a name="line-915"></a>  <span class='hs-varid'>peek</span> <span class='hs-varid'>logPtr</span>
<a name="line-916"></a>
<a name="line-917"></a><a name="layoutIterGetClusterExtents"></a><span class='hs-comment'>-- | Compute the physical size of the cluster.</span>
<a name="line-918"></a><span class='hs-comment'>--</span>
<a name="line-919"></a><span class='hs-comment'>-- * Computes the ink and the logical size of the cluster pointed to by</span>
<a name="line-920"></a><span class='hs-comment'>-- 'LayoutIter'.</span>
<a name="line-921"></a><span class='hs-comment'>--</span>
<a name="line-922"></a><span class='hs-definition'>layoutIterGetClusterExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ @(ink, logical)@</span>
<a name="line-923"></a><span class='hs-definition'>layoutIterGetClusterExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-924"></a>  <span class='hs-varid'>twoRect</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_cluster_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-925"></a>
<a name="line-926"></a><a name="layoutIterGetRunExtents"></a><span class='hs-comment'>-- | Compute the physical size of the run.</span>
<a name="line-927"></a><span class='hs-comment'>--</span>
<a name="line-928"></a><span class='hs-comment'>-- * Computes the ink and the logical size of the run pointed to by</span>
<a name="line-929"></a><span class='hs-comment'>-- 'LayoutIter'.</span>
<a name="line-930"></a><span class='hs-comment'>--</span>
<a name="line-931"></a><span class='hs-definition'>layoutIterGetRunExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span>
<a name="line-932"></a><span class='hs-definition'>layoutIterGetRunExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-933"></a>  <span class='hs-varid'>twoRect</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_run_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-934"></a>
<a name="line-935"></a><a name="layoutIterGetLineYRange"></a><span class='hs-comment'>-- | Retrieve vertical extent of this line.</span>
<a name="line-936"></a><span class='hs-comment'>--</span>
<a name="line-937"></a><span class='hs-comment'>-- * Divides the vertical space in the 'PangoLayout' being</span>
<a name="line-938"></a><span class='hs-comment'>-- iterated over between the lines in the layout, and returns the</span>
<a name="line-939"></a><span class='hs-comment'>-- space belonging to the current line. A line's range includes the</span>
<a name="line-940"></a><span class='hs-comment'>-- line's logical extents, plus half of the spacing above and below</span>
<a name="line-941"></a><span class='hs-comment'>-- the line, if 'layoutSetSpacing' has been called</span>
<a name="line-942"></a><span class='hs-comment'>-- to set layout spacing. The y positions are in layout coordinates</span>
<a name="line-943"></a><span class='hs-comment'>-- (origin at top left of the entire layout).</span>
<a name="line-944"></a><span class='hs-comment'>--</span>
<a name="line-945"></a><span class='hs-comment'>-- * The first element in the returned tuple is the start, the second is</span>
<a name="line-946"></a><span class='hs-comment'>-- the end of this line.</span>
<a name="line-947"></a><span class='hs-comment'>--</span>
<a name="line-948"></a><span class='hs-definition'>layoutIterGetLineYRange</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Double</span><span class='hs-layout'>,</span> <span class='hs-conid'>Double</span><span class='hs-layout'>)</span>
<a name="line-949"></a><span class='hs-definition'>layoutIterGetLineYRange</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-950"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>sPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>ePtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-951"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_line_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>sPtr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>ePtr</span><span class='hs-layout'>)</span>
<a name="line-952"></a>  <span class='hs-varid'>start</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>sPtr</span>
<a name="line-953"></a>  <span class='hs-varid'>end</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>ePtr</span>
<a name="line-954"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>intToPu</span> <span class='hs-varid'>start</span><span class='hs-layout'>,</span> <span class='hs-varid'>intToPu</span> <span class='hs-varid'>end</span><span class='hs-layout'>)</span>
<a name="line-955"></a>
<a name="line-956"></a><a name="layoutIterGetLineExtents"></a><span class='hs-comment'>-- | Compute the physical size of the line.</span>
<a name="line-957"></a><span class='hs-comment'>--</span>
<a name="line-958"></a><span class='hs-comment'>-- * Computes the ink and the logical size of the line pointed to by</span>
<a name="line-959"></a><span class='hs-comment'>-- 'LayoutIter'. See 'layoutGetExtents'.</span>
<a name="line-960"></a><span class='hs-comment'>--</span>
<a name="line-961"></a><span class='hs-comment'>-- * Extents are in layout coordinates (origin is the top-left corner</span>
<a name="line-962"></a><span class='hs-comment'>-- of the entire 'PangoLayout'). Thus the extents returned</span>
<a name="line-963"></a><span class='hs-comment'>-- by this function will be the same width\/height but not at the</span>
<a name="line-964"></a><span class='hs-comment'>-- same x\/y as the extents returned from</span>
<a name="line-965"></a><span class='hs-comment'>-- 'layoutLineGetExtents'.</span>
<a name="line-966"></a><span class='hs-comment'>--</span>
<a name="line-967"></a><span class='hs-definition'>layoutIterGetLineExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutIter</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span>
<a name="line-968"></a><span class='hs-definition'>layoutIterGetLineExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutIter</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>li</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-969"></a>  <span class='hs-varid'>twoRect</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutIterRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_iter_get_line_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>li</span>
<a name="line-970"></a>
<a name="line-971"></a><a name="layoutLineGetExtents"></a><span class='hs-comment'>-- | Compute the physical size of the line.</span>
<a name="line-972"></a><span class='hs-comment'>--</span>
<a name="line-973"></a><span class='hs-comment'>-- * Computes the ink and the logical size of the 'LayoutLine'.</span>
<a name="line-974"></a><span class='hs-comment'>-- See 'layoutGetExtents'.</span>
<a name="line-975"></a><span class='hs-comment'>--</span>
<a name="line-976"></a><span class='hs-definition'>layoutLineGetExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutLine</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>PangoRectangle</span><span class='hs-layout'>)</span>
<a name="line-977"></a><span class='hs-definition'>layoutLineGetExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-978"></a>  <span class='hs-varid'>twoRect</span> <span class='hs-varop'>$</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_get_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span>
<a name="line-979"></a>
<a name="line-980"></a><a name="layoutLineGetPixelExtents"></a><span class='hs-comment'>-- | Compute the physical size of the line.</span>
<a name="line-981"></a><span class='hs-comment'>--</span>
<a name="line-982"></a><span class='hs-comment'>-- * Computes the ink and the logical size of the 'LayoutLine'.</span>
<a name="line-983"></a><span class='hs-comment'>-- See 'layoutGetExtents'. The returned values are in device units, that</span>
<a name="line-984"></a><span class='hs-comment'>-- is, pixels for the screen and points for printers.</span>
<a name="line-985"></a><span class='hs-comment'>--</span>
<a name="line-986"></a><span class='hs-definition'>layoutLineGetPixelExtents</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutLine</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Rectangle</span><span class='hs-layout'>,</span> <span class='hs-conid'>Rectangle</span><span class='hs-layout'>)</span> <span class='hs-comment'>-- ^ (ink, logical)</span>
<a name="line-987"></a><span class='hs-definition'>layoutLineGetPixelExtents</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-keyword'>_</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-988"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>inkPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>logPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-989"></a>  <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_get_pixel_extents</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>inkPtr</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>logPtr</span><span class='hs-layout'>)</span>
<a name="line-990"></a>  <span class='hs-varid'>ink</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peekIntPangoRectangle</span> <span class='hs-varid'>inkPtr</span>
<a name="line-991"></a>  <span class='hs-varid'>log</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peekIntPangoRectangle</span> <span class='hs-varid'>logPtr</span>
<a name="line-992"></a>  <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>ink</span><span class='hs-layout'>,</span><span class='hs-varid'>log</span><span class='hs-layout'>)</span>
<a name="line-993"></a>
<a name="line-994"></a><a name="layoutLineIndexToX"></a><span class='hs-comment'>-- | Request the horizontal position of a character.</span>
<a name="line-995"></a><span class='hs-comment'>--</span>
<a name="line-996"></a><span class='hs-definition'>layoutLineIndexToX</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutLine</span>
<a name="line-997"></a>                   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-comment'>-- ^ the index into the string</span>
<a name="line-998"></a>                   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Bool</span> <span class='hs-comment'>-- ^ return the beginning (@False@) or the end</span>
<a name="line-999"></a>                            <span class='hs-comment'>-- of the character</span>
<a name="line-1000"></a>                   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-conid'>Double</span>
<a name="line-1001"></a><span class='hs-definition'>layoutLineIndexToX</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span> <span class='hs-varid'>pos</span> <span class='hs-varid'>beg</span> <span class='hs-keyglyph'>=</span>
<a name="line-1002"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>intPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-1003"></a>    <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-1004"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_index_to_x</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsToUTF</span> <span class='hs-varid'>pos</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1005"></a>      <span class='hs-layout'>(</span><span class='hs-varid'>fromBool</span> <span class='hs-varid'>beg</span><span class='hs-layout'>)</span> <span class='hs-varid'>intPtr</span>
<a name="line-1006"></a>    <span class='hs-varid'>liftM</span> <span class='hs-varid'>intToPu</span> <span class='hs-varop'>$</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>intPtr</span>
<a name="line-1007"></a>
<a name="line-1008"></a>
<a name="line-1009"></a><a name="layoutLineXToIndex"></a><span class='hs-comment'>-- | Request the character index of a given horizontal position.</span>
<a name="line-1010"></a><span class='hs-comment'>--</span>
<a name="line-1011"></a><span class='hs-comment'>-- * Converts from an x offset to the index of the corresponding</span>
<a name="line-1012"></a><span class='hs-comment'>-- character within the text of the layout. If the @x@ parameter is</span>
<a name="line-1013"></a><span class='hs-comment'>-- outside the line, a triple @(False, index, trailing)@ is returned</span>
<a name="line-1014"></a><span class='hs-comment'>-- where @index@ and @trailing@ will point to the very</span>
<a name="line-1015"></a><span class='hs-comment'>-- first or very last position in the line. This notion of first and last</span>
<a name="line-1016"></a><span class='hs-comment'>-- position is based on the direction of the paragraph; for example,</span>
<a name="line-1017"></a><span class='hs-comment'>-- if the direction is right-to-left, then an @x@ position to the</span>
<a name="line-1018"></a><span class='hs-comment'>-- right of the line results in 0 being returned for @index@ and</span>
<a name="line-1019"></a><span class='hs-comment'>-- @trailing@. An @x@ position to the left of the line results in</span>
<a name="line-1020"></a><span class='hs-comment'>-- @index@ pointing to the (logical) last grapheme in the line and</span>
<a name="line-1021"></a><span class='hs-comment'>-- trailing pointing to the number of characters in that grapheme.</span>
<a name="line-1022"></a><span class='hs-comment'>-- The reverse is true for a left-to-right line. If the boolean flag in</span>
<a name="line-1023"></a><span class='hs-comment'>-- the result is @True@ then @x@ was within the layout line and</span>
<a name="line-1024"></a><span class='hs-comment'>-- @trailing@ indicates where in a cluster the @x@ position lay. It is</span>
<a name="line-1025"></a><span class='hs-comment'>-- 0 for the trailing edge of the cluster.</span>
<a name="line-1026"></a><span class='hs-comment'>--</span>
<a name="line-1027"></a><span class='hs-definition'>layoutLineXToIndex</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutLine</span>
<a name="line-1028"></a>                   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Double</span> <span class='hs-comment'>-- ^ The @x@ position.</span>
<a name="line-1029"></a>                   <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Bool</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int</span><span class='hs-layout'>,</span> <span class='hs-conid'>Int</span><span class='hs-layout'>)</span>
<a name="line-1030"></a><span class='hs-definition'>layoutLineXToIndex</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span> <span class='hs-varid'>pos</span> <span class='hs-keyglyph'>=</span>
<a name="line-1031"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>idxPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>trailPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-1032"></a>    <span class='hs-layout'>(</span><span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-1033"></a>    <span class='hs-varid'>inside</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_x_to_index</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span>
<a name="line-1034"></a>      <span class='hs-layout'>(</span><span class='hs-varid'>puToInt</span> <span class='hs-varid'>pos</span><span class='hs-layout'>)</span> <span class='hs-varid'>idxPtr</span> <span class='hs-varid'>trailPtr</span>
<a name="line-1035"></a>    <span class='hs-varid'>idx</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>idxPtr</span>
<a name="line-1036"></a>    <span class='hs-varid'>trail</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>trailPtr</span>
<a name="line-1037"></a>    <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>toBool</span> <span class='hs-varid'>inside</span><span class='hs-layout'>,</span> <span class='hs-varid'>ofsFromUTF</span> <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>idx</span><span class='hs-layout'>)</span> <span class='hs-varid'>uc</span><span class='hs-layout'>,</span>
<a name="line-1038"></a>            <span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>trail</span><span class='hs-layout'>)</span>
<a name="line-1039"></a>
<a name="line-1040"></a><a name="layoutLineGetXRanges"></a><span class='hs-comment'>-- | Retrieve bounding boxes for a given piece of text contained in this</span>
<a name="line-1041"></a><span class='hs-comment'>-- 'LayoutLine'.</span>
<a name="line-1042"></a><span class='hs-comment'>--</span>
<a name="line-1043"></a><span class='hs-comment'>-- * The result is a list to accommodate for mixed left-to-right and</span>
<a name="line-1044"></a><span class='hs-comment'>-- right-to-left text. Even if the text is not mixed, several</span>
<a name="line-1045"></a><span class='hs-comment'>-- ranges might be returned that are adjacent. The ranges are always</span>
<a name="line-1046"></a><span class='hs-comment'>-- sorted from left to right. The values are with respect to the left</span>
<a name="line-1047"></a><span class='hs-comment'>-- edge of the entire layout, not with respect to the line (which might</span>
<a name="line-1048"></a><span class='hs-comment'>-- be indented or not left aligned).</span>
<a name="line-1049"></a><span class='hs-comment'>--</span>
<a name="line-1050"></a><span class='hs-definition'>layoutLineGetXRanges</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LayoutLine</span> <span class='hs-comment'>-- ^ The line of interest.</span>
<a name="line-1051"></a>                     <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-comment'>-- ^ The index of the start character</span>
<a name="line-1052"></a>                            <span class='hs-comment'>-- (counting from 0). If this value is</span>
<a name="line-1053"></a>                            <span class='hs-comment'>-- less than the start index for the line,</span>
<a name="line-1054"></a>                            <span class='hs-comment'>-- then the first range will extend all the</span>
<a name="line-1055"></a>                            <span class='hs-comment'>-- way to the leading edge of the layout.</span>
<a name="line-1056"></a>                            <span class='hs-comment'>-- Otherwise it will start at the leading</span>
<a name="line-1057"></a>                            <span class='hs-comment'>-- edge of the first character.</span>
<a name="line-1058"></a>                     <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-comment'>-- ^ The index after the last character.</span>
<a name="line-1059"></a>                            <span class='hs-comment'>-- If this value is greater than the end</span>
<a name="line-1060"></a>                            <span class='hs-comment'>-- index for the line, then the last range</span>
<a name="line-1061"></a>                            <span class='hs-comment'>-- will extend all the way to the trailing</span>
<a name="line-1062"></a>                            <span class='hs-comment'>-- edge of the layout. Otherwise, it will end</span>
<a name="line-1063"></a>                            <span class='hs-comment'>-- at the trailing edge of the last</span>
<a name="line-1064"></a>                            <span class='hs-comment'>-- character.</span>
<a name="line-1065"></a>                     <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>IO</span> <span class='hs-keyglyph'>[</span><span class='hs-layout'>(</span><span class='hs-conid'>Double</span><span class='hs-layout'>,</span> <span class='hs-conid'>Double</span><span class='hs-layout'>)</span><span class='hs-keyglyph'>]</span>
<a name="line-1066"></a><span class='hs-definition'>layoutLineGetXRanges</span> <span class='hs-layout'>(</span><span class='hs-conid'>LayoutLine</span> <span class='hs-varid'>psRef</span> <span class='hs-varid'>ll</span><span class='hs-layout'>)</span> <span class='hs-varid'>start</span> <span class='hs-varid'>end</span> <span class='hs-keyglyph'>=</span> <span class='hs-keyword'>do</span>
<a name="line-1067"></a>  <span class='hs-conid'>PangoString</span> <span class='hs-varid'>uc</span> <span class='hs-keyword'>_</span> <span class='hs-keyword'>_</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>readIORef</span> <span class='hs-varid'>psRef</span>
<a name="line-1068"></a>  <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>arrPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>alloca</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>szPtr</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-keyword'>do</span>
<a name="line-1069"></a>    <span class='hs-layout'>(</span><span class='hs-keyglyph'>\</span><span class='hs-layout'>(</span><span class='hs-conid'>LayoutLineRaw</span> <span class='hs-varid'>arg1</span><span class='hs-layout'>)</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-varid'>withForeignPtr</span> <span class='hs-varid'>arg1</span> <span class='hs-varop'>$</span> <span class='hs-keyglyph'>\</span><span class='hs-varid'>argPtr1</span> <span class='hs-keyglyph'>-&gt;</span><span class='hs-varid'>pango_layout_line_get_x_ranges</span> <span class='hs-varid'>argPtr1</span> <span class='hs-varid'>arg2</span> <span class='hs-varid'>arg3</span> <span class='hs-varid'>arg4</span> <span class='hs-varid'>arg5</span><span class='hs-layout'>)</span> <span class='hs-varid'>ll</span>
<a name="line-1070"></a>      <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsToUTF</span> <span class='hs-varid'>start</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1071"></a>      <span class='hs-layout'>(</span><span class='hs-varid'>fromIntegral</span> <span class='hs-layout'>(</span><span class='hs-varid'>ofsToUTF</span> <span class='hs-varid'>end</span> <span class='hs-varid'>uc</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1072"></a>      <span class='hs-varid'>arrPtr</span> <span class='hs-varid'>szPtr</span>
<a name="line-1073"></a>    <span class='hs-varid'>sz</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>szPtr</span>
<a name="line-1074"></a>    <span class='hs-varid'>arr</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peek</span> <span class='hs-varid'>arrPtr</span>
<a name="line-1075"></a>    <span class='hs-varid'>elems</span> <span class='hs-keyglyph'>&lt;-</span> <span class='hs-varid'>peekArray</span> <span class='hs-layout'>(</span><span class='hs-num'>2</span><span class='hs-varop'>*</span><span class='hs-varid'>fromIntegral</span> <span class='hs-varid'>sz</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>arr</span><span class='hs-keyglyph'>::</span> <span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1076"></a>    <span class='hs-varid'>g_free</span> <span class='hs-layout'>(</span><span class='hs-varid'>castPtr</span> <span class='hs-varid'>arr</span><span class='hs-layout'>)</span>
<a name="line-1077"></a>    <span class='hs-keyword'>let</span> <span class='hs-varid'>toRange</span> <span class='hs-layout'>(</span><span class='hs-varid'>s</span><span class='hs-conop'>:</span><span class='hs-varid'>e</span><span class='hs-conop'>:</span><span class='hs-varid'>rs</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>intToPu</span> <span class='hs-varid'>s</span><span class='hs-layout'>,</span> <span class='hs-varid'>intToPu</span> <span class='hs-varid'>e</span><span class='hs-layout'>)</span><span class='hs-conop'>:</span><span class='hs-varid'>toRange</span> <span class='hs-varid'>rs</span>
<a name="line-1078"></a>        <span class='hs-varid'>toRange</span> <span class='hs-conid'>[]</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>[]</span>
<a name="line-1079"></a>    <span class='hs-varid'>return</span> <span class='hs-layout'>(</span><span class='hs-varid'>toRange</span> <span class='hs-varid'>elems</span><span class='hs-layout'>)</span>
<a name="line-1080"></a>
<a name="line-1081"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_new"</span>
<a name="line-1082"></a>  <span class='hs-varid'>pango_layout_new</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoContext</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1083"></a>
<a name="line-1084"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_text"</span>
<a name="line-1085"></a>  <span class='hs-varid'>pango_layout_set_text</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CChar</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1086"></a>
<a name="line-1087"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_copy"</span>
<a name="line-1088"></a>  <span class='hs-varid'>pango_layout_copy</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1089"></a>
<a name="line-1090"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_context"</span>
<a name="line-1091"></a>  <span class='hs-varid'>pango_layout_get_context</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoContext</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1092"></a>
<a name="line-1093"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_context_changed"</span>
<a name="line-1094"></a>  <span class='hs-varid'>pango_layout_context_changed</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1095"></a>
<a name="line-1096"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_text"</span>
<a name="line-1097"></a>  <span class='hs-varid'>pango_layout_get_text</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CChar</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1098"></a>
<a name="line-1099"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_markup"</span>
<a name="line-1100"></a>  <span class='hs-varid'>pango_layout_set_markup</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CChar</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1101"></a>
<a name="line-1102"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"g_markup_escape_text"</span>
<a name="line-1103"></a>  <span class='hs-varid'>g_markup_escape_text</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CChar</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CChar</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1104"></a>
<a name="line-1105"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"g_free"</span>
<a name="line-1106"></a>  <span class='hs-varid'>g_free</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1107"></a>
<a name="line-1108"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_markup_with_accel"</span>
<a name="line-1109"></a>  <span class='hs-varid'>pango_layout_set_markup_with_accel</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CChar</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CUInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CUInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1110"></a>
<a name="line-1111"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_attributes"</span>
<a name="line-1112"></a>  <span class='hs-varid'>pango_layout_set_attributes</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1113"></a>
<a name="line-1114"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_attributes"</span>
<a name="line-1115"></a>  <span class='hs-varid'>pango_layout_get_attributes</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1116"></a>
<a name="line-1117"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_font_description"</span>
<a name="line-1118"></a>  <span class='hs-varid'>pango_layout_set_font_description</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>FontDescription</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1119"></a>
<a name="line-1120"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_font_description"</span>
<a name="line-1121"></a>  <span class='hs-varid'>pango_layout_get_font_description</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>FontDescription</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1122"></a>
<a name="line-1123"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_width"</span>
<a name="line-1124"></a>  <span class='hs-varid'>pango_layout_set_width</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1125"></a>
<a name="line-1126"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_width"</span>
<a name="line-1127"></a>  <span class='hs-varid'>pango_layout_get_width</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1128"></a>
<a name="line-1129"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_wrap"</span>
<a name="line-1130"></a>  <span class='hs-varid'>pango_layout_set_wrap</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1131"></a>
<a name="line-1132"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_wrap"</span>
<a name="line-1133"></a>  <span class='hs-varid'>pango_layout_get_wrap</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1134"></a>
<a name="line-1135"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_ellipsize"</span>
<a name="line-1136"></a>  <span class='hs-varid'>pango_layout_set_ellipsize</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1137"></a>
<a name="line-1138"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_ellipsize"</span>
<a name="line-1139"></a>  <span class='hs-varid'>pango_layout_get_ellipsize</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1140"></a>
<a name="line-1141"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_indent"</span>
<a name="line-1142"></a>  <span class='hs-varid'>pango_layout_set_indent</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1143"></a>
<a name="line-1144"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_indent"</span>
<a name="line-1145"></a>  <span class='hs-varid'>pango_layout_get_indent</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1146"></a>
<a name="line-1147"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_spacing"</span>
<a name="line-1148"></a>  <span class='hs-varid'>pango_layout_set_spacing</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1149"></a>
<a name="line-1150"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_spacing"</span>
<a name="line-1151"></a>  <span class='hs-varid'>pango_layout_get_spacing</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1152"></a>
<a name="line-1153"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_justify"</span>
<a name="line-1154"></a>  <span class='hs-varid'>pango_layout_set_justify</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1155"></a>
<a name="line-1156"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_justify"</span>
<a name="line-1157"></a>  <span class='hs-varid'>pango_layout_get_justify</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1158"></a>
<a name="line-1159"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_auto_dir"</span>
<a name="line-1160"></a>  <span class='hs-varid'>pango_layout_set_auto_dir</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1161"></a>
<a name="line-1162"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_auto_dir"</span>
<a name="line-1163"></a>  <span class='hs-varid'>pango_layout_get_auto_dir</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1164"></a>
<a name="line-1165"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_alignment"</span>
<a name="line-1166"></a>  <span class='hs-varid'>pango_layout_set_alignment</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1167"></a>
<a name="line-1168"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_alignment"</span>
<a name="line-1169"></a>  <span class='hs-varid'>pango_layout_get_alignment</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1170"></a>
<a name="line-1171"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_tab_array_new"</span>
<a name="line-1172"></a>  <span class='hs-varid'>pango_tab_array_new</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1173"></a>
<a name="line-1174"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_tab_array_set_tab"</span>
<a name="line-1175"></a>  <span class='hs-varid'>pango_tab_array_set_tab</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1176"></a>
<a name="line-1177"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_tabs"</span>
<a name="line-1178"></a>  <span class='hs-varid'>pango_layout_set_tabs</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1179"></a>
<a name="line-1180"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_tab_array_free"</span>
<a name="line-1181"></a>  <span class='hs-varid'>pango_tab_array_free</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1182"></a>
<a name="line-1183"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_tabs"</span>
<a name="line-1184"></a>  <span class='hs-varid'>pango_layout_get_tabs</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1185"></a>
<a name="line-1186"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_tab_array_get_size"</span>
<a name="line-1187"></a>  <span class='hs-varid'>pango_tab_array_get_size</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1188"></a>
<a name="line-1189"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_tab_array_get_tab"</span>
<a name="line-1190"></a>  <span class='hs-varid'>pango_tab_array_get_tab</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1191"></a>
<a name="line-1192"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_set_single_paragraph_mode"</span>
<a name="line-1193"></a>  <span class='hs-varid'>pango_layout_set_single_paragraph_mode</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1194"></a>
<a name="line-1195"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_single_paragraph_mode"</span>
<a name="line-1196"></a>  <span class='hs-varid'>pango_layout_get_single_paragraph_mode</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1197"></a>
<a name="line-1198"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_xy_to_index"</span>
<a name="line-1199"></a>  <span class='hs-varid'>pango_layout_xy_to_index</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1200"></a>
<a name="line-1201"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_index_to_pos"</span>
<a name="line-1202"></a>  <span class='hs-varid'>pango_layout_index_to_pos</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1203"></a>
<a name="line-1204"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_cursor_pos"</span>
<a name="line-1205"></a>  <span class='hs-varid'>pango_layout_get_cursor_pos</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1206"></a>
<a name="line-1207"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_move_cursor_visually"</span>
<a name="line-1208"></a>  <span class='hs-varid'>pango_layout_move_cursor_visually</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1209"></a>
<a name="line-1210"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_extents"</span>
<a name="line-1211"></a>  <span class='hs-varid'>pango_layout_get_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1212"></a>
<a name="line-1213"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_pixel_extents"</span>
<a name="line-1214"></a>  <span class='hs-varid'>pango_layout_get_pixel_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1215"></a>
<a name="line-1216"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_line_count"</span>
<a name="line-1217"></a>  <span class='hs-varid'>pango_layout_get_line_count</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1218"></a>
<a name="line-1219"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_line_readonly"</span>
<a name="line-1220"></a>  <span class='hs-varid'>pango_layout_get_line_readonly</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1221"></a>
<a name="line-1222"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_line_ref"</span>
<a name="line-1223"></a>  <span class='hs-varid'>pango_layout_line_ref</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1224"></a>
<a name="line-1225"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_lines_readonly"</span>
<a name="line-1226"></a>  <span class='hs-varid'>pango_layout_get_lines_readonly</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1227"></a>
<a name="line-1228"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_get_iter"</span>
<a name="line-1229"></a>  <span class='hs-varid'>pango_layout_get_iter</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoLayoutRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1230"></a>
<a name="line-1231"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_next_run"</span>
<a name="line-1232"></a>  <span class='hs-varid'>pango_layout_iter_next_run</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1233"></a>
<a name="line-1234"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_next_char"</span>
<a name="line-1235"></a>  <span class='hs-varid'>pango_layout_iter_next_char</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1236"></a>
<a name="line-1237"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_next_cluster"</span>
<a name="line-1238"></a>  <span class='hs-varid'>pango_layout_iter_next_cluster</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1239"></a>
<a name="line-1240"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_next_line"</span>
<a name="line-1241"></a>  <span class='hs-varid'>pango_layout_iter_next_line</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1242"></a>
<a name="line-1243"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_at_last_line"</span>
<a name="line-1244"></a>  <span class='hs-varid'>pango_layout_iter_at_last_line</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1245"></a>
<a name="line-1246"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_index"</span>
<a name="line-1247"></a>  <span class='hs-varid'>pango_layout_iter_get_index</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1248"></a>
<a name="line-1249"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_baseline"</span>
<a name="line-1250"></a>  <span class='hs-varid'>pango_layout_iter_get_baseline</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1251"></a>
<a name="line-1252"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_run"</span>
<a name="line-1253"></a>  <span class='hs-varid'>pango_layout_iter_get_run</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1254"></a>
<a name="line-1255"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_item_copy"</span>
<a name="line-1256"></a>  <span class='hs-varid'>pango_item_copy</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoItemRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>PangoItemRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1257"></a>
<a name="line-1258"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_glyph_string_copy"</span>
<a name="line-1259"></a>  <span class='hs-varid'>pango_glyph_string_copy</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>GlyphStringRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>GlyphStringRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1260"></a>
<a name="line-1261"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_line"</span>
<a name="line-1262"></a>  <span class='hs-varid'>pango_layout_iter_get_line</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1263"></a>
<a name="line-1264"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_char_extents"</span>
<a name="line-1265"></a>  <span class='hs-varid'>pango_layout_iter_get_char_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1266"></a>
<a name="line-1267"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_cluster_extents"</span>
<a name="line-1268"></a>  <span class='hs-varid'>pango_layout_iter_get_cluster_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1269"></a>
<a name="line-1270"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_run_extents"</span>
<a name="line-1271"></a>  <span class='hs-varid'>pango_layout_iter_get_run_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1272"></a>
<a name="line-1273"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_iter_get_line_extents"</span>
<a name="line-1274"></a>  <span class='hs-varid'>pango_layout_iter_get_line_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutIterRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1275"></a>
<a name="line-1276"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_line_get_extents"</span>
<a name="line-1277"></a>  <span class='hs-varid'>pango_layout_line_get_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1278"></a>
<a name="line-1279"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_line_get_pixel_extents"</span>
<a name="line-1280"></a>  <span class='hs-varid'>pango_layout_line_get_pixel_extents</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1281"></a>
<a name="line-1282"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_line_index_to_x"</span>
<a name="line-1283"></a>  <span class='hs-varid'>pango_layout_line_index_to_x</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1284"></a>
<a name="line-1285"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_line_x_to_index"</span>
<a name="line-1286"></a>  <span class='hs-varid'>pango_layout_line_x_to_index</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-1287"></a>
<a name="line-1288"></a><span class='hs-keyword'>foreign</span> <span class='hs-keyword'>import</span> <span class='hs-keyword'>ccall</span> <span class='hs-keyword'>unsafe</span> <span class='hs-str'>"pango_layout_line_get_x_ranges"</span>
<a name="line-1289"></a>  <span class='hs-varid'>pango_layout_line_get_x_ranges</span> <span class='hs-keyglyph'>::</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>LayoutLineRaw</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>CInt</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-layout'>(</span><span class='hs-conid'>Ptr</span> <span class='hs-conid'>CInt</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>IO</span> <span class='hs-conid'>()</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
</pre></body>
</html>