2016-04-07 13 views
0

以下の機能には、の使用が含まれ、 図形/フォームを要素に変換する場合のみです。Elm - フォーム検査

makeSlider : Element -> Form -> Element 
makeSlider sliderShape sliderBarForm = 
    let                         
    sliderBar = 
     --convert sliderBarForm from type Form to Element 
     collage 1000 1000 [(move (0,0) sliderBarForm)] 
    in 
    layers [sliderShape, sliderBar] 

makeSlider機能がsliderBarFormの明示的な寸法を知っておく必要がないように、Graphics.Element.sizeOfのように、フォームの寸法を抽出する方法はありますか?

それとも

collage 1000 1000 [(move (0,0) sliderBarForm)]

toElement (move (0,0) sliderBarForm)と交換することができるようにtoElement機能は存在しませんか?

答えて

3

フォームの寸法を簡単に取得できるとは思いません。私は、フォームは非常に多くの種類のもの(形状、パスなど)になる可能性があるためだと思います。後で寸法を知る必要があるときは、用紙を作成するときに寸法を把握しています。

type alias MyForm = 
    { form : Form 
    , width : Int 
    , height : Int 
    } 

makeRectForm: Float -> Float -> MyForm 
makeRectForm w h = {form: (filled grey (rect w h)), width: (round w), height: (round h)} 

は、その後、あなたの場合には、あなたはcollageMyFormを使用することができます。

makeSlider : Element -> MyForm -> Element 
makeSlider sliderShape sliderBarMyForm = 
    let                         
    sliderBar = 
     --convert sliderBarForm from type Form to Element 
     collage sliderBarMyForm.width sliderBarMyForm.height [(move (0,0) sliderBarMyForm)] 
    in 
    layers [sliderShape, sliderBar] 
+0

私は 'makeSlider'に余分なパラメータを使う必要がないので感謝します。 – category