anchor.diff:                      let content = n.Value
                       Nvg.text (Mod.constant content)
                           |> Nvg.trafo (Mod.constant (M33d.Translation(V2d(x,y))))
  -
  +                        |> ret
  +
  +                | "line" ->
  +                    let x0 = n |> tryReadAttribute "x1" |> withDefault 0.0
  +                    let y0 = n |> tryReadAttribute "y1" |> withDefault 0.0
  +                    let x1 = n |> tryReadAttribute "x2" |> withDefault 0.0
  +                    let y1 = n |> tryReadAttribute "y2" |> withDefault 0.0
  +
  +                    [MoveTo(V2d(x0, y0)); LineTo(V2d(x1, y1))]
  +                        |> Primitive.Path
  +                        |> renderPrimitive
   
                   | _ -> 
                       Log.warn "unknown element-type: %A" n.Name.LocalName
  
positive.code:                         |> Seq.toList
                          |> List.map (parseNode state)
                          |> Nvg.ofList
                          |> maybeApp Nvg.fillColor ownFill
                          |> maybeApp Nvg.strokeColor ownStroke
  
                  | "rect" ->
                      let x = n |> tryReadAttribute "x" |> withDefault 0.0
  
negative.code:                 |> List.map (parseNode initialState)
                  |> Nvg.ofList
                  |> Nvg.fillColor (Mod.constant C4f.Black)
                  |> Nvg.align (Mod.constant (TextAlign.Left ||| TextAlign.BaseLine))
                  //|> Nvg.trafo (Mod.constant (M33d.Translation(V2d(400.0, 300.0)) * M33d.Scale(2.0)))
  
      let ofString (str : string) =
          str |> XDocument.Parse |> Parser.parseDocument
  