/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'>-></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'>-></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'>-></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'>-></span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>Program</span> <span class='hs-conid'>ChartBackendInstr</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></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'>-></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'>-></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'>-></span> <span class='hs-conid'>String</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></span> <span class='hs-conid'>BackendProgram</span> <span class='hs-varid'>a</span> <span class='hs-keyglyph'>-></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'>-></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'>-></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>
|