method_draw 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (389) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +148 -0
  4. data/Rakefile +23 -0
  5. data/app/assets/javascripts/method_draw.js +9 -0
  6. data/app/assets/javascripts/method_draw/base64.js +95 -0
  7. data/app/assets/javascripts/method_draw_embed.js +76 -0
  8. data/app/assets/stylesheets/sketchily.css +6 -0
  9. data/app/helpers/method_draw_helper.rb +35 -0
  10. data/app/views/method_draw/_embed.html.erb +51 -0
  11. data/app/views/method_draw/_method_draw.html.erb +19 -0
  12. data/app/views/method_draw/_method_draw_tag.html.erb +14 -0
  13. data/lib/method_draw.rb +16 -0
  14. data/lib/method_draw/engine.rb +4 -0
  15. data/lib/method_draw/method_draw.rb +37 -0
  16. data/lib/method_draw/method_draw_tag.rb +20 -0
  17. data/lib/method_draw/version.rb +3 -0
  18. data/spec/app/helpers/method_draw_helper_spec.rb +8 -0
  19. data/spec/dummy/README.md +3 -0
  20. data/spec/dummy/Rakefile +7 -0
  21. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  22. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  23. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  24. data/spec/dummy/app/controllers/drawings_controller.rb +18 -0
  25. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  26. data/spec/dummy/app/models/drawing.rb +2 -0
  27. data/spec/dummy/app/views/drawings/method_draw.html.erb +3 -0
  28. data/spec/dummy/app/views/drawings/method_draw_tag.html.erb +3 -0
  29. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  30. data/spec/dummy/config.ru +4 -0
  31. data/spec/dummy/config/application.rb +27 -0
  32. data/spec/dummy/config/boot.rb +5 -0
  33. data/spec/dummy/config/database.yml +25 -0
  34. data/spec/dummy/config/environment.rb +5 -0
  35. data/spec/dummy/config/environments/development.rb +29 -0
  36. data/spec/dummy/config/environments/production.rb +80 -0
  37. data/spec/dummy/config/environments/test.rb +36 -0
  38. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  40. data/spec/dummy/config/initializers/inflections.rb +16 -0
  41. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  42. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  43. data/spec/dummy/config/initializers/session_store.rb +3 -0
  44. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  45. data/spec/dummy/config/locales/en.yml +23 -0
  46. data/spec/dummy/config/routes.rb +8 -0
  47. data/spec/dummy/db/development.sqlite3 +0 -0
  48. data/spec/dummy/db/migrate/0_create_drawings.rb +7 -0
  49. data/spec/dummy/db/schema.rb +20 -0
  50. data/spec/dummy/db/test.sqlite3 +0 -0
  51. data/spec/dummy/log/development.log +922 -0
  52. data/spec/dummy/log/test.log +181 -0
  53. data/spec/dummy/public/404.html +26 -0
  54. data/spec/dummy/public/422.html +26 -0
  55. data/spec/dummy/public/500.html +25 -0
  56. data/spec/dummy/public/favicon.ico +0 -0
  57. data/spec/dummy/script/rails +6 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/01e63791dcd008779246d1eeeace9408 +0 -0
  59. data/spec/dummy/tmp/cache/assets/development/sprockets/061f36c32f08daef6eca93b74eaf74fd +0 -0
  60. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  61. data/spec/dummy/tmp/cache/assets/development/sprockets/1dbfe77fba798ba3dc24571c3b6d7eed +0 -0
  62. data/spec/dummy/tmp/cache/assets/development/sprockets/1fd7477d83ec1798c2bc740be42bd6b2 +0 -0
  63. data/spec/dummy/tmp/cache/assets/development/sprockets/203471220004cb0cc667b886fb87dc46 +0 -0
  64. data/spec/dummy/tmp/cache/assets/development/sprockets/213e12fc648032455ca0b118e987cca6 +0 -0
  65. data/spec/dummy/tmp/cache/assets/development/sprockets/296bbe63b0505bc5be472fc1c8a1a5fd +0 -0
  66. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  67. data/spec/dummy/tmp/cache/assets/development/sprockets/3239b44c026d7c1646c17a10c72905bf +0 -0
  68. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  69. data/spec/dummy/tmp/cache/assets/development/sprockets/38c8fbf05056bbe66399b6923521dc20 +0 -0
  70. data/spec/dummy/tmp/cache/assets/development/sprockets/3e30c8cfdf7deeda4607e4a8298f09a5 +0 -0
  71. data/spec/dummy/tmp/cache/assets/development/sprockets/4bdd61ba53e8d9b7c19afea13c6e8985 +0 -0
  72. data/spec/dummy/tmp/cache/assets/development/sprockets/52b0b11efea48f1fe5e46eeb4aa20193 +0 -0
  73. data/spec/dummy/tmp/cache/assets/development/sprockets/5ef314d6f1af1570631d60b7f9a96d6c +0 -0
  74. data/spec/dummy/tmp/cache/assets/development/sprockets/6215f00c593e1789ef865a545b17fc14 +0 -0
  75. data/spec/dummy/tmp/cache/assets/development/sprockets/624fdd5478edd235a86af4b6168d0f75 +0 -0
  76. data/spec/dummy/tmp/cache/assets/development/sprockets/6299190ac3952cf7eee042e60c9aee89 +0 -0
  77. data/spec/dummy/tmp/cache/assets/development/sprockets/62a95a2d67ec78570de6d0b31436206a +0 -0
  78. data/spec/dummy/tmp/cache/assets/development/sprockets/65ed942dea29700b739c2292791eb65e +0 -0
  79. data/spec/dummy/tmp/cache/assets/development/sprockets/66eb709561f77a29885af4423a3eb193 +0 -0
  80. data/spec/dummy/tmp/cache/assets/development/sprockets/6f8f2c21bc49ae5ebad6e8a96cea4fe6 +0 -0
  81. data/spec/dummy/tmp/cache/assets/development/sprockets/85dab60ed9ec9625b7ee22d4342fe26c +0 -0
  82. data/spec/dummy/tmp/cache/assets/development/sprockets/86358bce0bfd5de6ac8afb1bfa9d675b +0 -0
  83. data/spec/dummy/tmp/cache/assets/development/sprockets/8b835ce894c1218dea1e7c83a9109d2d +0 -0
  84. data/spec/dummy/tmp/cache/assets/development/sprockets/8e177cc7106653a1e053bb2444bb43a5 +0 -0
  85. data/spec/dummy/tmp/cache/assets/development/sprockets/8f41435d82ae4df55ae7dfdc1e99b0bb +0 -0
  86. data/spec/dummy/tmp/cache/assets/development/sprockets/94be0a0bca76437d0766c265a9cdecda +0 -0
  87. data/spec/dummy/tmp/cache/assets/development/sprockets/9a093e6973aa150a0a4388167364593d +0 -0
  88. data/spec/dummy/tmp/cache/assets/development/sprockets/a280ac195f56a87267d2ec5d3e22ebcd +0 -0
  89. data/spec/dummy/tmp/cache/assets/development/sprockets/b13cddebc9106da6cfaf949ab3856d1f +0 -0
  90. data/spec/dummy/tmp/cache/assets/development/sprockets/b29ac216cb03ce2f30655a0d9bed77d4 +0 -0
  91. data/spec/dummy/tmp/cache/assets/development/sprockets/c39d32e3ef6cc89f9c522212e65c49e1 +0 -0
  92. data/spec/dummy/tmp/cache/assets/development/sprockets/c9910a0652952be02900dc71594d4384 +0 -0
  93. data/spec/dummy/tmp/cache/assets/development/sprockets/cb14e22baac3ab2cc947628f283e117b +0 -0
  94. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  95. data/spec/dummy/tmp/cache/assets/development/sprockets/d1475c156face9f06092c9cf89905372 +0 -0
  96. data/spec/dummy/tmp/cache/assets/development/sprockets/d22aa5a4d864d00cced2437352fe8fe4 +0 -0
  97. data/spec/dummy/tmp/cache/assets/development/sprockets/d46cc5e60d1b2a20d622cdf9bab35fad +0 -0
  98. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  99. data/spec/dummy/tmp/cache/assets/development/sprockets/d7f27a7f35278e87c69668a65683360a +0 -0
  100. data/spec/dummy/tmp/cache/assets/development/sprockets/e0080336bb31d78e9efab59b234e0d85 +0 -0
  101. data/spec/dummy/tmp/cache/assets/development/sprockets/e06104d99b055e792effca7bd66ad384 +0 -0
  102. data/spec/dummy/tmp/cache/assets/development/sprockets/e095df19da361d5f53d90f6749a38ea6 +0 -0
  103. data/spec/dummy/tmp/cache/assets/development/sprockets/e5fb97d39fdd2e383e61115ef06079fd +0 -0
  104. data/spec/dummy/tmp/cache/assets/development/sprockets/e6d1ec9817258cfda7c68499a841a9d2 +0 -0
  105. data/spec/dummy/tmp/cache/assets/development/sprockets/edec019e8f1d7e758eb45524a913fd47 +0 -0
  106. data/spec/dummy/tmp/cache/assets/development/sprockets/f37cf330dccb15bee2a195f643f3ba29 +0 -0
  107. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  108. data/spec/dummy/tmp/cache/assets/development/sprockets/fc84011813992cacde5880c6b21701de +0 -0
  109. data/spec/dummy/tmp/cache/assets/test/sprockets/061f36c32f08daef6eca93b74eaf74fd +0 -0
  110. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  111. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  112. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  113. data/spec/dummy/tmp/cache/assets/test/sprockets/38c8fbf05056bbe66399b6923521dc20 +0 -0
  114. data/spec/dummy/tmp/cache/assets/test/sprockets/3e30c8cfdf7deeda4607e4a8298f09a5 +0 -0
  115. data/spec/dummy/tmp/cache/assets/test/sprockets/52b0b11efea48f1fe5e46eeb4aa20193 +0 -0
  116. data/spec/dummy/tmp/cache/assets/test/sprockets/5ef314d6f1af1570631d60b7f9a96d6c +0 -0
  117. data/spec/dummy/tmp/cache/assets/test/sprockets/6299190ac3952cf7eee042e60c9aee89 +0 -0
  118. data/spec/dummy/tmp/cache/assets/test/sprockets/62a95a2d67ec78570de6d0b31436206a +0 -0
  119. data/spec/dummy/tmp/cache/assets/test/sprockets/65ed942dea29700b739c2292791eb65e +0 -0
  120. data/spec/dummy/tmp/cache/assets/test/sprockets/85dab60ed9ec9625b7ee22d4342fe26c +0 -0
  121. data/spec/dummy/tmp/cache/assets/test/sprockets/a280ac195f56a87267d2ec5d3e22ebcd +0 -0
  122. data/spec/dummy/tmp/cache/assets/test/sprockets/cb14e22baac3ab2cc947628f283e117b +0 -0
  123. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  124. data/spec/dummy/tmp/cache/assets/test/sprockets/d1475c156face9f06092c9cf89905372 +0 -0
  125. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  126. data/spec/dummy/tmp/cache/assets/test/sprockets/e0080336bb31d78e9efab59b234e0d85 +0 -0
  127. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  128. data/spec/dummy/tmp/pids/server.pid +1 -0
  129. data/spec/features/method_draw_spec.rb +10 -0
  130. data/spec/features/method_draw_tag_spec.rb +11 -0
  131. data/spec/lib/method_draw/method_draw_spec.rb +27 -0
  132. data/spec/lib/method_draw/method_draw_tag_spec.rb +19 -0
  133. data/spec/lib/method_draw_spec.rb +11 -0
  134. data/spec/test_helper.rb +24 -0
  135. data/vendor/assets/javascripts/method-draw-js/browser-not-supported.html +27 -0
  136. data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.eot +0 -0
  137. data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.ttf +0 -0
  138. data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.woff +0 -0
  139. data/vendor/assets/javascripts/method-draw-js/css/font-files/Arvo-Regular-webfont.svg +145 -0
  140. data/vendor/assets/javascripts/method-draw-js/css/font-files/Arvo-Regular-webfont.ttf +0 -0
  141. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.eot +0 -0
  142. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.svg +133 -0
  143. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.ttf +0 -0
  144. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.woff +0 -0
  145. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.eot +0 -0
  146. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.svg +235 -0
  147. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.ttf +0 -0
  148. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.woff +0 -0
  149. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.eot +0 -0
  150. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.ttf +0 -0
  151. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.woff +0 -0
  152. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.eot +0 -0
  153. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.ttf +0 -0
  154. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.woff +0 -0
  155. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-bold-webfont.woff +0 -0
  156. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-bolditalic-webfont.woff +0 -0
  157. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-italic-webfont.woff +0 -0
  158. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-regular-webfont.woff +0 -0
  159. data/vendor/assets/javascripts/method-draw-js/css/font-files/euphoriascript-regular-webfont.woff +0 -0
  160. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.eot +0 -0
  161. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.svg +939 -0
  162. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.ttf +0 -0
  163. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.woff +0 -0
  164. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.eot +0 -0
  165. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.svg +682 -0
  166. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.ttf +0 -0
  167. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.woff +0 -0
  168. data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.eot +0 -0
  169. data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.ttf +0 -0
  170. data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.woff +0 -0
  171. data/vendor/assets/javascripts/method-draw-js/css/font-files/oswald-bold-webfont.woff +0 -0
  172. data/vendor/assets/javascripts/method-draw-js/css/font-files/oswald-light-webfont.woff +0 -0
  173. data/vendor/assets/javascripts/method-draw-js/css/font-files/shadowsintolight-webfont.woff +0 -0
  174. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-black-webfont.woff +0 -0
  175. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-blackitalic-webfont.woff +0 -0
  176. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-italic-webfont.ttf +0 -0
  177. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-regular-webfont.woff +0 -0
  178. data/vendor/assets/javascripts/method-draw-js/css/font-files/test.html +62 -0
  179. data/vendor/assets/javascripts/method-draw-js/css/font-files/test.svg +15 -0
  180. data/vendor/assets/javascripts/method-draw-js/css/font-files/test_ff.svg +16 -0
  181. data/vendor/assets/javascripts/method-draw-js/css/font-files/test_ffsvg.svg +13 -0
  182. data/vendor/assets/javascripts/method-draw-js/css/fonts.css +72 -0
  183. data/vendor/assets/javascripts/method-draw-js/css/method-draw.compiled.css +417 -0
  184. data/vendor/assets/javascripts/method-draw-js/css/method-draw.css +2083 -0
  185. data/vendor/assets/javascripts/method-draw-js/embedapi.html +56 -0
  186. data/vendor/assets/javascripts/method-draw-js/extensions/closepath_icons.svg +41 -0
  187. data/vendor/assets/javascripts/method-draw-js/extensions/ext-arrows.js +298 -0
  188. data/vendor/assets/javascripts/method-draw-js/extensions/ext-closepath.js +92 -0
  189. data/vendor/assets/javascripts/method-draw-js/extensions/ext-connector.js +587 -0
  190. data/vendor/assets/javascripts/method-draw-js/extensions/ext-eyedropper.js +135 -0
  191. data/vendor/assets/javascripts/method-draw-js/extensions/ext-foreignobject.js +277 -0
  192. data/vendor/assets/javascripts/method-draw-js/extensions/ext-grid.js +186 -0
  193. data/vendor/assets/javascripts/method-draw-js/extensions/ext-helloworld.js +78 -0
  194. data/vendor/assets/javascripts/method-draw-js/extensions/ext-imagelib.js +444 -0
  195. data/vendor/assets/javascripts/method-draw-js/extensions/ext-imagelib.xml +14 -0
  196. data/vendor/assets/javascripts/method-draw-js/extensions/ext-markers.js +576 -0
  197. data/vendor/assets/javascripts/method-draw-js/extensions/ext-server_moinsave.js +56 -0
  198. data/vendor/assets/javascripts/method-draw-js/extensions/ext-server_opensave.js +180 -0
  199. data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.js +358 -0
  200. data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.png +0 -0
  201. data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.xml +8 -0
  202. data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper-icon.xml +17 -0
  203. data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper.png +0 -0
  204. data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper.svg +15 -0
  205. data/vendor/assets/javascripts/method-draw-js/extensions/fileopen.php +31 -0
  206. data/vendor/assets/javascripts/method-draw-js/extensions/filesave.php +44 -0
  207. data/vendor/assets/javascripts/method-draw-js/extensions/foreignobject-icons.xml +96 -0
  208. data/vendor/assets/javascripts/method-draw-js/extensions/grid-icon.xml +30 -0
  209. data/vendor/assets/javascripts/method-draw-js/extensions/helloworld-icon.xml +21 -0
  210. data/vendor/assets/javascripts/method-draw-js/extensions/imagelib/index.html +64 -0
  211. data/vendor/assets/javascripts/method-draw-js/extensions/imagelib/smiley.svg +12 -0
  212. data/vendor/assets/javascripts/method-draw-js/extensions/markers-icons.xml +115 -0
  213. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib.png +0 -0
  214. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib.svg +10 -0
  215. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/arrow.json +40 -0
  216. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/dialog_balloon.json +14 -0
  217. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/flowchart.json +20 -0
  218. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/game.json +13 -0
  219. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/math.json +8 -0
  220. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/misc.json +6 -0
  221. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/music.json +21 -0
  222. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/nature.json +36 -0
  223. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/object.json +30 -0
  224. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/raphael.txt +12 -0
  225. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/raphael_1.json +7 -0
  226. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/social.json +21 -0
  227. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/symbol.json +35 -0
  228. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/ui.json +57 -0
  229. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/weather.json +26 -0
  230. data/vendor/assets/javascripts/method-draw-js/icons/jquery.svgicons.js +471 -0
  231. data/vendor/assets/javascripts/method-draw-js/images/AlphaBar.png +0 -0
  232. data/vendor/assets/javascripts/method-draw-js/images/Bars.png +0 -0
  233. data/vendor/assets/javascripts/method-draw-js/images/Maps.png +0 -0
  234. data/vendor/assets/javascripts/method-draw-js/images/NoColor.png +0 -0
  235. data/vendor/assets/javascripts/method-draw-js/images/README.txt +61 -0
  236. data/vendor/assets/javascripts/method-draw-js/images/align-bottom.png +0 -0
  237. data/vendor/assets/javascripts/method-draw-js/images/align-bottom.svg +1 -0
  238. data/vendor/assets/javascripts/method-draw-js/images/align-center.png +0 -0
  239. data/vendor/assets/javascripts/method-draw-js/images/align-center.svg +1 -0
  240. data/vendor/assets/javascripts/method-draw-js/images/align-left.png +0 -0
  241. data/vendor/assets/javascripts/method-draw-js/images/align-left.svg +1 -0
  242. data/vendor/assets/javascripts/method-draw-js/images/align-middle.png +0 -0
  243. data/vendor/assets/javascripts/method-draw-js/images/align-middle.svg +1 -0
  244. data/vendor/assets/javascripts/method-draw-js/images/align-right.png +0 -0
  245. data/vendor/assets/javascripts/method-draw-js/images/align-right.svg +1 -0
  246. data/vendor/assets/javascripts/method-draw-js/images/align-top.png +0 -0
  247. data/vendor/assets/javascripts/method-draw-js/images/align-top.svg +1 -0
  248. data/vendor/assets/javascripts/method-draw-js/images/bar-opacity.png +0 -0
  249. data/vendor/assets/javascripts/method-draw-js/images/bold.png +0 -0
  250. data/vendor/assets/javascripts/method-draw-js/images/cancel.png +0 -0
  251. data/vendor/assets/javascripts/method-draw-js/images/circle.png +0 -0
  252. data/vendor/assets/javascripts/method-draw-js/images/clear.png +0 -0
  253. data/vendor/assets/javascripts/method-draw-js/images/clone.png +0 -0
  254. data/vendor/assets/javascripts/method-draw-js/images/conn.svg +29 -0
  255. data/vendor/assets/javascripts/method-draw-js/images/copy.png +0 -0
  256. data/vendor/assets/javascripts/method-draw-js/images/cross.png +0 -0
  257. data/vendor/assets/javascripts/method-draw-js/images/cut.png +0 -0
  258. data/vendor/assets/javascripts/method-draw-js/images/delete.png +0 -0
  259. data/vendor/assets/javascripts/method-draw-js/images/document-properties.png +0 -0
  260. data/vendor/assets/javascripts/method-draw-js/images/drag.png +0 -0
  261. data/vendor/assets/javascripts/method-draw-js/images/dragging.png +0 -0
  262. data/vendor/assets/javascripts/method-draw-js/images/dropdown.gif +0 -0
  263. data/vendor/assets/javascripts/method-draw-js/images/ellipse.png +0 -0
  264. data/vendor/assets/javascripts/method-draw-js/images/ellipse.svg +8 -0
  265. data/vendor/assets/javascripts/method-draw-js/images/eye.png +0 -0
  266. data/vendor/assets/javascripts/method-draw-js/images/eye.svg +1 -0
  267. data/vendor/assets/javascripts/method-draw-js/images/eyedropper.png +0 -0
  268. data/vendor/assets/javascripts/method-draw-js/images/eyedropper_tool.png +0 -0
  269. data/vendor/assets/javascripts/method-draw-js/images/fhpath.png +0 -0
  270. data/vendor/assets/javascripts/method-draw-js/images/flyouth.png +0 -0
  271. data/vendor/assets/javascripts/method-draw-js/images/flyup.gif +0 -0
  272. data/vendor/assets/javascripts/method-draw-js/images/freehand-circle.png +0 -0
  273. data/vendor/assets/javascripts/method-draw-js/images/freehand-square.png +0 -0
  274. data/vendor/assets/javascripts/method-draw-js/images/go-down.png +0 -0
  275. data/vendor/assets/javascripts/method-draw-js/images/go-up.png +0 -0
  276. data/vendor/assets/javascripts/method-draw-js/images/image.png +0 -0
  277. data/vendor/assets/javascripts/method-draw-js/images/image.svg +12 -0
  278. data/vendor/assets/javascripts/method-draw-js/images/italic.png +0 -0
  279. data/vendor/assets/javascripts/method-draw-js/images/italic.svg +1 -0
  280. data/vendor/assets/javascripts/method-draw-js/images/line.png +0 -0
  281. data/vendor/assets/javascripts/method-draw-js/images/link_controls.png +0 -0
  282. data/vendor/assets/javascripts/method-draw-js/images/logo.png +0 -0
  283. data/vendor/assets/javascripts/method-draw-js/images/map-opacity.png +0 -0
  284. data/vendor/assets/javascripts/method-draw-js/images/mappoint.gif +0 -0
  285. data/vendor/assets/javascripts/method-draw-js/images/mappoint_c.png +0 -0
  286. data/vendor/assets/javascripts/method-draw-js/images/mappoint_f.png +0 -0
  287. data/vendor/assets/javascripts/method-draw-js/images/move_bottom.png +0 -0
  288. data/vendor/assets/javascripts/method-draw-js/images/move_top.png +0 -0
  289. data/vendor/assets/javascripts/method-draw-js/images/node_clone.png +0 -0
  290. data/vendor/assets/javascripts/method-draw-js/images/node_delete.png +0 -0
  291. data/vendor/assets/javascripts/method-draw-js/images/none.png +0 -0
  292. data/vendor/assets/javascripts/method-draw-js/images/open.png +0 -0
  293. data/vendor/assets/javascripts/method-draw-js/images/paste.png +0 -0
  294. data/vendor/assets/javascripts/method-draw-js/images/path.png +0 -0
  295. data/vendor/assets/javascripts/method-draw-js/images/path.svg +10 -0
  296. data/vendor/assets/javascripts/method-draw-js/images/pencil.png +0 -0
  297. data/vendor/assets/javascripts/method-draw-js/images/pencil.svg +11 -0
  298. data/vendor/assets/javascripts/method-draw-js/images/pencil_cursor.png +0 -0
  299. data/vendor/assets/javascripts/method-draw-js/images/picker.gif +0 -0
  300. data/vendor/assets/javascripts/method-draw-js/images/placeholder.svg +10 -0
  301. data/vendor/assets/javascripts/method-draw-js/images/polygon.png +0 -0
  302. data/vendor/assets/javascripts/method-draw-js/images/polygon.svg +1 -0
  303. data/vendor/assets/javascripts/method-draw-js/images/preview-opacity.png +0 -0
  304. data/vendor/assets/javascripts/method-draw-js/images/rangearrows.gif +0 -0
  305. data/vendor/assets/javascripts/method-draw-js/images/rangearrows2.gif +0 -0
  306. data/vendor/assets/javascripts/method-draw-js/images/rect.png +0 -0
  307. data/vendor/assets/javascripts/method-draw-js/images/redo.png +0 -0
  308. data/vendor/assets/javascripts/method-draw-js/images/reorient.png +0 -0
  309. data/vendor/assets/javascripts/method-draw-js/images/rotate.png +0 -0
  310. data/vendor/assets/javascripts/method-draw-js/images/save.png +0 -0
  311. data/vendor/assets/javascripts/method-draw-js/images/select.png +0 -0
  312. data/vendor/assets/javascripts/method-draw-js/images/select.svg +10 -0
  313. data/vendor/assets/javascripts/method-draw-js/images/select_node.png +0 -0
  314. data/vendor/assets/javascripts/method-draw-js/images/sep.png +0 -0
  315. data/vendor/assets/javascripts/method-draw-js/images/shape_group.png +0 -0
  316. data/vendor/assets/javascripts/method-draw-js/images/shape_ungroup.png +0 -0
  317. data/vendor/assets/javascripts/method-draw-js/images/source.png +0 -0
  318. data/vendor/assets/javascripts/method-draw-js/images/spinbtn_updn_big.png +0 -0
  319. data/vendor/assets/javascripts/method-draw-js/images/square.png +0 -0
  320. data/vendor/assets/javascripts/method-draw-js/images/svg_edit_icons.svg +455 -0
  321. data/vendor/assets/javascripts/method-draw-js/images/svg_edit_icons.svgz +0 -0
  322. data/vendor/assets/javascripts/method-draw-js/images/text.png +0 -0
  323. data/vendor/assets/javascripts/method-draw-js/images/text.svg +10 -0
  324. data/vendor/assets/javascripts/method-draw-js/images/to_path.png +0 -0
  325. data/vendor/assets/javascripts/method-draw-js/images/undo.png +0 -0
  326. data/vendor/assets/javascripts/method-draw-js/images/view-refresh.png +0 -0
  327. data/vendor/assets/javascripts/method-draw-js/images/wave.png +0 -0
  328. data/vendor/assets/javascripts/method-draw-js/images/wireframe.png +0 -0
  329. data/vendor/assets/javascripts/method-draw-js/images/zoom.png +0 -0
  330. data/vendor/assets/javascripts/method-draw-js/images/zoom.svg +12 -0
  331. data/vendor/assets/javascripts/method-draw-js/index.html +631 -0
  332. data/vendor/assets/javascripts/method-draw-js/lib/canvg/canvg.js +2620 -0
  333. data/vendor/assets/javascripts/method-draw-js/lib/canvg/rgbcolor.js +287 -0
  334. data/vendor/assets/javascripts/method-draw-js/lib/contextmenu.js +68 -0
  335. data/vendor/assets/javascripts/method-draw-js/lib/contextmenu/jquery.contextMenu.js +223 -0
  336. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/LICENSE +202 -0
  337. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/README +3 -0
  338. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/css/jPicker.css +250 -0
  339. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/css/jgraduate.css +332 -0
  340. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/AlphaBar.png +0 -0
  341. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/Bars.png +0 -0
  342. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/Maps.png +0 -0
  343. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/NoColor.png +0 -0
  344. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/bar-opacity.png +0 -0
  345. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/eyedropper.png +0 -0
  346. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/map-opacity.png +0 -0
  347. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint.gif +0 -0
  348. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint_c.png +0 -0
  349. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint_f.png +0 -0
  350. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/picker.gif +0 -0
  351. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/preview-opacity.png +0 -0
  352. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/rangearrows.gif +0 -0
  353. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/rangearrows2.gif +0 -0
  354. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jpicker.min.js +2087 -0
  355. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jquery.jgraduate.js +1175 -0
  356. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jquery.jgraduate.min.js +37 -0
  357. data/vendor/assets/javascripts/method-draw-js/lib/jquery-draginput.js +181 -0
  358. data/vendor/assets/javascripts/method-draw-js/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js +54 -0
  359. data/vendor/assets/javascripts/method-draw-js/lib/jquery-ui/jquery-ui-1.8.custom.min.js +84 -0
  360. data/vendor/assets/javascripts/method-draw-js/lib/jquery.js +2 -0
  361. data/vendor/assets/javascripts/method-draw-js/lib/jquerybbq/jquery.bbq.min.js +18 -0
  362. data/vendor/assets/javascripts/method-draw-js/lib/js-hotkeys/README.md +45 -0
  363. data/vendor/assets/javascripts/method-draw-js/lib/js-hotkeys/jquery.hotkeys.min.js +15 -0
  364. data/vendor/assets/javascripts/method-draw-js/lib/mousewheel.js +84 -0
  365. data/vendor/assets/javascripts/method-draw-js/lib/requestanimationframe.js +24 -0
  366. data/vendor/assets/javascripts/method-draw-js/lib/taphold.js +136 -0
  367. data/vendor/assets/javascripts/method-draw-js/lib/touch.js +28 -0
  368. data/vendor/assets/javascripts/method-draw-js/method-draw.compiled.css +417 -0
  369. data/vendor/assets/javascripts/method-draw-js/method-draw.compiled.js +692 -0
  370. data/vendor/assets/javascripts/method-draw-js/method-draw.manifest +121 -0
  371. data/vendor/assets/javascripts/method-draw-js/src/browser.js +181 -0
  372. data/vendor/assets/javascripts/method-draw-js/src/dialog.js +49 -0
  373. data/vendor/assets/javascripts/method-draw-js/src/dragupload.js +11 -0
  374. data/vendor/assets/javascripts/method-draw-js/src/draw.js +533 -0
  375. data/vendor/assets/javascripts/method-draw-js/src/embedapi.js +173 -0
  376. data/vendor/assets/javascripts/method-draw-js/src/history.js +601 -0
  377. data/vendor/assets/javascripts/method-draw-js/src/math.js +247 -0
  378. data/vendor/assets/javascripts/method-draw-js/src/method-draw.js +4140 -0
  379. data/vendor/assets/javascripts/method-draw-js/src/path.js +979 -0
  380. data/vendor/assets/javascripts/method-draw-js/src/sanitize.js +273 -0
  381. data/vendor/assets/javascripts/method-draw-js/src/select.js +608 -0
  382. data/vendor/assets/javascripts/method-draw-js/src/svgcanvas.js +9047 -0
  383. data/vendor/assets/javascripts/method-draw-js/src/svgtransformlist.js +291 -0
  384. data/vendor/assets/javascripts/method-draw-js/src/svgutils.js +648 -0
  385. data/vendor/assets/javascripts/method-draw-js/src/units.js +281 -0
  386. data/vendor/assets/javascripts/method-draw-js/svgedit.compiled.css +417 -0
  387. data/vendor/assets/javascripts/method-draw-js/svgedit.compiled.js +691 -0
  388. data/vendor/assets/javascripts/method-draw-js/temp.css +2665 -0
  389. metadata +619 -0
@@ -0,0 +1,135 @@
1
+ /*
2
+ * ext-eyedropper.js
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2010 Jeff Schiller
7
+ *
8
+ */
9
+
10
+ // Dependencies:
11
+ // 1) jQuery
12
+ // 2) history.js
13
+ // 3) svg_editor.js
14
+ // 4) svgcanvas.js
15
+
16
+ methodDraw.addExtension("eyedropper", function(S) {
17
+ var svgcontent = S.svgcontent,
18
+ svgns = "http://www.w3.org/2000/svg",
19
+ svgdoc = S.svgroot.parentNode.ownerDocument,
20
+ svgCanvas = methodDraw.canvas,
21
+ ChangeElementCommand = svgedit.history.ChangeElementCommand,
22
+ addToHistory = function(cmd) { svgCanvas.undoMgr.addCommandToHistory(cmd); },
23
+ currentStyle = {fillPaint: "red", fillOpacity: 1.0,
24
+ strokePaint: "black", strokeOpacity: 1.0,
25
+ strokeWidth: 5, strokeDashArray: null,
26
+ opacity: 1.0,
27
+ strokeLinecap: 'butt',
28
+ strokeLinejoin: 'miter'
29
+ };
30
+ function getStyle(opts) {
31
+ // if we are in eyedropper mode, we don't want to disable the eye-dropper tool
32
+ var mode = svgCanvas.getMode();
33
+ if (mode == "eyedropper") return;
34
+ var tool = $('#tool_eyedropper');
35
+
36
+ }
37
+
38
+ var getPaint = function(color, opac, type) {
39
+ // update the editor's fill paint
40
+ var opts = null;
41
+ if (color.indexOf("url(#") === 0) {
42
+ var refElem = svgCanvas.getRefElem(color);
43
+ if(refElem) {
44
+ refElem = refElem.cloneNode(true);
45
+ } else {
46
+ refElem = $("#" + type + "_color defs *")[0];
47
+ }
48
+
49
+ opts = { alpha: opac };
50
+ opts[refElem.tagName] = refElem;
51
+ }
52
+ else if (color.indexOf("#") === 0) {
53
+ opts = {
54
+ alpha: opac,
55
+ solidColor: color.substr(1)
56
+ };
57
+ }
58
+ else {
59
+ opts = {
60
+ alpha: opac,
61
+ solidColor: 'none'
62
+ };
63
+ }
64
+ return new $.jGraduate.Paint(opts);
65
+ };
66
+
67
+ return {
68
+ name: "eyedropper",
69
+ svgicons: "extensions/eyedropper-icon.xml",
70
+ buttons: [{
71
+ id: "tool_eyedropper",
72
+ type: "mode",
73
+ title: "Eye Dropper Tool",
74
+ position: 8,
75
+ key: "I",
76
+ icon: "extensions/eyedropper.png",
77
+ events: {
78
+ "click": function() {
79
+ svgCanvas.setMode("eyedropper");
80
+ }
81
+ }
82
+ }],
83
+
84
+ mouseDown: function(opts) {
85
+ var mode = svgCanvas.getMode();
86
+ var e = opts.event;
87
+ var target = (e.target.id === "svgroot") ? document.getElementById('canvas_background') : e.target;
88
+ if (mode == "eyedropper" && target) {
89
+ currentStyle.fillPaint = target.getAttribute("fill") || "white";
90
+ currentStyle.fillOpacity = target.getAttribute("fill-opacity") || 1.0;
91
+ currentStyle.strokePaint = target.getAttribute("stroke") || 'none';
92
+ currentStyle.strokeOpacity = target.getAttribute("stroke-opacity") || 1.0;
93
+ currentStyle.strokeWidth = target.getAttribute("stroke-width");
94
+ currentStyle.strokeDashArray = target.getAttribute("stroke-dasharray");
95
+ currentStyle.strokeLinecap = target.getAttribute("stroke-linecap");
96
+ currentStyle.strokeLinejoin = target.getAttribute("stroke-linejoin");
97
+ currentStyle.opacity = target.getAttribute("opacity") || 1.0;
98
+ opts.selectedElements = opts.selectedElements.filter(Boolean)
99
+ if (!opts.selectedElements.length) { //nothing selected, just update colors
100
+ var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill");
101
+ var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke");
102
+ methodDraw.paintBox.fill.setPaint(fill)
103
+ methodDraw.paintBox.stroke.setPaint(stroke)
104
+ return;
105
+ }
106
+ if ($.inArray(opts.selectedElements.nodeName, ['g', 'use']) == -1) {
107
+ var changes = {};
108
+ var change = function(elem, attrname, newvalue) {
109
+ changes[attrname] = elem.getAttribute(attrname);
110
+ elem.setAttribute(attrname, newvalue);
111
+ };
112
+ var batchCmd = new S.BatchCommand();
113
+ opts.selectedElements.forEach(function(element){
114
+ if (currentStyle.fillPaint) change(element, "fill", currentStyle.fillPaint);
115
+ if (currentStyle.fillOpacity) change(element, "fill-opacity", currentStyle.fillOpacity);
116
+ if (currentStyle.strokePaint) change(element, "stroke", currentStyle.strokePaint);
117
+ if (currentStyle.strokeOpacity) change(element, "stroke-opacity", currentStyle.strokeOpacity);
118
+ if (currentStyle.strokeWidth) change(element, "stroke-width", currentStyle.strokeWidth);
119
+ if (currentStyle.strokeDashArray) change(element, "stroke-dasharray", currentStyle.strokeDashArray);
120
+ if (currentStyle.opacity) change(element, "opacity", currentStyle.opacity);
121
+ if (currentStyle.strokeLinecap) change(element, "stroke-linecap", currentStyle.strokeLinecap);
122
+ if (currentStyle.strokeLinejoin) change(element, "stroke-linejoin", currentStyle.strokeLinejoin);
123
+ batchCmd.addSubCommand(new ChangeElementCommand(element, changes));
124
+ changes = {};
125
+ });
126
+ var fill = getPaint(currentStyle.fillPaint, currentStyle.fillOpacity*100, "fill")
127
+ var stroke = getPaint(currentStyle.strokePaint, currentStyle.strokeOpacity*100, "stroke")
128
+ methodDraw.paintBox.fill.update(true)
129
+ methodDraw.paintBox.stroke.update(true)
130
+ addToHistory(batchCmd);
131
+ }
132
+ }
133
+ }
134
+ };
135
+ });
@@ -0,0 +1,277 @@
1
+ /*
2
+ * ext-foreignobject.js
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2010 Jacques Distler
7
+ * Copyright(c) 2010 Alexis Deveria
8
+ *
9
+ */
10
+
11
+ methodDraw.addExtension("foreignObject", function(S) {
12
+ var svgcontent = S.svgcontent,
13
+ addElem = S.addSvgElementFromJson,
14
+ selElems,
15
+ svgns = "http://www.w3.org/2000/svg",
16
+ xlinkns = "http://www.w3.org/1999/xlink",
17
+ xmlns = "http://www.w3.org/XML/1998/namespace",
18
+ xmlnsns = "http://www.w3.org/2000/xmlns/",
19
+ se_ns = "http://svg-edit.googlecode.com",
20
+ htmlns = "http://www.w3.org/1999/xhtml",
21
+ mathns = "http://www.w3.org/1998/Math/MathML",
22
+ editingforeign = false,
23
+ svgdoc = S.svgroot.parentNode.ownerDocument,
24
+ started,
25
+ newFO;
26
+
27
+
28
+ var properlySourceSizeTextArea = function(){
29
+ // TODO: remove magic numbers here and get values from CSS
30
+ var height = $('#svg_source_container').height() - 80;
31
+ $('#svg_source_textarea').css('height', height);
32
+ };
33
+
34
+ function showPanel(on) {
35
+ var fc_rules = $('#fc_rules');
36
+ if(!fc_rules.length) {
37
+ fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head');
38
+ }
39
+ fc_rules.text(!on?"":" #tool_topath { display: none !important; }");
40
+ $('#foreignObject_panel').toggle(on);
41
+ }
42
+
43
+ function toggleSourceButtons(on) {
44
+ $('#tool_source_save, #tool_source_cancel').toggle(!on);
45
+ $('#foreign_save, #foreign_cancel').toggle(on);
46
+ }
47
+
48
+
49
+ // Function: setForeignString(xmlString, elt)
50
+ // This function sets the content of element elt to the input XML.
51
+ //
52
+ // Parameters:
53
+ // xmlString - The XML text.
54
+ // elt - the parent element to append to
55
+ //
56
+ // Returns:
57
+ // This function returns false if the set was unsuccessful, true otherwise.
58
+ function setForeignString(xmlString) {
59
+ var elt = selElems[0];
60
+ try {
61
+ // convert string into XML document
62
+ var newDoc = Utils.text2xml('<svg xmlns="'+svgns+'" xmlns:xlink="'+xlinkns+'">'+xmlString+'</svg>');
63
+ // run it through our sanitizer to remove anything we do not support
64
+ S.sanitizeSvg(newDoc.documentElement);
65
+ elt.parentNode.replaceChild(svgdoc.importNode(newDoc.documentElement.firstChild, true), elt);
66
+ S.call("changed", [elt]);
67
+ svgCanvas.clearSelection();
68
+ } catch(e) {
69
+ console.log(e);
70
+ return false;
71
+ }
72
+
73
+ return true;
74
+ };
75
+
76
+ function showForeignEditor() {
77
+ var elt = selElems[0];
78
+ if (!elt || editingforeign) return;
79
+ editingforeign = true;
80
+ toggleSourceButtons(true);
81
+ elt.removeAttribute('fill');
82
+
83
+ var str = S.svgToString(elt, 0);
84
+ $('#svg_source_textarea').val(str);
85
+ $('#svg_source_editor').fadeIn();
86
+ properlySourceSizeTextArea();
87
+ $('#svg_source_textarea').focus();
88
+ }
89
+
90
+ function setAttr(attr, val) {
91
+ svgCanvas.changeSelectedAttribute(attr, val);
92
+ S.call("changed", selElems);
93
+ }
94
+
95
+
96
+ return {
97
+ name: "foreignObject",
98
+ svgicons: "extensions/foreignobject-icons.xml",
99
+ buttons: [{
100
+ id: "tool_foreign",
101
+ type: "mode",
102
+ title: "Foreign Object Tool",
103
+ events: {
104
+ 'click': function() {
105
+ svgCanvas.setMode('foreign')
106
+ }
107
+ }
108
+ },{
109
+ id: "edit_foreign",
110
+ type: "context",
111
+ panel: "foreignObject_panel",
112
+ title: "Edit ForeignObject Content",
113
+ events: {
114
+ 'click': function() {
115
+ showForeignEditor();
116
+ }
117
+ }
118
+ }],
119
+
120
+ context_tools: [{
121
+ type: "input",
122
+ panel: "foreignObject_panel",
123
+ title: "Change foreignObject's width",
124
+ id: "foreign_width",
125
+ label: "w",
126
+ size: 3,
127
+ events: {
128
+ change: function() {
129
+ setAttr('width', this.value);
130
+ }
131
+ }
132
+ },{
133
+ type: "input",
134
+ panel: "foreignObject_panel",
135
+ title: "Change foreignObject's height",
136
+ id: "foreign_height",
137
+ label: "h",
138
+ events: {
139
+ change: function() {
140
+ setAttr('height', this.value);
141
+ }
142
+ }
143
+ }, {
144
+ type: "input",
145
+ panel: "foreignObject_panel",
146
+ title: "Change foreignObject's font size",
147
+ id: "foreign_font_size",
148
+ label: "font-size",
149
+ size: 2,
150
+ defval: 16,
151
+ events: {
152
+ change: function() {
153
+ setAttr('font-size', this.value);
154
+ }
155
+ }
156
+ }
157
+
158
+
159
+ ],
160
+ callback: function() {
161
+ $('#foreignObject_panel').hide();
162
+
163
+ var endChanges = function() {
164
+ $('#svg_source_editor').hide();
165
+ editingforeign = false;
166
+ $('#svg_source_textarea').blur();
167
+ toggleSourceButtons(false);
168
+ }
169
+
170
+ // TODO: Needs to be done after orig icon loads
171
+ setTimeout(function() {
172
+ // Create source save/cancel buttons
173
+ var save = $('#tool_source_save').clone()
174
+ .hide().attr('id', 'foreign_save').unbind()
175
+ .appendTo("#tool_source_back").click(function() {
176
+
177
+ if (!editingforeign) return;
178
+
179
+ if (!setForeignString($('#svg_source_textarea').val())) {
180
+ $.confirm("Errors found. Revert to original?", function(ok) {
181
+ if(!ok) return false;
182
+ endChanges();
183
+ });
184
+ } else {
185
+ endChanges();
186
+ }
187
+ // setSelectMode();
188
+ });
189
+
190
+ var cancel = $('#tool_source_cancel').clone()
191
+ .hide().attr('id', 'foreign_cancel').unbind()
192
+ .appendTo("#tool_source_back").click(function() {
193
+ endChanges();
194
+ });
195
+
196
+ }, 3000);
197
+ },
198
+ mouseDown: function(opts) {
199
+ var e = opts.event;
200
+
201
+ if(svgCanvas.getMode() == "foreign") {
202
+
203
+ started = true;
204
+ newFO = S.addSvgElementFromJson({
205
+ "element": "foreignObject",
206
+ "attr": {
207
+ "x": opts.start_x,
208
+ "y": opts.start_y,
209
+ "id": S.getNextId(),
210
+ "font-size": 16, //cur_text.font_size,
211
+ "width": "48",
212
+ "height": "20",
213
+ "style": "pointer-events:inherit"
214
+ }
215
+ });
216
+ var m = svgdoc.createElementNS(mathns, 'math');
217
+ m.setAttributeNS(xmlnsns, 'xmlns', mathns);
218
+ m.setAttribute('display', 'inline');
219
+ var mi = svgdoc.createElementNS(mathns, 'mi');
220
+ mi.setAttribute('mathvariant', 'normal');
221
+ mi.textContent = "\u03A6";
222
+ var mo = svgdoc.createElementNS(mathns, 'mo');
223
+ mo.textContent = "\u222A";
224
+ var mi2 = svgdoc.createElementNS(mathns, 'mi');
225
+ mi2.textContent = "\u2133";
226
+ m.appendChild(mi);
227
+ m.appendChild(mo);
228
+ m.appendChild(mi2);
229
+ newFO.appendChild(m);
230
+ return {
231
+ started: true
232
+ }
233
+ }
234
+ },
235
+ mouseUp: function(opts) {
236
+ var e = opts.event;
237
+ if(svgCanvas.getMode() == "foreign" && started) {
238
+ var attrs = $(newFO).attr(["width", "height"]);
239
+ keep = (attrs.width != 0 || attrs.height != 0);
240
+ svgCanvas.addToSelection([newFO], true);
241
+
242
+ return {
243
+ keep: keep,
244
+ element: newFO
245
+ }
246
+
247
+ }
248
+
249
+ },
250
+ selectedChanged: function(opts) {
251
+ // Use this to update the current selected elements
252
+ selElems = opts.elems;
253
+
254
+ var i = selElems.length;
255
+
256
+ while(i--) {
257
+ var elem = selElems[i];
258
+ if(elem && elem.tagName == "foreignObject") {
259
+ if(opts.selectedElement && !opts.multiselected) {
260
+ $('#foreign_font_size').val(elem.getAttribute("font-size"));
261
+ $('#foreign_width').val(elem.getAttribute("width"));
262
+ $('#foreign_height').val(elem.getAttribute("height"));
263
+
264
+ showPanel(true);
265
+ } else {
266
+ showPanel(false);
267
+ }
268
+ } else {
269
+ showPanel(false);
270
+ }
271
+ }
272
+ },
273
+ elementChanged: function(opts) {
274
+ var elem = opts.elems[0];
275
+ }
276
+ };
277
+ });
@@ -0,0 +1,186 @@
1
+ /*
2
+ * ext-grid.js
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2010 Redou Mine
7
+ * Copyright(c) 2010 Alexis Deveria
8
+ *
9
+ */
10
+
11
+ // Dependencies:
12
+ // 1) units.js
13
+ // 2) everything else
14
+
15
+ methodDraw.addExtension("view_grid", function(s) {
16
+ if (!document.getElementById("canvasGrid")){
17
+ var svgdoc = document.getElementById("svgcanvas").ownerDocument,
18
+ svgns = "http://www.w3.org/2000/svg",
19
+ dims = methodDraw.curConfig.dimensions,
20
+ svgroot = s.svgroot;
21
+ var svgCanvas = methodDraw.canvas;
22
+ var showGrid = false;
23
+ var assignAttributes = s.assignAttributes;
24
+
25
+ var hcanvas = document.createElement('canvas');
26
+ $(hcanvas).hide().appendTo('body');
27
+
28
+ var canvasgrid = svgdoc.createElementNS(svgns, "g");
29
+ assignAttributes(canvasgrid, {
30
+ 'id': 'canvasGrid',
31
+ 'width': '100%',
32
+ 'height': '100%',
33
+ 'x': 0,
34
+ 'y': 0,
35
+ 'overflow': 'visible',
36
+ 'display': 'none'
37
+ });
38
+
39
+ var canvBG = $('#canvas_background');
40
+ canvBG.after(canvasgrid);
41
+
42
+
43
+
44
+ // grid-pattern
45
+ var gridPattern = svgdoc.createElementNS(svgns, "pattern");
46
+ assignAttributes(gridPattern, {
47
+ 'id': 'gridpattern',
48
+ 'patternUnits': 'userSpaceOnUse',
49
+ 'x': 0, //-(value.strokeWidth / 2), // position for strokewidth
50
+ 'y': 0, //-(value.strokeWidth / 2), // position for strokewidth
51
+ 'width': 100,
52
+ 'height': 100
53
+ });
54
+
55
+ var gridimg = svgdoc.createElementNS(svgns, "image");
56
+ assignAttributes(gridimg, {
57
+ 'x': 0,
58
+ 'y': 0,
59
+ 'width': 100,
60
+ 'height': 100
61
+ });
62
+
63
+ gridPattern.appendChild(gridimg);
64
+ $('#svgroot defs').append(gridPattern);
65
+
66
+ // grid-box
67
+ var gridBox = svgdoc.createElementNS(svgns, "rect");
68
+ assignAttributes(gridBox, {
69
+ 'width': '100%',
70
+ 'height': '100%',
71
+ 'x': 0,
72
+ 'y': 0,
73
+ 'stroke-width': 0,
74
+ 'stroke': 'none',
75
+ 'fill': 'url(#gridpattern)',
76
+ 'style': 'pointer-events: none; display:visible;'
77
+ });
78
+ $('#canvasGrid').append(gridBox);
79
+ }
80
+ // });
81
+
82
+ function updateGrid(zoom) {
83
+ // TODO: Try this with <line> elements, then compare performance difference
84
+
85
+ var bgwidth = +canvBG.attr('width');
86
+ var bgheight = +canvBG.attr('height');
87
+
88
+ var units = svgedit.units.getTypeMap();
89
+ var unit = units[methodDraw.curConfig.baseUnit]; // 1 = 1px
90
+ var r_intervals = [.01, .1, 1, 10, 100, 1000];
91
+
92
+ var d = 0;
93
+ var is_x = (d === 0);
94
+ var dim = is_x ? 'x' : 'y';
95
+ var lentype = is_x?'width':'height';
96
+ var c_elem = svgCanvas.getContentElem();
97
+ var content_d = c_elem.getAttribute(dim)-0;
98
+
99
+ var hcanv = hcanvas;
100
+
101
+ var u_multi = unit * zoom;
102
+
103
+ // Calculate the main number interval
104
+ var raw_m = 100 / u_multi;
105
+ var multi = 1;
106
+ for(var i = 0; i < r_intervals.length; i++) {
107
+ var num = r_intervals[i];
108
+ multi = num;
109
+ if(raw_m <= num) {
110
+ break;
111
+ }
112
+ }
113
+
114
+ var big_int = multi * u_multi;
115
+
116
+ // Set the canvas size to the width of the container
117
+ hcanv.width = big_int;
118
+ hcanv.height = big_int;
119
+ var ctx = hcanv.getContext("2d");
120
+
121
+ var ruler_d = 0;
122
+ var cur_d = .5;
123
+
124
+ var part = big_int / 10;
125
+
126
+ ctx.globalAlpha = 0.2;
127
+ ctx.strokeStyle = "#000";
128
+ for(var i = 1; i < 10; i++) {
129
+ var sub_d = Math.round(part * i) + .5;
130
+ // var line_num = (i % 2)?12:10;
131
+ var line_num = 0;
132
+ ctx.moveTo(sub_d, big_int);
133
+ ctx.lineTo(sub_d, line_num);
134
+ ctx.moveTo(big_int, sub_d);
135
+ ctx.lineTo(line_num ,sub_d);
136
+ }
137
+ ctx.stroke();
138
+ ctx.beginPath();
139
+ ctx.globalAlpha = 0.5;
140
+ ctx.moveTo(cur_d, big_int);
141
+ ctx.lineTo(cur_d, 0);
142
+
143
+ ctx.moveTo(big_int, cur_d);
144
+ ctx.lineTo(0, cur_d);
145
+ ctx.stroke();
146
+
147
+ var datauri = hcanv.toDataURL('image/png');
148
+ gridimg.setAttribute('width', big_int);
149
+ gridimg.setAttribute('height', big_int);
150
+ gridimg.parentNode.setAttribute('width', big_int);
151
+ gridimg.parentNode.setAttribute('height', big_int);
152
+ svgCanvas.setHref(gridimg, datauri);
153
+ }
154
+
155
+ return {
156
+ name: "view_grid",
157
+ zoomChanged: function(zoom) {
158
+ // update size
159
+ if(showGrid) updateGrid(zoom);
160
+ },
161
+
162
+ buttons: [{
163
+ id: "view_grid",
164
+ type: "menu",
165
+ after: "tool_wireframe",
166
+ panel: "view_menu",
167
+ title: "View Grid",
168
+ events: {
169
+ 'click': function() {
170
+ var gr = !$('#view_grid').hasClass('push_button_pressed');
171
+ if (gr) {
172
+ methodDraw.curConfig.showGrid = showGrid = true;
173
+ $('#view_grid').addClass('push_button_pressed');
174
+ $('#canvasGrid').attr('display', 'inline');
175
+ updateGrid(svgCanvas.getZoom());
176
+ }
177
+ else {
178
+ methodDraw.curConfig.showGrid = showGrid = false;
179
+ $('#view_grid').removeClass('push_button_pressed');
180
+ $('#canvasGrid').attr('display', 'none');
181
+ }
182
+ }
183
+ }
184
+ }]
185
+ };
186
+ });