eo      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                              None;A data structure describing a physical key on a keyboard.  The SDL bindings for Haskell don'3t wrap this, so we have to use the FFI ourselves. EA utility function for getting a list of SDL keys currently pressed.  Based on  Khttp://coderepos.org/share/browser/lang/haskell/nario/Main.hs?rev=22646#L49. Whether a key is pressed. 2A list of keys that are currently being pressed. NA directional tuple combined from the arrow keys. When none of the arrow keys - are being pressed this signal samples to (0, 0), otherwise it samples to a R direction based on which keys are pressed. For example, pressing the left key  results in (-1, 0), the down key (0, 1), up and right (1, -1), etc. JA utility function for setting up a vector signal from directional keys. Similar to the ? signal, but uses the popular WASD movement controls instead.   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!   ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  NoneOA type describing an amount of time in an arbitary unit. Use the time composing/#converting functions to manipulate  time values. ,A time value representing one millisecond. 'A time value representing one second. 'A time value representing one minute. %A time value representing one hour. ?Converts a time value to a fractional value, in milliseconds. :Converts a time value to a fractional value, in seconds. :Converts a time value to a fractional value, in minutes. 8Converts a time value to a fractional value, in hours. 7Converts a frames-per-second value into a time value. QA signal that returns the time that the game has been running for when sampled. HA signal that returns the time since it was last sampled when sampled. 0A utility function that does the real magic for . dA signal that blocks the game thread for a certain amount of time when sampled and then returns the k amount of time it blocked for. Please note that delaying by values smaller than 1 millisecond can have  platform-specific results.   NoneAConverts radians into the standard angle measurement (radians). AConverts degrees into the standard angle measurement (radians). >Converts turns into the standard angle measurement (radians). @ Turns are essentially full revolutions of the unit circle. 8Forward function application, think of it as a inverted '($)''. Provided for easy porting from Elm. Exactly the same as '($)' , only there to make code using '(|>)'  more consistent. &Creates a signal that never changes. 4Combines a list of signals into a signal of lists.  \Applies a function to a signal producing a new signal. This is a wrapper around the builtin  Q function that automatically binds the input signal out of the signal generator.  render <~ Window.dimensions  $Applies a function to two signals.  &Applies a function to three signals.  %Applies a function to four signals.  %Applies a function to five signals. $Applies a function to six signals. &Applies a function to seven signals. &Applies a function to eight signals.  An alias for  . UApplies a function within a signal to a signal. This is a wrapper around the builtin  operator K that automatically binds the input signal out of the signal generator. 0 render <~ Window.dimensions ~~ Window.position JCreates a past-dependent signal that depends on another signal. This is a  wrapper around the - function that automatically binds the input T signal out of the signal generator. This function is useful for making a render 6 function that depends on some accumulated state. GCreates a signal that counts the amount of times it has been sampled. LCreates a signal that counts the amount of times an input signal has passed  a predicate when sampled. &Creates a signal of a random number. ?Creates a signal of a random number based on the given range.                     None2A data structure describing a button on a mouse. $The current position of the mouse. (The current x-coordinate of the mouse.  (The current y-coordinate of the mouse. !-The current state of a certain mouse button. 1 True if the mouse is down, false otherwise.  !  ! !  ! Safe-Inferred"JA data structure describing a gradient. There are two types of gradients: R radial and linear. Radial gradients are based on a set of colors transitioned O over certain radii in an arc pattern. Linear gradients are a set of colors & transitioned in a straight line. %LA data structure describing a color. It is represented interally as an RGBA % color, but the utility functions <, =, etc. can be used to convert 3 from other popular formats to this structure. 'Creates an RGB color. (*Creates an RGB color, with transparency. )A bright red color. *A bright green color. +A bright blue color. ,4A yellow color, made from combining red and green. -4A cyan color, combined from bright green and blue. .5A magenta color, combined from bright red and blue. /A black color. 0A white color. 18A gray color, exactly halfway between black and white. 2Common alternative spelling of 1. 3A medium red color. 4A medium blue color. 5A medium green color. 64A teal color, combined from medium green and blue. 74A purple color, combined from medium red and blue. 8A violet color. 9A dark green color. :;Takes a list of colors and turns it into a single color by % averaging the color components. /A utility function that adds colors together. ;KCalculate a complementary color for a provided color. Useful for outlining L a filled shape in a color clearly distinguishable from the fill color. <(Create an RGBA color from HSVA values. =&Create an RGB color from HSV values. >QCreates a linear gradient. Takes a starting position, ending position and a list L of color stops (which are colors combined with a floating value between 0.0 and 1.0 M that describes at what step along the line between the starting position E and ending position the paired color should be transitioned to).  3 linear (0, 0) (100, 100) [(0, black), (1, white)] 4The above example creates a gradient that starts at (0, 0)  and ends at  (100, 100). In other words, it'7s a diagonal gradient, transitioning from the top-left Y to the bottom-right. The provided color stops result in the gradient transitioning from  black to white. ?\Creates a radial gradient. Takes a starting position and radius, ending position and radius 4 and a list of color stops. See the document for >' for more information on color stops. "#$%&'()*+,-./0123456789:;<=>?"#$%&'()*+,-./0123456789:;<=>?%&"$#('<=:;>?)*+,-./0123456789"$#%&'()*+,-./0123456789:;<=>?None/@MA data structure describing a some sort of graphically representable object, D such as a polygon formed from a list of points or a rectangle. DJA data type made up a collection of points that form a path when joined. ESA data structure describing a few ways that graphics that can be wrapped in a form  and hence transformed. JEA data structure describing how a shape or path looks when stroked. RBA data structure describing the shape of the join of a line, i.e. + where separate line segments join. The Sharp variant takes 2 an argument to limit the length of the join. V>A data structure describing the shape of the ends of a line. ZDA data structure describing how a shape or path looks when filled. ^TA data structure describing a form. A form is essentially a notion of a transformed 4 graphic, whether it be an element or shape. See E for an insight : into what sort of graphics can be wrapped in a form. e;A data structure describing something that can be rendered = to the screen. Elements are the most important structure 8 in Helm. Games essentially feed the engine a stream @ of elements which are then rendered directly to the screen. : The usual way to render art in a Helm game is to call  off to the  function, which essentially - renders a collection of forms together. i8A data structure describing a piece of formatted text. q>A data structure describing the style of of a piece of font. u<A data structure describing the weight of a piece of font. yPCreate an element from an image with a given width, height and image file path. K If the image dimensions are not the same as given, then it will stretch/shrink to fit. - Only PNG files are supported currently. zPCreate an element from an image with a given width, height and image file path. a If the image dimensions are not the same as given, then it will only use the relevant pixels d (i.e. cut out the given dimensions instead of scaling). If the given dimensions are bigger than ; the actual image, than irrelevant pixels are ignored. {VCreate an element from an image by cropping it with a certain position, width, height Z and image file path. This can be used to divide a single image up into smaller ones. |QCreates the default line style. By default, the line is black with a width of 1, ) flat caps and regular sharp joints. })Create a solid line style with a color. ~*Create a dashed line style with a color. *Create a dotted line style with a color. 'Utility function for creating a form. JUtility function for creating a filled form from a fill style and shape. BCreates a form from a shape by filling it with a specific color. GCreates a form from a shape with a tiled texture and image file path. 5Creates a form from a shape filled with a gradient. ICreates a form from a shape by outlining it with a specific line style. FCreates a form from a path by tracing it with a specific line style. \Creates a form from a image file path with additional position, width and height arguments. = Allows you to splice smaller parts from a single image. !Creates a form from an element. LCreates a empty form, useful for having forms rendered only at some state. 1Groups a collection of forms into a single one. XGroups a collection of forms into a single one, also applying a matrix transformation. +Rotates a form by an amount (in radians). ,Scales a form by an amount, e.g. scaling by 2.0 will double the size. 0Moves a form relative to its current position.  Moves a form'2s x-coordinate relative to its current position.  Moves a form'2s y-coordinate relative to its current position. OCreate an element from a collection of forms, with width and height arguments. G All forms are centered and clipped within the supplied dimensions. C It is generally used to directly render a collection of forms. = collage 800 600 [move (100, 100) $ filled red $ square 100, H move (100, 100) $ outlined (solid white) $ circle 50] Like <, but it centers the forms within the supplied dimensions. Like 5, but it centers the forms around a specific point. ,Creates a path for a collection of points. ACreates a path from a line segment, i.e. a start and end point. 1Creates a shape from a path (a list of points). 6Creates a rectangular shape with a width and height. ,Creates a square shape with a side length. 0Creates an oval shape with a width and height. 'Creates a circle shape with a radius. ECreates a generic n-sided polygon (e.g. octagon, pentagon, etc) with $ an amount of sides and radius. \@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Z@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Zehgfuxwvqtsrijklmnop^_`abcdEIHGFZ]\[VYXWRUTSJKLMNOPQD@CBAyz{|}~/@CBADEIHGFJKLMNOPQRUTSVYXWZ]\[^_`abcdehgfijklmnopqtsruxwvyz{|}~NoneJA data structure that can be used to manage the status of the animation. ?The animation is set to a specific time and its related frame. 6The animation is set to a specific one-indexed frame. LThe animation is stopped, jumping back to the first frame and initial time. The animation is paused. 4The animation continues to play through its frames. @A type describing an animation consisting of a list of frames. PA type describing a single frame in an animation. A frame consists of a time at T which the frame takes place in an animation and the form which is how the frame # actually looks when rendered. ICreates an animation from a list of frames. The time value in each frame J is absolute to the entire animation, i.e. each time value is the time T at which the frame takes place relative to the starting time of the animation. ICreates an animation from a list of frames. The time value in each frame H is relative to other frames, i.e. each time value is the difference ! in time from the last frame.  relative [(100 * millisecond, picture1), (100 * millisecond, picture2)] == absolute [(100 * millisecond, picture1), (200 * millisecond, picture2)] RCreates a signal that returns the current form in the animation when sampled from S a specific animation. The second argument is a signal that returns the time to Z setup the animation forward when sampled. The third argument is a signal that returns > the status of the animation, allowing you to control it. TSteps the animation but also cycles if the end is reached, handles any statuses and : tries to pickup any issues and handle them silently. EThe form that will be rendered for a specific time in an animation. 6The amount of time one cycle of the animation takes. ?A list of all the time values of each frame in the animation. PGiven an animation, a function is created which loops the time of the animation 5 to always be in the animations length boundary. DHelper function which makes a timer loop through an time interval. YGiven an animation, a function is created which loops the frame indices of the animation ; to always be in the animations frame length boundary. SHelper function which makes a frame index loop through an interval starting at 1.   NoneBCreates the default text. By default the text is black sans-serif  with a height of 14pt. Creates a text from a string. 'Creates a text element from a string. =Creates a text element from any showable type, defaulting to  the monospace typeface. !Creates an element from a text. -Sets the weight of a piece of text to bold. .Sets the weight of a piece of text to light. .Sets the slant of a piece of text to italic. /Sets the slant of a piece of text to oblique. $Sets the color of a piece of text. -Sets the typeface of the text to monospace.  Sets the typeface of the text. +Sets the size of a text noticeably large. #Sets the size of a piece of text.  NoneUDefines a value that can be interpolated. An example instance of this class follows: i data YourDataType = YourDataConstructor SomeInterpolableType SomeOtherInterpolableType deriving Generic  # instance Interpolate YourDataType b interpolate 0.5 (YourDataConstructor 3 5) (YourDataConstructor 5 7) == YourDataConstructor 4 6 AA variety of statuses that can be used to control a transition. 6The transition will reset to a certain point in time. .The transition is cycled once and then stops. %The transition will be paused and won't changed until resumed. $The transition will repeat forever. RThis is used only for easier search of frames when transitioning is in progress. %The initial value in the transition. #The final value in the transition. (The time that the transition will take. =The transition-relative time of the beginning of this frame. 7The transition-relative time of the end of this frame. hA type describing a combosable transition. The writer keeps record of all the frames in the transition. { The state holds the current value of the transition. This allows you to easily compose transitions using do notation. UAdds a value to the transition monad that will be the next point in the transition. DInterpolates between the beginning and the end of the given frame. aSearches the frame active at the given time and gives back the value of the frame at that time. ATurns the internal representation of a transition into a signal. H The provided time signal acts as the inner clock of the transition. N The status signal can be used to control the transition, deciding whether R the transition should cycle, go to a specific time, pause, stop or run once. RConverts a list of tuples describing a waypoint value and time into a transition. T The first element in the list is the starting value and time of the transition.  color = transition (constant $ Time.fps 60) (constant Cycle) $ fromList [(white, 0), (green, 2 * second), (red, 5 * second), (black, 1 * second), (yellow, 2 * second)] ,Starts a transition with an initial value. U color = transition (constant $ Time.fps 60) (constant Cycle) $ startWith white $ do  waypoint green (2 * second)  waypoint red (5 * second)  waypoint black (1 * second)  waypoint yellow (2 * second) PGiven an animation, a function is created which loops the time of the animation 5 to always be in the animations length boundary. DHelper function which makes a timer loop through an time interval. 8How long it takes for the provided transition to end. 3   '  None7A data structure describing the current engine state. aA data structure describing miscellaneous initial configurations of the game window and engine. tCreates the default configuration for the engine. You should change the fields where necessary before passing it to . 1Creates a new engine that can be run later using . GInitializes and runs the game engine. The supplied signal generator is F constantly sampled for an element to render until the user quits.  import FRP.Helm , import qualified FRP.Helm.Window as Window  ! render :: (Int, Int) -> Element T render (w, h) = collage w h [rect (fromIntegral w) (fromIntegral h) |> filled red]   main :: IO () : main = run defaultConfig $ lift render Window.dimensions  A utility function called by  that samples the element < or quits the entire engine if SDL events say to do so.  A utility function called by 'run\'' that polls all SDL events C off the stack, returning true if the game should keep running,  false otherwise.  =A utility function that renders a previously sampled element  using an engine state. A utility function called by   that is called by Cairo  when it's ready to do rendering. FA utility function that lazily grabs an image surface from the cache,  i.e. creating it if it's not already stored in it. 6A utility function for rendering a specific element. LA utility function that maps to a Pango font weight based off our variant. KA utility function that maps to a Pango font style based off our variant. ]A utility function that goes into a state of transformation and then pops it when finished. KA utility function that sets the Cairo line cap based off of our version. MA utility function that sets the Cairo line style based off of our version. FA utility function that sets up all the necessary settings with Cairo E to render with a line style and then strokes afterwards. Assumes I that all drawing paths have already been setup before being called. FA utility function that sets up all the necessary settings with Cairo C to render with a fill style and then fills afterwards. Assumes I that all drawing paths have already been setup before being called. JA utility function that adds color stops to a pattern and then fills it.  A utility that renders a form.         "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     None'The current dimensions of the window. "The current width of the window. #The current height of the window.    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./00123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abc-deffghijklmnoppqrstuvwxyz{|}~                                                                                     helm-0.6.2FRP.Helm.Keyboard FRP.Helm.TimeFRP.Helm.UtilitiesFRP.Helm.MouseFRP.Helm.ColorFRP.Helm.GraphicsFRP.Helm.Animation FRP.Helm.TextFRP.Helm.TransitionFRP.HelmFRP.Helm.WindowKeyApp2KeyApp1KeySleepKeyEjectKeyKeyboardIllumUpKeyKeyboardIllumDownKeyKeyboardIllumToggleKeyDisplaySwitchKeyBrightnessUpKeyBrightnessDownKeyACBookmarksKey ACRefreshKey ACStopKey ACForwardKey ACBackKey ACHomeKey ACSearchKey ComputerKey CalculatorKeyMailKeyWWWKeyMediaSelectKey AudioMuteKey AudioPlayKey AudioStopKeyAudioPreviousKey AudioNextKeyModeKey RightMetaKey RightAltKey RightShiftKeyRightControlKey LeftMetaKey LeftAltKey LeftShiftKeyLeftControlKeyKeypadHexadecimalKeyKeypadDecimalKeyKeypadOctalKeyKeypadBinaryKeyKeypadClearEntryKeyKeypadClearKeyKeypadPlusMinusKeyKeypadMemDivideKeyKeypadMemMultiplyKeyKeypadMemSubstractKeyKeypadMemAddKeyKeypadMemClearKeyKeypadMemRecallKeyKeypadMemStoreKeyKeypadExclamationKey KeypadAtKeyKeypadSpaceKey KeypadHashKeyKeypadColonKeyKeypadDoubleVerticalBarKeyKeypadVerticalBarKeyKeypadDoubleAmpersandKeyKeypadAmpersandKeyKeypadGreaterKey KeypadLessKeyKeypadPercentKeyKeypadPowerKey KeypadXORKey KeypadFKey KeypadEKey KeypadDKey KeypadCKey KeypadBKey KeypadAKeyKeypadBackspaceKey KeypadTabKeyKeypadRightBraceKeyKeypadLeftBraceKeyKeypadRightParenKeyKeypadLeftParenKeyCurrencySubUnitKeyCurrencyUnitKeyDecimalSeparatorKeyThousandSeparatorKey Keypad000Key Keypad00KeyExSelKeyCrSelKey ClearAgainKeyOperKeyOutKey SeparatorKey Return2KeyPriorKeyClearKey CancelKey SysReqKey AltEraseKeyLang9KeyLang8KeyLang7KeyLang6KeyLang5KeyLang4KeyLang3KeyLang2KeyLang1KeyInternational9KeyInternational8KeyInternational7KeyInternational6KeyInternational5KeyInternational4KeyInternational3KeyInternational2KeyInternational1KeyKeyPadEqualsAs400KeyKeypadCommaKey VolumeDownKey VolumeUpKeyMuteKeyFindKeyPasteKeyCopyKeyCutKeyUndoKeyAgainKeyStopKey SelectKeyMenuKeyHelpKey ExecuteKeyF24KeyF23KeyF22KeyF21KeyF20KeyF19KeyF18KeyF17KeyF16KeyF15KeyF14KeyF13KeyKeypadEqualsKeyPowerKeyApplicationKeyNonUSBackslashKeyKeypadPeriodKey Keypad0Key Keypad9Key Keypad8Key Keypad7Key Keypad6Key Keypad5Key Keypad4Key Keypad3Key Keypad2Key Keypad1KeyKeypadEnterKey KeypadPlusKeyKeypadMinusKeyKeypadMultiplyKeyKeypadDivideKeyNumLockClearKeyUpKeyDownKeyLeftKeyRightKey PageDownKeyEndKey DeleteKey PageUpKeyHomeKey InsertKeyPauseKey ScrollLockKeyPrintScreenKeyF12KeyF11KeyF10KeyF9KeyF8KeyF7KeyF6KeyF5KeyF4KeyF3KeyF2KeyF1Key CapslockKeySlashKey PeriodKeyCommaKeyGraveKey ApostropheKey SemicolonKey NonUSHashKey BackslashKeyRightBracketKeyLeftBracketKey EqualsKeyMinusKeySpaceKeyTabKey BackspaceKey EscapeKey ReturnKey Number0Key Number9Key Number8Key Number7Key Number6Key Number5Key Number4Key Number3Key Number2Key Number1KeyZKeyYKeyXKeyWKeyVKeyUKeyTKeySKeyRKeyQKeyPKeyOKeyNKeyMKeyLKeyKKeyJKeyIKeyHKeyGKeyFKeyEKeyDKeyCKeyBKeyAKeyisDownkeysDownarrowswasdTime millisecondsecondminutehourinMilliseconds inSeconds inMinutesinHoursfpsrunningdeltadelayradiansdegreesturns|><|constantcombineliftlift2lift3lift4lift5lift6lift7lift8<~~~foldpcountcountIfrandomrandomRMouseX2MouseX1Mouse RightMouse MiddleMouse LeftMousepositionxyGradientRadialLinearColorrgbrgbaredlimeblueyellowcyanmagentablackwhitegraygreymaroonnavygreentealpurpleviolet forestGreenblend complementhsvahsvlinearradialShapeArcShapeRectangleShape PolygonShapePath FormStyle GroupForm ElementForm ShapeFormPathForm LineStyle lineColor lineWidthlineCaplineJoin lineDashinglineDashOffsetLineJoin ClippedJoin SharpJoin SmoothJoinLineCap PaddedCapRoundCapFlatCap FillStyleTextureSolidForm formTheta formScaleformXformY formStyleElement TextElement ImageElementCollageElementTexttextUTF8 textColor textTypeface textHeight textWeight textStyle FontStyle ItalicStyle ObliqueStyle NormalStyle FontWeight BoldWeight NormalWeight LightWeightimage fittedImage croppedImage defaultLinesoliddasheddottedfilledtexturedgradientoutlinedtracedspritetoFormblankgroupgroupTransformrotatescalemovemoveXmoveYcollagecenteredCollage fixedCollagepathsegmentpolygonrectsquareovalcirclengonAnimationStatusSetTimeSetFrameStopPauseCycle AnimationFrameabsoluterelativeanimateformAtlength defaultTexttoText plainTextasTexttextboldlightitalicobliquecolor monospacetypefaceheaderheight Interpolate interpolateTransitionStatusSetOnce Transitionwaypoint transitionfromList startWithEnginewindowrenderercache EngineConfigwindowDimensionswindowIsFullscreenwindowIsResizable windowTitle defaultConfigstartuprun dimensionswidthsdlGetKeyState getKeyStatearrows' $fEnumKeydelta'baseGHC.BasefmapControl.Applicative<*>elerea-2.7.0.2FRP.Elerea.Simpletransfer $fEnumMouseblend'formfilltimesteptimes cycleTime cycleTime' cycleFrames cycleFrames' InternalFramesettendtstart transFrame transitionAt GInterpolate ginterpolateInternalTransitionintegralInterpolate$fInterpolateColor$fInterpolate(,)$fInterpolateBool$fInterpolateInteger$fInterpolateInt64$fInterpolateInt32$fInterpolateInt16$fInterpolateInt8$fInterpolateInt$fInterpolateWord64$fInterpolateWord32$fInterpolateWord16$fInterpolateWord8$fInterpolateWord$fInterpolateChar$fInterpolateFloat$fInterpolateDouble$fGInterpolateK1$fGInterpolateM1$fGInterpolate:+:$fGInterpolate:*:$fGInterpolateU1$fGInterpolateV1run'run''renderrender' getSurface renderElement mapFontWeight mapFontStyle withTransform setLineCap setLineJoin setLineStyle setFillStyle setFillStyle' renderFormHelm