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,121 @@
1
+ CACHE MANIFEST
2
+ svg-editor.html
3
+ images/logo.png
4
+ jgraduate/css/jPicker-1.0.9.css
5
+ jgraduate/css/jGraduate-0.2.0.css
6
+ svg-editor.css
7
+ spinbtn/JQuerySpinBtn.css
8
+ jquery.js
9
+ js-hotkeys/jquery.hotkeys.min.js
10
+ jquery-ui/jquery-ui-1.7.2.custom.min.js
11
+ jgraduate/jpicker-1.0.9.min.js
12
+ jgraduate/jquery.jgraduate.js
13
+ spinbtn/JQuerySpinBtn.js
14
+ svgcanvas.js
15
+ svg-editor.js
16
+ images/align-bottom.png
17
+ images/align-center.png
18
+ images/align-left.png
19
+ images/align-middle.png
20
+ images/align-right.png
21
+ images/align-top.png
22
+ images/bold.png
23
+ images/cancel.png
24
+ images/circle.png
25
+ images/clear.png
26
+ images/clone.png
27
+ images/copy.png
28
+ images/cut.png
29
+ images/delete.png
30
+ images/document-properties.png
31
+ images/dropdown.gif
32
+ images/ellipse.png
33
+ images/eye.png
34
+ images/flyouth.png
35
+ images/flyup.gif
36
+ images/freehand-circle.png
37
+ images/freehand-square.png
38
+ images/go-down.png
39
+ images/go-up.png
40
+ images/image.png
41
+ images/italic.png
42
+ images/line.png
43
+ images/logo.png
44
+ images/logo.svg
45
+ images/move_bottom.png
46
+ images/move_top.png
47
+ images/none.png
48
+ images/open.png
49
+ images/paste.png
50
+ images/path.png
51
+ images/polygon.png
52
+ images/rect.png
53
+ images/redo.png
54
+ images/save.png
55
+ images/select.png
56
+ images/sep.png
57
+ images/shape_group.png
58
+ images/shape_ungroup.png
59
+ images/source.png
60
+ images/square.png
61
+ images/text.png
62
+ images/undo.png
63
+ images/view-refresh.png
64
+ images/wave.png
65
+ images/zoom.png
66
+ locale/locale.js
67
+ locale/lang.af.js
68
+ locale/lang.ar.js
69
+ locale/lang.az.js
70
+ locale/lang.be.js
71
+ locale/lang.bg.js
72
+ locale/lang.ca.js
73
+ locale/lang.cs.js
74
+ locale/lang.cy.js
75
+ locale/lang.da.js
76
+ locale/lang.de.js
77
+ locale/lang.el.js
78
+ locale/lang.en.js
79
+ locale/lang.es.js
80
+ locale/lang.et.js
81
+ locale/lang.fa.js
82
+ locale/lang.fi.js
83
+ locale/lang.fr.js
84
+ locale/lang.ga.js
85
+ locale/lang.gl.js
86
+ locale/lang.hi.js
87
+ locale/lang.hr.js
88
+ locale/lang.hu.js
89
+ locale/lang.hy.js
90
+ locale/lang.id.js
91
+ locale/lang.is.js
92
+ locale/lang.it.js
93
+ locale/lang.iw.js
94
+ locale/lang.ja.js
95
+ locale/lang.ko.js
96
+ locale/lang.lt.js
97
+ locale/lang.lv.js
98
+ locale/lang.mk.js
99
+ locale/lang.ms.js
100
+ locale/lang.mt.js
101
+ locale/lang.nl.js
102
+ locale/lang.no.js
103
+ locale/lang.pl.js
104
+ locale/lang.pt-PT.js
105
+ locale/lang.ro.js
106
+ locale/lang.ru.js
107
+ locale/lang.sk.js
108
+ locale/lang.sl.js
109
+ locale/lang.sq.js
110
+ locale/lang.sr.js
111
+ locale/lang.sv.js
112
+ locale/lang.sw.js
113
+ locale/lang.th.js
114
+ locale/lang.tl.js
115
+ locale/lang.tr.js
116
+ locale/lang.uk.js
117
+ locale/lang.vi.js
118
+ locale/lang.yi.js
119
+ locale/lang.zh-CN.js
120
+ locale/lang.zh-TW.js
121
+ locale/lang.zh.js
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Package: svgedit.browser
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2010 Jeff Schiller
7
+ * Copyright(c) 2010 Alexis Deveria
8
+ */
9
+
10
+ // Dependencies:
11
+ // 1) jQuery (for $.alert())
12
+
13
+ var svgedit = svgedit || {};
14
+
15
+ (function() {
16
+
17
+ if (!svgedit.browser) {
18
+ svgedit.browser = {};
19
+ }
20
+ var supportsSvg_ = (function() {
21
+ return !!document.createElementNS && !!document.createElementNS('http://www.w3.org/2000/svg', 'svg').createSVGRect;
22
+ })();
23
+ svgedit.browser.supportsSvg = function() { return supportsSvg_; }
24
+ if(!svgedit.browser.supportsSvg()) {
25
+ window.location = "browser-not-supported.html";
26
+ }
27
+ else{
28
+
29
+ var svgns = 'http://www.w3.org/2000/svg';
30
+ var userAgent = navigator.userAgent;
31
+ var svg = document.createElementNS(svgns, 'svg');
32
+
33
+ // Note: Browser sniffing should only be used if no other detection method is possible
34
+ var isOpera_ = !!window.opera;
35
+ var isWebkit_ = userAgent.indexOf("AppleWebKit") >= 0;
36
+ var isGecko_ = userAgent.indexOf('Gecko/') >= 0;
37
+ var isIE_ = userAgent.indexOf('MSIE') >= 0;
38
+ var isChrome_ = userAgent.indexOf('Chrome/') >= 0;
39
+ var isWindows_ = userAgent.indexOf('Windows') >= 0;
40
+ var isMac_ = userAgent.indexOf('Macintosh') >= 0;
41
+ var isTouch_ = 'ontouchstart' in window;
42
+
43
+ var supportsSelectors_ = (function() {
44
+ return !!svg.querySelector;
45
+ })();
46
+
47
+ var supportsXpath_ = (function() {
48
+ return !!document.evaluate;
49
+ })();
50
+
51
+ // segList functions (for FF1.5 and 2.0)
52
+ var supportsPathReplaceItem_ = (function() {
53
+ var path = document.createElementNS(svgns, 'path');
54
+ path.setAttribute('d','M0,0 10,10');
55
+ var seglist = path.pathSegList;
56
+ var seg = path.createSVGPathSegLinetoAbs(5,5);
57
+ try {
58
+ seglist.replaceItem(seg, 0);
59
+ return true;
60
+ } catch(err) {}
61
+ return false;
62
+ })();
63
+
64
+ var supportsPathInsertItemBefore_ = (function() {
65
+ var path = document.createElementNS(svgns,'path');
66
+ path.setAttribute('d','M0,0 10,10');
67
+ var seglist = path.pathSegList;
68
+ var seg = path.createSVGPathSegLinetoAbs(5,5);
69
+ try {
70
+ seglist.insertItemBefore(seg, 0);
71
+ return true;
72
+ } catch(err) {}
73
+ return false;
74
+ })();
75
+
76
+ // text character positioning (for IE9)
77
+ var supportsGoodTextCharPos_ = (function() {
78
+ var retValue = false;
79
+ var svgroot = document.createElementNS(svgns, 'svg');
80
+ var svgcontent = document.createElementNS(svgns, 'svg');
81
+ document.documentElement.appendChild(svgroot);
82
+ svgcontent.setAttribute('x', 5);
83
+ svgroot.appendChild(svgcontent);
84
+ var text = document.createElementNS(svgns,'text');
85
+ text.textContent = 'a';
86
+ svgcontent.appendChild(text);
87
+ var pos = text.getStartPositionOfChar(0)
88
+ pos = pos.x; //if you put it on one line it fails when compiled
89
+ document.documentElement.removeChild(svgroot);
90
+ return (pos === 0);
91
+ })();
92
+
93
+ var supportsPathBBox_ = (function() {
94
+ var svgcontent = document.createElementNS(svgns, 'svg');
95
+ document.documentElement.appendChild(svgcontent);
96
+ var path = document.createElementNS(svgns, 'path');
97
+ path.setAttribute('d','M0,0 C0,0 10,10 10,0');
98
+ svgcontent.appendChild(path);
99
+ var bbox = path.getBBox();
100
+ document.documentElement.removeChild(svgcontent);
101
+ return (bbox.height > 4 && bbox.height < 5);
102
+ })();
103
+
104
+ // Support for correct bbox sizing on groups with horizontal/vertical lines
105
+ var supportsHVLineContainerBBox_ = (function() {
106
+ var svgcontent = document.createElementNS(svgns, 'svg');
107
+ document.documentElement.appendChild(svgcontent);
108
+ var path = document.createElementNS(svgns, 'path');
109
+ path.setAttribute('d','M0,0 10,0');
110
+ var path2 = document.createElementNS(svgns, 'path');
111
+ path2.setAttribute('d','M5,0 15,0');
112
+ var g = document.createElementNS(svgns, 'g');
113
+ g.appendChild(path);
114
+ g.appendChild(path2);
115
+ svgcontent.appendChild(g);
116
+ var bbox = g.getBBox();
117
+ document.documentElement.removeChild(svgcontent);
118
+ // Webkit gives 0, FF gives 10, Opera (correctly) gives 15
119
+ return (bbox.width == 15);
120
+ })();
121
+
122
+ var supportsEditableText_ = (function() {
123
+ // TODO: Find better way to check support for this
124
+ return isOpera_;
125
+ })();
126
+
127
+ var supportsGoodDecimals_ = (function() {
128
+ // Correct decimals on clone attributes (Opera < 10.5/win/non-en)
129
+ var rect = document.createElementNS(svgns, 'rect');
130
+ rect.setAttribute('x',.1);
131
+ var crect = rect.cloneNode(false);
132
+ var retValue = (crect.getAttribute('x').indexOf(',') == -1);
133
+ if(!retValue) {
134
+ $.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\
135
+ Please upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.");
136
+ }
137
+ return retValue;
138
+ })();
139
+
140
+ var supportsNonScalingStroke_ = (function() {
141
+ var rect = document.createElementNS(svgns, 'rect');
142
+ rect.setAttribute('style','vector-effect:non-scaling-stroke');
143
+ return rect.style.vectorEffect === 'non-scaling-stroke';
144
+ })();
145
+
146
+ var supportsNativeSVGTransformLists_ = (function() {
147
+ var rect = document.createElementNS(svgns, 'rect');
148
+ var rxform = rect.transform.baseVal;
149
+
150
+ var t1 = svg.createSVGTransform();
151
+ rxform.appendItem(t1);
152
+ return rxform.getItem(0) == t1;
153
+ })();
154
+
155
+ // Public API
156
+
157
+ svgedit.browser.isOpera = function() { return isOpera_; }
158
+ svgedit.browser.isWebkit = function() { return isWebkit_; }
159
+ svgedit.browser.isGecko = function() { return isGecko_; }
160
+ svgedit.browser.isIE = function() { return isIE_; }
161
+ svgedit.browser.isChrome = function() { return isChrome_; }
162
+ svgedit.browser.isWindows = function() { return isWindows_; }
163
+ svgedit.browser.isMac = function() { return isMac_; }
164
+ svgedit.browser.isTouch = function() { return isTouch_; }
165
+
166
+ svgedit.browser.supportsSelectors = function() { return supportsSelectors_; }
167
+ svgedit.browser.supportsXpath = function() { return supportsXpath_; }
168
+
169
+ svgedit.browser.supportsPathReplaceItem = function() { return supportsPathReplaceItem_; }
170
+ svgedit.browser.supportsPathInsertItemBefore = function() { return supportsPathInsertItemBefore_; }
171
+ svgedit.browser.supportsPathBBox = function() { return supportsPathBBox_; }
172
+ svgedit.browser.supportsHVLineContainerBBox = function() { return supportsHVLineContainerBBox_; }
173
+ svgedit.browser.supportsGoodTextCharPos = function() { return supportsGoodTextCharPos_; }
174
+ svgedit.browser.supportsEditableText = function() { return supportsEditableText_; }
175
+ svgedit.browser.supportsGoodDecimals = function() { return supportsGoodDecimals_; }
176
+ svgedit.browser.supportsNonScalingStroke = function() { return supportsNonScalingStroke_; }
177
+ svgedit.browser.supportsNativeTransformLists = function() { return supportsNativeSVGTransformLists_; }
178
+
179
+ }
180
+
181
+ })();
@@ -0,0 +1,49 @@
1
+ // This sets up alternative dialog boxes. They mostly work the same way as
2
+ // their UI counterparts, expect instead of returning the result, a callback
3
+ // needs to be included that returns the result as its first parameter.
4
+ // In the future we may want to add additional types of dialog boxes, since
5
+ // they should be easy to handle this way.
6
+
7
+ (function() {
8
+ $('#dialog_container').draggable({cancel:'#dialog_content, #dialog_buttons *', containment: 'window'});
9
+ var box = $('#dialog_box'), btn_holder = $('#dialog_buttons');
10
+
11
+ var dbox = function(type, msg, callback, defText) {
12
+ $('#dialog_content').html('<p>'+msg.replace(/\n/g,'</p><p>')+'</p>')
13
+ .toggleClass('prompt',(type=='prompt'));
14
+ btn_holder.empty();
15
+
16
+ var ok = $('<input type="button" value="' + uiStrings.common.ok + '">').appendTo(btn_holder);
17
+
18
+ if(type != 'alert') {
19
+ $('<input type="button" value="' + uiStrings.common.cancel + '">')
20
+ .appendTo(btn_holder)
21
+ .on("click touchstart", function() { box.hide();callback(false)});
22
+ }
23
+
24
+ if(type == 'prompt') {
25
+ var input = $('<input type="text">').prependTo(btn_holder);
26
+ input.val(defText || '');
27
+ input.bind('keydown', 'return', function() {ok.trigger("click touchstart");});
28
+ }
29
+
30
+ if(type == 'process') {
31
+ ok.hide();
32
+ }
33
+
34
+ box.show();
35
+
36
+ ok.on("click touchstart", function() {
37
+ box.hide();
38
+ var resp = (type == 'prompt')?input.val():true;
39
+ if(callback) callback(resp);
40
+ }).focus();
41
+
42
+ if(type == 'prompt') input.focus();
43
+ }
44
+
45
+ $.alert = function(msg, cb) { dbox('alert', msg, cb);};
46
+ $.confirm = function(msg, cb) { dbox('confirm', msg, cb);};
47
+ $.process_cancel = function(msg, cb) { dbox('process', msg, cb);};
48
+ $.prompt = function(msg, txt, cb) { dbox('prompt', msg, cb, txt);};
49
+ }());
@@ -0,0 +1,11 @@
1
+ window.onload = function () {
2
+ document.querySelector('body').addEventListener('drop', function(e) {
3
+ e.preventDefault();
4
+ var reader = new FileReader();
5
+ reader.onload = function(evt) {
6
+ //document.querySelector('img').src = evt.target.result;
7
+ };
8
+
9
+ reader.readAsDataURL(e.dataTransfer.files[0]);
10
+ }, false);
11
+ }
@@ -0,0 +1,533 @@
1
+ /**
2
+ * Package: svgedit.draw
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2011 Jeff Schiller
7
+ */
8
+
9
+ // Dependencies:
10
+ // 1) jQuery
11
+ // 2) browser.js
12
+ // 3) svgutils.js
13
+
14
+ var svgedit = svgedit || {};
15
+
16
+ (function() {
17
+
18
+ if (!svgedit.draw) {
19
+ svgedit.draw = {};
20
+ }
21
+
22
+ var svg_ns = "http://www.w3.org/2000/svg";
23
+ var se_ns = "http://svg-edit.googlecode.com";
24
+ var xmlns_ns = "http://www.w3.org/2000/xmlns/";
25
+
26
+ var visElems = 'a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use';
27
+ var visElems_arr = visElems.split(',');
28
+
29
+ var RandomizeModes = {
30
+ LET_DOCUMENT_DECIDE: 0,
31
+ ALWAYS_RANDOMIZE: 1,
32
+ NEVER_RANDOMIZE: 2
33
+ };
34
+ var randomize_ids = RandomizeModes.LET_DOCUMENT_DECIDE;
35
+
36
+ /**
37
+ * This class encapsulates the concept of a layer in the drawing
38
+ * @param name {String} Layer name
39
+ * @param child {SVGGElement} Layer SVG group.
40
+ */
41
+ svgedit.draw.Layer = function(name, group) {
42
+ this.name_ = name;
43
+ this.group_ = group;
44
+ };
45
+
46
+ svgedit.draw.Layer.prototype.getName = function() {
47
+ return this.name_;
48
+ };
49
+
50
+ svgedit.draw.Layer.prototype.getGroup = function() {
51
+ return this.group_;
52
+ };
53
+
54
+
55
+ // Called to ensure that drawings will or will not have randomized ids.
56
+ // The current_drawing will have its nonce set if it doesn't already.
57
+ //
58
+ // Params:
59
+ // enableRandomization - flag indicating if documents should have randomized ids
60
+ svgedit.draw.randomizeIds = function(enableRandomization, current_drawing) {
61
+ randomize_ids = enableRandomization == false ?
62
+ RandomizeModes.NEVER_RANDOMIZE :
63
+ RandomizeModes.ALWAYS_RANDOMIZE;
64
+
65
+ if (randomize_ids == RandomizeModes.ALWAYS_RANDOMIZE && !current_drawing.getNonce()) {
66
+ current_drawing.setNonce(Math.floor(Math.random() * 100001));
67
+ } else if (randomize_ids == RandomizeModes.NEVER_RANDOMIZE && current_drawing.getNonce()) {
68
+ current_drawing.clearNonce();
69
+ }
70
+ };
71
+
72
+ /**
73
+ * This class encapsulates the concept of a SVG-edit drawing
74
+ *
75
+ * @param svgElem {SVGSVGElement} The SVG DOM Element that this JS object
76
+ * encapsulates. If the svgElem has a se:nonce attribute on it, then
77
+ * IDs will use the nonce as they are generated.
78
+ * @param opt_idPrefix {String} The ID prefix to use. Defaults to "svg_"
79
+ * if not specified.
80
+ */
81
+ svgedit.draw.Drawing = function(svgElem, opt_idPrefix) {
82
+ if (!svgElem || !svgElem.tagName || !svgElem.namespaceURI ||
83
+ svgElem.tagName != 'svg' || svgElem.namespaceURI != svg_ns) {
84
+ throw "Error: svgedit.draw.Drawing instance initialized without a <svg> element";
85
+ }
86
+
87
+ /**
88
+ * The SVG DOM Element that represents this drawing.
89
+ * @type {SVGSVGElement}
90
+ */
91
+ this.svgElem_ = svgElem;
92
+
93
+ /**
94
+ * The latest object number used in this drawing.
95
+ * @type {number}
96
+ */
97
+ this.obj_num = 0;
98
+
99
+ /**
100
+ * The prefix to prepend to each element id in the drawing.
101
+ * @type {String}
102
+ */
103
+ this.idPrefix = opt_idPrefix || "svg_";
104
+
105
+ /**
106
+ * An array of released element ids to immediately reuse.
107
+ * @type {Array.<number>}
108
+ */
109
+ this.releasedNums = [];
110
+
111
+ /**
112
+ * The z-ordered array of tuples containing layer names and <g> elements.
113
+ * The first layer is the one at the bottom of the rendering.
114
+ * TODO: Turn this into an Array.<Layer>
115
+ * @type {Array.<Array.<String, SVGGElement>>}
116
+ */
117
+ this.all_layers = [];
118
+
119
+ /**
120
+ * The current layer being used.
121
+ * TODO: Make this a {Layer}.
122
+ * @type {SVGGElement}
123
+ */
124
+ this.current_layer = null;
125
+
126
+ /**
127
+ * The nonce to use to uniquely identify elements across drawings.
128
+ * @type {!String}
129
+ */
130
+ this.nonce_ = "";
131
+ var n = this.svgElem_.getAttributeNS(se_ns, 'nonce');
132
+ // If already set in the DOM, use the nonce throughout the document
133
+ // else, if randomizeIds(true) has been called, create and set the nonce.
134
+ if (!!n && randomize_ids != RandomizeModes.NEVER_RANDOMIZE) {
135
+ this.nonce_ = n;
136
+ } else if (randomize_ids == RandomizeModes.ALWAYS_RANDOMIZE) {
137
+ this.setNonce(Math.floor(Math.random() * 100001));
138
+ }
139
+ };
140
+
141
+ svgedit.draw.Drawing.prototype.getElem_ = function(id) {
142
+ if(this.svgElem_.querySelector) {
143
+ // querySelector lookup
144
+ return this.svgElem_.querySelector('#'+id);
145
+ } else {
146
+ // jQuery lookup: twice as slow as xpath in FF
147
+ return $(this.svgElem_).find('[id=' + id + ']')[0];
148
+ }
149
+ };
150
+
151
+ svgedit.draw.Drawing.prototype.getSvgElem = function() {
152
+ return this.svgElem_;
153
+ };
154
+
155
+ svgedit.draw.Drawing.prototype.getNonce = function() {
156
+ return this.nonce_;
157
+ };
158
+
159
+ svgedit.draw.Drawing.prototype.setNonce = function(n) {
160
+ this.svgElem_.setAttributeNS(xmlns_ns, 'xmlns:se', se_ns);
161
+ this.svgElem_.setAttributeNS(se_ns, 'se:nonce', n);
162
+ this.nonce_ = n;
163
+ };
164
+
165
+ svgedit.draw.Drawing.prototype.clearNonce = function() {
166
+ // We deliberately leave any se:nonce attributes alone,
167
+ // we just don't use it to randomize ids.
168
+ this.nonce_ = "";
169
+ };
170
+
171
+ /**
172
+ * Returns the latest object id as a string.
173
+ * @return {String} The latest object Id.
174
+ */
175
+ svgedit.draw.Drawing.prototype.getId = function() {
176
+ return this.nonce_ ?
177
+ this.idPrefix + this.nonce_ +'_' + this.obj_num :
178
+ this.idPrefix + this.obj_num;
179
+ };
180
+
181
+ /**
182
+ * Returns the next object Id as a string.
183
+ * @return {String} The next object Id to use.
184
+ */
185
+ svgedit.draw.Drawing.prototype.getNextId = function() {
186
+ var oldObjNum = this.obj_num;
187
+ var restoreOldObjNum = false;
188
+
189
+ // If there are any released numbers in the release stack,
190
+ // use the last one instead of the next obj_num.
191
+ // We need to temporarily use obj_num as that is what getId() depends on.
192
+ if (this.releasedNums.length > 0) {
193
+ this.obj_num = this.releasedNums.pop();
194
+ restoreOldObjNum = true;
195
+ } else {
196
+ // If we are not using a released id, then increment the obj_num.
197
+ this.obj_num++;
198
+ }
199
+
200
+ // Ensure the ID does not exist.
201
+ var id = this.getId();
202
+ while (this.getElem_(id)) {
203
+ if (restoreOldObjNum) {
204
+ this.obj_num = oldObjNum;
205
+ restoreOldObjNum = false;
206
+ }
207
+ this.obj_num++;
208
+ id = this.getId();
209
+ }
210
+ // Restore the old object number if required.
211
+ if (restoreOldObjNum) {
212
+ this.obj_num = oldObjNum;
213
+ }
214
+ return id;
215
+ };
216
+
217
+ // Function: svgedit.draw.Drawing.releaseId
218
+ // Releases the object Id, letting it be used as the next id in getNextId().
219
+ // This method DOES NOT remove any elements from the DOM, it is expected
220
+ // that client code will do this.
221
+ //
222
+ // Parameters:
223
+ // id - The id to release.
224
+ //
225
+ // Returns:
226
+ // True if the id was valid to be released, false otherwise.
227
+ svgedit.draw.Drawing.prototype.releaseId = function(id) {
228
+ // confirm if this is a valid id for this Document, else return false
229
+ var front = this.idPrefix + (this.nonce_ ? this.nonce_ +'_' : '');
230
+ if (typeof id != typeof '' || id.indexOf(front) != 0) {
231
+ return false;
232
+ }
233
+ // extract the obj_num of this id
234
+ var num = parseInt(id.substr(front.length));
235
+
236
+ // if we didn't get a positive number or we already released this number
237
+ // then return false.
238
+ if (typeof num != typeof 1 || num <= 0 || this.releasedNums.indexOf(num) != -1) {
239
+ return false;
240
+ }
241
+
242
+ // push the released number into the released queue
243
+ this.releasedNums.push(num);
244
+
245
+ return true;
246
+ };
247
+
248
+ // Function: svgedit.draw.Drawing.getNumLayers
249
+ // Returns the number of layers in the current drawing.
250
+ //
251
+ // Returns:
252
+ // The number of layers in the current drawing.
253
+ svgedit.draw.Drawing.prototype.getNumLayers = function() {
254
+ return this.all_layers.length;
255
+ };
256
+
257
+ // Function: svgedit.draw.Drawing.hasLayer
258
+ // Check if layer with given name already exists
259
+ svgedit.draw.Drawing.prototype.hasLayer = function(name) {
260
+ for(var i = 0; i < this.getNumLayers(); i++) {
261
+ if(this.all_layers[i][0] == name) return true;
262
+ }
263
+ return false;
264
+ };
265
+
266
+
267
+ // Function: svgedit.draw.Drawing.getLayerName
268
+ // Returns the name of the ith layer. If the index is out of range, an empty string is returned.
269
+ //
270
+ // Parameters:
271
+ // i - the zero-based index of the layer you are querying.
272
+ //
273
+ // Returns:
274
+ // The name of the ith layer
275
+ svgedit.draw.Drawing.prototype.getLayerName = function(i) {
276
+ if (i >= 0 && i < this.getNumLayers()) {
277
+ return this.all_layers[i][0];
278
+ }
279
+ return "";
280
+ };
281
+
282
+ // Function: svgedit.draw.Drawing.getCurrentLayer
283
+ // Returns:
284
+ // The SVGGElement representing the current layer.
285
+ svgedit.draw.Drawing.prototype.getCurrentLayer = function() {
286
+ return this.current_layer;
287
+ };
288
+
289
+ // Function: getCurrentLayerName
290
+ // Returns the name of the currently selected layer. If an error occurs, an empty string
291
+ // is returned.
292
+ //
293
+ // Returns:
294
+ // The name of the currently active layer.
295
+ svgedit.draw.Drawing.prototype.getCurrentLayerName = function() {
296
+ for (var i = 0; i < this.getNumLayers(); ++i) {
297
+ if (this.all_layers[i][1] == this.current_layer) {
298
+ return this.getLayerName(i);
299
+ }
300
+ }
301
+ return "";
302
+ };
303
+
304
+ // Function: setCurrentLayer
305
+ // Sets the current layer. If the name is not a valid layer name, then this function returns
306
+ // false. Otherwise it returns true. This is not an undo-able action.
307
+ //
308
+ // Parameters:
309
+ // name - the name of the layer you want to switch to.
310
+ //
311
+ // Returns:
312
+ // true if the current layer was switched, otherwise false
313
+ svgedit.draw.Drawing.prototype.setCurrentLayer = function(name) {
314
+ for (var i = 0; i < this.getNumLayers(); ++i) {
315
+ if (name == this.getLayerName(i)) {
316
+ if (this.current_layer != this.all_layers[i][1]) {
317
+ this.current_layer.setAttribute("style", "pointer-events:none");
318
+ this.current_layer = this.all_layers[i][1];
319
+ this.current_layer.setAttribute("style", "pointer-events:all");
320
+ }
321
+ return true;
322
+ }
323
+ }
324
+ return false;
325
+ };
326
+
327
+
328
+ // Function: svgedit.draw.Drawing.deleteCurrentLayer
329
+ // Deletes the current layer from the drawing and then clears the selection. This function
330
+ // then calls the 'changed' handler. This is an undoable action.
331
+ // Returns:
332
+ // The SVGGElement of the layer removed or null.
333
+ svgedit.draw.Drawing.prototype.deleteCurrentLayer = function() {
334
+ if (this.current_layer && this.getNumLayers() > 1) {
335
+ // actually delete from the DOM and return it
336
+ var parent = this.current_layer.parentNode;
337
+ var nextSibling = this.current_layer.nextSibling;
338
+ var oldLayerGroup = parent.removeChild(this.current_layer);
339
+ this.identifyLayers();
340
+ return oldLayerGroup;
341
+ }
342
+ return null;
343
+ };
344
+
345
+ // Function: svgedit.draw.Drawing.identifyLayers
346
+ // Updates layer system and sets the current layer to the
347
+ // top-most layer (last <g> child of this drawing).
348
+ svgedit.draw.Drawing.prototype.identifyLayers = function() {
349
+ this.all_layers = [];
350
+ var numchildren = this.svgElem_.childNodes.length;
351
+ // loop through all children of SVG element
352
+ var orphans = [], layernames = [];
353
+ var a_layer = null;
354
+ var childgroups = false;
355
+ for (var i = 0; i < numchildren; ++i) {
356
+ var child = this.svgElem_.childNodes.item(i);
357
+ // for each g, find its layer name
358
+ if (child && child.nodeType == 1) {
359
+ if (child.tagName == "g") {
360
+ childgroups = true;
361
+ var name = $("title",child).text();
362
+
363
+ // Hack for Opera 10.60
364
+ if(!name && svgedit.browser.isOpera() && child.querySelectorAll) {
365
+ name = $(child.querySelectorAll('title')).text();
366
+ }
367
+
368
+ // store layer and name in global variable
369
+ if (name) {
370
+ layernames.push(name);
371
+ this.all_layers.push( [name,child] );
372
+ a_layer = child;
373
+ svgedit.utilities.walkTree(child, function(e){e.setAttribute("style", "pointer-events:inherit");});
374
+ a_layer.setAttribute("style", "pointer-events:none");
375
+ }
376
+ // if group did not have a name, it is an orphan
377
+ else {
378
+ orphans.push(child);
379
+ }
380
+ }
381
+ // if child has is "visible" (i.e. not a <title> or <defs> element), then it is an orphan
382
+ else if(~visElems_arr.indexOf(child.nodeName)) {
383
+ var bb = svgedit.utilities.getBBox(child);
384
+ orphans.push(child);
385
+ }
386
+ }
387
+ }
388
+
389
+ // create a new layer and add all the orphans to it
390
+ var svgdoc = this.svgElem_.ownerDocument;
391
+ if (orphans.length > 0 || !childgroups) {
392
+ var i = 1;
393
+ // TODO(codedread): What about internationalization of "Layer"?
394
+ while (layernames.indexOf(("Layer " + i)) >= 0) { i++; }
395
+ var newname = "Layer " + i;
396
+ a_layer = svgdoc.createElementNS(svg_ns, "g");
397
+ var layer_title = svgdoc.createElementNS(svg_ns, "title");
398
+ layer_title.textContent = newname;
399
+ a_layer.appendChild(layer_title);
400
+ for (var j = 0; j < orphans.length; ++j) {
401
+ a_layer.appendChild(orphans[j]);
402
+ }
403
+ this.svgElem_.appendChild(a_layer);
404
+ this.all_layers.push( [newname, a_layer] );
405
+ }
406
+ svgedit.utilities.walkTree(a_layer, function(e){e.setAttribute("style","pointer-events:inherit");});
407
+ if (a_layer.getAttribute("data-locked") === "true") {
408
+ this.current_layer = this.all_layers.slice(-2)[0][1]
409
+ }
410
+ else {
411
+ this.current_layer = a_layer
412
+ }
413
+ this.current_layer.setAttribute("style","pointer-events:all");
414
+ };
415
+
416
+ // Function: svgedit.draw.Drawing.createLayer
417
+ // Creates a new top-level layer in the drawing with the given name and
418
+ // sets the current layer to it.
419
+ //
420
+ // Parameters:
421
+ // name - The given name
422
+ //
423
+ // Returns:
424
+ // The SVGGElement of the new layer, which is also the current layer
425
+ // of this drawing.
426
+ svgedit.draw.Drawing.prototype.createLayer = function(name) {
427
+ var svgdoc = this.svgElem_.ownerDocument;
428
+ var new_layer = svgdoc.createElementNS(svg_ns, "g");
429
+ var layer_title = svgdoc.createElementNS(svg_ns, "title");
430
+ layer_title.textContent = name;
431
+ new_layer.appendChild(layer_title);
432
+ this.svgElem_.appendChild(new_layer);
433
+ this.identifyLayers();
434
+ return new_layer;
435
+ };
436
+
437
+ // Function: svgedit.draw.Drawing.getLayerVisibility
438
+ // Returns whether the layer is visible. If the layer name is not valid, then this function
439
+ // returns false.
440
+ //
441
+ // Parameters:
442
+ // layername - the name of the layer which you want to query.
443
+ //
444
+ // Returns:
445
+ // The visibility state of the layer, or false if the layer name was invalid.
446
+ svgedit.draw.Drawing.prototype.getLayerVisibility = function(layername) {
447
+ // find the layer
448
+ var layer = null;
449
+ for (var i = 0; i < this.getNumLayers(); ++i) {
450
+ if (this.getLayerName(i) == layername) {
451
+ layer = this.all_layers[i][1];
452
+ break;
453
+ }
454
+ }
455
+ if (!layer) return false;
456
+ return (layer.getAttribute('display') != 'none');
457
+ };
458
+
459
+ // Function: svgedit.draw.Drawing.setLayerVisibility
460
+ // Sets the visibility of the layer. If the layer name is not valid, this function return
461
+ // false, otherwise it returns true. This is an undo-able action.
462
+ //
463
+ // Parameters:
464
+ // layername - the name of the layer to change the visibility
465
+ // bVisible - true/false, whether the layer should be visible
466
+ //
467
+ // Returns:
468
+ // The SVGGElement representing the layer if the layername was valid, otherwise null.
469
+ svgedit.draw.Drawing.prototype.setLayerVisibility = function(layername, bVisible) {
470
+ if (typeof bVisible != typeof true) {
471
+ return null;
472
+ }
473
+ // find the layer
474
+ var layer = null;
475
+ for (var i = 0; i < this.getNumLayers(); ++i) {
476
+ if (this.getLayerName(i) == layername) {
477
+ layer = this.all_layers[i][1];
478
+ break;
479
+ }
480
+ }
481
+ if (!layer) return null;
482
+
483
+ var oldDisplay = layer.getAttribute("display");
484
+ if (!oldDisplay) oldDisplay = "inline";
485
+ layer.setAttribute("display", bVisible ? "inline" : "none");
486
+ return layer;
487
+ };
488
+
489
+
490
+ // Function: svgedit.draw.Drawing.getLayerOpacity
491
+ // Returns the opacity of the given layer. If the input name is not a layer, null is returned.
492
+ //
493
+ // Parameters:
494
+ // layername - name of the layer on which to get the opacity
495
+ //
496
+ // Returns:
497
+ // The opacity value of the given layer. This will be a value between 0.0 and 1.0, or null
498
+ // if layername is not a valid layer
499
+ svgedit.draw.Drawing.prototype.getLayerOpacity = function(layername) {
500
+ for (var i = 0; i < this.getNumLayers(); ++i) {
501
+ if (this.getLayerName(i) == layername) {
502
+ var g = this.all_layers[i][1];
503
+ var opacity = g.getAttribute('opacity');
504
+ if (!opacity) {
505
+ opacity = '1.0';
506
+ }
507
+ return parseFloat(opacity);
508
+ }
509
+ }
510
+ return null;
511
+ };
512
+
513
+ // Function: svgedit.draw.Drawing.setLayerOpacity
514
+ // Sets the opacity of the given layer. If the input name is not a layer, nothing happens.
515
+ // If opacity is not a value between 0.0 and 1.0, then nothing happens.
516
+ //
517
+ // Parameters:
518
+ // layername - name of the layer on which to set the opacity
519
+ // opacity - a float value in the range 0.0-1.0
520
+ svgedit.draw.Drawing.prototype.setLayerOpacity = function(layername, opacity) {
521
+ if (typeof opacity != typeof 1.0 || opacity < 0.0 || opacity > 1.0) {
522
+ return;
523
+ }
524
+ for (var i = 0; i < this.getNumLayers(); ++i) {
525
+ if (this.getLayerName(i) == layername) {
526
+ var g = this.all_layers[i][1];
527
+ g.setAttribute("opacity", opacity);
528
+ break;
529
+ }
530
+ }
531
+ };
532
+
533
+ })();