This file is indexed.

/usr/share/doc/libghc-chart-doc/html/src/Graphics-Rendering-Chart-Backend-Impl.html is in libghc-chart-doc 1.8.1-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?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://code.haskell.org/~malcolm/hscolour/ -->
<title>Graphics/Rendering/Chart/Backend/Impl.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE GADTs #-}</span>
<a name="line-2"></a>
<a name="line-3"></a><span class='hs-comment'>-----------------------------------------------------------------------------</span>
<a name="line-4"></a><span class='hs-comment'>-- |</span>
<a name="line-5"></a><span class='hs-comment'>-- Module      :  Graphics.Rendering.Chart.Backend.Impl</span>
<a name="line-6"></a><span class='hs-comment'>-- Copyright   :  (c) Tim Docker 2014</span>
<a name="line-7"></a><span class='hs-comment'>-- License     :  BSD-style (see chart/COPYRIGHT)</span>
<a name="line-8"></a><span class='hs-comment'>--</span>
<a name="line-9"></a><span class='hs-comment'>-- This module provides the implementation details common to all 'ChartBackend's.</span>
<a name="line-10"></a>
<a name="line-11"></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'>Chart</span><span class='hs-varop'>.</span><span class='hs-conid'>Backend</span><span class='hs-varop'>.</span><span class='hs-conid'>Impl</span> <span class='hs-keyword'>where</span>
<a name="line-12"></a>
<a name="line-13"></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-varop'>.</span><span class='hs-conid'>Reader</span>
<a name="line-14"></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-varop'>.</span><span class='hs-conid'>Operational</span>
<a name="line-15"></a>
<a name="line-16"></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'>Chart</span><span class='hs-varop'>.</span><span class='hs-conid'>Geometry</span>
<a name="line-17"></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'>Chart</span><span class='hs-varop'>.</span><span class='hs-conid'>Backend</span><span class='hs-varop'>.</span><span class='hs-conid'>Types</span>
<a name="line-18"></a>
<a name="line-19"></a><span class='hs-comment'>-- -----------------------------------------------------------------------</span>
<a name="line-20"></a><span class='hs-comment'>-- Rendering Backend Class</span>
<a name="line-21"></a><span class='hs-comment'>-- -----------------------------------------------------------------------</span>
<a name="line-22"></a>
<a name="line-23"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>-- | The abstract drawing operation generated when using the</span>
<a name="line-24"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   the chart drawing API.</span>
<a name="line-25"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-26"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   See the documentation of the different function for the correct semantics</span>
<a name="line-27"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   of each instruction:</span>
<a name="line-28"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-29"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   * 'strokePath', 'fillPath'</span>
<a name="line-30"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-31"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   * 'drawText', 'textSize'</span>
<a name="line-32"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-33"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   * 'getPointAlignFn', 'getCoordAlignFn', 'AlignmentFns'</span>
<a name="line-34"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-35"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   * 'withTransform', 'withClipRegion'</span>
<a name="line-36"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-37"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   * 'withLineStyle', 'withFillStyle', 'withFontStyle'</span>
<a name="line-38"></a><a name="ChartBackendInstr"></a><span class='hs-comment'>--   </span>
<a name="line-39"></a><a name="ChartBackendInstr"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyword'>where</span>
<a name="line-40"></a>  <span class='hs-conid'>StrokePath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-conid'>()</span>
<a name="line-41"></a>  <span class='hs-conid'>FillPath</span>   <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-conid'>()</span>
<a name="line-42"></a>  <span class='hs-conid'>GetTextSize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-conid'>TextSize</span>
<a name="line-43"></a>  <span class='hs-conid'>DrawText</span>    <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Point</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-conid'>()</span>
<a name="line-44"></a>  <span class='hs-conid'>GetAlignments</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-conid'>AlignmentFns</span>
<a name="line-45"></a>  <span class='hs-conid'>WithTransform</span>  <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Matrix</span> <span class='hs-keyglyph'>-&gt;</span>  <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span>
<a name="line-46"></a>  <span class='hs-conid'>WithFontStyle</span>  <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FontStyle</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span>
<a name="line-47"></a>  <span class='hs-conid'>WithFillStyle</span>  <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FillStyle</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span>
<a name="line-48"></a>  <span class='hs-conid'>WithLineStyle</span>  <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LineStyle</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span>
<a name="line-49"></a>  <span class='hs-conid'>WithClipRegion</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Rect</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span>
<a name="line-50"></a>
<a name="line-51"></a><a name="BackendProgram"></a><span class='hs-comment'>-- | A 'BackendProgram' provides the capability to render a chart somewhere.</span>
<a name="line-52"></a><a name="BackendProgram"></a><span class='hs-comment'>--   </span>
<a name="line-53"></a><a name="BackendProgram"></a><span class='hs-comment'>--   The coordinate system of the backend has its initial origin (0,0)</span>
<a name="line-54"></a><a name="BackendProgram"></a><span class='hs-comment'>--   in the top left corner of the drawing plane. The x-axis points </span>
<a name="line-55"></a><a name="BackendProgram"></a><span class='hs-comment'>--   towards the top right corner and the y-axis points towards </span>
<a name="line-56"></a><a name="BackendProgram"></a><span class='hs-comment'>--   the bottom left corner. The unit used by coordinates, the font size,</span>
<a name="line-57"></a><a name="BackendProgram"></a><span class='hs-comment'>--   and lengths is the always the same, but depends on the backend.</span>
<a name="line-58"></a><a name="BackendProgram"></a><span class='hs-comment'>--   All angles are measured in radians.</span>
<a name="line-59"></a><a name="BackendProgram"></a><span class='hs-comment'>--   </span>
<a name="line-60"></a><a name="BackendProgram"></a><span class='hs-comment'>--   The line, fill and font style are set to their default values </span>
<a name="line-61"></a><a name="BackendProgram"></a><span class='hs-comment'>--   initially.</span>
<a name="line-62"></a><a name="BackendProgram"></a><span class='hs-comment'>--   </span>
<a name="line-63"></a><a name="BackendProgram"></a><span class='hs-comment'>--   Information about the semantics of the instructions can be </span>
<a name="line-64"></a><a name="BackendProgram"></a><span class='hs-comment'>--   found in the documentation of 'ChartBackendInstr'.</span>
<a name="line-65"></a><a name="BackendProgram"></a><span class='hs-keyword'>type</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span>
<a name="line-66"></a>
<a name="line-67"></a><a name="strokePath"></a><span class='hs-comment'>-- | Stroke the outline of the given path using the </span>
<a name="line-68"></a><span class='hs-comment'>--   current 'LineStyle'. This function does /not/ perform</span>
<a name="line-69"></a><span class='hs-comment'>--   alignment operations on the path. See 'Path' for the exact semantic</span>
<a name="line-70"></a><span class='hs-comment'>--   of paths.</span>
<a name="line-71"></a><span class='hs-definition'>strokePath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-conid'>()</span>
<a name="line-72"></a><span class='hs-definition'>strokePath</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>StrokePath</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-73"></a>
<a name="line-74"></a><a name="fillPath"></a><span class='hs-comment'>-- | Fill the given path using the current 'FillStyle'.</span>
<a name="line-75"></a><span class='hs-comment'>--   The given path will be closed prior to filling.</span>
<a name="line-76"></a><span class='hs-comment'>--   This function does /not/ perform</span>
<a name="line-77"></a><span class='hs-comment'>--   alignment operations on the path.</span>
<a name="line-78"></a><span class='hs-comment'>--   See 'Path' for the exact semantic of paths.</span>
<a name="line-79"></a><span class='hs-definition'>fillPath</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Path</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-conid'>()</span>
<a name="line-80"></a><span class='hs-definition'>fillPath</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>FillPath</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-81"></a>
<a name="line-82"></a><a name="textSize"></a><span class='hs-comment'>-- | Calculate a 'TextSize' object with rendering information</span>
<a name="line-83"></a><span class='hs-comment'>--   about the given string without actually rendering it.</span>
<a name="line-84"></a><span class='hs-definition'>textSize</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-conid'>TextSize</span>
<a name="line-85"></a><span class='hs-definition'>textSize</span> <span class='hs-varid'>text</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>GetTextSize</span> <span class='hs-varid'>text</span><span class='hs-layout'>)</span>
<a name="line-86"></a>
<a name="line-87"></a><a name="drawText"></a><span class='hs-comment'>-- | Draw a single-line textual label anchored by the baseline (vertical) </span>
<a name="line-88"></a><span class='hs-comment'>--   left (horizontal) point. Uses the current 'FontStyle' for drawing.</span>
<a name="line-89"></a><span class='hs-definition'>drawText</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Point</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-conid'>()</span>
<a name="line-90"></a><span class='hs-definition'>drawText</span> <span class='hs-varid'>p</span> <span class='hs-varid'>text</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>DrawText</span> <span class='hs-varid'>p</span> <span class='hs-varid'>text</span><span class='hs-layout'>)</span>
<a name="line-91"></a>
<a name="line-92"></a><a name="withTransform"></a><span class='hs-comment'>-- | Apply the given transformation in this local</span>
<a name="line-93"></a><span class='hs-comment'>--   environment when drawing. The given transformation </span>
<a name="line-94"></a><span class='hs-comment'>--   is applied after the current transformation. This</span>
<a name="line-95"></a><span class='hs-comment'>--   means both are combined.</span>
<a name="line-96"></a><span class='hs-definition'>withTransform</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Matrix</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span>
<a name="line-97"></a><span class='hs-definition'>withTransform</span> <span class='hs-varid'>t</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>WithTransform</span> <span class='hs-varid'>t</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-98"></a>
<a name="line-99"></a><a name="withFontStyle"></a><span class='hs-comment'>-- | Use the given font style in this local</span>
<a name="line-100"></a><span class='hs-comment'>--   environment when drawing text.</span>
<a name="line-101"></a><span class='hs-comment'>--   </span>
<a name="line-102"></a><span class='hs-comment'>--   An implementing backend is expected to guarentee</span>
<a name="line-103"></a><span class='hs-comment'>--   to support the following font families: @serif@, @sans-serif@ and @monospace@;</span>
<a name="line-104"></a><span class='hs-comment'>--   </span>
<a name="line-105"></a><span class='hs-comment'>--   If the backend is not able to find or load a given font </span>
<a name="line-106"></a><span class='hs-comment'>--   it is required to fall back to a custom fail-safe font</span>
<a name="line-107"></a><span class='hs-comment'>--   and use it instead.</span>
<a name="line-108"></a><span class='hs-definition'>withFontStyle</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FontStyle</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span>
<a name="line-109"></a><span class='hs-definition'>withFontStyle</span> <span class='hs-varid'>fs</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>WithFontStyle</span> <span class='hs-varid'>fs</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-110"></a>
<a name="line-111"></a><a name="withFillStyle"></a><span class='hs-comment'>-- | Use the given fill style in this local</span>
<a name="line-112"></a><span class='hs-comment'>--   environment when filling paths.</span>
<a name="line-113"></a><span class='hs-definition'>withFillStyle</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>FillStyle</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span>
<a name="line-114"></a><span class='hs-definition'>withFillStyle</span> <span class='hs-varid'>fs</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>WithFillStyle</span> <span class='hs-varid'>fs</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-115"></a>
<a name="line-116"></a><a name="withLineStyle"></a><span class='hs-comment'>-- | Use the given line style in this local</span>
<a name="line-117"></a><span class='hs-comment'>--   environment when stroking paths.</span>
<a name="line-118"></a><span class='hs-definition'>withLineStyle</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>LineStyle</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span>
<a name="line-119"></a><span class='hs-definition'>withLineStyle</span> <span class='hs-varid'>ls</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>WithLineStyle</span> <span class='hs-varid'>ls</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-120"></a>
<a name="line-121"></a><a name="withClipRegion"></a><span class='hs-comment'>-- | Use the given clipping rectangle when drawing</span>
<a name="line-122"></a><span class='hs-comment'>--   in this local environment. The new clipping region</span>
<a name="line-123"></a><span class='hs-comment'>--   is intersected with the given clip region. You cannot </span>
<a name="line-124"></a><span class='hs-comment'>--   escape the clip!</span>
<a name="line-125"></a><span class='hs-definition'>withClipRegion</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Rect</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span>
<a name="line-126"></a><span class='hs-definition'>withClipRegion</span> <span class='hs-varid'>c</span> <span class='hs-varid'>p</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>singleton</span> <span class='hs-layout'>(</span><span class='hs-conid'>WithClipRegion</span> <span class='hs-varid'>c</span> <span class='hs-varid'>p</span><span class='hs-layout'>)</span>
<a name="line-127"></a>
<a name="line-128"></a><span class='hs-comment'>-- -----------------------------------------------------------------------</span>
<a name="line-129"></a><span class='hs-comment'>-- Rendering Utility Functions</span>
<a name="line-130"></a><span class='hs-comment'>-- -----------------------------------------------------------------------</span>
<a name="line-131"></a>
<a name="line-132"></a><a name="getPointAlignFn"></a><span class='hs-comment'>-- | Get the point alignment function</span>
<a name="line-133"></a><span class='hs-definition'>getPointAlignFn</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-layout'>(</span><span class='hs-conid'>Point</span><span class='hs-keyglyph'>-&gt;</span><span class='hs-conid'>Point</span><span class='hs-layout'>)</span>
<a name="line-134"></a><span class='hs-definition'>getPointAlignFn</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>afPointAlignFn</span> <span class='hs-layout'>(</span><span class='hs-varid'>singleton</span> <span class='hs-conid'>GetAlignments</span><span class='hs-layout'>)</span>
<a name="line-135"></a>
<a name="line-136"></a><a name="getCoordAlignFn"></a><span class='hs-comment'>-- | Get the coordinate alignment function</span>
<a name="line-137"></a><span class='hs-definition'>getCoordAlignFn</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>BackendProgram</span> <span class='hs-layout'>(</span><span class='hs-conid'>Point</span><span class='hs-keyglyph'>-&gt;</span><span class='hs-conid'>Point</span><span class='hs-layout'>)</span>
<a name="line-138"></a><span class='hs-definition'>getCoordAlignFn</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>liftM</span> <span class='hs-varid'>afCoordAlignFn</span> <span class='hs-layout'>(</span><span class='hs-varid'>singleton</span> <span class='hs-conid'>GetAlignments</span><span class='hs-layout'>)</span>
<a name="line-139"></a>
</pre></body>
</html>