Blole

.SVG <path> line drawer

Jan 6th, 2013
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #SingleInstance force
  2.  
  3. fileName := "sample.svg"
  4. offsetX := 100
  5. offsetY := 100
  6. scale := 1
  7.  
  8. !a::    Reload
  9. !s::    main()
  10.  
  11. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  12.  
  13. getX(line)
  14. {
  15.     global offsetX, scale
  16.     return (RegExReplace(line, "^.*?([+-]?[0-9\.]+).*$", "$1") * scale) + offsetX
  17. }
  18.  
  19. getY(line)
  20. {
  21.     global offsetY, scale
  22.     return RegExReplace(line, "^.*,([+-]?[0-9.]+)$", "$1") * scale + offsetY
  23. }
  24.  
  25. getOp(line)
  26. {
  27.     return RegExReplace(line, "(.).*$", "$1")
  28. }
  29.  
  30. main()
  31. {
  32.     global fileName
  33.     file := FileOpen(fileName, "r")
  34.     text := file.Read()
  35.     file.Close()
  36.    
  37.     data := RegExReplace(text, "is)^.*?<path[^>]+?d=['""]([^>]+?)['""].*$", "$1") ;scrape path data
  38.     data := RegExReplace(data, ".*?([A-Za-z]?)[ \t\n\r]*?([+-]?[-0-9\.]+)[ \t\n\r,]*?([+-]?[-0-9\.]+)", "$1 $2,$3_") ;scrape path data in uppercase
  39.     data := RegExReplace(data, "_$", "")
  40.    
  41.     Loop, Parse, data, _
  42.     {
  43.         if (old && getOp(A_LoopField) != "M" && getOp(A_LoopField) != "z")
  44.             MouseClickDrag, L, getX(old),getY(old), getX(A_LoopField),getY(A_LoopField)
  45.         old := A_LoopField
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment