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,14 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg">
2
+ <g id="tool_imagelib">
3
+ <svg width="201" height="211" xmlns="http://www.w3.org/2000/svg">
4
+ <g>
5
+ <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m2.75,49.51761l56.56,-46.26761c12.73,8.25 25.71001,7 46.44,0.75l-56.03999,47.23944l-22.72002,25.01056l-24.23999,-26.73239z" id="svg_2" stroke-width="7"/>
6
+ <path fill="#a03333" stroke="#3f3f3f" d="m3.75,203.25002c14.33301,7 30.66699,7 46,0l0,-152.00002c-14.66699,8 -32.33301,8 -47,0l1,152.00002zm45.75,-152.25002l56.25,-46.75l0,151l-56,48.00002m-47.25,-154.25002l57.25,-46.5" id="svg_1" stroke-width="7" stroke-linecap="round"/>
7
+ <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m49.75,49.51801l56.56,-46.26801c12.72998,8.25 25.71002,7 46.44,0.75l-56.03998,47.239l-22.72003,25.011l-24.23999,-26.73199z" stroke-width="7" id="svg_5"/>
8
+ <path fill="#2f8e2f" stroke="#3f3f3f" d="m50.75,202.25c14.33301,7 30.66699,7.04253 46,0.04253l0,-151.04253c-14.66699,8 -32.33301,8 -47,0l1,151zm45.75,-151.25l56.25,-46.75l0,144.01219l-56,51.98782m-47.25,-151.25002l57.25,-46.5" stroke-width="7" stroke-linecap="round" id="svg_6"/>
9
+ <path fill="#efe8b8" stroke="#d6c47c" stroke-linecap="round" d="m95.75,49.51801l56.56,-46.26801c12.72998,8.25 25.71002,7 46.44,0.75l-56.03998,47.239l-22.72003,25.011l-24.23999,-26.73199z" stroke-width="7" id="svg_10"/>
10
+ <path fill="#336393" stroke="#3f3f3f" d="m96.75,200.29445c14.33301,7 30.66699,7 46,0l0,-149.04445c-14.66699,8 -32.33301,8 -47,0l1,149.04445zm45.75,-149.29445l56.25,-46.75l0,148.04445l-56,48m-47.25,-151.29445l57.25,-46.5" stroke-width="7" stroke-linecap="round" id="svg_11"/>
11
+ </g>
12
+ </svg>
13
+ </g>
14
+ </svg>
@@ -0,0 +1,576 @@
1
+ /*
2
+ * ext-markers.js
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2010 Will Schleter
7
+ * based on ext-arrows.js by Copyright(c) 2010 Alexis Deveria
8
+ *
9
+ * This extension provides for the addition of markers to the either end
10
+ * or the middle of a line, polyline, path, polygon.
11
+ *
12
+ * Markers may be either a graphic or arbitary text
13
+ *
14
+ * to simplify the coding and make the implementation as robust as possible,
15
+ * markers are not shared - every object has its own set of markers.
16
+ * this relationship is maintained by a naming convention between the
17
+ * ids of the markers and the ids of the object
18
+ *
19
+ * The following restrictions exist for simplicty of use and programming
20
+ * objects and their markers to have the same color
21
+ * marker size is fixed
22
+ * text marker font, size, and attributes are fixed
23
+ * an application specific attribute - se_type - is added to each marker element
24
+ * to store the type of marker
25
+ *
26
+ * TODO:
27
+ * remove some of the restrictions above
28
+ * add option for keeping text aligned to horizontal
29
+ * add support for dimension extension lines
30
+ *
31
+ */
32
+
33
+ methodDraw.addExtension("Markers", function(S) {
34
+ var svgcontent = S.svgcontent,
35
+ addElem = S.addSvgElementFromJson,
36
+ selElems;
37
+
38
+ var mtypes = ['start','mid','end'];
39
+
40
+ var marker_prefix = 'se_marker_';
41
+ var id_prefix = 'mkr_';
42
+
43
+ // note - to add additional marker types add them below with a unique id
44
+ // and add the associated icon(s) to marker-icons.svg
45
+ // the geometry is normallized to a 100x100 box with the origin at lower left
46
+ // Safari did not like negative values for low left of viewBox
47
+ // remember that the coordinate system has +y downward
48
+ var marker_types = {
49
+ nomarker: {},
50
+ leftarrow:
51
+ {element:'path', attr:{d:'M0,50 L100,90 L70,50 L100,10 Z'}},
52
+ rightarrow:
53
+ {element:'path', attr:{d:'M100,50 L0,90 L30,50 L0,10 Z'}},
54
+ textmarker:
55
+ {element:'text', attr: {x:0, y:0,'stroke-width':0,'stroke':'none','font-size':75,'font-family':'serif','text-anchor':'left',
56
+ 'xml:space': 'preserve'}},
57
+ forwardslash:
58
+ {element:'path', attr:{d:'M30,100 L70,0'}},
59
+ reverseslash:
60
+ {element:'path', attr:{d:'M30,0 L70,100'}},
61
+ verticalslash:
62
+ {element:'path', attr:{d:'M50,0 L50,100'}},
63
+ box:
64
+ {element:'path', attr:{d:'M20,20 L20,80 L80,80 L80,20 Z'}},
65
+ star:
66
+ {element:'path', attr:{d:'M10,30 L90,30 L20,90 L50,10 L80,90 Z'}},
67
+ xmark:
68
+ {element:'path', attr:{d:'M20,80 L80,20 M80,80 L20,20'}},
69
+ triangle:
70
+ {element:'path', attr:{d:'M10,80 L50,20 L80,80 Z'}},
71
+ mcircle:
72
+ {element:'circle', attr:{r:30, cx:50, cy:50}}
73
+ }
74
+
75
+
76
+ var lang_list = {
77
+ "en":[
78
+ {id: "start_marker_list", title: "Select start marker type" },
79
+ {id: "mid_marker_list", title: "Select mid marker type" },
80
+ {id: "end_marker_list", title: "Select end marker type" },
81
+ {id: "nomarker", title: "No Marker" },
82
+ {id: "leftarrow", title: "Left Arrow" },
83
+ {id: "rightarrow", title: "Right Arrow" },
84
+ {id: "textmarker", title: "Text Marker" },
85
+ {id: "forwardslash", title: "Forward Slash" },
86
+ {id: "reverseslash", title: "Reverse Slash" },
87
+ {id: "verticalslash", title: "Vertical Slash" },
88
+ {id: "box", title: "Box" },
89
+ {id: "star", title: "Star" },
90
+ {id: "xmark", title: "X" },
91
+ {id: "triangle", title: "Triangle" },
92
+ {id: "mcircle", title: "Circle" },
93
+ {id: "leftarrow_o", title: "Open Left Arrow" },
94
+ {id: "rightarrow_o", title: "Open Right Arrow" },
95
+ {id: "box_o", title: "Open Box" },
96
+ {id: "star_o", title: "Open Star" },
97
+ {id: "triangle_o", title: "Open Triangle" },
98
+ {id: "mcircle_o", title: "Open Circle" }
99
+ ]
100
+ };
101
+
102
+
103
+ // duplicate shapes to support unfilled (open) marker types with an _o suffix
104
+ $.each(['leftarrow','rightarrow','box','star','mcircle','triangle'],function(i,v) {
105
+ marker_types[v+'_o'] = marker_types[v];
106
+ });
107
+
108
+ // elem = a graphic element will have an attribute like marker-start
109
+ // attr - marker-start, marker-mid, or marker-end
110
+ // returns the marker element that is linked to the graphic element
111
+ function getLinked(elem, attr) {
112
+ var str = elem.getAttribute(attr);
113
+ if(!str) return null;
114
+ var m = str.match(/\(\#(.*)\)/);
115
+ if(!m || m.length !== 2) {
116
+ return null;
117
+ }
118
+ return S.getElem(m[1]);
119
+ }
120
+
121
+ //toggles context tool panel off/on
122
+ //sets the controls with the selected element's settings
123
+ function showPanel(on) {
124
+ $('#marker_panel').toggle(on);
125
+ if ($('#marker_panel_title').length < 1) {
126
+ $('#marker_panel').prepend("<h4 id='marker_panel_title'>Arrows</h4>")
127
+ }
128
+
129
+ if(on) {
130
+ var el = selElems[0];
131
+ var val;
132
+ var ci;
133
+
134
+ $.each(mtypes, function(i, pos) {
135
+ var m=getLinked(el,"marker-"+pos);
136
+ var txtbox = $('#'+pos+'_marker');
137
+ if (!m) {
138
+ val='\\nomarker';
139
+ ci=val;
140
+ txtbox.hide() // hide text box
141
+ } else {
142
+ if (!m.attributes.se_type) return; // not created by this extension
143
+ val='\\'+m.attributes.se_type.textContent;
144
+ ci=val;
145
+ if (val=='\\textmarker') {
146
+ val=m.lastChild.textContent;
147
+ //txtbox.show(); // show text box
148
+ } else {
149
+ txtbox.hide() // hide text box
150
+ }
151
+ }
152
+ txtbox.val(val);
153
+ setIcon(pos,ci);
154
+ })
155
+ }
156
+ }
157
+
158
+ function addMarker(id, val) {
159
+ var txt_box_bg = '#ffffff';
160
+ var txt_box_border = 'none';
161
+ var txt_box_stroke_width = 0;
162
+
163
+ var marker = S.getElem(id);
164
+
165
+ if (marker) return;
166
+
167
+ if (val=='' || val=='\\nomarker') return;
168
+
169
+ var el = selElems[0];
170
+ var color = el.getAttribute('stroke');
171
+ //NOTE: Safari didn't like a negative value in viewBox
172
+ //so we use a standardized 0 0 100 100
173
+ //with 50 50 being mapped to the marker position
174
+ var refX = 50;
175
+ var refY = 50;
176
+ var viewBox = "0 0 100 100";
177
+ var markerWidth = 5;
178
+ var markerHeight = 5;
179
+ var strokeWidth = 10;
180
+ if (val.substr(0,1)=='\\') se_type=val.substr(1);
181
+ else se_type='textmarker';
182
+
183
+ if (!marker_types[se_type]) return; // an unknown type!
184
+
185
+ // create a generic marker
186
+ marker = addElem({
187
+ "element": "marker",
188
+ "attr": {
189
+ "id": id,
190
+ "markerUnits": "strokeWidth",
191
+ "orient": "auto",
192
+ "style": "pointer-events:none",
193
+ "se_type": se_type
194
+ }
195
+ });
196
+
197
+ if (se_type!='textmarker') {
198
+ var mel = addElem(marker_types[se_type]);
199
+ var fillcolor = color;
200
+ if (se_type.substr(-2)=='_o') fillcolor='none';
201
+ mel.setAttribute('fill',fillcolor);
202
+ mel.setAttribute('stroke',color);
203
+ mel.setAttribute('stroke-width',strokeWidth);
204
+ marker.appendChild(mel);
205
+ } else {
206
+ var text = addElem(marker_types[se_type]);
207
+ // have to add text to get bounding box
208
+ text.textContent = val;
209
+ var tb=text.getBBox();
210
+ //alert( tb.x + " " + tb.y + " " + tb.width + " " + tb.height);
211
+ var pad=1;
212
+ var bb = tb;
213
+ bb.x = 0;
214
+ bb.y = 0;
215
+ bb.width += pad*2;
216
+ bb.height += pad*2;
217
+ // shift text according to its size
218
+ text.setAttribute('x', pad);
219
+ text.setAttribute('y', bb.height - pad - tb.height/4); // kludge?
220
+ text.setAttribute('fill',color);
221
+ refX = bb.width/2+pad;
222
+ refY = bb.height/2+pad;
223
+ viewBox = bb.x + " " + bb.y + " " + bb.width + " " + bb.height;
224
+ markerWidth =bb.width/10;
225
+ markerHeight = bb.height/10;
226
+
227
+ var box = addElem({
228
+ "element": "rect",
229
+ "attr": {
230
+ "x": bb.x,
231
+ "y": bb.y,
232
+ "width": bb.width,
233
+ "height": bb.height,
234
+ "fill": txt_box_bg,
235
+ "stroke": txt_box_border,
236
+ "stroke-width": txt_box_stroke_width
237
+ }
238
+ });
239
+ marker.setAttribute("orient",0);
240
+ marker.appendChild(box);
241
+ marker.appendChild(text);
242
+ }
243
+
244
+ marker.setAttribute("viewBox",viewBox);
245
+ marker.setAttribute("markerWidth", markerWidth);
246
+ marker.setAttribute("markerHeight", markerHeight);
247
+ marker.setAttribute("refX", refX);
248
+ marker.setAttribute("refY", refY);
249
+ S.findDefs().appendChild(marker);
250
+
251
+ return marker;
252
+ }
253
+
254
+
255
+ function setMarker() {
256
+ var poslist={'start_marker':'start','mid_marker':'mid','end_marker':'end'};
257
+ var pos = poslist[this.id];
258
+ var marker_name = 'marker-'+pos;
259
+ var val = this.value;
260
+ var el = selElems[0];
261
+ var marker = getLinked(el, marker_name);
262
+ if (marker) $(marker).remove();
263
+ el.removeAttribute(marker_name);
264
+ if (val=='') val='\\nomarker';
265
+ if (val=='\\nomarker') {
266
+ setIcon(pos,val);
267
+ S.call("changed", selElems);
268
+ return;
269
+ }
270
+ // Set marker on element
271
+ var id = marker_prefix + pos + '_' + el.id;
272
+ addMarker(id, val);
273
+ svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
274
+ if (el.tagName == "line" && pos=='mid') el=convertline(el);
275
+ S.call("changed", selElems);
276
+ setIcon(pos,val);
277
+ }
278
+
279
+ function convertline(elem) {
280
+ // this routine came from the connectors extension
281
+ // it is needed because midpoint markers don't work with line elements
282
+ if (!(elem.tagName == "line")) return elem;
283
+
284
+ // Convert to polyline to accept mid-arrow
285
+
286
+ var x1 = elem.getAttribute('x1')-0;
287
+ var x2 = elem.getAttribute('x2')-0;
288
+ var y1 = elem.getAttribute('y1')-0;
289
+ var y2 = elem.getAttribute('y2')-0;
290
+ var id = elem.id;
291
+
292
+ var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
293
+ var pline = addElem({
294
+ "element": "polyline",
295
+ "attr": {
296
+ "points": (x1+','+y1+ mid_pt +x2+','+y2),
297
+ "stroke": elem.getAttribute('stroke'),
298
+ "stroke-width": elem.getAttribute('stroke-width'),
299
+ "fill": "none",
300
+ "opacity": elem.getAttribute('opacity') || 1
301
+ }
302
+ });
303
+ $.each(mtypes, function(i, pos) { // get any existing marker definitions
304
+ var nam = 'marker-'+pos;
305
+ var m = elem.getAttribute(nam);
306
+ if (m) pline.setAttribute(nam,elem.getAttribute(nam));
307
+ });
308
+
309
+ var batchCmd = new S.BatchCommand();
310
+ batchCmd.addSubCommand(new S.RemoveElementCommand(elem, elem.parentNode));
311
+ batchCmd.addSubCommand(new S.InsertElementCommand(pline));
312
+
313
+ $(elem).after(pline).remove();
314
+ svgCanvas.clearSelection();
315
+ pline.id = id;
316
+ svgCanvas.addToSelection([pline]);
317
+ S.addCommandToHistory(batchCmd);
318
+ return pline;
319
+ }
320
+
321
+ // called when the main system modifies an object
322
+ // this routine changes the associated markers to be the same color
323
+ function colorChanged(elem) {
324
+ var color = elem.getAttribute('stroke');
325
+
326
+ $.each(mtypes, function(i, pos) {
327
+ var marker = getLinked(elem, 'marker-'+pos);
328
+ if (!marker) return;
329
+ if (!marker.attributes.se_type) return; //not created by this extension
330
+ var ch = marker.lastElementChild;
331
+ if (!ch) return;
332
+ var curfill = ch.getAttribute("fill");
333
+ var curstroke = ch.getAttribute("stroke")
334
+ if (curfill && curfill!='none') ch.setAttribute("fill",color);
335
+ if (curstroke && curstroke!='none') ch.setAttribute("stroke",color);
336
+ });
337
+ }
338
+
339
+ // called when the main system creates or modifies an object
340
+ // primary purpose is create new markers for cloned objects
341
+ function updateReferences(el) {
342
+ $.each(mtypes, function (i,pos) {
343
+ var id = marker_prefix + pos + '_' + el.id;
344
+ var marker_name = 'marker-'+pos;
345
+ var marker = getLinked(el, marker_name);
346
+ if (!marker || !marker.attributes.se_type) return; //not created by this extension
347
+ var url = el.getAttribute(marker_name);
348
+ if (url) {
349
+ var len = el.id.length;
350
+ var linkid = url.substr(-len-1,len);
351
+ if (el.id != linkid) {
352
+ var val = $('#'+pos+'_marker').attr('value');
353
+ addMarker(id, val);
354
+ svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
355
+ if (el.tagName == "line" && pos=='mid') el=convertline(el);
356
+ S.call("changed", selElems);
357
+ }
358
+ }
359
+ });
360
+ }
361
+
362
+ // simulate a change event a text box that stores the current element's marker type
363
+ function triggerTextEntry(pos,val) {
364
+ $('#'+pos+'_marker').val(val);
365
+ $('#'+pos+'_marker').change();
366
+ var txtbox = $('#'+pos+'_marker');
367
+ //if (val.substr(0,1)=='\\') txtbox.hide();
368
+ //else txtbox.show();
369
+ }
370
+
371
+ function setIcon(pos,id) {
372
+ if (id.substr(0,1)!='\\') id='\\textmarker'
373
+ var ci = '#'+id_prefix+pos+'_'+id.substr(1);
374
+ methodDraw.setIcon('#cur_' + pos +'_marker_list', $(ci).children());
375
+ $(ci).addClass('current').siblings().removeClass('current');
376
+ }
377
+
378
+ function setMarkerSet(obj) {
379
+ var parts = this.id.split('_');
380
+ var set = parts[2];
381
+ switch (set) {
382
+ case 'off':
383
+ triggerTextEntry('start','\\nomarker');
384
+ triggerTextEntry('mid','\\nomarker');
385
+ triggerTextEntry('end','\\nomarker');
386
+ break;
387
+ case 'dimension':
388
+ triggerTextEntry('start','\\leftarrow');
389
+ triggerTextEntry('end','\\rightarrow');
390
+ showTextPrompt('mid');
391
+ break;
392
+ case 'label':
393
+ triggerTextEntry('mid','\\nomarker');
394
+ triggerTextEntry('end','\\rightarrow');
395
+ showTextPrompt('start');
396
+ break;
397
+ }
398
+ }
399
+
400
+ function showTextPrompt(pos) {
401
+ var def = $('#'+pos+'_marker').val();
402
+ if (def.substr(0,1)=='\\') def='';
403
+ $.prompt('Enter text for ' + pos + ' marker', def , function(txt) { if (txt) triggerTextEntry(pos,txt); });
404
+ }
405
+
406
+ // callback function for a toolbar button click
407
+ function setArrowFromButton(obj) {
408
+
409
+ var parts = this.id.split('_');
410
+ var pos = parts[1];
411
+ var val = parts[2];
412
+ if (parts[3]) val+='_'+parts[3];
413
+
414
+ if (val!='textmarker') {
415
+ triggerTextEntry(pos,'\\'+val);
416
+ } else {
417
+ showTextPrompt(pos);
418
+ }
419
+ }
420
+
421
+ function getTitle(lang,id) {
422
+ var list = lang_list[lang];
423
+ for (var i in list) {
424
+ if (list[i].id==id) return list[i].title;
425
+ }
426
+ return id;
427
+ }
428
+
429
+
430
+ // build the toolbar button array from the marker definitions
431
+ // TODO: need to incorporate language specific titles
432
+ function buildButtonList() {
433
+ var buttons=[];
434
+ var i=0;
435
+ /*
436
+ buttons.push({
437
+ id:id_prefix + 'markers_off',
438
+ title:'Turn off all markers',
439
+ type:'context',
440
+ events: { 'click': setMarkerSet },
441
+ panel: 'marker_panel'
442
+ });
443
+ buttons.push({
444
+ id:id_prefix + 'markers_dimension',
445
+ title:'Dimension',
446
+ type:'context',
447
+ events: { 'click': setMarkerSet },
448
+ panel: 'marker_panel'
449
+ });
450
+ buttons.push({
451
+ id:id_prefix + 'markers_label',
452
+ title:'Label',
453
+ type:'context',
454
+ events: { 'click': setMarkerSet },
455
+ panel: 'marker_panel'
456
+ });
457
+ */
458
+ $.each(mtypes,function(k,pos) {
459
+ var listname = pos + "_marker_list";
460
+ var def = true;
461
+ $.each(marker_types,function(id,v) {
462
+ var title = getTitle('en',id);
463
+ buttons.push({
464
+ id:id_prefix + pos + "_" + id,
465
+ svgicon:id,
466
+ title:title,
467
+ type:'context',
468
+ events: { 'click': setArrowFromButton },
469
+ panel:'marker_panel',
470
+ list: listname,
471
+ isDefault: def
472
+ });
473
+ def = false;
474
+ });
475
+ });
476
+ return buttons;
477
+ }
478
+
479
+ return {
480
+ name: "Markers",
481
+ svgicons: "extensions/markers-icons.xml",
482
+ buttons: buildButtonList(),
483
+ context_tools: [
484
+ {
485
+ type: "input",
486
+ panel: "marker_panel",
487
+ title: "Start marker",
488
+ id: "start_marker",
489
+ label: "Start",
490
+ size: 3,
491
+ events: { change: setMarker }
492
+ },{
493
+ type: "button-select",
494
+ panel: "marker_panel",
495
+ title: getTitle('en','start_marker_list'),
496
+ id: "start_marker_list",
497
+ colnum: 3,
498
+ events: { change: setArrowFromButton }
499
+ },{
500
+ type: "input",
501
+ panel: "marker_panel",
502
+ title: "Middle marker",
503
+ id: "mid_marker",
504
+ label: "Middle",
505
+ defval: "",
506
+ size: 3,
507
+ events: { change: setMarker }
508
+ },{
509
+ type: "button-select",
510
+ panel: "marker_panel",
511
+ title: getTitle('en','mid_marker_list'),
512
+ id: "mid_marker_list",
513
+ colnum: 3,
514
+ events: { change: setArrowFromButton }
515
+ },{
516
+ type: "input",
517
+ panel: "marker_panel",
518
+ title: "End marker",
519
+ id: "end_marker",
520
+ label: "End",
521
+ size: 3,
522
+ events: { change: setMarker }
523
+ },{
524
+ type: "button-select",
525
+ panel: "marker_panel",
526
+ title: getTitle('en','end_marker_list'),
527
+ id: "end_marker_list",
528
+ colnum: 3,
529
+ events: { change: setArrowFromButton }
530
+ } ],
531
+ callback: function() {
532
+ $('#marker_panel').addClass('toolset').hide();
533
+
534
+ },
535
+ addLangData: function(lang) {
536
+ return { data: lang_list[lang] };
537
+ },
538
+
539
+ selectedChanged: function(opts) {
540
+ // Use this to update the current selected elements
541
+ //console.log('selectChanged',opts);
542
+ selElems = opts.elems;
543
+
544
+ var i = selElems.length;
545
+ var marker_elems = ['line','path','polyline','polygon'];
546
+
547
+ while(i--) {
548
+ var elem = selElems[i];
549
+ if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
550
+ if(opts.selectedElement && !opts.multiselected) {
551
+ showPanel(true);
552
+ } else {
553
+ showPanel(false);
554
+ }
555
+ } else {
556
+ showPanel(false);
557
+ }
558
+ }
559
+ },
560
+
561
+ elementChanged: function(opts) {
562
+ //console.log('elementChanged',opts);
563
+ var elem = opts.elems[0];
564
+ if(elem && (
565
+ elem.getAttribute("marker-start") ||
566
+ elem.getAttribute("marker-mid") ||
567
+ elem.getAttribute("marker-end")
568
+ )) {
569
+ colorChanged(elem);
570
+ updateReferences(elem);
571
+ }
572
+ changing_flag = false;
573
+ }
574
+ };
575
+ });
576
+