method_draw 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +148 -0
- data/Rakefile +23 -0
- data/app/assets/javascripts/method_draw.js +9 -0
- data/app/assets/javascripts/method_draw/base64.js +95 -0
- data/app/assets/javascripts/method_draw_embed.js +76 -0
- data/app/assets/stylesheets/sketchily.css +6 -0
- data/app/helpers/method_draw_helper.rb +35 -0
- data/app/views/method_draw/_embed.html.erb +51 -0
- data/app/views/method_draw/_method_draw.html.erb +19 -0
- data/app/views/method_draw/_method_draw_tag.html.erb +14 -0
- data/lib/method_draw.rb +16 -0
- data/lib/method_draw/engine.rb +4 -0
- data/lib/method_draw/method_draw.rb +37 -0
- data/lib/method_draw/method_draw_tag.rb +20 -0
- data/lib/method_draw/version.rb +3 -0
- data/spec/app/helpers/method_draw_helper_spec.rb +8 -0
- data/spec/dummy/README.md +3 -0
- data/spec/dummy/Rakefile +7 -0
- data/spec/dummy/app/assets/javascripts/application.js +15 -0
- data/spec/dummy/app/assets/stylesheets/application.css +13 -0
- data/spec/dummy/app/controllers/application_controller.rb +3 -0
- data/spec/dummy/app/controllers/drawings_controller.rb +18 -0
- data/spec/dummy/app/helpers/application_helper.rb +2 -0
- data/spec/dummy/app/models/drawing.rb +2 -0
- data/spec/dummy/app/views/drawings/method_draw.html.erb +3 -0
- data/spec/dummy/app/views/drawings/method_draw_tag.html.erb +3 -0
- data/spec/dummy/app/views/layouts/application.html.erb +14 -0
- data/spec/dummy/config.ru +4 -0
- data/spec/dummy/config/application.rb +27 -0
- data/spec/dummy/config/boot.rb +5 -0
- data/spec/dummy/config/database.yml +25 -0
- data/spec/dummy/config/environment.rb +5 -0
- data/spec/dummy/config/environments/development.rb +29 -0
- data/spec/dummy/config/environments/production.rb +80 -0
- data/spec/dummy/config/environments/test.rb +36 -0
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +16 -0
- data/spec/dummy/config/initializers/mime_types.rb +5 -0
- data/spec/dummy/config/initializers/secret_token.rb +12 -0
- data/spec/dummy/config/initializers/session_store.rb +3 -0
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +23 -0
- data/spec/dummy/config/routes.rb +8 -0
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/0_create_drawings.rb +7 -0
- data/spec/dummy/db/schema.rb +20 -0
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +922 -0
- data/spec/dummy/log/test.log +181 -0
- data/spec/dummy/public/404.html +26 -0
- data/spec/dummy/public/422.html +26 -0
- data/spec/dummy/public/500.html +25 -0
- data/spec/dummy/public/favicon.ico +0 -0
- data/spec/dummy/script/rails +6 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/01e63791dcd008779246d1eeeace9408 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/061f36c32f08daef6eca93b74eaf74fd +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/1dbfe77fba798ba3dc24571c3b6d7eed +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/1fd7477d83ec1798c2bc740be42bd6b2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/203471220004cb0cc667b886fb87dc46 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/213e12fc648032455ca0b118e987cca6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/296bbe63b0505bc5be472fc1c8a1a5fd +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3239b44c026d7c1646c17a10c72905bf +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/38c8fbf05056bbe66399b6923521dc20 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/3e30c8cfdf7deeda4607e4a8298f09a5 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/4bdd61ba53e8d9b7c19afea13c6e8985 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/52b0b11efea48f1fe5e46eeb4aa20193 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/5ef314d6f1af1570631d60b7f9a96d6c +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6215f00c593e1789ef865a545b17fc14 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/624fdd5478edd235a86af4b6168d0f75 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6299190ac3952cf7eee042e60c9aee89 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/62a95a2d67ec78570de6d0b31436206a +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/65ed942dea29700b739c2292791eb65e +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/66eb709561f77a29885af4423a3eb193 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/6f8f2c21bc49ae5ebad6e8a96cea4fe6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/85dab60ed9ec9625b7ee22d4342fe26c +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/86358bce0bfd5de6ac8afb1bfa9d675b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/8b835ce894c1218dea1e7c83a9109d2d +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/8e177cc7106653a1e053bb2444bb43a5 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/8f41435d82ae4df55ae7dfdc1e99b0bb +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/94be0a0bca76437d0766c265a9cdecda +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/9a093e6973aa150a0a4388167364593d +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/a280ac195f56a87267d2ec5d3e22ebcd +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b13cddebc9106da6cfaf949ab3856d1f +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/b29ac216cb03ce2f30655a0d9bed77d4 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c39d32e3ef6cc89f9c522212e65c49e1 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/c9910a0652952be02900dc71594d4384 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cb14e22baac3ab2cc947628f283e117b +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d1475c156face9f06092c9cf89905372 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d22aa5a4d864d00cced2437352fe8fe4 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d46cc5e60d1b2a20d622cdf9bab35fad +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/d7f27a7f35278e87c69668a65683360a +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e0080336bb31d78e9efab59b234e0d85 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e06104d99b055e792effca7bd66ad384 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e095df19da361d5f53d90f6749a38ea6 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e5fb97d39fdd2e383e61115ef06079fd +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/e6d1ec9817258cfda7c68499a841a9d2 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/edec019e8f1d7e758eb45524a913fd47 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f37cf330dccb15bee2a195f643f3ba29 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/cache/assets/development/sprockets/fc84011813992cacde5880c6b21701de +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/061f36c32f08daef6eca93b74eaf74fd +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/38c8fbf05056bbe66399b6923521dc20 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/3e30c8cfdf7deeda4607e4a8298f09a5 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/52b0b11efea48f1fe5e46eeb4aa20193 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/5ef314d6f1af1570631d60b7f9a96d6c +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/6299190ac3952cf7eee042e60c9aee89 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/62a95a2d67ec78570de6d0b31436206a +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/65ed942dea29700b739c2292791eb65e +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/85dab60ed9ec9625b7ee22d4342fe26c +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/a280ac195f56a87267d2ec5d3e22ebcd +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cb14e22baac3ab2cc947628f283e117b +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d1475c156face9f06092c9cf89905372 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/e0080336bb31d78e9efab59b234e0d85 +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
- data/spec/dummy/tmp/pids/server.pid +1 -0
- data/spec/features/method_draw_spec.rb +10 -0
- data/spec/features/method_draw_tag_spec.rb +11 -0
- data/spec/lib/method_draw/method_draw_spec.rb +27 -0
- data/spec/lib/method_draw/method_draw_tag_spec.rb +19 -0
- data/spec/lib/method_draw_spec.rb +11 -0
- data/spec/test_helper.rb +24 -0
- data/vendor/assets/javascripts/method-draw-js/browser-not-supported.html +27 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Arvo-Regular-webfont.svg +145 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Arvo-Regular-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.svg +133 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.svg +235 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-bold-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-bolditalic-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-italic-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-regular-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/euphoriascript-regular-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.svg +939 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.svg +682 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.eot +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/oswald-bold-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/oswald-light-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/shadowsintolight-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-black-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-blackitalic-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-italic-webfont.ttf +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-regular-webfont.woff +0 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/test.html +62 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/test.svg +15 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/test_ff.svg +16 -0
- data/vendor/assets/javascripts/method-draw-js/css/font-files/test_ffsvg.svg +13 -0
- data/vendor/assets/javascripts/method-draw-js/css/fonts.css +72 -0
- data/vendor/assets/javascripts/method-draw-js/css/method-draw.compiled.css +417 -0
- data/vendor/assets/javascripts/method-draw-js/css/method-draw.css +2083 -0
- data/vendor/assets/javascripts/method-draw-js/embedapi.html +56 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/closepath_icons.svg +41 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-arrows.js +298 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-closepath.js +92 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-connector.js +587 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-eyedropper.js +135 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-foreignobject.js +277 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-grid.js +186 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-helloworld.js +78 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-imagelib.js +444 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-imagelib.xml +14 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-markers.js +576 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-server_moinsave.js +56 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-server_opensave.js +180 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.js +358 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.xml +8 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper-icon.xml +17 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper.svg +15 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/fileopen.php +31 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/filesave.php +44 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/foreignobject-icons.xml +96 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/grid-icon.xml +30 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/helloworld-icon.xml +21 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/imagelib/index.html +64 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/imagelib/smiley.svg +12 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/markers-icons.xml +115 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib.svg +10 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/arrow.json +40 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/dialog_balloon.json +14 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/flowchart.json +20 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/game.json +13 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/math.json +8 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/misc.json +6 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/music.json +21 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/nature.json +36 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/object.json +30 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/raphael.txt +12 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/raphael_1.json +7 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/social.json +21 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/symbol.json +35 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/ui.json +57 -0
- data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/weather.json +26 -0
- data/vendor/assets/javascripts/method-draw-js/icons/jquery.svgicons.js +471 -0
- data/vendor/assets/javascripts/method-draw-js/images/AlphaBar.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/Bars.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/Maps.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/NoColor.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/README.txt +61 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-bottom.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-bottom.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-center.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-center.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-left.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-left.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-middle.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-middle.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-right.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-right.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-top.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/align-top.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/bar-opacity.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/bold.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/cancel.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/circle.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/clear.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/clone.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/conn.svg +29 -0
- data/vendor/assets/javascripts/method-draw-js/images/copy.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/cross.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/cut.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/delete.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/document-properties.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/drag.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/dragging.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/dropdown.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/ellipse.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/ellipse.svg +8 -0
- data/vendor/assets/javascripts/method-draw-js/images/eye.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/eye.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/eyedropper.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/eyedropper_tool.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/fhpath.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/flyouth.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/flyup.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/freehand-circle.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/freehand-square.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/go-down.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/go-up.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/image.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/image.svg +12 -0
- data/vendor/assets/javascripts/method-draw-js/images/italic.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/italic.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/line.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/link_controls.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/logo.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/map-opacity.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/mappoint.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/mappoint_c.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/mappoint_f.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/move_bottom.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/move_top.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/node_clone.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/node_delete.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/none.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/open.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/paste.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/path.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/path.svg +10 -0
- data/vendor/assets/javascripts/method-draw-js/images/pencil.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/pencil.svg +11 -0
- data/vendor/assets/javascripts/method-draw-js/images/pencil_cursor.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/picker.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/placeholder.svg +10 -0
- data/vendor/assets/javascripts/method-draw-js/images/polygon.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/polygon.svg +1 -0
- data/vendor/assets/javascripts/method-draw-js/images/preview-opacity.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/rangearrows.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/rangearrows2.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/rect.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/redo.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/reorient.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/rotate.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/save.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/select.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/select.svg +10 -0
- data/vendor/assets/javascripts/method-draw-js/images/select_node.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/sep.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/shape_group.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/shape_ungroup.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/source.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/spinbtn_updn_big.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/square.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/svg_edit_icons.svg +455 -0
- data/vendor/assets/javascripts/method-draw-js/images/svg_edit_icons.svgz +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/text.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/text.svg +10 -0
- data/vendor/assets/javascripts/method-draw-js/images/to_path.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/undo.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/view-refresh.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/wave.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/wireframe.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/zoom.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/images/zoom.svg +12 -0
- data/vendor/assets/javascripts/method-draw-js/index.html +631 -0
- data/vendor/assets/javascripts/method-draw-js/lib/canvg/canvg.js +2620 -0
- data/vendor/assets/javascripts/method-draw-js/lib/canvg/rgbcolor.js +287 -0
- data/vendor/assets/javascripts/method-draw-js/lib/contextmenu.js +68 -0
- data/vendor/assets/javascripts/method-draw-js/lib/contextmenu/jquery.contextMenu.js +223 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/LICENSE +202 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/README +3 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/css/jPicker.css +250 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/css/jgraduate.css +332 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/AlphaBar.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/Bars.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/Maps.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/NoColor.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/bar-opacity.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/eyedropper.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/map-opacity.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint_c.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint_f.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/picker.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/preview-opacity.png +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/rangearrows.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/rangearrows2.gif +0 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jpicker.min.js +2087 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jquery.jgraduate.js +1175 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jquery.jgraduate.min.js +37 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jquery-draginput.js +181 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js +54 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jquery-ui/jquery-ui-1.8.custom.min.js +84 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jquery.js +2 -0
- data/vendor/assets/javascripts/method-draw-js/lib/jquerybbq/jquery.bbq.min.js +18 -0
- data/vendor/assets/javascripts/method-draw-js/lib/js-hotkeys/README.md +45 -0
- data/vendor/assets/javascripts/method-draw-js/lib/js-hotkeys/jquery.hotkeys.min.js +15 -0
- data/vendor/assets/javascripts/method-draw-js/lib/mousewheel.js +84 -0
- data/vendor/assets/javascripts/method-draw-js/lib/requestanimationframe.js +24 -0
- data/vendor/assets/javascripts/method-draw-js/lib/taphold.js +136 -0
- data/vendor/assets/javascripts/method-draw-js/lib/touch.js +28 -0
- data/vendor/assets/javascripts/method-draw-js/method-draw.compiled.css +417 -0
- data/vendor/assets/javascripts/method-draw-js/method-draw.compiled.js +692 -0
- data/vendor/assets/javascripts/method-draw-js/method-draw.manifest +121 -0
- data/vendor/assets/javascripts/method-draw-js/src/browser.js +181 -0
- data/vendor/assets/javascripts/method-draw-js/src/dialog.js +49 -0
- data/vendor/assets/javascripts/method-draw-js/src/dragupload.js +11 -0
- data/vendor/assets/javascripts/method-draw-js/src/draw.js +533 -0
- data/vendor/assets/javascripts/method-draw-js/src/embedapi.js +173 -0
- data/vendor/assets/javascripts/method-draw-js/src/history.js +601 -0
- data/vendor/assets/javascripts/method-draw-js/src/math.js +247 -0
- data/vendor/assets/javascripts/method-draw-js/src/method-draw.js +4140 -0
- data/vendor/assets/javascripts/method-draw-js/src/path.js +979 -0
- data/vendor/assets/javascripts/method-draw-js/src/sanitize.js +273 -0
- data/vendor/assets/javascripts/method-draw-js/src/select.js +608 -0
- data/vendor/assets/javascripts/method-draw-js/src/svgcanvas.js +9047 -0
- data/vendor/assets/javascripts/method-draw-js/src/svgtransformlist.js +291 -0
- data/vendor/assets/javascripts/method-draw-js/src/svgutils.js +648 -0
- data/vendor/assets/javascripts/method-draw-js/src/units.js +281 -0
- data/vendor/assets/javascripts/method-draw-js/svgedit.compiled.css +417 -0
- data/vendor/assets/javascripts/method-draw-js/svgedit.compiled.js +691 -0
- data/vendor/assets/javascripts/method-draw-js/temp.css +2665 -0
- 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
|
+
|