L3x      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                          Safe-Inferred Safe-InferredAConverts 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.     None 7A data structure describing the current engine state.      None&Creates a signal that never changes. 4Combines a list of signals into a signal of lists. LApplies a function to a signal producing a new signal. This is a synonym of  G. It automatically binds the input signal out of the signal generator.  lift 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 . EApplies a function within a signal to a signal. This is a synonym of  *. I It 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 5 function that depends on some accumulated state. /Count the number of events that have occurred. !NCount the number of events that have occurred that satisfy a given predicate.  ! ! ! !None"FA type describing an amount of time in an arbitary unit. Use the time  composing/1converting 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. +LTakes desired number of frames per second (fps). The resulting signal gives I a sequence of time deltas as quickly as possible until it reaches the P desired FPS. A time delta is the time between the last frame and the current  frame. ,KSame as the fps function, but you can turn it on and off. Allows you to do P brief animations based on user input without major inefficiencies. The first N time delta after a pause is always zero, no matter how long the pause was. N This way summing the deltas will actually give the amount of time that the $ output signal has been running. -KTakes a time interval t. The resulting signal is the current time, updated  every t. A utility signal used by + and - that returns the current time  and a delta every t. 3Another utility signal that does all the magic for  by working on  the Elerea SignalGen level .KAdd a timestamp to any signal. Timestamps increase monotonically. When you P create (timestamp Mouse.x), an initial timestamp is produced. The timestamp & updates whenever Mouse.x updates. KUnlike in Elm the timestamps are not tied to the underlying signals so the E timestamps for Mouse.x and Mouse.y will be slightly different. /KDelay a signal by a certain amount of time. So (delay second Mouse.clicks) 8 will update one second later than any mouse click. 0HTakes a time t and any signal. The resulting boolean signal is true for = time t after every event on the input signal. So (second 0 M Mouse.clicks) would result in a signal that is true for one second after + each mouse click and false otherwise. "#$%&'()*+,-./0"#$%&'()*+,-./0"#$%&'()*+,-./0"#$%&'()*+,-./0None1;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. 123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%1!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98765432"#$% 1!      ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:98765432"#$%None&2A 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. /JThe current state of the left mouse-button. True when the button is down,  and false otherwise. 0JThe current state of a given mouse button. True if down, false otherwise. 1<Always equal to unit. Event triggers on every mouse click. &'()*+,-./01 &'()*+,-./01 &+*)(',-./01&+*)(',-./01None2'The current dimensions of the window. 3%The current position of the window. 4"The current width of the window. 5#The current height of the window. 2345234524532345 None6EGiven a range from low to high and a signal of values, this produces Ea new signal that changes whenever the input signal changes. The new !values are random number between low and high inclusive. 7FProduces a new signal that changes whenever the input signal changes. -The new values are random numbers in [0..1). (A utility signal that does the work for 7 and 6. 8FProduces a new signal of lists that changes whenever the input signal Qchanges. The input signal specifies the length of the random list. Each value is a random number in [0..1). 678678678678  Safe-Inferred9JA 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 S, T, 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. AA bright green color. BA bright blue color. C4A yellow color, made from combining red and green. D4A cyan color, combined from bright green and blue. E5A magenta color, combined from bright red and blue. FA black color. GA white color. H8A gray color, exactly halfway between black and white. ICommon alternative spelling of H. JA medium red color. KA medium blue color. LA medium green color. M4A teal color, combined from medium green and blue. N4A purple color, combined from medium red and blue. OA violet color. PA dark green color. Q;Takes a list of colors and turns it into a single color by % averaging the color components. /A utility function that adds colors together. RKCalculate a complementary color for a provided color. Useful for outlining L a filled shape in a color clearly distinguishable from the fill color. S(Create an RGBA color from HSVA values. T&Create an RGB color from HSV values. UQCreates 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. V\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 U' for more information on color stops. 9:;<=>?@ABCDEFGHIJKLMNOPQRSTUV9:;<=>?@ABCDEFGHIJKLMNOPQRSTUV<=9;:?>STQRUV@ABCDEFGHIJKLMNOP9;:<=>?@ABCDEFGHIJKLMNOPQRSTUV None/WMA data structure describing a some sort of graphically representable object, D such as a polygon formed from a list of points or a rectangle. [JA data type made up a collection of points that form a path when joined. \SA data structure describing a few ways that graphics that can be wrapped in a form  and hence transformed. aEA data structure describing how a shape or path looks when stroked. iBA 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. m>A data structure describing the shape of the ends of a line. qDA data structure describing how a shape or path looks when filled. uTA data structure describing a form. A form is essentially a notion of a transformed 4 graphic, whether it be an element or shape. See \ for an insight : into what sort of graphics can be wrapped in a form. |;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. 8A data structure describing a piece of formatted text. >A data structure describing the style of of a piece of font. <A data structure describing the weight of a piece of font. PCreate 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. PCreate 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. \WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ZWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Z|~}uvwxyz{\`_^]qtsrmponilkjabcdefgh[WZYX/WZYX[\`_^]abcdefghilkjmponqtsruvwxyz{|~} 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.  NoneHA data structure describing miscellaneous initial configurations of the  game window and engine. GA data structure holding the main element and information required for  rendering. HCreates the default configuration for the engine. You should change the 0 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 <An event that triggers when SDL thinks we need to re-draw. 9An event that triggers when SDL thinks we need to quit. A utility function called by  that samples the element < or quits the entire engine if SDL events say to do so. JRenders when the sample is marked as changed delays the thread 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. JA 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. !  !"9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ " !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:.;<=8>? @ A B C D E F F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j j k l m n o p q r s t u v w x y C z { | | } ~                                                                      ?                                      helm-0.7.0FRP.Helm.SampleFRP.Helm.UtilitiesFRP.Helm.EngineFRP.Helm.Signal FRP.Helm.TimeFRP.Helm.KeyboardFRP.Helm.MouseFRP.Helm.WindowFRP.Helm.RandomFRP.Helm.ColorFRP.Helm.Graphics FRP.Helm.TextFRP.HelmSample UnchangedChangedvalueupdateradiansdegreesturns|><|EnginewindowrenderercachecontinueSignal signalGenconstantcombineliftlift2lift3lift4lift5lift6lift7lift8<~~~foldpcountcountIfTime millisecondsecondminutehourinMilliseconds inSeconds inMinutesinHoursfpsfpsWhenevery timestampdelaysinceKeyApp2KeyApp1KeySleepKeyEjectKeyKeyboardIllumUpKeyKeyboardIllumDownKeyKeyboardIllumToggleKeyDisplaySwitchKeyBrightnessUpKeyBrightnessDownKeyACBookmarksKey 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 Number1KeyZKeyYKeyXKeyWKeyVKeyUKeyTKeySKeyRKeyQKeyPKeyOKeyNKeyMKeyLKeyKKeyJKeyIKeyHKeyGKeyFKeyEKeyDKeyCKeyBKeyAKeyisDownkeysDownarrowswasdMouseX2MouseX1Mouse RightMouse MiddleMouse LeftMousepositionxy isDownButtonclicks dimensionswidthheightrangefloat floatListGradientRadialLinearColorrgbrgbaredlimeblueyellowcyanmagentablackwhitegraygreymaroonnavygreentealpurpleviolet 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 fixedCollagepathsegmentpolygonrectsquareovalcirclengon defaultTexttoText plainTextasTexttextboldlightitalicobliquecolor monospacetypefaceheader EngineConfigwindowDimensionswindowIsFullscreenwindowIsResizable windowTitle defaultConfigrun$fApplicativeSample$fFunctorSamplebaseGHC.Basefmapelerea-2.7.0.2FRP.Elerea.Paramtransfer$fApplicativeSignal$fFunctorSignalevery'every''sdlGetKeyState getKeyStatearrows' $fEnumKey $fEnumMouserandblend'formfill Applicationstartupexposedquitrun'renderIfChangedrenderrender' getSurface renderElement mapFontWeight mapFontStyle withTransform setLineCap setLineJoin setLineStyle setFillStyle setFillStyle' renderForm mainElementmainDimensions mainContinueHelm continue'