diff options
author | Florian Hülsmann <fh@cbix.de> | 2012-03-26 04:53:49 +0400 |
---|---|---|
committer | Florian Hülsmann <fh@cbix.de> | 2012-03-26 04:53:49 +0400 |
commit | 4a18d1a86d87dba3ae1eccd7284023c355d442d9 (patch) | |
tree | baa7b03f291936ffa1aedb14f265118e723e3ea2 /files_svgedit | |
parent | 8d3677e4332e77c91e3e0216e344049226e46114 (diff) |
created branch for migrating to svg-edit 2.6; basic integration of svg-edit 2.6
Diffstat (limited to 'files_svgedit')
180 files changed, 0 insertions, 32101 deletions
diff --git a/files_svgedit/css/jgraduate/LICENSE b/files_svgedit/css/jgraduate/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/files_svgedit/css/jgraduate/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/files_svgedit/css/jgraduate/README b/files_svgedit/css/jgraduate/README deleted file mode 100644 index ef3e21ff8..000000000 --- a/files_svgedit/css/jgraduate/README +++ /dev/null @@ -1,3 +0,0 @@ -jGraduate - A jQuery plugin for picking gradients - -Licensed under the Apache License 2. See LICENSE for more information. diff --git a/files_svgedit/css/jgraduate/css/jPicker-1.0.12.css b/files_svgedit/css/jgraduate/css/jPicker-1.0.12.css deleted file mode 100644 index c943ae16f..000000000 --- a/files_svgedit/css/jgraduate/css/jPicker-1.0.12.css +++ /dev/null @@ -1,191 +0,0 @@ -.jPicker_Picker {
- display: inline-block;
- height: 24px; /* change this value if using a different sized color picker icon */
- position: relative; /* make this element an absolute positioning container */
- text-align: left; /* make the zero width children position to the left of container */
- width: 25px; /* change this value if using a different sized color picker icon */
-}
-.jPicker_Color, .jPicker_Alpha {
- background-position: 2px 2px;
- display: block;
- height: 100%;
- left: 0px;
- position: absolute;
- top: 0px;
- width: 100%;
-}
-.jPicker_Icon {
- background-repeat: no-repeat;
- cursor: pointer;
- display: block;
- height: 100%;
- left: 0px;
- position: absolute;
- top: 0px;
- width: 100%;
-}
-.jPicker_Container {
- display: none;
- z-index: 10; /* make sure container draws above color picker icon in Firefox/Safari/Chrome/Opera/etc. -
- IE calculates z-index so this won't work - we will hide all color picker icons placed after the selected one in code when shown in IE */
-}
-.jPicker_table {
- background-color: #efefef;
- border: 1px outset #666;
- font-family: Arial, Helvetica, Sans-Serif;
- font-size: 12px;
- margin: 0px;
- padding: 5px;
- width: 550px;
-}
-.jPicker_table td {
- margin: 0px;
- padding: 0px;
- vertical-align: top;
-}
-.jPicker_MoveBar {
- background-color: #dddddd;
- border: 1px outset #aaa;
- cursor: move;
- height: 12px;
-}
-.jPicker_Title {
- font-size: 11px !important;
- font-weight: bold;
- margin: -2px 0px 0px 0px;
- padding: 0px;
- text-align: center;
- width: 100%;
-}
-.jPicker_ColorMap {
- border: 2px inset #eee;
- cursor: crosshair;
- height: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
- margin: 0px 5px 0px 5px;
- overflow: hidden; /* hide the overdraw of the Color Map icon when at edge of viewing box */
- padding: 0px;
- position: relative; /* make this element an absolute positioning container */
- width: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
-}
-div[class="jPicker_ColorMap"] {
- height: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
- width: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
-}
-.jPicker_ColorBar {
- border: 2px inset #eee;
- cursor: n-resize;
- height: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
- margin: 12px 10px 0px 5px;
- padding: 0px;
- position: relative;
- width: 24px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 20px later */
-}
-div[class="jPicker_ColorBar"] {
- height: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
- width: 20px; /* correct to 20px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
-}
-.jPicker_ColorMap_l1, .jPicker_ColorMap_l2, .jPicker_ColorMap_l3, .jPicker_ColorBar_l1, .jPicker_ColorBar_l2, .jPicker_ColorBar_l3, .jPicker_ColorBar_l4, .jPicker_ColorBar_l5, .jPicker_ColorBar_l6 {
- background-color: transparent;
- background-image: none;
- display: block;
- height: 256px; /* must specific pixel height. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
- would not be drawn if its overflow is set to hidden. */
- left: 0px;
- position: absolute;
- top: 0px;
-}
-.jPicker_ColorMap_l1, .jPicker_ColorMap_l2, .jPicker_ColorMap_l3 {
- width: 256px; /* must specific pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
- would not be drawn if its overflow is set to hidden. */
-}
-.jPicker_ColorBar_l1, .jPicker_ColorBar_l2, .jPicker_ColorBar_l3, .jPicker_ColorBar_l4, .jPicker_ColorBar_l5, .jPicker_ColorBar_l6 {
- width: 20px; /* must specific pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
- would not be drawn if its overflow is set to hidden. */
-}
-.jPicker_ColorMap_l1, .jPicker_ColorMap_l2, .jPicker_ColorBar_l6 {
- background-repeat: no-repeat;
-}
-.jPicker_ColorMap_l3, .jPicker_ColorBar_l5 {
- background-repeat: repeat;
-}
-.jPicker_ColorBar_l1, .jPicker_ColorBar_l2, .jPicker_ColorBar_l3, .jPicker_ColorBar_l4 {
- background-repeat: repeat-x;
-}
-.jPicker_ColorMap_Arrow {
- display: block;
- position: absolute;
-}
-.jPicker_ColorBar_Arrow {
- display: block;
- left: -10px; /* (arrow width / 2) - (element width / 2) - position arrows' center in elements' center */
- position: absolute;
-}
-.jPicker_Preview {
- font-size: x-small;
- text-align: center;
-}
-.jPicker_Preview div {
- border: 2px inset #eee;
- height: 62px;
- margin: 0px auto;
- padding: 0px;
- width: 62px;
-}
-.jPicker_Preview div span {
- border: 1px solid #000;
- display: block;
- height: 30px;
- margin: 0px auto;
- padding: 0px;
- width: 60px;
-}
-.jPicker_Preview div span.jPicker_Active {
- border-bottom-width: 0px;
-}
-.jPicker_Preview div span.jPicker_Current {
- border-top-width: 0px;
- cursor: pointer;
-}
-.jPicker_OkCancel {
- text-align: center;
- width: 120px;
-}
-.jPicker_OkCancel input {
- width: 100px;
-}
-.jPicker_OkCancel input.jPicker_Ok {
- margin: 12px 0px 5px 0px;
-}
-.jPicker_Text {
- text-align: left;
-}
-.jPicker_HueText, .jPicker_SaturationText, .jPicker_BrightnessText, .jPicker_RedText, .jPicker_GreenText, .jPicker_BlueText, .jPicker_AlphaText {
- background-color: #fff;
- border: 1px inset #aaa;
- margin: 0px 0px 0px 5px;
- text-align: left;
- width: 30px;
-}
-.jPicker_HexText {
- background-color: #fff;
- border: 1px inset #aaa;
- margin: 0px 0px 0px 5px;
- width: 65px;
-}
-.jPicker_Grid {
- text-align: center;
-}
-span.jPicker_QuickColor {
- border: 1px inset #aaa;
- cursor: pointer;
- display: block;
- float: left;
- height: 13px;
- line-height: 13px;
- margin: 2px 2px 1px 2px;
- padding: 0px;
- width: 15px;
-}
-span[class="jPicker_QuickColor"] {
- width: 13px;
-}
\ No newline at end of file diff --git a/files_svgedit/css/jgraduate/css/jgraduate.css b/files_svgedit/css/jgraduate/css/jgraduate.css deleted file mode 100644 index 06ab1708b..000000000 --- a/files_svgedit/css/jgraduate/css/jgraduate.css +++ /dev/null @@ -1,270 +0,0 @@ -/* - * jGraduate Default CSS - * - * Copyright (c) 2009 Jeff Schiller - * - * Licensed under the Apache License Version 2 - */ - -h2.jGraduate_Title { - font-family: Arial, Helvetica, Sans-Serif; - font-size: 11px !important; - font-weight: bold; - margin: -13px 0px 0px 0px; - padding: 0px; - text-align: center; -} - -.jGraduate_Picker { - font-family: Arial, Helvetica, Sans-Serif; - font-size: 12px; - border-style: solid; - border-color: lightgrey black black lightgrey; - border-width: 1px; - background-color: #EFEFEF; - position: absolute; - padding: 10px; -} - -.jGraduate_tabs li { - background-color: #ccc; - display: inline; - border: solid 1px grey; - padding: 3px; - margin: 2px; - cursor: pointer; -} - -li.jGraduate_tab_current { - background-color: #EFEFEF; - display: inline; - padding: 3px; - margin: 2px; - border: solid 1px black; - cursor: pointer; -} - -.jGraduate_colPick { - display: none; -} - -.jGraduate_lgPick { - display: none; - border: outset 1px #666; - padding: 10px 7px 5px 5px; - overflow: auto; -} - -.jGraduate_rgPick { - display: none; - border: outset 1px #666; - padding: 10px 7px 5px 5px; - overflow: auto; -/* position: relative;*/ -} - -.jGraduate_tabs { - position: relative; - background-color: #EFEFEF; - padding: 0px; - margin: 0px; - margin-bottom: 5px; -} - -div.jGraduate_Swatch { - float: left; - margin: 8px; -} -div.jGraduate_GradContainer { - border: 2px inset #EEE; - background-image: url(../images/map-opacity.png); - background-position: 0px 0px; - height: 256px; -} - -.jGraduate_AlphaArrows { - position: absolute; - margin-top: -10px; - margin-left: 250.5px; -} - -div.jGraduate_Opacity { - border: 2px inset #eee; - margin-top: 14px; - background-color: black; - background-image: url(../images/Maps.png); - background-position: 0px -2816px; - height: 20px; - cursor: ew-resize; -} - -div.lg_jGraduate_OpacityField { - position: absolute; - bottom: 25px; - left: 292px; -} - -div.jGraduate_Form { - float: left; - width: 140px; - margin: -3px 3px 0px 4px; -} - -div.jGraduate_StopSection { - width: 120px; - text-align: center; -} - -div.jGraduate_RadiusField { - - text-align: center; - float: left; -} - -div.jGraduate_RadiusField input { - margin-top: 10px; -} - -.jGraduate_RadiusField .jGraduate_Form_Section { - width: 250px; - padding: 2px; - height: 80px; - overflow: visible; -} - -.jGraduate_Form_Section input[type=text] { - width: 38px; -} - -.jGraduate_Radius { - border:1px solid #BBB; - cursor:ew-resize; - height:20px; - margin-top:14px; - position: relative; -} - - -.jGraduate_RadiusArrows { - top: 0; - left: 0; - position: absolute; - margin-top: -10px; - margin-left: 250.5px; -} - - -div.jGraduate_OkCancel { - float: left; - width: 113px; -} - -input.jGraduate_Ok, input.jGraduate_Cancel { - display: block; - width: 100px; - margin-left: -4px; - margin-right: -4px; -} -input.jGraduate_Ok { - margin: 9px -4px 5px -4px; -} - -.colorBox { - float: left; - height: 16px; - width: 16px; - border: 1px solid #808080; - cursor: pointer; - margin: 4px 4px 4px 30px; -} - -.colorBox + label { - float: left; - margin-top: 7px; -} - -label.jGraduate_Form_Heading { - position: relative; - top: 10px; - background-color: #EFEFEF; - padding: 2px; - font-weight: bold; - font-size: 13px; -} - -div.jGraduate_Form_Section { - border-style: solid; - border-width: 1px; - border-color: grey; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - padding: 15px 5px 5px 5px; - margin: 2px; - width: 110px; - text-align: center; - overflow: auto; -} - -div.jGraduate_LightBox { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - bottom: 0px; - background-color: #000; - opacity: 0.5; - display: none; -} - -div.jGraduate_stopPicker { - position: absolute; - display: none; - background: #E8E8E8; -} - - -.jGraduate_rgPick { - width: 530px; -} - -.jGraduate_rgPick div.jGraduate_Form { - width: 270px; - position: absolute; - left: 284px; - width: 266px; - top: 130px; - margin: -3px 3px 0px 4px; -} - -.jGraduate_Colorblocks { - display: table; - border-spacing: 0 5px; -} - -.jGraduate_colorblock { - display: table-row; -} - -.jGraduate_Colorblocks .jGraduate_colorblock > * { - display: table-cell; - vertical-align: middle; - margin: 0; - float: none; -} - -.jGraduate_rgPick div.jGraduate_StopSection { - float: left; - width: 133px; - margin: 0; -} - -.jGraduate_rgPick .jGraduate_OkCancel { - position: absolute; - right: 0; -} - -.rg_jGraduate_OpacityField { - position: absolute; - left: 288px; - bottom: 24px; -}
\ No newline at end of file diff --git a/files_svgedit/css/spinbtn/JQuerySpinBtn.css b/files_svgedit/css/spinbtn/JQuerySpinBtn.css deleted file mode 100644 index 7a279a09e..000000000 --- a/files_svgedit/css/spinbtn/JQuerySpinBtn.css +++ /dev/null @@ -1,41 +0,0 @@ -/* - Styles to make ordinary <INPUT type="text"/> look like a spinbutton/spinbox control. - Use with JQuerySpinBtn.js to provide the spin functionality by reacting to mouse etc. - (Requires a reference to the JQuery library found at http://jquery.com/src/latest/) - (Hats-off to John Resig for creating the excellent JQuery library. It is fab.) - - This control is achieved with no extra html markup whatsoever and uses unobtrusive javascript. - - Written by George Adamson, Software Unity (george.jquery@softwareunity.com) September 2006. - Big improvements added by Mark Gibson, (mgibson@designlinks.net) September 2006. - - Do contact me with comments and suggestions but please don't ask for support. - As much as I'd love to help with specific problems I have plenty to get on with already! - - Go ahead and use it in your own projects. This code is provided 'as is'. - Sure I've tested in heaps of ways. Its good for me, but you use it at your own risk. - SoftwareUnity and I are certainly not responsible if your computer sets fire to the sofa, - hacks into the pentagon, hijacks a plane or gives you any kind of hassle whatsoever. - - If you'd like your spin-button image in a different place then you'll need to alter both - the CSS below and the javascript isMouseOverUpDn() function to accommodate the new position. - You could even have left and right buttons either side of the textbox. -*/ - -INPUT.spin-button { - /* explicitly put padding for top/bottom/left in here so that Opera displays it better */ - padding: 2px 20px 2px 2px; - background-repeat:no-repeat; /* Warning: Img may disappear in Firefox if you use 'background-attachment:fixed' ! */ - background-position:100% 0%; - background-image:url('spinbtn_updn.png'); - background-color:white; /* Needed for Opera */ -} - -INPUT.spin-button.up { /* Change button img when mouse is over the UP-arrow */ - cursor:pointer; - background-position:100% -18px; /* 18px matches height of 2 visible buttons */ -} -INPUT.spin-button.down { /* Change button img when mouse is over the DOWN-arrow */ - cursor:pointer; - background-position:100% -36px; /* 36px matches height of 2x2 visible buttons */ -} diff --git a/files_svgedit/css/spinbtn/spinbtn_updn.png b/files_svgedit/css/spinbtn/spinbtn_updn.png Binary files differdeleted file mode 100644 index 8baa1b0cc..000000000 --- a/files_svgedit/css/spinbtn/spinbtn_updn.png +++ /dev/null diff --git a/files_svgedit/css/svg-editor.css b/files_svgedit/css/svg-editor.css deleted file mode 100644 index 016ca7bca..000000000 --- a/files_svgedit/css/svg-editor.css +++ /dev/null @@ -1,1203 +0,0 @@ -body { - background: #D8D8D8; -} - -#svg_editor { - font-size: 8pt; - font-family: Verdana, Helvetica, Arial; - color: #000000; -} - -#svg_editor a { - color: #0000FF; -} - -#svg_editor hr { - border: none; - border-bottom: 1px solid #808080; -} - -#svg_editor select { - margin-top: 4px; -} - -#svg_editor #svgroot { - -moz-user-select: none; - -webkit-user-select: none; - position: absolute; - top: 0; - left: 0; -} - -#svg_editor #svgcanvas { - line-height: normal; - display: inline-block; - background-color: #A0A0A0; - text-align: center; - vertical-align: middle; - width: 640px; - height: 480px; - -apple-dashboard-region:dashboard-region(control rectangle 0px 0px 0px 0px); /* for widget regions that shouldn't react to dragging */ - position: relative; - /* - A subtle gradient effect in the canvas. - Just experimenting - not sure if this is worth it. - */ - background: -moz-radial-gradient(45deg,#bbb,#222); - background: -webkit-gradient(radial, center center, 3, center center, 1000, from(#bbb), to(#222)); -} - -#svg_editor div#palette_holder { - overflow-x: scroll; - overflow-y: hidden; - height: 31px; - border: 1px solid #808080; - border-top: none; - margin-top: 2px; - margin-left: 4px; - position: relative; - z-index: 2; -} - -#svg_editor #stroke_bg, -#svg_editor #fill_bg { - height: 16px; - width: 16px; - margin: 1px; -} - -#svg_editor #fill_color, #svg_editor #stroke_color { - height: 16px; - width: 16px; - border: 1px solid #808080; - cursor: pointer; - margin-top: -18px; - margin-left: 1px; -} - -#tool_stroke select { - margin-top: 0; -} - -#svg_editor #color_tools .icon_label { - padding: 3px 19%; - width: 28px; - height: 100%; - cursor: pointer; - -} - -#svg_editor #group_opacityLabel, -#svg_editor #zoomLabel { - cursor: pointer; - margin-right: 5px; - padding-top: 4px -} - -#color_tools .icon_label > * { - position: relative; - top: 1px; -} - -#svg_editor div#palette { - float: left; - width: 672px; - height: 16px; -} - -#svg_editor div#workarea { - display: inline-table-cell; - position:absolute; - top: 75px; - left: 40px; - bottom: 62px; - right: 14px; - background-color: #A0A0A0; - border: 1px solid #808080; - overflow: auto; - text-align: center; -} - -#svg_editor #sidepanels { - display: inline-block; - position:absolute; - top: 75px; - bottom: 60px; - right: 0px; - width: 2px; - padding: 10px; - border-color: #808080; - border-style: solid; - border-width: 1px; - border-left: none; -} - -#svg_editor #layerpanel { - display: inline-block; - position:absolute; - top: 1px; - bottom: 0px; - right: 0px; - width: 0px; - overflow: auto; - margin: 0px; - -moz-user-select: none; - -webkit-user-select: none; - -} - -/* - border-style: solid; - border-color: #666; - border-width: 0px 0px 0px 1px; -*/ -#svg_editor #sidepanel_handle { - display: inline-block; - position: absolute; - background-color: #D8D8D8; - font-weight: bold; - left: 0px; - top: 40%; - width: 1em; - padding: 5px 1px 5px 5px; - margin-left: 3px; - cursor: pointer; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - -moz-user-select: none; - -webkit-user-select: none; -} - -#svg_editor #sidepanel_handle:hover { - font-weight: bold; -} - -#svg_editor #sidepanel_handle * { - cursor: pointer; - -moz-user-select: none; - -webkit-user-select: none; -} -#svg_editor #layerbuttons { - margin: 0px; - padding: 0px; - padding-left: 2px; - padding-right: 2px; - width: 106px; - height: 20px; - border-right: 1px solid #FFFFFF; - border-bottom: 1px solid #FFFFFF; - border-left: 1px solid #808080; - border-top: 1px solid #808080; - overflow: auto; -} - -#svg_editor .layer_button { - width: 14px; - height: 14px; - padding: 1px; - border-left: 1px solid #FFFFFF; - border-top: 1px solid #FFFFFF; - border-right: 1px solid #808080; - border-bottom: 1px solid #808080; - cursor: pointer; - float: left; - margin-right: 3px; -} - -#svg_editor .layer_buttonpressed { - width: 14px; - height: 14px; - padding: 1px; - border-right: 1px solid #FFFFFF; - border-bottom: 1px solid #FFFFFF; - border-left: 1px solid #808080; - border-top: 1px solid #808080; - cursor: pointer; -} - -#svg_editor #layerlist { - margin: 1px; - padding: 0px; - width: 110px; - border-collapse: collapse; - border: 1px solid #808080; - background-color: #FFFFFF; -} - -#svg_editor #layerlist tr.layer { - background-color: #FFFFFF; - margin: 0px; - padding: 0px; -} -#svg_editor #layerlist tr.layersel { - border: 1px solid #808080; - background-color: #CCCCCC; -} - -#svg_editor #layerlist td.layervis { - width: 22px; - cursor:pointer; -} -#svg_editor #layerlist td.layerinvis { - background-image: none; - cursor:pointer; -} - -#svg_editor #layerlist td.layervis * { - display: block; -} - -#svg_editor #layerlist td.layerinvis * { - display: none; -} - -#svg_editor #layerlist td.layername { - cursor: pointer; -} - -#svg_editor #layerlist tr.layersel td.layername { - font-weight: bold; -} - -#svg_editor #selLayerLabel { - white-space: nowrap; -} - -#svg_editor #selLayerNames { - display: block; -} - -#svg_editor div.palette_item { - height: 16px; - width: 16px; - float: left; -} - -#svg_editor #main_button { - position: absolute; - top: 4px; - left: 4px; -} - - -#svg_editor #main_icon { - background: #E8E8E8; - position: relative; - top: -2px; - left: -2px; - padding: 1px 0 2px 1px; - width: 44px; - height: 30px; - border-left: 1px solid #FFF; - border-top: 1px solid #FFF; - border-right: 1px solid #808080; - border-bottom: 1px solid #808080; - border-radius: 8px; - -moz-border-radius: 8px; - -webkit-border-radius: 8px; -} - -#svg_editor .tool_button:hover, -#svg_editor .push_button:hover, -#svg_editor .buttonup:hover, -#svg_editor .buttondown, -#svg_editor .tool_button_current, -#svg_editor .push_button_pressed -{ - border-left: 1px #fcd9ba solid !important; - border-top: 1px #fcd9ba solid !important; - border-right: 1px #e0a874 solid !important; - border-bottom: 1px #e0a874 solid !important; - background-color: #FFC !important; -} - -#svg_editor .tool_button_current, -#svg_editor .push_button_pressed, -#svg_editor .buttondown { - background-color: #f4e284 !important; - border-top: 1px solid #630 !important; - border-left: 1px solid #630 !important; -} - -#svg_editor #main_icon span { - position: absolute; - width: 100%; - height: 100%; - display: block; - z-index: 2; -} - -#svg_editor #main_menu { - z-index: 12; - background: #E8E8E8; - position: relative; - width: 200px; - padding: 5px; - -moz-box-shadow: #555 1px 1px 4px; - -webkit-box-shadow: #555 1px 1px 4px; - font-size: 1.1em; - display: none; - overflow: hidden; - border: 1px outset gray; - clear: both; -} - -#svg_editor #main_menu ul, -#svg_editor #main_menu li { - list-style: none; - margin: 0; - padding: 0; -} - -#svg_editor #main_menu li { -/* height: 35px;*/ - line-height: 22px; - padding-top: 7px; - padding-left: 7px; - margin: -5px; - overflow: auto; - cursor: default; -} - -#svg_editor #main_menu li:hover { - background: #FFC; -} - -#svg_editor #main_menu li > div { - float: left; - padding-right: 5px; -} - -#svg_editor #main_menu p { - margin-top: 5px; -} - -#svg_editor #logo img { - border: 0; - width: 32px; - height: 32px; -} - - - -#main_icon > div { - float: left; -} - -#svg_editor #main_button .dropdown { - padding-top: 28%; - margin-left: -1px; -} - - - -#svg_editor #tools_top { - position: absolute; - left: 50px; - right: 2px; - top: 2px; - height: 72px; - border-bottom: none; - /* Ideally this should be auto (makes scrollbar if needed), but currently hides - the .dropdown lists. -/* overflow: auto;*/ -} - -#svg_editor #tools_left { - position: absolute; - border-right: none; - width: 32px; - top: 75px; - left: 0; - padding-left: 2px; - background: #D8D8D8; /* Needed so flyout icons don't appear on the left */ - z-index: 4; -} - -#workarea.wireframe #svgcontent * { - fill: none; - stroke: #000; - stroke-width: 1px; - stroke-opacity: 1.0; - stroke-dasharray: 0; - opacity: 1; - pointer-events: stroke; - vector-effect: non-scaling-stroke; - filter: none; -} - -#workarea.wireframe #svgcontent text { - fill: #000; - stroke: none; -} - -#workarea.wireframe #canvasBackground rect { - fill: #FFF !important; -} - -#svg_editor #selected_panel, -#svg_editor #multiselected_panel, -#svg_editor #g_panel, -#svg_editor #rect_panel, -#svg_editor #circle_panel, -#svg_editor #ellipse_panel, -#svg_editor #line_panel, -#svg_editor #image_panel, -#svg_editor #text_panel, -#svg_editor #path_node_panel { - display: none; -} - -#svg_editor #multiselected_panel .selected_tool { - vertical-align: 12px; -} - -#svg_editor #tools_top > div, #tools_top { - line-height: 26px; -} - -#svg_editor div.toolset, -#svg_editor div.toolset > * { - float: left; -} - -#svg_editor div.toolset { - height: 34px; -} - - -#tools_top > div > * { - float: left; - margin-right: 2px; -} - -#tools_top label { - margin-top: 0; - margin-left: 5px; -} - -#tools_top input { - margin-top: 5px; - height: 15px; -} - -#svg_editor #tools_left .tool_button, -#svg_editor #tools_left .tool_button_current { - position: relative; - z-index: 11; -} - -#svg_editor .flyout_arrow_horiz { - position: absolute; - bottom: -1px; - right: 0; - z-index: 10; -} - - -span.zoom_tool { - line-height: 26px; - padding: 3px; -} - -#zoom_panel { - margin-top: 5px; -} - -.dropdown { - position: relative; -} - -#svg_editor .dropdown button { - width: 15px; - height: 21px; - margin: 6px 0 0 1px; - padding: 0; - border-left: 1px solid #FFFFFF; - border-top: 1px solid #FFFFFF; - border-right: 1px solid #808080; - border-bottom: 1px solid #808080; - background-color: #E8E8E8; -} - -.dropdown button.down { - border-left: 1px solid #808080; - border-top: 1px solid #808080; - border-right: 1px solid #FFFFFF; - border-bottom: 1px solid #FFFFFF; - background-color: #B0B0B0; -} - -.dropdown ul { - list-style: none; - position: absolute; - margin: 0; - padding: 0; - left: -80px; - top: 26px; - z-index: 4; - display: none; -} - -.dropup ul { - top: auto; - bottom: 26px; -} - -.dropdown li { - display: block; - width: 120px; - padding: 4px; - background: #E8E8E8; - border: 1px solid #B0B0B0; - margin: 0 0 -1px 0; - line-height: 16px; -} - -.dropdown li:hover { - background-color: #FFC; -} - -.dropdown li.special { - padding: 10px 4px; -} - -.dropdown li.special:hover { - background: #FFC; -} - -#font_family_dropdown li { - font-size: 1.4em; -} - -#font_family { - margin-left: 5px; - margin-right: 0; -} - - -#svg_editor .tool_button, -#svg_editor .push_button, -#svg_editor .tool_button_current, -#svg_editor .push_button_pressed -{ - height: 24px; - width: 24px; - margin: 2px; - padding: 2px; - border-left: 1px solid #FFF; - border-top: 1px solid #FFF; - border-right: 1px solid #808080; - border-bottom: 1px solid #808080; - background-color: #E8E8E8; - cursor: pointer; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; -} - -#svg_editor #main_menu li#tool_open, #svg_editor #main_menu li#tool_import { - position: relative; - overflow: hidden; -} - -#tool_image { - overflow: hidden; -} - -#tool_open input, -#tool_import input, -#tool_image input { - position: absolute; - opacity: 0; - font-size: 10em; - top: -5px; - right: -5px; - margin: 0; - cursor: pointer; /* Sadly doesn't appear to have an effect */ -} - -#svg_editor .disabled { - opacity: 0.5; - cursor: default; -} - -#svg_editor .tool_sep { - width: 1px; - background: #888; - border-left: 1px outset #EEE; - margin: 2px 3px; - padding: 0; - height: 24px; - -} - -#svg_editor .icon_label { - float: left; - padding-top: 3px; - padding-right: 3px; - box-sizing: border-box; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - height: 0; -} - -#svg_editor .width_label { - padding-right: 5px; -} - -#tool_bold, #tool_italic { - font: bold 2.1em/1.1em serif; - text-align: center; - padding-left: 2px; - position: relative; -} - -#text { - position: absolute; - left: -9999px; -} - -#tool_bold span, #tool_italic span { - position: absolute; - width: 100%; - height: 100%; - top: 0; left: 0; - background: #000; - opacity: 0; -} - -#tool_italic { - font-weight: normal; - font-style: italic; -} - -#url_notice { - padding-top: 4px; - display: none; -} - -#svg_editor #color_picker { - position: absolute; - display: none; - background: #E8E8E8; - height: 350px; - z-index: 4; -} - -#svg_editor .tools_flyout { - position: absolute; - display: none; - cursor: pointer; - width: 400px; -} - -#svg_editor .tools_flyout_v { - position: absolute; - display: none; - cursor: pointer; - width: 30px; -} - -#svg_editor .tools_flyout .tool_button { - float: left; - background-color: #E8E8E8; - border-left: 1px solid #FFFFFF; - border-top: 1px solid #FFFFFF; - border-right: 1px solid #808080; - border-bottom: 1px solid #808080; - height: 28px; - width: 28px; -} - -#svg_editor #tools_bottom { - position: absolute; - left: 40px; - right: 0; - bottom: 0; - height: 64px; - overflow: visible; -} - -#svg_editor #tools_bottom_1 { - width: 115px; - float: left; -} - -#svg_editor #tools_bottom_2 { - width: 165px; - position: relative; - float: left; -} - -#tools_bottom input[type=text] { - width: 2.2em; -} - -#svg_editor #color_tools { - display: table; - margin-top: 1px; - border-spacing: 0 3px; - clip: rect(0,0,10px,0); -} - -.color_tool { - display: table-row; - overflow: hidden; - height: 26px; - padding: 0 4px; -} - -.color_tool > * { - display: table-cell; - background: #f0f0f0; - padding: 0 5px 0 0; - vertical-align: middle; -/* height: 25px;*/ -} - -#toggle_stroke_tools { - letter-spacing: -.2em; - padding-right: 8px; -} - -#toggle_stroke_tools:hover { - cursor: pointer; - background: #FFC; -} - -.stroke_tool { - display: none; - white-space: nowrap; -} - -#svg_editor .stroke_tool button { - margin-top: 3px; - background: #F0F0F0; -} - -#svg_editor .stroke_tool div div { - -moz-user-select: none; - -webkit-user-select: none; - width: 20px; - height: 20px; - margin: 1px 0; - padding: 1px; - border: 1px solid #DDD; -} - -#svg_editor .stroke_tool:hover div > * { - background-color: #FFC; -} - -#svg_editor .stroke_tool.down div div, -#svg_editor .stroke_tool.down button, -#tools_top .dropdown.down > * { - border: 1px inset gray; - background: #F4E284; -} - -.stroke_tool > div { - width: 42px; -} - -.stroke_tool > div > * { - float: left; -} - - -#tools_top .dropdown .icon_label { - border: 1px solid transparent; - margin-top: 3px; - height: auto; -} - -#option_lists ul { - display: none; - position: absolute; - height: auto; - z-index: 3; - margin: 0; - list-style: none; - padding-left: 0; -} - -#option_lists .optcols2 { - width: 70px; - margin-left: -15px; -} - -#option_lists .optcols3 { - width: 90px; - margin-left: -31px; -} - -#option_lists .optcols4 { - width: 130px; - margin-left: -44px; -} - -#option_lists ul[class^=optcols] li { - float: left; -} - -#svg_editor ul li.current { - background-color: #F4E284; -} - -#svg_editor #option_lists ul li { - margin: 0; - border-radius: 0; - -moz-border-radius: 0; - -webkit-border-radius: 0; -} - -.color_tool > *:first-child { - -moz-border-radius-topleft: 4px; - -moz-border-radius-bottomleft: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-bottom-left-radius: 4px; - padding-right: 0; -} - -.color_tool > *:last-child { - -moz-border-radius-topright: 4px; - -moz-border-radius-bottomright: 4px; - -webkit-border-top-right-radius: 4px; - -webkit-border-bottom-right-radius: 4px; -} - -#svg_editor #tool_opacity { - position: absolute; - top: 4px; - right: 2px; - background: #f0f0f0; - height: 26px; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - padding: 0 3px; -} - -#tools_bottom .dropdown button { - margin-top: 2px; -} - -#opacity_dropdown li { - width: 140px; -} - -#svg_editor #copyright { - text-align: right; - padding-right: .3em; -} - -#svg_source_editor { - display: none; -} - -#svg_source_editor #svg_source_overlay { - position: absolute; - top: 0px; - right: 0px; - left: 0px; - bottom: 0px; - background-color: black; - opacity: 0.6; - z-index: 5; -} - -#svg_source_editor #svg_source_container { - position: absolute; - top: 30px; - left: 30px; - right: 30px; - bottom: 30px; - background-color: #B0B0B0; - opacity: 1.0; - text-align: center; - border: 1px outset #777; - z-index: 6; -} - -#bg_blocks { - overflow: auto; - margin-left: 30px; -} - -#svg_docprops #svg_docprops_container { - position: absolute; - top: 50px; - padding: 10px; - background-color: #B0B0B0; - border: 1px outset #777; - opacity: 1.0; -/* width: 450px;*/ - font-family: Verdana, Helvetica, sans-serif; - font-size: .8em; - z-index: 20001; -} - -#svg_docprops .error { - border: 1px solid red; - padding: 3px; -} - -#svg_docprops #resolution { - max-width: 14em; -} - -#tool_docprops_back { - margin-left: 1em; - overflow: auto; -} - -#svg_docprops_container #svg_docprops_docprops, -#svg_docprops_container #svg_docprops_prefs { - float: left; - width: 221px; - margin: 5px .7em; - overflow: hidden; -} - -#svg_docprops_container #svg_docprops_prefs { - float: right; -} - -#svg_docprops legend { - max-width: 195px; -} - -#svg_docprops_docprops > legend, #svg_docprops_prefs > legend { - font-weight: bold; - font-size: 1.1em; -} - - -#svg_docprops_container fieldset { - padding: 5px; - margin: 5px; - border: 1px solid #DDD; -} - -#svg_docprops_container label { - display: block; - margin: .5em; -} - -#svginfo_bg_note { - font-size: .9em; - font-style: italic; - color: #444; -} - -#canvas_title { - display: block; -} - -#svg_source_editor #svg_source_textarea { - position: relative; - width: 95%; - top: 5px; - height: 250px; - padding: 5px; - font-size: 12px; -} - -#svg_source_editor #tool_source_back { - text-align: left; - padding-left: 20px; -} - -#svg_docprops_container div.color_block { - float: left; - margin: 2px; - padding: 20px; -} - -#change_background div.cur_background { - border: 2px solid blue; - padding: 18px; -} - -#background_img { - position: absolute; - top: 0; - left: 0; - text-align: left; -} - -#svg_docprops button { - margin-top: 0; - margin-bottom: 5px; -} - -#svg_docprops { - display: none; -} - -#image_save_opts label { - font-size: .9em; -} - -#image_save_opts input { - margin-left: 0; -} - -#svg_docprops #svg_docprops_overlay { - position: absolute; - top: 0px; - right: 0px; - left: 0px; - bottom: 0px; - background-color: black; - opacity: 0.6; - z-index: 20000; -} - -.toolbar_button button { - border:1px solid #dedede; - line-height:130%; - float: left; - background: #E8E8E8 none; - padding:5px 10px 5px 7px; /* Firefox */ - line-height:17px; /* Safari */ - margin: 5px 20px 0 0; - - border: 1px #808080 solid; - border-top-color: #FFF; - border-left-color: #FFF; - - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.toolbar_button button:hover { - border: 1px #e0a874 solid; - border-top-color: #fcd9ba; - border-left-color: #fcd9ba; - background-color: #FFC; -} -.toolbar_button button:active { - background-color: #F4E284; - border-left: 1px solid #663300; - border-top: 1px solid #663300; -} - -.toolbar_button button .svg_icon { - margin:0 3px -3px 0 !important; - padding:0; - border:none; - width:16px; - height:16px; -} - -#dialog_box { - display: none; -} - -#dialog_box_overlay { - background: black; - opacity: .5; - height:100%; - left:0; - position:absolute; - top:0; - width:100%; - z-index: 6; -} - -#dialog_content { - height: 95px; - margin: 10px 10px 5px 10px; - background: #DDD; - overflow: auto; - text-align: left; - border: 1px solid #B0B0B0; -} - -#dialog_content.prompt { - height: 75px; -} - -#dialog_content p { - margin: 10px; - line-height: 1.3em; -} - -#dialog_container { - position: absolute; - font-family: Verdana; - text-align: center; - left: 50%; - top: 50%; - width: 300px; - margin-left: -150px; - height: 150px; - margin-top: -80px; - position:fixed; - z-index:50001; - background: #CCC; - border: 1px outset #777; - font-family:Verdana,Helvetica,sans-serif; - font-size:0.8em; -} - -#dialog_container, #dialog_content { - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; -} - -#dialog_buttons input[type=text] { - width: 90%; - display: block; - margin: 0 0 5px 11px; -} - -#dialog_buttons input[type=button] { - margin: 0 1em; -} - - -/* Slider -----------------------------------*/ -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } - -.ui-slider { - border: 1px solid #B0B0B0; -} - -.ui-slider-handle { - background: #B0B0B0; - border: 1px solid #000; -} - -/* Necessary to keep the flyouts sized properly */ -#svg_editor .tools_flyout .tool_button, -#svg_editor .tools_flyout .tool_flyout { - padding: 2px; - width: 24px; - height: 24px; - margin: 0; - border-radius: 0px; - -moz-border-radius: 0px; - -webkit-border-radius: 0px; -} - diff --git a/files_svgedit/extensions/closepath_icons.svg b/files_svgedit/extensions/closepath_icons.svg deleted file mode 100644 index 7294f5ead..000000000 --- a/files_svgedit/extensions/closepath_icons.svg +++ /dev/null @@ -1,41 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> -<g id="tool_closepath"> -<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <g> - <title>Layer 1</title> - <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/> - <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/> - <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/> - <g stroke-width="15" stroke="#00f" fill="#0ff"> - <circle r="30" cy="41" cx="123"/> - <circle r="30" cy="146" cx="40"/> - <circle r="30" cy="260" cx="69"/> - <circle r="30" cy="260" cx="228"/> - <circle r="30" cy="148" cx="260"/> - </g> - </g> -</svg> -</g> -<g id="tool_openpath"> -<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <g> - <title>Layer 1</title> - <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/> - <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/> - <g stroke-width="15" stroke="#00f" fill="#0ff"> - <circle r="30" cy="41" cx="123"/> - <circle r="30" cy="146" cx="40"/> - <circle r="30" cy="260" cx="69"/> - <circle r="30" cy="260" cx="228"/> - <circle r="30" cy="148" cx="260"/> - </g> - <g stroke="#A00" stroke-width="15" fill="none"> - <line x1="168" y1="24" x2="210" y2="150"/> - <line x1="210" y1="24" x2="168" y2="150"/> - </g> - </g> -</svg> -</g> - -<g id="svg_eof"/> -</svg>
\ No newline at end of file diff --git a/files_svgedit/extensions/ext-arrows.js b/files_svgedit/extensions/ext-arrows.js deleted file mode 100644 index ebc3930cf..000000000 --- a/files_svgedit/extensions/ext-arrows.js +++ /dev/null @@ -1,298 +0,0 @@ -/* - * ext-arrows.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Alexis Deveria - * - */ - - -svgEditor.addExtension("Arrows", function(S) { - var svgcontent = S.svgcontent, - addElem = S.addSvgElementFromJson, - nonce = S.nonce, - randomize_ids = S.randomize_ids, - selElems; - - svgCanvas.bind('setarrownonce', setArrowNonce); - svgCanvas.bind('unsetsetarrownonce', unsetArrowNonce); - - var lang_list = { - "en":[ - {"id": "arrow_none", "textContent": "No arrow" } - ], - "fr":[ - {"id": "arrow_none", "textContent": "Sans flèche" } - ] - }; - - var prefix = 'se_arrow_'; - if (randomize_ids) { - var arrowprefix = prefix + nonce + '_'; - } else { - var arrowprefix = prefix; - } - - var pathdata = { - fw: {d:"m0,0l10,5l-10,5l5,-5l-5,-5z", refx:8, id: arrowprefix + 'fw'}, - bk: {d:"m10,0l-10,5l10,5l-5,-5l5,-5z", refx:2, id: arrowprefix + 'bk'} - } - - function setArrowNonce(window, n) { - randomize_ids = true; - arrowprefix = prefix + n + '_'; - pathdata.fw.id = arrowprefix + 'fw'; - pathdata.bk.id = arrowprefix + 'bk'; - } - - function unsetArrowNonce(window) { - randomize_ids = false; - arrowprefix = prefix; - pathdata.fw.id = arrowprefix + 'fw'; - pathdata.bk.id = arrowprefix + 'bk'; - } - - function getLinked(elem, attr) { - var str = elem.getAttribute(attr); - if(!str) return null; - var m = str.match(/\(\#(.*)\)/); - if(!m || m.length !== 2) { - return null; - } - return S.getElem(m[1]); - } - - function showPanel(on) { - $('#arrow_panel').toggle(on); - - if(on) { - var el = selElems[0]; - var end = el.getAttribute("marker-end"); - var start = el.getAttribute("marker-start"); - var mid = el.getAttribute("marker-mid"); - var val; - - if(end && start) { - val = "both"; - } else if(end) { - val = "end"; - } else if(start) { - val = "start"; - } else if(mid) { - val = "mid"; - if(mid.indexOf("bk") != -1) { - val = "mid_bk"; - } - } - - if(!start && !mid && !end) { - val = "none"; - } - - $("#arrow_list").val(val); - } - } - - function resetMarker() { - var el = selElems[0]; - el.removeAttribute("marker-start"); - el.removeAttribute("marker-mid"); - el.removeAttribute("marker-end"); - } - - function addMarker(dir, type, id) { - // TODO: Make marker (or use?) per arrow type, since refX can be different - id = id || arrowprefix + dir; - - var marker = S.getElem(id); - - var data = pathdata[dir]; - - if(type == "mid") { - data.refx = 5; - } - - if(!marker) { - marker = addElem({ - "element": "marker", - "attr": { - "viewBox": "0 0 10 10", - "id": id, - "refY": 5, - "markerUnits": "strokeWidth", - "markerWidth": 5, - "markerHeight": 5, - "orient": "auto", - "style": "pointer-events:none" // Currently needed for Opera - } - }); - var arrow = addElem({ - "element": "path", - "attr": { - "d": data.d, - "fill": "#000000" - } - }); - marker.appendChild(arrow); - S.findDefs().appendChild(marker); - } - - marker.setAttribute('refX', data.refx); - - return marker; - } - - function setArrow() { - var type = this.value; - resetMarker(); - - if(type == "none") { - return; - } - - // Set marker on element - var dir = "fw"; - if(type == "mid_bk") { - type = "mid"; - dir = "bk"; - } else if(type == "both") { - addMarker("bk", type); - svgCanvas.changeSelectedAttribute("marker-start", "url(#" + pathdata.bk.id + ")"); - type = "end"; - dir = "fw"; - } else if (type == "start") { - dir = "bk"; - } - - addMarker(dir, type); - svgCanvas.changeSelectedAttribute("marker-"+type, "url(#" + pathdata[dir].id + ")"); - S.call("changed", selElems); - } - - function colorChanged(elem) { - var color = elem.getAttribute('stroke'); - - var mtypes = ['start','mid','end']; - var defs = S.findDefs(); - - $.each(mtypes, function(i, type) { - var marker = getLinked(elem, 'marker-'+type); - if(!marker) return; - - var cur_color = $(marker).children().attr('fill'); - var cur_d = $(marker).children().attr('d'); - var new_marker = null; - if(cur_color === color) return; - - var all_markers = $(defs).find('marker'); - // Different color, check if already made - all_markers.each(function() { - var attrs = $(this).children().attr(['fill', 'd']); - if(attrs.fill === color && attrs.d === cur_d) { - // Found another marker with this color and this path - new_marker = this; - } - }); - - if(!new_marker) { - // Create a new marker with this color - var last_id = marker.id; - var dir = last_id.indexOf('_fw') !== -1?'fw':'bk'; - - new_marker = addMarker(dir, type, arrowprefix + dir + all_markers.length); - - $(new_marker).children().attr('fill', color); - } - - $(elem).attr('marker-'+type, "url(#" + new_marker.id + ")"); - - // Check if last marker can be removed - var remove = true; - $(S.svgcontent).find('line, polyline, path, polygon').each(function() { - var elem = this; - $.each(mtypes, function(j, mtype) { - if($(elem).attr('marker-' + mtype) === "url(#" + marker.id + ")") { - return remove = false; - } - }); - if(!remove) return false; - }); - - // Not found, so can safely remove - if(remove) { - $(marker).remove(); - } - - }); - - } - - return { - name: "Arrows", - context_tools: [{ - type: "select", - panel: "arrow_panel", - title: "Select arrow type", - id: "arrow_list", - options: { - none: "No arrow", - end: "---->", - start: "<----", - both: "<--->", - mid: "-->--", - mid_bk: "--<--" - }, - defval: "none", - events: { - change: setArrow - } - }], - callback: function() { - $('#arrow_panel').hide(); - // Set ID so it can be translated in locale file - $('#arrow_list option')[0].id = 'connector_no_arrow'; - }, - addLangData: function(lang) { - return { - data: lang_list[lang] - }; - }, - selectedChanged: function(opts) { - - // Use this to update the current selected elements - selElems = opts.elems; - - var i = selElems.length; - var marker_elems = ['line','path','polyline','polygon']; - - while(i--) { - var elem = selElems[i]; - if(elem && $.inArray(elem.tagName, marker_elems) != -1) { - if(opts.selectedElement && !opts.multiselected) { - showPanel(true); - } else { - showPanel(false); - } - } else { - showPanel(false); - } - } - }, - elementChanged: function(opts) { - var elem = opts.elems[0]; - if(elem && ( - elem.getAttribute("marker-start") || - elem.getAttribute("marker-mid") || - elem.getAttribute("marker-end") - )) { - // var start = elem.getAttribute("marker-start"); - // var mid = elem.getAttribute("marker-mid"); - // var end = elem.getAttribute("marker-end"); - // Has marker, so see if it should match color - colorChanged(elem); - } - - } - }; -}); diff --git a/files_svgedit/extensions/ext-closepath.js b/files_svgedit/extensions/ext-closepath.js deleted file mode 100644 index bf8e72c94..000000000 --- a/files_svgedit/extensions/ext-closepath.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * ext-closepath.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Jeff Schiller - * - */ - -// This extension adds a simple button to the contextual panel for paths -// The button toggles whether the path is open or closed -svgEditor.addExtension("ClosePath", function(S) { - var selElems, - updateButton = function(path) { - var seglist = path.pathSegList, - closed = seglist.getItem(seglist.numberOfItems - 1).pathSegType==1, - showbutton = closed ? '#tool_openpath' : '#tool_closepath', - hidebutton = closed ? '#tool_closepath' : '#tool_openpath'; - $(hidebutton).hide(); - $(showbutton).show(); - }, - showPanel = function(on) { - $('#closepath_panel').toggle(on); - if (on) { - var path = selElems[0]; - if (path) updateButton(path); - } - }, - - toggleClosed = function() { - var path = selElems[0]; - if (path) { - var seglist = path.pathSegList, - last = seglist.numberOfItems - 1; - // is closed - if(seglist.getItem(last).pathSegType == 1) { - seglist.removeItem(last); - } - else { - seglist.appendItem(path.createSVGPathSegClosePath()); - } - updateButton(path); - } - }; - - return { - name: "ClosePath", - svgicons: "extensions/closepath_icons.svg", - buttons: [{ - id: "tool_openpath", - type: "context", - panel: "closepath_panel", - title: "Open path", - events: { - 'click': function() { - toggleClosed(); - } - } - }, - { - id: "tool_closepath", - type: "context", - panel: "closepath_panel", - title: "Close path", - events: { - 'click': function() { - toggleClosed(); - } - } - }], - callback: function() { - $('#closepath_panel').hide(); - }, - selectedChanged: function(opts) { - selElems = opts.elems; - var i = selElems.length; - - while(i--) { - var elem = selElems[i]; - if(elem && elem.tagName == 'path') { - if(opts.selectedElement && !opts.multiselected) { - showPanel(true); - } else { - showPanel(false); - } - } else { - showPanel(false); - } - } - } - }; -}); diff --git a/files_svgedit/extensions/ext-connector.js b/files_svgedit/extensions/ext-connector.js deleted file mode 100644 index 2f1990a1d..000000000 --- a/files_svgedit/extensions/ext-connector.js +++ /dev/null @@ -1,579 +0,0 @@ -/* - * ext-connector.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Alexis Deveria - * - */ - -svgEditor.addExtension("Connector", function(S) { - var svgcontent = S.svgcontent, - svgroot = S.svgroot, - getNextId = S.getNextId, - getElem = S.getElem, - addElem = S.addSvgElementFromJson, - selManager = S.selectorManager, - curConfig = svgEditor.curConfig, - started = false, - start_x, - start_y, - cur_line, - start_elem, - end_elem, - connections = [], - conn_sel = ".se_connector", - se_ns, -// connect_str = "-SE_CONNECT-", - selElems = []; - - var lang_list = { - "en":[ - {"id": "mode_connect", "title": "Connect two objects" } - ], - "fr":[ - {"id": "mode_connect", "title": "Connecter deux objets"} - ] - }; - - function getOffset(side, line) { - var give_offset = !!line.getAttribute('marker-' + side); -// var give_offset = $(line).data(side+'_off'); - - // TODO: Make this number (5) be based on marker width/height - var size = line.getAttribute('stroke-width') * 5; - return give_offset ? size : 0; - } - - function showPanel(on) { - var conn_rules = $('#connector_rules'); - if(!conn_rules.length) { - conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head'); - } - conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }"); - $('#connector_panel').toggle(on); - } - - function setPoint(elem, pos, x, y, setMid) { - var pts = elem.points; - var pt = svgroot.createSVGPoint(); - pt.x = x; - pt.y = y; - if(pos === 'end') pos = pts.numberOfItems-1; - // TODO: Test for this on init, then use alt only if needed - try { - pts.replaceItem(pt, pos); - } catch(err) { - // Should only occur in FF which formats points attr as "n,n n,n", so just split - var pt_arr = elem.getAttribute("points").split(" "); - for(var i=0; i< pt_arr.length; i++) { - if(i == pos) { - pt_arr[i] = x + ',' + y; - } - } - elem.setAttribute("points",pt_arr.join(" ")); - } - - if(setMid) { - // Add center point - var pt_start = pts.getItem(0); - var pt_end = pts.getItem(pts.numberOfItems-1); - setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2); - } - } - - function updateLine(diff_x, diff_y) { - // Update line with element - var i = connections.length; - while(i--) { - var conn = connections[i]; - var line = conn.connector; - var elem = conn.elem; - - var pre = conn.is_start?'start':'end'; -// var sw = line.getAttribute('stroke-width') * 5; - - // Update bbox for this element - var bb = $(line).data(pre+'_bb'); - bb.x = conn.start_x + diff_x; - bb.y = conn.start_y + diff_y; - $(line).data(pre+'_bb', bb); - - var alt_pre = conn.is_start?'end':'start'; - - // Get center pt of connected element - var bb2 = $(line).data(alt_pre+'_bb'); - var src_x = bb2.x + bb2.width/2; - var src_y = bb2.y + bb2.height/2; - - // Set point of element being moved - var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); // $(line).data(pre+'_off')?sw:0 - setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true); - - // Set point of connected element - var pt2 = getBBintersect(pt.x, pt.y, $(line).data(alt_pre + '_bb'), getOffset(alt_pre, line)); - setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true); - - } - } - - function findConnectors(elems) { - if(!elems) elems = selElems; - var connectors = $(svgcontent).find(conn_sel); - connections = []; - - // Loop through connectors to see if one is connected to the element - connectors.each(function() { - var start = $(this).data("c_start"); - var end = $(this).data("c_end"); - - var parts = [getElem(start), getElem(end)]; - for(var i=0; i<2; i++) { - var c_elem = parts[i]; - var add_this = false; - // The connected element might be part of a selected group - $(c_elem).parents().each(function() { - if($.inArray(this, elems) !== -1) { - // Pretend this element is selected - add_this = true; - } - }); - - if(!c_elem || !c_elem.parentNode) { - $(this).remove(); - continue; - } - if($.inArray(c_elem, elems) !== -1 || add_this) { - var bb = svgCanvas.getStrokedBBox([c_elem]); - connections.push({ - elem: c_elem, - connector: this, - is_start: (i === 0), - start_x: bb.x, - start_y: bb.y - }); - } - } - }); - } - - function updateConnectors(elems) { - // Updates connector lines based on selected elements - // Is not used on mousemove, as it runs getStrokedBBox every time, - // which isn't necessary there. - findConnectors(elems); - if(connections.length) { - // Update line with element - var i = connections.length; - while(i--) { - var conn = connections[i]; - var line = conn.connector; - var elem = conn.elem; - - var sw = line.getAttribute('stroke-width') * 5; - var pre = conn.is_start?'start':'end'; - - // Update bbox for this element - var bb = svgCanvas.getStrokedBBox([elem]); - bb.x = conn.start_x; - bb.y = conn.start_y; - $(line).data(pre+'_bb', bb); - var add_offset = $(line).data(pre+'_off'); - - var alt_pre = conn.is_start?'end':'start'; - - // Get center pt of connected element - var bb2 = $(line).data(alt_pre+'_bb'); - var src_x = bb2.x + bb2.width/2; - var src_y = bb2.y + bb2.height/2; - - // Set point of element being moved - var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); - setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true); - - // Set point of connected element - var pt2 = getBBintersect(pt.x, pt.y, $(line).data(alt_pre + '_bb'), getOffset(alt_pre, line)); - setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true); - - // Update points attribute manually for webkit - if(navigator.userAgent.indexOf('AppleWebKit') != -1) { - var pts = line.points; - var len = pts.numberOfItems; - var pt_arr = Array(len); - for(var j=0; j< len; j++) { - var pt = pts.getItem(j); - pt_arr[j] = pt.x + ',' + pt.y; - } - line.setAttribute("points",pt_arr.join(" ")); - } - - } - } - } - - function getBBintersect(x, y, bb, offset) { - if(offset) { - offset -= 0; - bb = $.extend({}, bb); - bb.width += offset; - bb.height += offset; - bb.x -= offset/2; - bb.y -= offset/2; - } - - var mid_x = bb.x + bb.width/2; - var mid_y = bb.y + bb.height/2; - var len_x = x - mid_x; - var len_y = y - mid_y; - - var slope = Math.abs(len_y/len_x); - - var ratio; - - if(slope < bb.height/bb.width) { - ratio = (bb.width/2) / Math.abs(len_x); - } else { - ratio = (bb.height/2) / Math.abs(len_y); - } - - - return { - x: mid_x + len_x * ratio, - y: mid_y + len_y * ratio - } - } - - // Do once - (function() { - var gse = svgCanvas.groupSelectedElements; - - svgCanvas.groupSelectedElements = function() { - svgCanvas.removeFromSelection($(conn_sel).toArray()); - gse(); - } - - var mse = svgCanvas.moveSelectedElements; - - svgCanvas.moveSelectedElements = function() { - svgCanvas.removeFromSelection($(conn_sel).toArray()); - mse.apply(this, arguments); - updateConnectors(); - } - - se_ns = svgCanvas.getEditorNS(); - }()); - - // Do on reset - function init() { - // Make sure all connectors have data set - $(svgcontent).find('*').each(function() { - var conn = this.getAttributeNS(se_ns, "connector"); - if(conn) { - this.setAttribute('class', conn_sel.substr(1)); - var conn_data = conn.split(' '); - var sbb = svgCanvas.getStrokedBBox([getElem(conn_data[0])]); - var ebb = svgCanvas.getStrokedBBox([getElem(conn_data[1])]); - $(this).data('c_start',conn_data[0]) - .data('c_end',conn_data[1]) - .data('start_bb', sbb) - .data('end_bb', ebb); - svgCanvas.getEditorNS(true); - } - }); -// updateConnectors(); - } - -// $(svgroot).parent().mousemove(function(e) { -// // if(started -// // || svgCanvas.getMode() != "connector" -// // || e.target.parentNode.parentNode != svgcontent) return; -// -// console.log('y') -// // if(e.target.parentNode.parentNode === svgcontent) { -// // -// // } -// }); - - return { - name: "Connector", - svgicons: "images/conn.svg", - buttons: [{ - id: "mode_connect", - type: "mode", - icon: "images/cut.png", - title: "Connect two objects", - key: "Shift+3", - includeWith: { - button: '#tool_line', - isDefault: false, - position: 1 - }, - events: { - 'click': function() { - svgCanvas.setMode("connector"); - } - } - }], - addLangData: function(lang) { - return { - data: lang_list[lang] - }; - }, - mouseDown: function(opts) { - var e = opts.event; - start_x = opts.start_x, - start_y = opts.start_y; - var mode = svgCanvas.getMode(); - - if(mode == "connector") { - - if(started) return; - - var mouse_target = e.target; - - var parents = $(mouse_target).parents(); - - if($.inArray(svgcontent, parents) != -1) { - // Connectable element - - // If child of foreignObject, use parent - var fo = $(mouse_target).closest("foreignObject"); - start_elem = fo.length ? fo[0] : mouse_target; - - // Get center of source element - var bb = svgCanvas.getStrokedBBox([start_elem]); - var x = bb.x + bb.width/2; - var y = bb.y + bb.height/2; - - started = true; - cur_line = addElem({ - "element": "polyline", - "attr": { - "id": getNextId(), - "points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y), - "stroke": '#' + curConfig.initStroke.color, - "stroke-width": (!start_elem.stroke_width || start_elem.stroke_width == 0) ? curConfig.initStroke.width : start_elem.stroke_width, - "fill": "none", - "opacity": curConfig.initStroke.opacity, - "style": "pointer-events:none" - } - }); - $(cur_line).data('start_bb', bb); - } - return { - started: true - }; - } else if(mode == "select") { - findConnectors(); - } - }, - mouseMove: function(opts) { - var zoom = svgCanvas.getZoom(); - var e = opts.event; - var x = opts.mouse_x/zoom; - var y = opts.mouse_y/zoom; - - var diff_x = x - start_x, - diff_y = y - start_y; - - var mode = svgCanvas.getMode(); - - if(mode == "connector" && started) { - - var sw = cur_line.getAttribute('stroke-width') * 3; - // Set start point (adjusts based on bb) - var pt = getBBintersect(x, y, $(cur_line).data('start_bb'), getOffset('start', cur_line)); - start_x = pt.x; - start_y = pt.y; - - setPoint(cur_line, 0, pt.x, pt.y, true); - - // Set end point - setPoint(cur_line, 'end', x, y, true); - } else if(mode == "select") { - var slen = selElems.length; - - while(slen--) { - var elem = selElems[slen]; - // Look for selected connector elements - if(elem && $(elem).data('c_start')) { - // Remove the "translate" transform given to move - svgCanvas.removeFromSelection([elem]); - svgCanvas.getTransformList(elem).clear(); - - } - } - if(connections.length) { - updateLine(diff_x, diff_y); - - - } - } - }, - mouseUp: function(opts) { - var zoom = svgCanvas.getZoom(); - var e = opts.event, - x = opts.mouse_x/zoom, - y = opts.mouse_y/zoom, - mouse_target = e.target; - - if(svgCanvas.getMode() == "connector") { - var fo = $(mouse_target).closest("foreignObject"); - if(fo.length) mouse_target = fo[0]; - - var parents = $(mouse_target).parents(); - - if(mouse_target == start_elem) { - // Start line through click - started = true; - return { - keep: true, - element: null, - started: started - } - } else if($.inArray(svgcontent, parents) === -1) { - // Not a valid target element, so remove line - $(cur_line).remove(); - started = false; - return { - keep: false, - element: null, - started: started - } - } else { - // Valid end element - end_elem = mouse_target; - - var start_id = start_elem.id, end_id = end_elem.id; - var conn_str = start_id + " " + end_id; - var alt_str = end_id + " " + start_id; - // Don't create connector if one already exists - var dupe = $(svgcontent).find(conn_sel).filter(function() { - var conn = this.getAttributeNS(se_ns, "connector"); - if(conn == conn_str || conn == alt_str) return true; - }); - if(dupe.length) { - $(cur_line).remove(); - return { - keep: false, - element: null, - started: false - } - } - - var bb = svgCanvas.getStrokedBBox([end_elem]); - - var pt = getBBintersect(start_x, start_y, bb, getOffset('start', cur_line)); - setPoint(cur_line, 'end', pt.x, pt.y, true); - $(cur_line) - .data("c_start", start_id) - .data("c_end", end_id) - .data("end_bb", bb); - se_ns = svgCanvas.getEditorNS(true); - cur_line.setAttributeNS(se_ns, "se:connector", conn_str); - cur_line.setAttribute('class', conn_sel.substr(1)); - cur_line.setAttribute('opacity', 1); - svgCanvas.addToSelection([cur_line]); - svgCanvas.moveToBottomSelectedElement(); - selManager.requestSelector(cur_line).showGrips(false); - started = false; - return { - keep: true, - element: cur_line, - started: started - } - } - } - }, - selectedChanged: function(opts) { - - // Use this to update the current selected elements - selElems = opts.elems; - - var i = selElems.length; - - while(i--) { - var elem = selElems[i]; - if(elem && $(elem).data('c_start')) { - selManager.requestSelector(elem).showGrips(false); - if(opts.selectedElement && !opts.multiselected) { - // TODO: Set up context tools and hide most regular line tools - showPanel(true); - } else { - showPanel(false); - } - } else { - showPanel(false); - } - } - updateConnectors(); - }, - elementChanged: function(opts) { - var elem = opts.elems[0]; - if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") { - // Update svgcontent (can change on import) - svgcontent = elem; - init(); - } - - // Has marker, so change offset - if(elem && ( - elem.getAttribute("marker-start") || - elem.getAttribute("marker-mid") || - elem.getAttribute("marker-end") - )) { - var start = elem.getAttribute("marker-start"); - var mid = elem.getAttribute("marker-mid"); - var end = elem.getAttribute("marker-end"); - cur_line = elem; - $(elem) - .data("start_off", !!start) - .data("end_off", !!end); - - if(elem.tagName == "line" && mid) { - // Convert to polyline to accept mid-arrow - - var x1 = elem.getAttribute('x1')-0; - var x2 = elem.getAttribute('x2')-0; - var y1 = elem.getAttribute('y1')-0; - var y2 = elem.getAttribute('y2')-0; - var id = elem.id; - - var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' '); - var pline = addElem({ - "element": "polyline", - "attr": { - "points": (x1+','+y1+ mid_pt +x2+','+y2), - "stroke": elem.getAttribute('stroke'), - "stroke-width": elem.getAttribute('stroke-width'), - "marker-mid": mid, - "fill": "none", - "opacity": elem.getAttribute('opacity') || 1 - } - }); - $(elem).after(pline).remove(); - svgCanvas.clearSelection(); - pline.id = id; - svgCanvas.addToSelection([pline]); - elem = pline; - } - } - // Update line if it's a connector - if(elem.getAttribute('class') == conn_sel.substr(1)) { - var start = getElem($(elem).data('c_start')); - updateConnectors([start]); - } else { - updateConnectors(); - } - }, - toolButtonStateUpdate: function(opts) { - if(opts.nostroke) { - if ($('#mode_connect').hasClass('tool_button_current')) { - clickSelect(); - } - } - $('#mode_connect') - .toggleClass('disabled',opts.nostroke); - } - }; -}); diff --git a/files_svgedit/extensions/ext-eyedropper.js b/files_svgedit/extensions/ext-eyedropper.js deleted file mode 100644 index 257650d7b..000000000 --- a/files_svgedit/extensions/ext-eyedropper.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * ext-eyedropper.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Jeff Schiller - * - */ - -svgEditor.addExtension("eyedropper", function(S) { - var svgcontent = S.svgcontent, - svgns = "http://www.w3.org/2000/svg", - svgdoc = S.svgroot.parentNode.ownerDocument, - ChangeElementCommand = svgCanvas.getPrivateMethods().ChangeElementCommand, - addToHistory = svgCanvas.getPrivateMethods().addCommandToHistory, - currentStyle = {fillPaint: "red", fillOpacity: 1.0, - strokePaint: "black", strokeOpacity: 1.0, - strokeWidth: 5, strokeDashArray: null, - opacity: 1.0, - strokeLinecap: 'butt', - strokeLinejoin: 'miter', - }; - - function getStyle(opts) { - // if we are in eyedropper mode, we don't want to disable the eye-dropper tool - var mode = svgCanvas.getMode(); - if (mode == "eyedropper") return; - - var elem = null; - var tool = $('#tool_eyedropper'); - // enable-eye-dropper if one element is selected - if (opts.elems.length == 1 && opts.elems[0] && - $.inArray(opts.elems[0].nodeName, ['svg', 'g', 'use']) == -1) - { - elem = opts.elems[0]; - tool.removeClass('disabled'); - // grab the current style - currentStyle.fillPaint = elem.getAttribute("fill") || "black"; - currentStyle.fillOpacity = elem.getAttribute("fill-opacity") || 1.0; - currentStyle.strokePaint = elem.getAttribute("stroke"); - currentStyle.strokeOpacity = elem.getAttribute("stroke-opacity") || 1.0; - currentStyle.strokeWidth = elem.getAttribute("stroke-width"); - currentStyle.strokeDashArray = elem.getAttribute("stroke-dasharray"); - currentStyle.strokeLinecap = elem.getAttribute("stroke-linecap"); - currentStyle.strokeLinejoin = elem.getAttribute("stroke-linejoin"); - currentStyle.opacity = elem.getAttribute("opacity") || 1.0; - } - // disable eye-dropper tool - else { - tool.addClass('disabled'); - } - - } - - return { - name: "eyedropper", - svgicons: "extensions/eyedropper-icon.xml", - buttons: [{ - id: "tool_eyedropper", - type: "mode", - title: "Eye Dropper Tool", - events: { - "click": function() { - svgCanvas.setMode("eyedropper"); - } - } - }], - - // if we have selected an element, grab its paint and enable the eye dropper button - selectedChanged: getStyle, - elementChanged: getStyle, - - mouseDown: function(opts) { - var mode = svgCanvas.getMode(); - if (mode == "eyedropper") { - var e = opts.event; - var target = e.target; - if ($.inArray(target.nodeName, ['svg', 'g', 'use']) == -1) { - var changes = {}; - - var change = function(elem, attrname, newvalue) { - changes[attrname] = elem.getAttribute(attrname); - elem.setAttribute(attrname, newvalue); - }; - - if (currentStyle.fillPaint) change(target, "fill", currentStyle.fillPaint); - if (currentStyle.fillOpacity) change(target, "fill-opacity", currentStyle.fillOpacity); - if (currentStyle.strokePaint) change(target, "stroke", currentStyle.strokePaint); - if (currentStyle.strokeOpacity) change(target, "stroke-opacity", currentStyle.strokeOpacity); - if (currentStyle.strokeWidth) change(target, "stroke-width", currentStyle.strokeWidth); - if (currentStyle.strokeDashArray) change(target, "stroke-dasharray", currentStyle.strokeDashArray); - if (currentStyle.opacity) change(target, "opacity", currentStyle.opacity); - if (currentStyle.strokeLinecap) change(target, "stroke-linecap", currentStyle.strokeLinecap); - if (currentStyle.strokeLinejoin) change(target, "stroke-linejoin", currentStyle.strokeLinejoin); - - addToHistory(new ChangeElementCommand(target, changes)); - } - } - }, - }; -}); diff --git a/files_svgedit/extensions/ext-foreignobject.js b/files_svgedit/extensions/ext-foreignobject.js deleted file mode 100644 index 9d401825a..000000000 --- a/files_svgedit/extensions/ext-foreignobject.js +++ /dev/null @@ -1,277 +0,0 @@ -/* - * ext-foreignobject.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Jacques Distler - * Copyright(c) 2010 Alexis Deveria - * - */ - -svgEditor.addExtension("foreignObject", function(S) { - var svgcontent = S.svgcontent, - addElem = S.addSvgElementFromJson, - selElems, - svgns = "http://www.w3.org/2000/svg", - xlinkns = "http://www.w3.org/1999/xlink", - xmlns = "http://www.w3.org/XML/1998/namespace", - xmlnsns = "http://www.w3.org/2000/xmlns/", - se_ns = "http://svg-edit.googlecode.com", - htmlns = "http://www.w3.org/1999/xhtml", - mathns = "http://www.w3.org/1998/Math/MathML", - editingforeign = false, - svgdoc = S.svgroot.parentNode.ownerDocument, - started, - newFO; - - - var properlySourceSizeTextArea = function(){ - // TODO: remove magic numbers here and get values from CSS - var height = $('#svg_source_container').height() - 80; - $('#svg_source_textarea').css('height', height); - }; - - function showPanel(on) { - var fc_rules = $('#fc_rules'); - if(!fc_rules.length) { - fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head'); - } - fc_rules.text(!on?"":" #tool_topath { display: none !important; }"); - $('#foreignObject_panel').toggle(on); - } - - function toggleSourceButtons(on) { - $('#tool_source_save, #tool_source_cancel').toggle(!on); - $('#foreign_save, #foreign_cancel').toggle(on); - } - - - // Function: setForeignString(xmlString, elt) - // This function sets the content of element elt to the input XML. - // - // Parameters: - // xmlString - The XML text. - // elt - the parent element to append to - // - // Returns: - // This function returns false if the set was unsuccessful, true otherwise. - function setForeignString(xmlString) { - var elt = selElems[0]; - try { - // convert string into XML document - var newDoc = Utils.text2xml('<svg xmlns="'+svgns+'" xmlns:xlink="'+xlinkns+'">'+xmlString+'</svg>'); - // run it through our sanitizer to remove anything we do not support - S.sanitizeSvg(newDoc.documentElement); - elt.parentNode.replaceChild(svgdoc.importNode(newDoc.documentElement.firstChild, true), elt); - S.call("changed", [elt]); - svgCanvas.clearSelection(); - } catch(e) { - console.log(e); - return false; - } - - return true; - }; - - function showForeignEditor() { - var elt = selElems[0]; - if (!elt || editingforeign) return; - editingforeign = true; - toggleSourceButtons(true); - elt.removeAttribute('fill'); - - var str = S.svgToString(elt, 0); - $('#svg_source_textarea').val(str); - $('#svg_source_editor').fadeIn(); - properlySourceSizeTextArea(); - $('#svg_source_textarea').focus(); - } - - function setAttr(attr, val) { - svgCanvas.changeSelectedAttribute(attr, val); - S.call("changed", selElems); - } - - - return { - name: "foreignObject", - svgicons: "extensions/foreignobject-icons.xml", - buttons: [{ - id: "tool_foreign", - type: "mode", - title: "Foreign Object Tool", - events: { - 'click': function() { - svgCanvas.setMode('foreign') - } - } - },{ - id: "edit_foreign", - type: "context", - panel: "foreignObject_panel", - title: "Edit ForeignObject Content", - events: { - 'click': function() { - showForeignEditor(); - } - } - }], - - context_tools: [{ - type: "input", - panel: "foreignObject_panel", - title: "Change foreignObject's width", - id: "foreign_width", - label: "w", - size: 3, - events: { - change: function() { - setAttr('width', this.value); - } - } - },{ - type: "input", - panel: "foreignObject_panel", - title: "Change foreignObject's height", - id: "foreign_height", - label: "h", - events: { - change: function() { - setAttr('height', this.value); - } - } - }, { - type: "input", - panel: "foreignObject_panel", - title: "Change foreignObject's font size", - id: "foreign_font_size", - label: "font-size", - size: 2, - defval: 16, - events: { - change: function() { - setAttr('font-size', this.value); - } - } - } - - - ], - callback: function() { - $('#foreignObject_panel').hide(); - - var endChanges = function() { - $('#svg_source_editor').hide(); - editingforeign = false; - $('#svg_source_textarea').blur(); - toggleSourceButtons(false); - } - - // TODO: Needs to be done after orig icon loads - setTimeout(function() { - // Create source save/cancel buttons - var save = $('#tool_source_save').clone() - .hide().attr('id', 'foreign_save').unbind() - .appendTo("#tool_source_back").click(function() { - - if (!editingforeign) return; - - if (!setForeignString($('#svg_source_textarea').val())) { - $.confirm("Errors found. Revert to original?", function(ok) { - if(!ok) return false; - endChanges(); - }); - } else { - endChanges(); - } - // setSelectMode(); - }); - - var cancel = $('#tool_source_cancel').clone() - .hide().attr('id', 'foreign_cancel').unbind() - .appendTo("#tool_source_back").click(function() { - endChanges(); - }); - - }, 3000); - }, - mouseDown: function(opts) { - var e = opts.event; - - if(svgCanvas.getMode() == "foreign") { - - started = true; - newFO = S.addSvgElementFromJson({ - "element": "foreignObject", - "attr": { - "x": opts.start_x, - "y": opts.start_y, - "id": S.getNextId(), - "font-size": 16, //cur_text.font_size, - "width": "48", - "height": "20", - "style": "pointer-events:inherit" - } - }); - var m = svgdoc.createElementNS(mathns, 'math'); - m.setAttributeNS(xmlnsns, 'xmlns', mathns); - m.setAttribute('display', 'inline'); - var mi = svgdoc.createElementNS(mathns, 'mi'); - mi.setAttribute('mathvariant', 'normal'); - mi.textContent = "\u03A6"; - var mo = svgdoc.createElementNS(mathns, 'mo'); - mo.textContent = "\u222A"; - var mi2 = svgdoc.createElementNS(mathns, 'mi'); - mi2.textContent = "\u2133"; - m.appendChild(mi); - m.appendChild(mo); - m.appendChild(mi2); - newFO.appendChild(m); - return { - started: true - } - } - }, - mouseUp: function(opts) { - var e = opts.event; - if(svgCanvas.getMode() == "foreign" && started) { - var attrs = $(newFO).attr(["width", "height"]); - keep = (attrs.width != 0 || attrs.height != 0); - svgCanvas.addToSelection([newFO], true); - - return { - keep: keep, - element: newFO - } - - } - - }, - selectedChanged: function(opts) { - // Use this to update the current selected elements - selElems = opts.elems; - - var i = selElems.length; - - while(i--) { - var elem = selElems[i]; - if(elem && elem.tagName == "foreignObject") { - if(opts.selectedElement && !opts.multiselected) { - $('#foreign_font_size').val(elem.getAttribute("font-size")); - $('#foreign_width').val(elem.getAttribute("width")); - $('#foreign_height').val(elem.getAttribute("height")); - - showPanel(true); - } else { - showPanel(false); - } - } else { - showPanel(false); - } - } - }, - elementChanged: function(opts) { - var elem = opts.elems[0]; - } - }; -}); diff --git a/files_svgedit/extensions/ext-helloworld.js b/files_svgedit/extensions/ext-helloworld.js deleted file mode 100644 index a35c24107..000000000 --- a/files_svgedit/extensions/ext-helloworld.js +++ /dev/null @@ -1,78 +0,0 @@ -/* - * ext-helloworld.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Alexis Deveria - * - */ - -/* - This is a very basic SVG-Edit extension. It adds a "Hello World" button in - the left panel. Clicking on the button, and then the canvas will show the - user the point on the canvas that was clicked on. -*/ - -svgEditor.addExtension("Hello World", function() { - - return { - name: "Hello World", - // For more notes on how to make an icon file, see the source of - // the hellorworld-icon.xml - svgicons: "extensions/helloworld-icon.xml", - - // Multiple buttons can be added in this array - buttons: [{ - // Must match the icon ID in helloworld-icon.xml - id: "hello_world", - - // This indicates that the button will be added to the "mode" - // button panel on the left side - type: "mode", - - // Tooltip text - title: "Say 'Hello World'", - - // Events - events: { - 'click': function() { - // The action taken when the button is clicked on. - // For "mode" buttons, any other button will - // automatically be de-pressed. - svgCanvas.setMode("hello_world"); - } - } - }], - // This is triggered when the main mouse button is pressed down - // on the editor canvas (not the tool panels) - mouseDown: function() { - // Check the mode on mousedown - if(svgCanvas.getMode() == "hello_world") { - - // The returned object must include "started" with - // a value of true in order for mouseUp to be triggered - return {started: true}; - } - }, - - // This is triggered from anywhere, but "started" must have been set - // to true (see above). Note that "opts" is an object with event info - mouseUp: function(opts) { - // Check the mode on mouseup - if(svgCanvas.getMode() == "hello_world") { - var zoom = svgCanvas.getZoom(); - - // Get the actual coordinate by dividing by the zoom value - var x = opts.mouse_x / zoom; - var y = opts.mouse_y / zoom; - - var text = "Hello World!\n\nYou clicked here: " - + x + ", " + y; - - // Show the text using the custom alert function - $.alert(text); - } - } - }; -}); - diff --git a/files_svgedit/extensions/ext-markers.js b/files_svgedit/extensions/ext-markers.js deleted file mode 100644 index 25b08be9c..000000000 --- a/files_svgedit/extensions/ext-markers.js +++ /dev/null @@ -1,572 +0,0 @@ -/* - * ext-markers.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Will Schleter - * based on ext-arrows.js by Copyright(c) 2010 Alexis Deveria - * - * This extension provides for the addition of markers to the either end - * or the middle of a line, polyline, path, polygon. - * - * Markers may be either a graphic or arbitary text - * - * to simplify the coding and make the implementation as robust as possible, - * markers are not shared - every object has its own set of markers. - * this relationship is maintained by a naming convention between the - * ids of the markers and the ids of the object - * - * The following restrictions exist for simplicty of use and programming - * objects and their markers to have the same color - * marker size is fixed - * text marker font, size, and attributes are fixed - * an application specific attribute - se_type - is added to each marker element - * to store the type of marker - * - * TODO: - * remove some of the restrictions above - * add option for keeping text aligned to horizontal - * add support for dimension extension lines - * - */ - -svgEditor.addExtension("Markers", function(S) { - var svgcontent = S.svgcontent, - addElem = S.addSvgElementFromJson, - selElems; - - var mtypes = ['start','mid','end']; - - var marker_prefix = 'se_marker_'; - var id_prefix = 'mkr_'; - - // note - to add additional marker types add them below with a unique id - // and add the associated icon(s) to marker-icons.svg - // the geometry is normallized to a 100x100 box with the origin at lower left - // Safari did not like negative values for low left of viewBox - // remember that the coordinate system has +y downward - var marker_types = { - nomarker: {}, - leftarrow: - {element:'path', attr:{d:'M0,50 L100,90 L70,50 L100,10 Z'}}, - rightarrow: - {element:'path', attr:{d:'M100,50 L0,90 L30,50 L0,10 Z'}}, - textmarker: - {element:'text', attr: {x:0, y:0,'stroke-width':0,'stroke':'none','font-size':75,'font-family':'serif','text-anchor':'left', - 'xml:space': 'preserve'}}, - forwardslash: - {element:'path', attr:{d:'M30,100 L70,0'}}, - reverseslash: - {element:'path', attr:{d:'M30,0 L70,100'}}, - verticalslash: - {element:'path', attr:{d:'M50,0 L50,100'}}, - box: - {element:'path', attr:{d:'M20,20 L20,80 L80,80 L80,20 Z'}}, - star: - {element:'path', attr:{d:'M10,30 L90,30 L20,90 L50,10 L80,90 Z'}}, - xmark: - {element:'path', attr:{d:'M20,80 L80,20 M80,80 L20,20'}}, - triangle: - {element:'path', attr:{d:'M10,80 L50,20 L80,80 Z'}}, - mcircle: - {element:'circle', attr:{r:30, cx:50, cy:50}}, - } - - - var lang_list = { - "en":[ - {id: "start_marker_list", title: "Select start marker type" }, - {id: "mid_marker_list", title: "Select mid marker type" }, - {id: "end_marker_list", title: "Select end marker type" }, - {id: "nomarker", title: "No Marker" }, - {id: "leftarrow", title: "Left Arrow" }, - {id: "rightarrow", title: "Right Arrow" }, - {id: "textmarker", title: "Text Marker" }, - {id: "forwardslash", title: "Forward Slash" }, - {id: "reverseslash", title: "Reverse Slash" }, - {id: "verticalslash", title: "Vertical Slash" }, - {id: "box", title: "Box" }, - {id: "star", title: "Star" }, - {id: "xmark", title: "X" }, - {id: "triangle", title: "Triangle" }, - {id: "mcircle", title: "Circle" }, - {id: "leftarrow_o", title: "Open Left Arrow" }, - {id: "rightarrow_o", title: "Open Right Arrow" }, - {id: "box_o", title: "Open Box" }, - {id: "star_o", title: "Open Star" }, - {id: "triangle_o", title: "Open Triangle" }, - {id: "mcircle_o", title: "Open Circle" }, - ] - }; - - - // duplicate shapes to support unfilled (open) marker types with an _o suffix - $.each(['leftarrow','rightarrow','box','star','mcircle','triangle'],function(i,v) { - marker_types[v+'_o'] = marker_types[v]; - }); - - // elem = a graphic element will have an attribute like marker-start - // attr - marker-start, marker-mid, or marker-end - // returns the marker element that is linked to the graphic element - function getLinked(elem, attr) { - var str = elem.getAttribute(attr); - if(!str) return null; - var m = str.match(/\(\#(.*)\)/); - if(!m || m.length !== 2) { - return null; - } - return S.getElem(m[1]); - } - - //toggles context tool panel off/on - //sets the controls with the selected element's settings - function showPanel(on) { - $('#marker_panel').toggle(on); - - if(on) { - var el = selElems[0]; - var val; - var ci; - - $.each(mtypes, function(i, pos) { - var m=getLinked(el,"marker-"+pos); - var txtbox = $('#'+pos+'_marker'); - if (!m) { - val='\\nomarker'; - ci=val; - txtbox.hide() // hide text box - } else { - if (!m.attributes.se_type) return; // not created by this extension - val='\\'+m.attributes.se_type.textContent; - ci=val; - if (val=='\\textmarker') { - val=m.lastChild.textContent; - //txtbox.show(); // show text box - } else { - txtbox.hide() // hide text box - } - } - txtbox.val(val); - setIcon(pos,ci); - }) - } - } - - function addMarker(id, val) { - var txt_box_bg = '#ffffff'; - var txt_box_border = 'none'; - var txt_box_stroke_width = 0; - - var marker = S.getElem(id); - - if (marker) return; - - if (val=='' || val=='\\nomarker') return; - - var el = selElems[0]; - var color = el.getAttribute('stroke'); - //NOTE: Safari didn't like a negative value in viewBox - //so we use a standardized 0 0 100 100 - //with 50 50 being mapped to the marker position - var refX = 50; - var refY = 50; - var viewBox = "0 0 100 100"; - var markerWidth = 5; - var markerHeight = 5; - var strokeWidth = 10; - if (val.substr(0,1)=='\\') se_type=val.substr(1); - else se_type='textmarker'; - - if (!marker_types[se_type]) return; // an unknown type! - - // create a generic marker - marker = addElem({ - "element": "marker", - "attr": { - "id": id, - "markerUnits": "strokeWidth", - "orient": "auto", - "style": "pointer-events:none", - "se_type": se_type - } - }); - - if (se_type!='textmarker') { - var mel = addElem(marker_types[se_type]); - var fillcolor = color; - if (se_type.substr(-2)=='_o') fillcolor='none'; - mel.setAttribute('fill',fillcolor); - mel.setAttribute('stroke',color); - mel.setAttribute('stroke-width',strokeWidth); - marker.appendChild(mel); - } else { - var text = addElem(marker_types[se_type]); - // have to add text to get bounding box - text.textContent = val; - var tb=text.getBBox(); - //alert( tb.x + " " + tb.y + " " + tb.width + " " + tb.height); - var pad=1; - var bb = tb; - bb.x = 0; - bb.y = 0; - bb.width += pad*2; - bb.height += pad*2; - // shift text according to its size - text.setAttribute('x', pad); - text.setAttribute('y', bb.height - pad - tb.height/4); // kludge? - text.setAttribute('fill',color); - refX = bb.width/2+pad; - refY = bb.height/2+pad; - viewBox = bb.x + " " + bb.y + " " + bb.width + " " + bb.height; - markerWidth =bb.width/10; - markerHeight = bb.height/10; - - var box = addElem({ - "element": "rect", - "attr": { - "x": bb.x, - "y": bb.y, - "width": bb.width, - "height": bb.height, - "fill": txt_box_bg, - "stroke": txt_box_border, - "stroke-width": txt_box_stroke_width - } - }); - marker.setAttribute("orient",0); - marker.appendChild(box); - marker.appendChild(text); - } - - marker.setAttribute("viewBox",viewBox); - marker.setAttribute("markerWidth", markerWidth); - marker.setAttribute("markerHeight", markerHeight); - marker.setAttribute("refX", refX); - marker.setAttribute("refY", refY); - S.findDefs().appendChild(marker); - - return marker; - } - - - function setMarker() { - var poslist={'start_marker':'start','mid_marker':'mid','end_marker':'end'}; - var pos = poslist[this.id]; - var marker_name = 'marker-'+pos; - var val = this.value; - var el = selElems[0]; - var marker = getLinked(el, marker_name); - if (marker) $(marker).remove(); - el.removeAttribute(marker_name); - if (val=='') val='\\nomarker'; - if (val=='\\nomarker') { - setIcon(pos,val); - S.call("changed", selElems); - return; - } - // Set marker on element - var id = marker_prefix + pos + '_' + el.id; - addMarker(id, val); - svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")"); - if (el.tagName == "line" && pos=='mid') el=convertline(el); - S.call("changed", selElems); - setIcon(pos,val); - } - - function convertline(elem) { - // this routine came from the connectors extension - // it is needed because midpoint markers don't work with line elements - if (!(elem.tagName == "line")) return elem; - - // Convert to polyline to accept mid-arrow - - var x1 = elem.getAttribute('x1')-0; - var x2 = elem.getAttribute('x2')-0; - var y1 = elem.getAttribute('y1')-0; - var y2 = elem.getAttribute('y2')-0; - var id = elem.id; - - var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' '); - var pline = addElem({ - "element": "polyline", - "attr": { - "points": (x1+','+y1+ mid_pt +x2+','+y2), - "stroke": elem.getAttribute('stroke'), - "stroke-width": elem.getAttribute('stroke-width'), - "fill": "none", - "opacity": elem.getAttribute('opacity') || 1 - } - }); - $.each(mtypes, function(i, pos) { // get any existing marker definitions - var nam = 'marker-'+pos; - var m = elem.getAttribute(nam); - if (m) pline.setAttribute(nam,elem.getAttribute(nam)); - }); - - var batchCmd = new S.BatchCommand(); - batchCmd.addSubCommand(new S.RemoveElementCommand(elem, elem.parentNode)); - batchCmd.addSubCommand(new S.InsertElementCommand(pline)); - - $(elem).after(pline).remove(); - svgCanvas.clearSelection(); - pline.id = id; - svgCanvas.addToSelection([pline]); - S.addCommandToHistory(batchCmd); - return pline; - } - - // called when the main system modifies an object - // this routine changes the associated markers to be the same color - function colorChanged(elem) { - var color = elem.getAttribute('stroke'); - - $.each(mtypes, function(i, pos) { - var marker = getLinked(elem, 'marker-'+pos); - if (!marker) return; - if (!marker.attributes.se_type) return; //not created by this extension - var ch = marker.lastElementChild; - if (!ch) return; - var curfill = ch.getAttribute("fill"); - var curstroke = ch.getAttribute("stroke") - if (curfill && curfill!='none') ch.setAttribute("fill",color); - if (curstroke && curstroke!='none') ch.setAttribute("stroke",color); - }); - } - - // called when the main system creates or modifies an object - // primary purpose is create new markers for cloned objects - function updateReferences(el) { - $.each(mtypes, function (i,pos) { - var id = marker_prefix + pos + '_' + el.id; - var marker_name = 'marker-'+pos; - var marker = getLinked(el, marker_name); - if (!marker || !marker.attributes.se_type) return; //not created by this extension - var url = el.getAttribute(marker_name); - if (url) { - var len = el.id.length; - var linkid = url.substr(-len-1,len); - if (el.id != linkid) { - var val = $('#'+pos+'_marker').attr('value'); - addMarker(id, val); - svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")"); - if (el.tagName == "line" && pos=='mid') el=convertline(el); - S.call("changed", selElems); - } - } - }); - } - - // simulate a change event a text box that stores the current element's marker type - function triggerTextEntry(pos,val) { - $('#'+pos+'_marker').val(val); - $('#'+pos+'_marker').change(); - var txtbox = $('#'+pos+'_marker'); - //if (val.substr(0,1)=='\\') txtbox.hide(); - //else txtbox.show(); - } - - function setIcon(pos,id) { - if (id.substr(0,1)!='\\') id='\\textmarker' - var ci = '#'+id_prefix+pos+'_'+id.substr(1); - svgEditor.setIcon('#cur_' + pos +'_marker_list', $(ci).children()); - $(ci).addClass('current').siblings().removeClass('current'); - } - - function setMarkerSet(obj) { - var parts = this.id.split('_'); - var set = parts[2]; - switch (set) { - case 'off': - triggerTextEntry('start','\\nomarker'); - triggerTextEntry('mid','\\nomarker'); - triggerTextEntry('end','\\nomarker'); - break; - case 'dimension': - triggerTextEntry('start','\\leftarrow'); - triggerTextEntry('end','\\rightarrow'); - showTextPrompt('mid'); - break; - case 'label': - triggerTextEntry('mid','\\nomarker'); - triggerTextEntry('end','\\rightarrow'); - showTextPrompt('start'); - break; - } - } - - function showTextPrompt(pos) { - var def = $('#'+pos+'_marker').val(); - if (def.substr(0,1)=='\\') def=''; - $.prompt('Enter text for ' + pos + ' marker', def , function(txt) { if (txt) triggerTextEntry(pos,txt); }); - } - - // callback function for a toolbar button click - function setArrowFromButton(obj) { - - var parts = this.id.split('_'); - var pos = parts[1]; - var val = parts[2]; - if (parts[3]) val+='_'+parts[3]; - - if (val!='textmarker') { - triggerTextEntry(pos,'\\'+val); - } else { - showTextPrompt(pos); - } - } - - function getTitle(lang,id) { - var list = lang_list[lang]; - for (var i in list) { - if (list[i].id==id) return list[i].title; - } - return id; - } - - - // build the toolbar button array from the marker definitions - // TODO: need to incorporate language specific titles - function buildButtonList() { - var buttons=[]; - var i=0; -/* - buttons.push({ - id:id_prefix + 'markers_off', - title:'Turn off all markers', - type:'context', - events: { 'click': setMarkerSet }, - panel: 'marker_panel' - }); - buttons.push({ - id:id_prefix + 'markers_dimension', - title:'Dimension', - type:'context', - events: { 'click': setMarkerSet }, - panel: 'marker_panel' - }); - buttons.push({ - id:id_prefix + 'markers_label', - title:'Label', - type:'context', - events: { 'click': setMarkerSet }, - panel: 'marker_panel' - }); -*/ - $.each(mtypes,function(k,pos) { - var listname = pos + "_marker_list"; - var def = true; - $.each(marker_types,function(id,v) { - var title = getTitle('en',id); - buttons.push({ - id:id_prefix + pos + "_" + id, - svgicon:id, - title:title, - type:'context', - events: { 'click': setArrowFromButton }, - panel:'marker_panel', - list: listname, - isDefault: def - }); - def = false; - }); - }); - return buttons; - } - - return { - name: "Markers", - svgicons: "extensions/markers-icons.xml", - buttons: buildButtonList(), - context_tools: [ - { - type: "input", - panel: "marker_panel", - title: "Start marker", - id: "start_marker", - label: "s", - size: 3, - events: { change: setMarker } - },{ - type: "button-select", - panel: "marker_panel", - title: getTitle('en','start_marker_list'), - id: "start_marker_list", - colnum: 3, - events: { change: setArrowFromButton } - },{ - type: "input", - panel: "marker_panel", - title: "Middle marker", - id: "mid_marker", - label: "m", - defval: "", - size: 3, - events: { change: setMarker } - },{ - type: "button-select", - panel: "marker_panel", - title: getTitle('en','mid_marker_list'), - id: "mid_marker_list", - colnum: 3, - events: { change: setArrowFromButton } - },{ - type: "input", - panel: "marker_panel", - title: "End marker", - id: "end_marker", - label: "e", - size: 3, - events: { change: setMarker } - },{ - type: "button-select", - panel: "marker_panel", - title: getTitle('en','end_marker_list'), - id: "end_marker_list", - colnum: 3, - events: { change: setArrowFromButton } - } ], - callback: function() { - $('#marker_panel').addClass('toolset').hide(); - - }, - addLangData: function(lang) { - return { data: lang_list[lang] }; - }, - - selectedChanged: function(opts) { - // Use this to update the current selected elements - //console.log('selectChanged',opts); - selElems = opts.elems; - - var i = selElems.length; - var marker_elems = ['line','path','polyline','polygon']; - - while(i--) { - var elem = selElems[i]; - if(elem && $.inArray(elem.tagName, marker_elems) != -1) { - if(opts.selectedElement && !opts.multiselected) { - showPanel(true); - } else { - showPanel(false); - } - } else { - showPanel(false); - } - } - }, - - elementChanged: function(opts) { - //console.log('elementChanged',opts); - var elem = opts.elems[0]; - if(elem && ( - elem.getAttribute("marker-start") || - elem.getAttribute("marker-mid") || - elem.getAttribute("marker-end") - )) { - colorChanged(elem); - updateReferences(elem); - } - changing_flag = false; - } - }; -}); diff --git a/files_svgedit/extensions/ext-server_opensave.js b/files_svgedit/extensions/ext-server_opensave.js deleted file mode 100644 index ff236b6ef..000000000 --- a/files_svgedit/extensions/ext-server_opensave.js +++ /dev/null @@ -1,179 +0,0 @@ -/* - * ext-server_opensave.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Alexis Deveria - * - */ - -svgEditor.addExtension("server_opensave", { - callback: function() { - - var save_svg_action = 'extensions/filesave.php'; - var save_png_action = 'extensions/filesave.php'; - - // Create upload target (hidden iframe) - var target = $('<iframe name="output_frame" src="#"/>').hide().appendTo('body'); - - svgEditor.setCustomHandlers({ - save: function(win, data) { - var svg = '<?xml version="1.0"?>' + data; - - var title = svgCanvas.getDocumentTitle(); - var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_'); - - var form = $('<form>').attr({ - method: 'post', - action: save_svg_action, - target: 'output_frame' - }) .append('<input type="hidden" name="output_svg" value="' + encodeURI(svg) + '">') - .append('<input type="hidden" name="filename" value="' + filename + '">') - .appendTo('body') - .submit().remove(); - }, - pngsave: function(win, data) { - var issues = data.issues; - - if(!$('#export_canvas').length) { - $('<canvas>', {id: 'export_canvas'}).hide().appendTo('body'); - } - var c = $('#export_canvas')[0]; - - c.width = svgCanvas.contentW; - c.height = svgCanvas.contentH; - canvg(c, data.svg); - var datauri = c.toDataURL('image/png'); - - var uiStrings = svgEditor.uiStrings; - var note = ''; - - // Check if there's issues - if(issues.length) { - var pre = "\n \u2022 "; - note += ("\n\n" + pre + issues.join(pre)); - } - - if(note.length) { - alert(note); - } - - var title = svgCanvas.getDocumentTitle(); - var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_'); - - var form = $('<form>').attr({ - method: 'post', - action: save_png_action, - target: 'output_frame' - }) .append('<input type="hidden" name="output_png" value="' + datauri + '">') - .append('<input type="hidden" name="filename" value="' + filename + '">') - .appendTo('body') - .submit().remove(); - - - } - }); - - // Do nothing if client support is found - if(window.FileReader) return; - - var cancelled = false; - - // Change these to appropriate script file - var open_svg_action = 'extensions/fileopen.php?type=load_svg'; - var import_svg_action = 'extensions/fileopen.php?type=import_svg'; - var import_img_action = 'extensions/fileopen.php?type=import_img'; - - // Set up function for PHP uploader to use - svgEditor.processFile = function(str64, type) { - if(cancelled) { - cancelled = false; - return; - } - - $('#dialog_box').hide(); - - if(type != 'import_img') { - var xmlstr = svgCanvas.Utils.decode64(str64); - } - - switch ( type ) { - case 'load_svg': - svgCanvas.clear(); - svgCanvas.setSvgString(xmlstr); - svgEditor.updateCanvas(); - break; - case 'import_svg': - svgCanvas.importSvgString(xmlstr); - svgEditor.updateCanvas(); - break; - case 'import_img': - svgCanvas.setGoodImage(str64); - break; - } - } - - // Create upload form - var open_svg_form = $('<form>'); - open_svg_form.attr({ - enctype: 'multipart/form-data', - method: 'post', - action: open_svg_action, - target: 'output_frame' - }); - - // Create import form - var import_svg_form = open_svg_form.clone().attr('action', import_svg_action); - - // Create image form - var import_img_form = open_svg_form.clone().attr('action', import_img_action); - - // It appears necessory to rebuild this input every time a file is - // selected so the same file can be picked and the change event can fire. - function rebuildInput(form) { - form.empty(); - var inp = $('<input type="file" name="svg_file">').appendTo(form); - - - function submit() { - // This submits the form, which returns the file data using svgEditor.uploadSVG - form.submit(); - - rebuildInput(form); - $.process_cancel("Uploading...", function() { - cancelled = true; - $('#dialog_box').hide(); - }); - } - - if(form[0] == open_svg_form[0]) { - inp.change(function() { - // This takes care of the "are you sure" dialog box - svgEditor.openPrep(function(ok) { - if(!ok) { - rebuildInput(form); - return; - } - submit(); - }); - }); - } else { - inp.change(function() { - // This submits the form, which returns the file data using svgEditor.uploadSVG - submit(); - }); - } - } - - // Create the input elements - rebuildInput(open_svg_form); - rebuildInput(import_svg_form); - rebuildInput(import_img_form); - - // Add forms to buttons - $("#tool_open").show().prepend(open_svg_form); - $("#tool_import").show().prepend(import_svg_form); - $("#tool_image").prepend(import_img_form); - } -}); - diff --git a/files_svgedit/extensions/eyedropper-icon.xml b/files_svgedit/extensions/eyedropper-icon.xml deleted file mode 100644 index c05576aa2..000000000 --- a/files_svgedit/extensions/eyedropper-icon.xml +++ /dev/null @@ -1,34 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> - -<g id="tool_eyedropper"> -<svg viewBox="0 0 320 320" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <radialGradient id="eyedropper_svg_6" cx="0.5" cy="0.5" r="0.5"> - <stop offset="0" stop-color="#ffffff" stop-opacity="1"/> - <stop offset="1" stop-color="#e5e5e5" stop-opacity="0.38"/> - </radialGradient> - <linearGradient id="eyedropper_svg_15" x1="0" y1="0" x2="0.58594" y2="0.55078"> - <stop offset="0" stop-color="#ffffff" stop-opacity="0.57"/> - <stop offset="1" stop-color="#000056" stop-opacity="1"/> - </linearGradient> - <linearGradient id="eyedropper_svg_19" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#ffffff" stop-opacity="1"/> - <stop offset="1" stop-color="#ffffff" stop-opacity="0"/> - </linearGradient> - </defs> - <g display="inline"> - <title>Layer 1</title> - <path d="m193.899994,73l-119.899979,118l-15,39.5l10.25,4.5l43.750015,-20l108.999969,-112l-28.100006,-30z" id="svg_3" fill="none" stroke="#000000" stroke-width="5"/> - <path d="m58.649994,232c-2.75,28.200012 -26.399994,28.950012 -21.899994,59c4.5,30.049988 55,28 55.5,-1.25c0.5,-29.25 -20.25,-28.75 -22.25,-54.75l-11.350006,-3z" id="svg_4" fill="#aa56ff" stroke="#000000" stroke-width="7"/> - <path d="m45.474976,269.275024l13.775024,0.474976l-0.75,16.75l-14.25,-1.25l1.224976,-15.974976z" id="svg_5" fill="url(#eyedropper_svg_6)" stroke-width="5" fill-opacity="0.73"/> - <path d="m217.899994,46c21.5,-101.549999 141.600006,20.449997 28.100006,33l-5,44l-63,-66l39.899994,-11z" id="svg_2" fill="#000000" stroke-width="5"/> - <path d="m206.825012,61.075008c3.712494,-2.46249 7.637482,-3.53751 14.424988,-5.575008c10.125,-16.5 32.875,-41.5 40.5,-35c7.625,6.5 -21.25,35.625 -37.5,39.25c-5.5,10.125 -8,13.875 -17.25,16.5c-2.837494,-8.162514 -4.262482,-12.337486 -0.174988,-15.174992z" id="svg_7" fill="url(#eyedropper_svg_15)" stroke-width="5"/> - <path d="m133.049988,134.75l46.950012,9.25l-66,70l-42.5,20.5l-11.5,-5l14,-37.5l59.049988,-57.25z" id="svg_11" fill="#aa56ff" stroke="#000000" stroke-width="7"/> - <path d="m71.425034,212.350006l9.050888,-20.022537l51.516724,-49.327469l8.507355,0.97197l-69.074966,68.378036z" id="svg_16" fill="url(#eyedropper_svg_19)" stroke-width="5"/> - </g> -</svg> -</g> - - <g id="svg_eof"/> -</svg>
\ No newline at end of file diff --git a/files_svgedit/extensions/eyedropper.png b/files_svgedit/extensions/eyedropper.png Binary files differdeleted file mode 100644 index 61987c4bd..000000000 --- a/files_svgedit/extensions/eyedropper.png +++ /dev/null diff --git a/files_svgedit/extensions/foreignobject-icons.xml b/files_svgedit/extensions/foreignobject-icons.xml deleted file mode 100644 index 0d34654a7..000000000 --- a/files_svgedit/extensions/foreignobject-icons.xml +++ /dev/null @@ -1,96 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> - <g id="tool_foreign"> - <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 84 84"> - <g fill="#444" opacity="0.2" transform="translate(6,6)"> - <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0 - c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8 - c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42 - c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7 - c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/> - </g> - <g fill="#444" opacity="0.3" transform="translate(4,4)"> - <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0 - c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8 - c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42 - c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7 - c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/> - </g> - <g fill="#444" opacity="0.5" transform="translate(2,2)"> - <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0 - c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8 - c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42 - c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7 - c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/> - </g> - <g fill="#0000CC"> - <path id="xyz321" d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0 - c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8 - c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42 - c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7 - c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/> - </g> - </svg> - </g> - - <g id="edit_foreign"> - <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="34 38 170 170" overflow="hidden"> - <g fill="#000088"> - <path d="M30.1,63.9v-4.3l30.2-14.9V50L36.5,61.7l23.8,11.7v5.3L30.1,63.9z"/> - <path d="M106.1,79.7v-1.1c4.2-0.5,4.8-1.1,4.8-5.2V58.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1 - c0,4.5,1.1,5.7,5.2,5.8v1.1H86.8v-1.1c4.1-0.3,4.9-1.1,4.9-5.1V57.9c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9 - c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V55.4c0-3.5-0.6-4.6-2.5-4.6 - c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6 - c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H106.1z"/> - <path d="M147.3,80.5c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3 - c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2 - c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14 - c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C151.3,79.6,149.8,80.5,147.3,80.5z M142.6,60.5c-8.7,3.2-11.7,5.8-11.7,10v0.3 - c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V60.5z"/> - <path d="M165.3,80.5c-4.2,0-6.3-3.1-6.3-9.1V49.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4 - c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5 - c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C171.8,78.7,169,80.5,165.3,80.5z"/> - <path d="M193.8,79.7v-1.1c4.1-0.4,4.9-1.3,4.9-6.2V58.1c0-5-1.8-7.6-5.4-7.6c-2.8,0-5,1.2-8,4.5v17.4 - c0,5,0.7,5.8,4.9,6.3v1.1h-15.6v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V38.5c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2l1.9-0.6 - c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c3.3-4.3,6.3-6,10.6-6c5.9,0,8.9,3.9,8.9,11.5v14.3c0,5,0.4,5.5,4.3,6.3v1.1h-15.2V79.7z"/> - <path d="M59.1,116.1v-4.3l30.2-14.9v5.3l-23.8,11.7l23.8,11.7v5.3L59.1,116.1z"/> - <path d="M135.1,131.9v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.1c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1 - c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.7c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9 - c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5v-18.2c0-3.5-0.6-4.6-2.5-4.6 - c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6 - c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H135.1z"/> - <path d="M152.1,131.9v-1.1c5-0.3,5.7-1.1,5.7-6.3v-16.6c0-3.2-0.6-4.3-2.4-4.3c-0.6,0-1.6,0.1-2.4,0.2l-0.6,0.1v-1.1 - l11.2-4L164,99v25.6c0,5.2,0.6,5.9,5.3,6.3v1.1L152.1,131.9L152.1,131.9z M160.8,93.1c-2,0-3.7-1.6-3.7-3.7c0-2,1.7-3.7,3.7-3.7 - c2.1,0,3.7,1.7,3.7,3.7C164.6,91.6,163,93.1,160.8,93.1z"/> - <path d="M175.8,131v-5.3l23.7-11.8l-23.7-11.7v-5.3l30.1,14.9v4.3L175.8,131z"/> - <path d="M31.1,169.5v-4.3l30.2-14.9v5.3l-23.8,11.7L61.3,179v5.3L31.1,169.5z"/> - <path d="M71.3,186.4h-4.9l16.5-49.7h4.8L71.3,186.4z"/> - <path d="M127.1,185.3v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1 - c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.6c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9 - c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V161c0-3.5-0.6-4.6-2.5-4.6 - c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6 - c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H127.1L127.1,185.3z"/> - <path d="M168.3,186.1c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3 - c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2 - c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14 - c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C172.3,185.2,170.8,186.1,168.3,186.1z M163.8,166.1c-8.7,3.2-11.7,5.8-11.7,10 - v0.3c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V166.1z"/> - <path d="M186.3,186.1c-4.2,0-6.3-3.1-6.3-9.1v-21.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4 - c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5 - c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C192.8,184.3,190,186.1,186.3,186.1z"/> - <path d="M209.1,185.3h-13.4v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V144c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2 - l1.9-0.6c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c0.9-1.2,1.9-2.2,2.8-3.1"/> - <path d="M209.1,157.9c-0.8,0.7-1.7,1.5-2.7,2.6v17.4c0,4,0.4,5.3,2.7,5.9"/> - </g> - <g> - <polyline opacity="0.2" fill="#231F20" points="209.1,76.4 118.7,186.5 139.1,186.4 209.1,121 209.1,76.4 "/> - <polyline opacity="0.4" fill="#231F20" points="209.1,76.2 118.5,186.5 129.7,186.4 200.2,120.3 209.1,100.8 209.1,76.4 "/> - <path fill="#FFD761" d="M121.6,88.7l0.8,87.5l62.3-56.7c0,0-15.3-25.8-24.8-30C151.1,85.6,121.6,88.7,121.6,88.7z"/> - <path fill="#FEA01E" d="M209.1,19.5h-54l-33.5,69.2c0,0,29.7-3.4,38.3,0.8c8.9,4.4,25,30.8,25,30.8l24.2-50V19.5z"/> - <path d="M120.4,153.7l-0.6,25l23.8-16.9c0,0-8-7-11.2-8.1C129.4,152.8,120.4,153.7,120.4,153.7z"/> - <polyline fill="none" stroke="#231F20" stroke-width="5" points="153.9,19.5 121.6,88.7 120.7,181.2 186.6,120.3 209.1,70.3 "/> - </g> - </svg> - </g> - - <g id="svg_eof"/> -</svg>
\ No newline at end of file diff --git a/files_svgedit/extensions/helloworld-icon.xml b/files_svgedit/extensions/helloworld-icon.xml deleted file mode 100644 index 0b1ba1a04..000000000 --- a/files_svgedit/extensions/helloworld-icon.xml +++ /dev/null @@ -1,21 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> -<!-- - Sample icons file. This file looks like an SVG file with groups as its - children. Each group element has an ID that must match the ID of the button given - in the extension. The SVG inside the group makes up the actual icon, and - needs use a viewBox instead of width/height for it to scale properly. - - Multiple icons can be included, each within their own group. ---> - <g id="hello_world"> - <svg width="102" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <g> - <title>Layer 1</title> - <rect ry="30" rx="30" x="2.5" y="2.5" width="97" height="97" id="svg_3" fill="#008000" stroke="#000000" stroke-width="5"/> - <text x="52.668" y="42.5" id="svg_1" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve">Hello</text> - <text x="52.668" y="71.5" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve" id="svg_2">World!</text> - </g> - </svg> - </g> -</svg>
\ No newline at end of file diff --git a/files_svgedit/extensions/markers-icons.xml b/files_svgedit/extensions/markers-icons.xml deleted file mode 100644 index 6d122b051..000000000 --- a/files_svgedit/extensions/markers-icons.xml +++ /dev/null @@ -1,115 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <g id="nomarker"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,0"/> - </svg> - </g> - <g id="leftarrow"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,40l-30,-40l30,-40z"/> - </svg> - </g> - <g id="rightarrow"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m50,0l-100,40l30,-40l-30,-40z"/> - </svg> - </g> - <g id="leftarrow_o"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-50,0l100,40l-30,-40l30,-40z"/> - </svg> - </g> - <g id="rightarrow_o"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m50,0l-100,40l30,-40l-30,-40z"/> - </svg> - </g> - <g id="forwardslash"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,50l40,-100"/> - </svg> - </g> - <g id="reverseslash"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,-50l40,100"/> - </svg> - </g> - <g id="verticalslash"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m0,-50l0,100"/> - </svg> - </g> - <g id="mcircle"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <circle stroke-width="10" stroke="#ff7f00" fill="#ff7f00" cy="0" cx="0" r="30"/> - </svg> - </g> - <g id="mcircle_o"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <circle stroke-width="10" stroke="#ff7f00" fill="none" cy="0" cx="0" r="30"/> - </svg> - </g> - <g id="xmark"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,30l60,-60m0,60l-60,-60"/> - </svg> - </g> - <g id="box"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,-30l0,60l60,0l0,-60z"/> - </svg> - </g> - <g id="star"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/> - </svg> - </g> - <g id="box_o"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-30,-30l0,60l60,0l0,-60z"/> - </svg> - </g> - <g id="star_o"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/> - </svg> - </g> - <g id="triangle_o"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="none" d="M-30,30 L0,-30 L30,30 Z"/> - </svg> - </g> - <g id="triangle"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="M-30,30 L0,-30 L30,30 Z"/> - </svg> - </g> - <g id="textmarker"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="120" y="40" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text> - </svg> - </g> - <g id="mkr_markers_off"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <line y2="0" x2="50" y1="0" x1="-50" stroke-width="5" stroke="#ff7f00" fill="none"/> - </svg> - </g> - <g id="mkr_markers_dimension"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <line y2="0" x2="40" y1="0" x1="20" stroke-width="5" stroke="#ff7f00" fill="none"/> - <line y2="0" x2="-40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/> - <text text-anchor="middle" font-family="serif" font-size="80" y="20" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text> - <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M-50,0 L-30,-15 L-30,15 Z"/> - <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/> - </svg> - </g> - <g id="mkr_markers_label"> - <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg"> - <line y2="0" x2="40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/> - <text text-anchor="middle" font-family="serif" font-size="80" y="20" x="-40" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text> - <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/> - </svg> - </g> - <g id="svg_eof"/> -</svg> diff --git a/files_svgedit/images/README.txt b/files_svgedit/images/README.txt deleted file mode 100644 index 9224bc1cf..000000000 --- a/files_svgedit/images/README.txt +++ /dev/null @@ -1,61 +0,0 @@ -filename origin - -align-bottom.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.png -align-bottom.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.svg -align-center.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.png -align-center.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.svg -align-left.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.png -align-left.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.svg -align-middle.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.png -align-middle.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.svg -align-right.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.png -align-right.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.svg -align-top.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.png -align-top.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.svg -bold.png -cancel.png -circle.png -clear.png -clone.png -copy.png -cut.png -delete.png -document-properties.png -dropdown.gif -ellipse.png -eye.png -flyouth.png -flyup.gif -freehand-circle.png -freehand-square.png -go-down.png -go-up.png -image.png -italic.png -line.png -logo.png -logo.svg -move_bottom.png -move_top.png -none.png -open.png -paste.png -path.png -polygon.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.png -polygon.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.svg -rect.png -redo.png -rotate.png -save.png -select.png -sep.png -shape_group.png -shape_ungroup.png -source.png -square.png -text.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.png -text.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.svg -undo.png -view-refresh.png -wave.png -zoom.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/page-magnifier.png diff --git a/files_svgedit/images/align-bottom.png b/files_svgedit/images/align-bottom.png Binary files differdeleted file mode 100644 index be5dfe54d..000000000 --- a/files_svgedit/images/align-bottom.png +++ /dev/null diff --git a/files_svgedit/images/align-bottom.svg b/files_svgedit/images/align-bottom.svg deleted file mode 100644 index 36f8efe2c..000000000 --- a/files_svgedit/images/align-bottom.svg +++ /dev/null @@ -1,277 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22" - height="22" - id="svg5741" - sodipodi:version="0.32" - inkscape:version="0.44+devel" - version="1.0" - sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions" - sodipodi:docname="align-bottom-vertical.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-bottom-vertical.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - sodipodi:modified="true"> - <defs - id="defs5743"> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient6938" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient6936" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient6934" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient6932" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2968" - inkscape:collect="always"> - <stop - id="stop2970" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2972" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient6930" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2974" - inkscape:collect="always"> - <stop - id="stop2976" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2978" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient6928" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2986" - inkscape:collect="always"> - <stop - id="stop2988" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2990" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient6926" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2980" - inkscape:collect="always"> - <stop - id="stop2982" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2984" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient6924" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="22.197802" - inkscape:cx="8" - inkscape:cy="9.8019802" - inkscape:current-layer="g6828" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - width="22px" - height="22px" - inkscape:window-width="1078" - inkscape:window-height="786" - inkscape:window-x="243" - inkscape:window-y="71" /> - <metadata - id="metadata5746"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - style="display:inline" - id="g6828" - transform="translate(30.00011,90.000366)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <g - style="display:inline" - id="g6838" - transform="translate(-30.00009,-1.0002798)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="rect3052" - width="12" - height="7" - x="69.500122" - y="12.5" - transform="matrix(0,-1,1,0,0,0)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <rect - style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="rect3054" - width="10" - height="5.0000305" - x="70.500122" - y="13.5" - transform="matrix(0,-1,1,0,0,0)" - rx="0" - ry="0" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <g - id="g3056" - transform="translate(-127,-559)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="129.49626" - x="-489.49979" - height="7.0035982" - width="17.999748" - id="rect3058" - style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="130.50006" - x="-488.50009" - height="4.9998937" - width="15.999757" - id="rect3060" - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - rx="0" - ry="0" /> - </g> - <g - id="g3294" - transform="translate(-187,-560)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - y="489.5" - x="196.49989" - height="1.9999999" - width="3.0000916" - id="rect3296" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <path - style="fill:url(#linearGradient6932);fill-opacity:1;stroke:url(#linearGradient6934);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5" - id="path3298" - sodipodi:nodetypes="cccc" /> - <path - style="fill:url(#linearGradient6936);fill-opacity:1;stroke:url(#linearGradient6938);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5" - id="path3300" - sodipodi:nodetypes="cccc" /> - </g> - </g> - </g> - </g> -</svg> diff --git a/files_svgedit/images/align-center.png b/files_svgedit/images/align-center.png Binary files differdeleted file mode 100644 index d1f0c5bcb..000000000 --- a/files_svgedit/images/align-center.png +++ /dev/null diff --git a/files_svgedit/images/align-center.svg b/files_svgedit/images/align-center.svg deleted file mode 100644 index ddf49fcec..000000000 --- a/files_svgedit/images/align-center.svg +++ /dev/null @@ -1,252 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22" - height="22" - id="svg10958" - sodipodi:version="0.32" - inkscape:version="0.44+devel" - version="1.0" - sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions" - sodipodi:docname="align-horisontal-center.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-center.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - sodipodi:modified="true"> - <defs - id="defs10960"> - <linearGradient - id="linearGradient2968" - inkscape:collect="always"> - <stop - id="stop2970" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2972" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient4708" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-395.9999,-981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2974" - inkscape:collect="always"> - <stop - id="stop2976" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2978" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient4706" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-395.9999,-981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2986" - inkscape:collect="always"> - <stop - id="stop2988" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2990" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient4704" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2980" - inkscape:collect="always"> - <stop - id="stop2982" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2984" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient4702" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="16" - inkscape:cy="11.460711" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - width="22px" - height="22px" - inkscape:window-width="797" - inkscape:window-height="628" - inkscape:window-x="0" - inkscape:window-y="47" /> - <metadata - id="metadata10963"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - style="display:inline" - id="g4044" - transform="matrix(0,-1,1,0,-59.999911,-168.00002)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - id="rect3851" - width="12" - height="7" - x="-76.499878" - y="-177.5" - transform="matrix(0,-1,1,0,0,0)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <g - transform="translate(-317,-410)" - id="g3853" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - style="display:inline"> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="129.49626" - x="-489.49979" - height="7.0035982" - width="17.999748" - id="rect3855" - style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="130.50006" - x="-488.50009" - height="4.9998937" - width="15.999757" - id="rect3857" - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - rx="0" - ry="0" /> - </g> - <rect - style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - id="rect3859" - width="10" - height="5.0000305" - x="-75.499878" - y="-176.5" - transform="matrix(0,-1,1,0,0,0)" - rx="0" - ry="0" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <g - id="g3861" - transform="translate(-377,-420)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - style="display:inline"> - <rect - y="489.5" - x="186.49989" - height="1.9999999" - width="3.0000916" - id="rect3863" - style="fill:url(#linearGradient4702);fill-opacity:1;stroke:url(#linearGradient4704);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - y="489.5" - x="191.49989" - height="1.9999999" - width="3.0000916" - id="rect3865" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - y="489.5" - x="196.49989" - height="1.9999999" - width="3.0000916" - id="rect3867" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - y="489.5" - x="201.49989" - height="1.9999999" - width="3.0000916" - id="rect3869" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - transform="scale(-1,-1)" - y="-491.5" - x="-209.49998" - height="1.9999999" - width="3.0000916" - id="rect3871" - style="fill:url(#linearGradient4706);fill-opacity:1;stroke:url(#linearGradient4708);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - </g> - </g> - </g> -</svg> diff --git a/files_svgedit/images/align-left.png b/files_svgedit/images/align-left.png Binary files differdeleted file mode 100644 index 41fa8bcc1..000000000 --- a/files_svgedit/images/align-left.png +++ /dev/null diff --git a/files_svgedit/images/align-left.svg b/files_svgedit/images/align-left.svg deleted file mode 100644 index b1a24a5a6..000000000 --- a/files_svgedit/images/align-left.svg +++ /dev/null @@ -1,235 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22" - height="22" - id="svg11272" - sodipodi:version="0.32" - inkscape:version="0.44+devel" - version="1.0" - sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions" - sodipodi:docname="align-horisontal-left.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-left.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - sodipodi:modified="true"> - <defs - id="defs11274"> - <linearGradient - id="linearGradient2968" - inkscape:collect="always"> - <stop - id="stop2970" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2972" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient4716" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2974" - inkscape:collect="always"> - <stop - id="stop2976" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2978" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient4714" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2986" - inkscape:collect="always"> - <stop - id="stop2988" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2990" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient4712" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2980" - inkscape:collect="always"> - <stop - id="stop2982" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2984" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient4710" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="16" - inkscape:cy="14.269093" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - width="22px" - height="22px" - inkscape:window-width="797" - inkscape:window-height="628" - inkscape:window-x="0" - inkscape:window-y="47" /> - <metadata - id="metadata11277"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - style="display:inline" - id="g4065" - transform="matrix(0,-1,1,0,8.9287758e-5,51.99998)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <g - id="g3883" - transform="translate(-127,-473)" - style="fill:#d3d7cf;stroke:#888a85;display:inline" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - transform="matrix(0,1,1,0,0,0)" - y="169.5" - x="475.50012" - height="7" - width="12" - id="rect3885" - style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - ry="0" - rx="0" - transform="matrix(0,1,1,0,0,0)" - y="170.5" - x="476.50012" - height="5.0000305" - width="10" - id="rect3887" - style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - </g> - <g - id="g3889" - transform="translate(-97,-469)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - style="display:inline"> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="129.49626" - x="-489.49979" - height="7.0035982" - width="17.999748" - id="rect3891" - style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="130.50006" - x="-488.50009" - height="4.9998937" - width="15.999757" - id="rect3893" - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - rx="0" - ry="0" /> - </g> - <g - id="g3903" - transform="translate(-157,-488)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - style="display:inline"> - <rect - y="489.5" - x="196.49989" - height="1.9999999" - width="3.0000916" - id="rect3905" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <path - style="fill:url(#linearGradient4710);fill-opacity:1;stroke:url(#linearGradient4712);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5" - id="path3907" - sodipodi:nodetypes="cccc" /> - <path - style="fill:url(#linearGradient4714);fill-opacity:1;stroke:url(#linearGradient4716);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5" - id="path3909" - sodipodi:nodetypes="cccc" /> - </g> - </g> - </g> -</svg> diff --git a/files_svgedit/images/align-middle.png b/files_svgedit/images/align-middle.png Binary files differdeleted file mode 100644 index f72bbb799..000000000 --- a/files_svgedit/images/align-middle.png +++ /dev/null diff --git a/files_svgedit/images/align-middle.svg b/files_svgedit/images/align-middle.svg deleted file mode 100644 index d2b42e6a3..000000000 --- a/files_svgedit/images/align-middle.svg +++ /dev/null @@ -1,250 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22" - height="22" - id="svg10625" - sodipodi:version="0.32" - inkscape:version="0.44+devel" - version="1.0" - sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions" - sodipodi:docname="align-vertical-center.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-vertical-center.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - sodipodi:modified="true"> - <defs - id="defs10627"> - <linearGradient - id="linearGradient2968" - inkscape:collect="always"> - <stop - id="stop2970" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2972" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient6962" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-395.9999,-981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2974" - inkscape:collect="always"> - <stop - id="stop2976" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2978" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient6960" - gradientUnits="userSpaceOnUse" - gradientTransform="translate(-395.9999,-981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2986" - inkscape:collect="always"> - <stop - id="stop2988" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2990" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient6958" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2980" - inkscape:collect="always"> - <stop - id="stop2982" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2984" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient6956" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="16" - inkscape:cy="16" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - width="22px" - height="22px" - inkscape:window-width="797" - inkscape:window-height="628" - inkscape:window-x="0" - inkscape:window-y="47" /> - <metadata - id="metadata10630"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - style="display:inline" - id="g6849" - transform="translate(-29.999893,91.000089)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="rect1933" - width="12" - height="7" - x="73.500122" - y="42.5" - transform="matrix(0,-1,1,0,0,0)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <g - transform="translate(-97,-560)" - id="g2063" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="129.49626" - x="-489.49979" - height="7.0035982" - width="17.999748" - id="rect1935" - style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="130.50006" - x="-488.50009" - height="4.9998937" - width="15.999757" - id="rect1937" - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - rx="0" - ry="0" /> - </g> - <rect - style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - id="rect1939" - width="10" - height="5.0000305" - x="74.500122" - y="43.5" - transform="matrix(0,-1,1,0,0,0)" - rx="0" - ry="0" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <g - id="g2992" - transform="translate(-157,-570)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - y="489.5" - x="186.49989" - height="1.9999999" - width="3.0000916" - id="rect2994" - style="fill:url(#linearGradient6956);fill-opacity:1;stroke:url(#linearGradient6958);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - y="489.5" - x="191.49989" - height="1.9999999" - width="3.0000916" - id="rect2996" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - y="489.5" - x="196.49989" - height="1.9999999" - width="3.0000916" - id="rect2998" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - y="489.5" - x="201.49989" - height="1.9999999" - width="3.0000916" - id="rect3000" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - transform="scale(-1,-1)" - y="-491.5" - x="-209.49998" - height="1.9999999" - width="3.0000916" - id="rect3002" - style="fill:url(#linearGradient6960);fill-opacity:1;stroke:url(#linearGradient6962);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - </g> - </g> - </g> -</svg> diff --git a/files_svgedit/images/align-right.png b/files_svgedit/images/align-right.png Binary files differdeleted file mode 100644 index 5ca99caa4..000000000 --- a/files_svgedit/images/align-right.png +++ /dev/null diff --git a/files_svgedit/images/align-right.svg b/files_svgedit/images/align-right.svg deleted file mode 100644 index c2f8f19e3..000000000 --- a/files_svgedit/images/align-right.svg +++ /dev/null @@ -1,233 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22" - height="22" - id="svg11187" - sodipodi:version="0.32" - inkscape:version="0.44+devel" - version="1.0" - sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions" - sodipodi:docname="align-horisontal-right.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - sodipodi:modified="TRUE" - inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-right.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs11189"> - <linearGradient - id="linearGradient2968" - inkscape:collect="always"> - <stop - id="stop2970" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2972" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient4732" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2974" - inkscape:collect="always"> - <stop - id="stop2976" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2978" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient4730" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2986" - inkscape:collect="always"> - <stop - id="stop2988" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2990" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient4728" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2980" - inkscape:collect="always"> - <stop - id="stop2982" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2984" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient4726" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="16" - inkscape:cy="16" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - width="22px" - height="22px" - inkscape:window-width="797" - inkscape:window-height="628" - inkscape:window-x="0" - inkscape:window-y="47" /> - <metadata - id="metadata11192"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - style="display:inline" - id="g4025" - transform="matrix(0,-1,1,0,-60.999914,-198.00011)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - id="rect3873" - width="12" - height="7" - x="-80.499878" - y="-207.5" - transform="matrix(0,-1,1,0,0,0)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <rect - style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - id="rect3875" - width="10" - height="5.0000305" - x="-79.499878" - y="-206.5" - transform="matrix(0,-1,1,0,0,0)" - rx="0" - ry="0" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <g - id="g3877" - transform="translate(-347,-409)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - style="display:inline"> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="129.49626" - x="-489.49979" - height="7.0035982" - width="17.999748" - id="rect3879" - style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="130.50006" - x="-488.50009" - height="4.9998937" - width="15.999757" - id="rect3881" - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - rx="0" - ry="0" /> - </g> - <g - id="g3919" - transform="translate(-407,-410)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - style="display:inline"> - <rect - y="489.5" - x="196.49989" - height="1.9999999" - width="3.0000916" - id="rect3921" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <path - style="fill:url(#linearGradient4726);fill-opacity:1;stroke:url(#linearGradient4728);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5" - id="path3923" - sodipodi:nodetypes="cccc" /> - <path - style="fill:url(#linearGradient4730);fill-opacity:1;stroke:url(#linearGradient4732);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5" - id="path3925" - sodipodi:nodetypes="cccc" /> - </g> - </g> - </g> -</svg> diff --git a/files_svgedit/images/align-top.png b/files_svgedit/images/align-top.png Binary files differdeleted file mode 100644 index 51bfc2ecd..000000000 --- a/files_svgedit/images/align-top.png +++ /dev/null diff --git a/files_svgedit/images/align-top.svg b/files_svgedit/images/align-top.svg deleted file mode 100644 index f314f32d1..000000000 --- a/files_svgedit/images/align-top.svg +++ /dev/null @@ -1,233 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22" - height="22" - id="svg10699" - sodipodi:version="0.32" - inkscape:version="0.44+devel" - version="1.0" - sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions" - sodipodi:docname="align-vertical-bottom.svg" - inkscape:output_extension="org.inkscape.output.svg.inkscape" - inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-vertical-bottom.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" - sodipodi:modified="true"> - <defs - id="defs10701"> - <linearGradient - id="linearGradient2968" - inkscape:collect="always"> - <stop - id="stop2970" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2972" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2968" - id="linearGradient6954" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2974" - inkscape:collect="always"> - <stop - id="stop2976" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2978" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2974" - id="linearGradient6952" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(-1,0,0,-1,395.9999,981)" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - <linearGradient - id="linearGradient2986" - inkscape:collect="always"> - <stop - id="stop2988" - offset="0" - style="stop-color:#ce5c00;stop-opacity:1" /> - <stop - id="stop2990" - offset="1" - style="stop-color:#ce5c00;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2986" - id="linearGradient6950" - gradientUnits="userSpaceOnUse" - x1="187.60938" - y1="489.35938" - x2="186.93732" - y2="489.35938" /> - <linearGradient - id="linearGradient2980" - inkscape:collect="always"> - <stop - id="stop2982" - offset="0" - style="stop-color:#fcaf3e;stop-opacity:1" /> - <stop - id="stop2984" - offset="1" - style="stop-color:#fcaf3e;stop-opacity:0" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2980" - id="linearGradient6948" - gradientUnits="userSpaceOnUse" - x1="187.81554" - y1="489.54688" - x2="187.1716" - y2="489.54688" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="11.197802" - inkscape:cx="16" - inkscape:cy="16" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - width="22px" - height="22px" - inkscape:window-width="797" - inkscape:window-height="628" - inkscape:window-x="0" - inkscape:window-y="47" /> - <metadata - id="metadata10704"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <g - style="display:inline" - id="g6862" - transform="translate(-59.99998,90)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <g - id="g3084" - transform="translate(-97,-563)" - style="fill:#d3d7cf;stroke:#888a85" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - transform="matrix(0,1,1,0,0,0)" - y="169.5" - x="475.50012" - height="7" - width="12" - id="rect3086" - style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <rect - ry="0" - rx="0" - transform="matrix(0,1,1,0,0,0)" - y="170.5" - x="476.50012" - height="5.0000305" - width="10" - id="rect3088" - style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - </g> - <g - id="g3090" - transform="translate(-67,-559)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="129.49626" - x="-489.49979" - height="7.0035982" - width="17.999748" - id="rect3092" - style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" /> - <rect - transform="matrix(0,-1,1,0,0,0)" - y="130.50006" - x="-488.50009" - height="4.9998937" - width="15.999757" - id="rect3094" - style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" - rx="0" - ry="0" /> - </g> - <g - id="g3262" - transform="translate(-127,-578)" - inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <rect - y="489.5" - x="196.49989" - height="1.9999999" - width="3.0000916" - id="rect3264" - style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> - <path - style="fill:url(#linearGradient6948);fill-opacity:1;stroke:url(#linearGradient6950);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5" - id="path3266" - sodipodi:nodetypes="cccc" /> - <path - style="fill:url(#linearGradient6952);fill-opacity:1;stroke:url(#linearGradient6954);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1" - d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5" - id="path3268" - sodipodi:nodetypes="cccc" /> - </g> - </g> - </g> -</svg> diff --git a/files_svgedit/images/bold.png b/files_svgedit/images/bold.png Binary files differdeleted file mode 100644 index 19ac5bbd7..000000000 --- a/files_svgedit/images/bold.png +++ /dev/null diff --git a/files_svgedit/images/cancel.png b/files_svgedit/images/cancel.png Binary files differdeleted file mode 100644 index 8595f5d97..000000000 --- a/files_svgedit/images/cancel.png +++ /dev/null diff --git a/files_svgedit/images/circle.png b/files_svgedit/images/circle.png Binary files differdeleted file mode 100644 index e7bd228b7..000000000 --- a/files_svgedit/images/circle.png +++ /dev/null diff --git a/files_svgedit/images/clear.png b/files_svgedit/images/clear.png Binary files differdeleted file mode 100644 index 514710d12..000000000 --- a/files_svgedit/images/clear.png +++ /dev/null diff --git a/files_svgedit/images/clone.png b/files_svgedit/images/clone.png Binary files differdeleted file mode 100644 index c8713c80b..000000000 --- a/files_svgedit/images/clone.png +++ /dev/null diff --git a/files_svgedit/images/conn.svg b/files_svgedit/images/conn.svg deleted file mode 100644 index 1af5e9a4d..000000000 --- a/files_svgedit/images/conn.svg +++ /dev/null @@ -1,29 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> - <g id="mode_connect"> - <svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> - <defs> - - <line stroke-width="5" fill="none" stroke="#000000" id="svg_2" y2="121" x2="136" y1="7" x1="136"> - <stop stop-opacity="1" stop-color="#4687a0"/> - <stop stop-opacity="1" stop-color="#ffffff"/> - </line> - <linearGradient y2="0.18359" x2="0.29688" y1="0.92188" x1="0.62109" id="svg_3"> - <stop stop-opacity="1" stop-color="#417dad" offset="0"/> - <stop stop-opacity="1" stop-color="#ffffff" offset="1"/> - </linearGradient> - </defs> - <g> - <title>Layer 1</title> - <line x1="5.64676" y1="5.60056" x2="18.50037" y2="18.62557" id="svg_5" stroke="#000000" fill="none"/> - <rect opacity="0.75" stroke-width="0.5" x="0.5" y="0.5" width="9.625" height="5.125" id="svg_1" fill="url(#svg_3)" stroke="#000000"/> - <rect opacity="0.75" id="svg_4" stroke-width="0.5" x="13.75" y="18.25" width="9.625" height="5.125" fill="url(#svg_3)" stroke="#000000"/> - <g id="svg_9"> - <path d="m14.57119,9.12143l-0.98244,5.18852l2.70861,-4.36084" id="svg_6" fill="#a0a0a0" stroke="#000000"/> - <path d="m14.27564,6.76258c-0.25872,0.72562 -0.40735,1.65632 -0.33812,2.15432l2.90784,1.2509c0.30961,-0.21212 1.08198,-1.1814 1.08198,-1.73736" id="svg_7" fill="url(#svg_3)" stroke="#000000"/> - <path d="m16.28893,0.37519l-2.46413,5.9304l4.76481,2.39435l2.13178,-4.96735" id="svg_8" fill="url(#svg_3)" stroke="#000000"/> - </g> - </g> - </svg> - </g> - <g id="svg_eof"/> -</svg>
\ No newline at end of file diff --git a/files_svgedit/images/copy.png b/files_svgedit/images/copy.png Binary files differdeleted file mode 100644 index 23ba357bc..000000000 --- a/files_svgedit/images/copy.png +++ /dev/null diff --git a/files_svgedit/images/cut.png b/files_svgedit/images/cut.png Binary files differdeleted file mode 100644 index d586098e2..000000000 --- a/files_svgedit/images/cut.png +++ /dev/null diff --git a/files_svgedit/images/delete.png b/files_svgedit/images/delete.png Binary files differdeleted file mode 100644 index e71dd96fe..000000000 --- a/files_svgedit/images/delete.png +++ /dev/null diff --git a/files_svgedit/images/document-properties.png b/files_svgedit/images/document-properties.png Binary files differdeleted file mode 100644 index a5ad72875..000000000 --- a/files_svgedit/images/document-properties.png +++ /dev/null diff --git a/files_svgedit/images/dropdown.gif b/files_svgedit/images/dropdown.gif Binary files differdeleted file mode 100644 index 4180d5eba..000000000 --- a/files_svgedit/images/dropdown.gif +++ /dev/null diff --git a/files_svgedit/images/ellipse.png b/files_svgedit/images/ellipse.png Binary files differdeleted file mode 100644 index 1402a2d8d..000000000 --- a/files_svgedit/images/ellipse.png +++ /dev/null diff --git a/files_svgedit/images/eye.png b/files_svgedit/images/eye.png Binary files differdeleted file mode 100644 index 564a1a971..000000000 --- a/files_svgedit/images/eye.png +++ /dev/null diff --git a/files_svgedit/images/fhpath.png b/files_svgedit/images/fhpath.png Binary files differdeleted file mode 100644 index 9255cc50f..000000000 --- a/files_svgedit/images/fhpath.png +++ /dev/null diff --git a/files_svgedit/images/flyouth.png b/files_svgedit/images/flyouth.png Binary files differdeleted file mode 100644 index 5822ed833..000000000 --- a/files_svgedit/images/flyouth.png +++ /dev/null diff --git a/files_svgedit/images/flyup.gif b/files_svgedit/images/flyup.gif Binary files differdeleted file mode 100644 index c027e137c..000000000 --- a/files_svgedit/images/flyup.gif +++ /dev/null diff --git a/files_svgedit/images/freehand-circle.png b/files_svgedit/images/freehand-circle.png Binary files differdeleted file mode 100644 index 43cb17f90..000000000 --- a/files_svgedit/images/freehand-circle.png +++ /dev/null diff --git a/files_svgedit/images/freehand-square.png b/files_svgedit/images/freehand-square.png Binary files differdeleted file mode 100644 index 328fc77d1..000000000 --- a/files_svgedit/images/freehand-square.png +++ /dev/null diff --git a/files_svgedit/images/go-down.png b/files_svgedit/images/go-down.png Binary files differdeleted file mode 100644 index 3dd7fccdf..000000000 --- a/files_svgedit/images/go-down.png +++ /dev/null diff --git a/files_svgedit/images/go-up.png b/files_svgedit/images/go-up.png Binary files differdeleted file mode 100644 index fa9a7d71b..000000000 --- a/files_svgedit/images/go-up.png +++ /dev/null diff --git a/files_svgedit/images/image.png b/files_svgedit/images/image.png Binary files differdeleted file mode 100644 index 10f46719d..000000000 --- a/files_svgedit/images/image.png +++ /dev/null diff --git a/files_svgedit/images/italic.png b/files_svgedit/images/italic.png Binary files differdeleted file mode 100644 index 63485dea9..000000000 --- a/files_svgedit/images/italic.png +++ /dev/null diff --git a/files_svgedit/images/line.png b/files_svgedit/images/line.png Binary files differdeleted file mode 100644 index 37975742e..000000000 --- a/files_svgedit/images/line.png +++ /dev/null diff --git a/files_svgedit/images/link_controls.png b/files_svgedit/images/link_controls.png Binary files differdeleted file mode 100644 index 516a094b3..000000000 --- a/files_svgedit/images/link_controls.png +++ /dev/null diff --git a/files_svgedit/images/logo.png b/files_svgedit/images/logo.png Binary files differdeleted file mode 100644 index 7c04931c3..000000000 --- a/files_svgedit/images/logo.png +++ /dev/null diff --git a/files_svgedit/images/logo.svg b/files_svgedit/images/logo.svg deleted file mode 100644 index e71308bea..000000000 --- a/files_svgedit/images/logo.svg +++ /dev/null @@ -1,32 +0,0 @@ -<svg viewBox="0 0 478 472" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> - <defs> - <linearGradient id="svg_5" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#ffffe0" stop-opacity="1"/> - <stop offset="1" stop-color="#edc39c" stop-opacity="1"/> - </linearGradient> - <linearGradient id="svg_10" x1="0.57031" y1="0.78125" x2="0.28906" y2="0.41406"> - <stop offset="0" stop-color="#ff7f00" stop-opacity="1"/> - <stop offset="1" stop-color="#ffff00"/> - </linearGradient> - <linearGradient id="svg_18" x1="0.37891" y1="0.35938" x2="1" y2="1"> - <stop offset="0" stop-color="#e0e0e0" stop-opacity="1"/> - <stop offset="1" stop-color="#666666" stop-opacity="1"/> - </linearGradient> - </defs> - <g> - <title>Layer 1</title> - <path d="m68.82031,270.04688l-22,-33l17,-35l34,2l25,15l7,-35l28,-16l25,12l100,102l21,23l-15,35l-36,9l20,49l-31,24l-49,-17l-1,31l-33,21l-31,-19l-13,-35l-30,21l-30,-9l-5,-35l16,-31l-32,-6l-15,-19l3,-36l47,-18z" id="svg_19" fill="#ffffff"/> - <path fill="#1a171a" fill-rule="nonzero" id="path2902" d="m158.96452,155.03685c-25.02071,0 -45.37077,20.35121 -45.37077,45.3775c0,0.72217 0.01794,1.4399 0.0471,2.15645c-0.49339,-0.53604 -0.99355,-1.06085 -1.50603,-1.58452c-8.56077,-8.55519 -19.95982,-13.28413 -32.07432,-13.28413c-12.12122,0 -23.52027,4.72334 -32.08778,13.29646c-17.69347,17.69464 -17.69347,46.4619 0,64.17445c0.51809,0.51697 1.0485,1.0126 1.59015,1.50601c-0.72891,-0.03586 -1.45782,-0.04822 -2.19234,-0.04822c-25.02071,0 -45.37189,20.35117 -45.37189,45.37747c0,25.01398 20.35119,45.36517 45.37189,45.36517c0.72891,0 1.45221,-0.01236 2.1744,-0.04828c-0.5293,0.48221 -1.05412,0.98801 -1.56547,1.49368c-17.70021,17.68906 -17.70021,46.48654 -0.00628,64.18677c8.57872,8.56747 19.96655,13.2785 32.08778,13.2785c12.1145,0 23.5012,-4.71103 32.07433,-13.2785c0.51247,-0.51694 1.01823,-1.04849 1.50603,-1.57895c-0.02915,0.71213 -0.04709,1.44669 -0.04709,2.15759c0,25.01511 20.35007,45.37747 45.37077,45.37747c25.01398,0 45.37079,-20.3624 45.37079,-45.37747c0,-0.7222 -0.01689,-1.44553 -0.05266,-2.18112c0.48105,0.52933 0.97562,1.04849 1.48697,1.56662c8.57982,8.57977 19.97775,13.2908 32.1057,13.2908c12.11003,0 23.51358,-4.71103 32.0687,-13.2785c17.68906,-17.70013 17.68906,-46.48538 0,-64.17441c-0.50577,-0.4946 -1.01141,-1.00034 -1.54306,-1.48248c0.69983,0.03592 1.42316,0.04828 2.16992,0.04828c25.01514,0 45.35284,-20.35123 45.35284,-45.36517c0,-25.02631 -20.33774,-45.37747 -45.35284,-45.37747c-0.74683,0 -1.47009,0.01236 -2.19345,0.04822c0.53152,-0.49341 1.06082,-0.98904 1.59128,-1.50601c8.55521,-8.55521 13.2785,-19.94186 13.2785,-32.07545c0,-12.12793 -4.72336,-23.52028 -13.30319,-32.0934c-8.55515,-8.56076 -19.95866,-13.2841 -32.0687,-13.2841c-12.12122,0 -23.52025,4.72334 -32.08777,13.2841c-0.51137,0.5181 -1.01822,1.04851 -1.5049,1.57895c0.03586,-0.72331 0.05266,-1.43991 0.05266,-2.16881c0,-25.02629 -20.35681,-45.3775 -45.37079,-45.3775m0,20.71901c13.61607,0 24.65851,11.03122 24.65851,24.65849c0,6.62749 -2.651,12.62137 -6.9101,17.04979l0,51.67419l36.53975,-36.53523c0.12001,-6.14418 2.48277,-12.24686 7.18146,-16.94667c4.81305,-4.81305 11.12094,-7.22409 17.44116,-7.22409c6.30228,0 12.61577,2.41104 17.43552,7.22409c9.62166,9.63287 9.62166,25.24948 0,34.87669c-4.69977,4.68634 -10.80803,7.04915 -16.95334,7.18147l-36.5341,36.53305l51.66742,0c4.42841,-4.25351 10.42905,-6.90451 17.08008,-6.90451c13.59137,0 24.62933,11.03799 24.62933,24.66525c0,13.61606 -11.03796,24.66519 -24.62933,24.66519c-6.65106,0 -12.65167,-2.66333 -17.08008,-6.91681l-51.64836,0l36.50273,36.50946c6.16995,0.14465 12.26587,2.50522 16.96568,7.20618c9.6216,9.61487 9.6216,25.23151 0,34.85757c-4.80856,4.81979 -11.13327,7.22974 -17.43556,7.22974c-6.32019,0 -12.63371,-2.40991 -17.44786,-7.22974c-4.68074,-4.68744 -7.04802,-10.79572 -7.17473,-16.94098l-36.53975,-36.53415l0,51.66742c4.25908,4.44635 6.9101,10.43466 6.9101,17.0621c0,13.62729 -11.04243,24.66415 -24.65851,24.66415c-13.62166,0 -24.65848,-11.0369 -24.65848,-24.66415c0,-6.62744 2.64539,-12.61575 6.90335,-17.0621l0,-51.66742l-36.53864,36.54648c-0.12672,6.14413 -2.48838,12.26477 -7.18147,16.94098c-4.81416,4.81873 -11.12206,7.22974 -17.42882,7.22974c-6.31461,0 -12.6225,-2.41101 -17.43555,-7.22974c-9.63284,-9.62833 -9.63284,-25.24277 0,-34.8699c4.68073,-4.67627 10.79012,-7.05026 16.94101,-7.18262l36.533,-36.53302l-51.66632,0c-4.44075,4.25348 -10.42902,6.91681 -17.06211,6.91681c-13.61606,0 -24.65288,-11.04913 -24.65288,-24.66519c0,-13.62726 11.03682,-24.66525 24.65288,-24.66525c6.63309,0 12.62136,2.651 17.06211,6.90451l51.68537,0l-36.55208,-36.54538c-6.14527,-0.12 -12.25354,-2.49403 -16.94775,-7.19377c-9.62611,-9.61493 -9.62611,-25.23715 0,-34.86441c4.81419,-4.81305 11.12769,-7.22406 17.44228,-7.22406c6.30676,0 12.61465,2.41101 17.42883,7.22406c4.69978,4.69307 7.06034,10.80246 7.18144,16.94777l36.5386,36.53299l0,-51.66074c-4.25795,-4.42841 -6.90334,-10.42229 -6.90334,-17.04979c0,-13.62726 11.03682,-24.65848 24.65848,-24.65848"/> - <path d="m188.82031,210.04688l16,-47l155,-148l107,100l-158,156.99999l-44,12l-76,-74z" id="svg_6" fill="url(#svg_10)" stroke="#ffffff" stroke-width="0"/> - <path d="m335.57031,40.29688c-11.5,39.75 55.5,115.25 109.25,98.75l21,-20.99999l-103,-101l-27.25,23.25z" id="svg_11" fill="url(#svg_18)" stroke="#ffffff" stroke-width="0"/> - <rect x="272.80404" y="20.76382" width="42.35197" height="232.66835" id="svg_13" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 293.98, 137.1)" opacity="0.4"/> - <rect x="282.80404" y="22.76382" width="14" height="232.66835" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 289.805, 139.1)" opacity="0.4" id="svg_14"/> - <ellipse cx="415.13312" cy="64.38066" id="svg_12" fill="#ea7598" stroke="#ffffff" stroke-width="0" rx="67.79251" ry="34.82026" transform="rotate(39.4735, 415.133, 64.379)"/> - <path d="m212.07031,166.04688c-8.5,47 36.25,103.75 99.25,96.75l-152.5,53.25l53.25,-150z" id="svg_4" fill="url(#svg_5)" stroke="#ffffff" stroke-width="0"/> - <path d="m181.32031,242.54688c0.5,20.5 26.75,45 46.75,48.5l-66.25,20l19.5,-68.5z" id="svg_3" fill="#27382f" stroke="#ffffff" stroke-width="0"/> - </g> - <g> - <title>Layer 2</title> - <path d="m152.82031,317.04688l51,-152l157,-153c40,-12.00001 118,48 105,105l-157,152.99999l-156,47z" id="svg_1" fill="none" stroke="#800000" stroke-width="17"/> - </g> -</svg> diff --git a/files_svgedit/images/move_bottom.png b/files_svgedit/images/move_bottom.png Binary files differdeleted file mode 100644 index 6b1325075..000000000 --- a/files_svgedit/images/move_bottom.png +++ /dev/null diff --git a/files_svgedit/images/move_top.png b/files_svgedit/images/move_top.png Binary files differdeleted file mode 100644 index 9d54b6a48..000000000 --- a/files_svgedit/images/move_top.png +++ /dev/null diff --git a/files_svgedit/images/node_clone.png b/files_svgedit/images/node_clone.png Binary files differdeleted file mode 100755 index 2187d0739..000000000 --- a/files_svgedit/images/node_clone.png +++ /dev/null diff --git a/files_svgedit/images/node_delete.png b/files_svgedit/images/node_delete.png Binary files differdeleted file mode 100755 index ea3f7e687..000000000 --- a/files_svgedit/images/node_delete.png +++ /dev/null diff --git a/files_svgedit/images/none.png b/files_svgedit/images/none.png Binary files differdeleted file mode 100644 index 04c0765f6..000000000 --- a/files_svgedit/images/none.png +++ /dev/null diff --git a/files_svgedit/images/open.png b/files_svgedit/images/open.png Binary files differdeleted file mode 100644 index 254a6b814..000000000 --- a/files_svgedit/images/open.png +++ /dev/null diff --git a/files_svgedit/images/paste.png b/files_svgedit/images/paste.png Binary files differdeleted file mode 100644 index ad983155c..000000000 --- a/files_svgedit/images/paste.png +++ /dev/null diff --git a/files_svgedit/images/path.png b/files_svgedit/images/path.png Binary files differdeleted file mode 100644 index c75a8d712..000000000 --- a/files_svgedit/images/path.png +++ /dev/null diff --git a/files_svgedit/images/polygon.png b/files_svgedit/images/polygon.png Binary files differdeleted file mode 100644 index bcd640c20..000000000 --- a/files_svgedit/images/polygon.png +++ /dev/null diff --git a/files_svgedit/images/polygon.svg b/files_svgedit/images/polygon.svg deleted file mode 100644 index a7f955d8f..000000000 --- a/files_svgedit/images/polygon.svg +++ /dev/null @@ -1,219 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - sodipodi:docname="draw-polygon.svg" - sodipodi:docbase="/home/andreas/projekt/tango/22" - inkscape:version="0.42" - id="svg8728" - height="22.000000px" - width="22.000000px" - inkscape:export-filename="/home/andreas/projekt/tango/22/draw-polygon.png" - inkscape:export-xdpi="90.000000" - inkscape:export-ydpi="90.000000"> - <defs - id="defs3"> - <linearGradient - inkscape:collect="always" - id="linearGradient3941"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3943" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop3945" /> - </linearGradient> - <linearGradient - id="linearGradient6581"> - <stop - style="stop-color:#eeeeec;stop-opacity:1;" - offset="0" - id="stop6583" /> - <stop - style="stop-color:#e0e0de;stop-opacity:1.0000000;" - offset="1.0000000" - id="stop6585" /> - </linearGradient> - <linearGradient - id="linearGradient14920"> - <stop - id="stop14922" - offset="0" - style="stop-color:#5a7aa4;stop-opacity:1;" /> - <stop - id="stop14924" - offset="1.0000000" - style="stop-color:#1f2b3a;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient13390"> - <stop - id="stop13392" - offset="0.0000000" - style="stop-color:#81a2cd;stop-opacity:1.0000000;" /> - <stop - id="stop13394" - offset="1.0000000" - style="stop-color:#2a415f;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - id="linearGradient10325"> - <stop - id="stop10327" - offset="0" - style="stop-color:#5a7aa4;stop-opacity:1;" /> - <stop - id="stop10329" - offset="1.0000000" - style="stop-color:#455e7e;stop-opacity:1.0000000;" /> - </linearGradient> - <linearGradient - gradientUnits="userSpaceOnUse" - y2="39.486301" - x2="37.746555" - y1="23.992306" - x1="23.598076" - gradientTransform="matrix(0.363308,0,0,0.363571,1.976073,1.180651)" - id="linearGradient13217" - xlink:href="#linearGradient6581" - inkscape:collect="always" /> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3941" - id="radialGradient3947" - cx="2.25" - cy="16" - fx="2.25" - fy="16" - r="16.875" - gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,-5.774893e-15,10.66667)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient6581" - id="linearGradient2398" - x1="10.769515" - y1="8.7196503" - x2="15.923767" - y2="15.039417" - gradientUnits="userSpaceOnUse" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient6581" - id="linearGradient2403" - gradientUnits="userSpaceOnUse" - x1="10.769515" - y1="8.7196503" - x2="15.923767" - y2="15.039417" - gradientTransform="matrix(0.874941,0.000000,0.000000,0.868551,1.339139,1.349650)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient6581" - id="linearGradient2405" - gradientUnits="userSpaceOnUse" - x1="10.769515" - y1="8.7196503" - x2="15.923767" - y2="15.039417" - gradientTransform="matrix(1.001575,0.000000,0.000000,1.000000,-3.040037e-3,0.000000)" /> - </defs> - <sodipodi:namedview - inkscape:window-y="25" - inkscape:window-x="0" - inkscape:window-height="949" - inkscape:window-width="1280" - inkscape:document-units="px" - inkscape:grid-bbox="true" - showgrid="false" - inkscape:current-layer="layer1" - inkscape:cy="10.249014" - inkscape:cx="16.435231" - inkscape:zoom="15.999999" - inkscape:pageshadow="2" - inkscape:pageopacity="0.0" - borderopacity="0.08235294" - bordercolor="#666666" - pagecolor="#ffffff" - id="base" - showguides="true" - inkscape:guide-bbox="true" - inkscape:showpageshadow="false" - stroke="#888a85" /> - <metadata - id="metadata4"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title>Draw Rectangle</dc:title> - <dc:date>2005-10-10</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Andreas Nilsson</dc:title> - </cc:Agent> - </dc:creator> - <dc:subject> - <rdf:Bag> - <rdf:li>draw</rdf:li> - <rdf:li>rectangle</rdf:li> - <rdf:li>square</rdf:li> - </rdf:Bag> - </dc:subject> - <cc:license - rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" /> - </cc:Work> - <cc:License - rdf:about="http://creativecommons.org/licenses/by-sa/2.0/"> - <cc:permits - rdf:resource="http://web.resource.org/cc/Reproduction" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/Distribution" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Notice" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/Attribution" /> - <cc:permits - rdf:resource="http://web.resource.org/cc/DerivativeWorks" /> - <cc:requires - rdf:resource="http://web.resource.org/cc/ShareAlike" /> - </cc:License> - </rdf:RDF> - </metadata> - <g - inkscape:groupmode="layer" - inkscape:label="Layer 1" - id="layer1"> - <path - sodipodi:type="arc" - style="opacity:0.60000000;color:#000000;fill:url(#radialGradient3947);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible" - id="path2193" - sodipodi:cx="2.2500000" - sodipodi:cy="16.000000" - sodipodi:rx="16.875000" - sodipodi:ry="5.6250000" - d="M 19.125000 16.000000 A 16.875000 5.6250000 0 1 1 -14.625000,16.000000 A 16.875000 5.6250000 0 1 1 19.125000 16.000000 z" - transform="matrix(0.503704,0.000000,0.000000,0.349014,9.366667,12.45257)" /> - <path - style="fill:url(#linearGradient2405);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#888a85;stroke-width:1.0000002px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - d="M 10.376363,3.6237647 L 18.439333,9.5822222 L 15.644242,18.503298 L 5.3933717,18.503298 L 2.5694122,9.5814367 L 10.376363,3.6237647 z " - id="path1661" - sodipodi:nodetypes="cccccc" /> - <path - style="fill:url(#linearGradient2403);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#fdfdfb;stroke-width:0.99999976px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" - d="M 10.383801,4.6223366 L 17.428917,9.8682235 L 14.894231,17.502140 L 6.1335005,17.494329 L 3.6135882,9.9131875 L 10.383801,4.6223366 z " - id="path2401" - sodipodi:nodetypes="cccccc" /> - </g> -</svg> diff --git a/files_svgedit/images/rect.png b/files_svgedit/images/rect.png Binary files differdeleted file mode 100644 index 4fd15f837..000000000 --- a/files_svgedit/images/rect.png +++ /dev/null diff --git a/files_svgedit/images/redo.png b/files_svgedit/images/redo.png Binary files differdeleted file mode 100644 index 1169fc3b4..000000000 --- a/files_svgedit/images/redo.png +++ /dev/null diff --git a/files_svgedit/images/reorient.png b/files_svgedit/images/reorient.png Binary files differdeleted file mode 100644 index 9455a82c0..000000000 --- a/files_svgedit/images/reorient.png +++ /dev/null diff --git a/files_svgedit/images/rotate.png b/files_svgedit/images/rotate.png Binary files differdeleted file mode 100644 index afa68c6fd..000000000 --- a/files_svgedit/images/rotate.png +++ /dev/null diff --git a/files_svgedit/images/save.png b/files_svgedit/images/save.png Binary files differdeleted file mode 100644 index 9c4c8d9da..000000000 --- a/files_svgedit/images/save.png +++ /dev/null diff --git a/files_svgedit/images/select.png b/files_svgedit/images/select.png Binary files differdeleted file mode 100644 index 1d741f16d..000000000 --- a/files_svgedit/images/select.png +++ /dev/null diff --git a/files_svgedit/images/select_node.png b/files_svgedit/images/select_node.png Binary files differdeleted file mode 100644 index 5ed97db95..000000000 --- a/files_svgedit/images/select_node.png +++ /dev/null diff --git a/files_svgedit/images/sep.png b/files_svgedit/images/sep.png Binary files differdeleted file mode 100644 index 6b9027779..000000000 --- a/files_svgedit/images/sep.png +++ /dev/null diff --git a/files_svgedit/images/shape_group.png b/files_svgedit/images/shape_group.png Binary files differdeleted file mode 100644 index bb2ff516d..000000000 --- a/files_svgedit/images/shape_group.png +++ /dev/null diff --git a/files_svgedit/images/shape_ungroup.png b/files_svgedit/images/shape_ungroup.png Binary files differdeleted file mode 100644 index 3a6f369a5..000000000 --- a/files_svgedit/images/shape_ungroup.png +++ /dev/null diff --git a/files_svgedit/images/source.png b/files_svgedit/images/source.png Binary files differdeleted file mode 100644 index c1f079449..000000000 --- a/files_svgedit/images/source.png +++ /dev/null diff --git a/files_svgedit/images/spinbtn_updn_big.png b/files_svgedit/images/spinbtn_updn_big.png Binary files differdeleted file mode 100644 index 3873736f8..000000000 --- a/files_svgedit/images/spinbtn_updn_big.png +++ /dev/null diff --git a/files_svgedit/images/square.png b/files_svgedit/images/square.png Binary files differdeleted file mode 100644 index 0ca71a67f..000000000 --- a/files_svgedit/images/square.png +++ /dev/null diff --git a/files_svgedit/images/svg_edit_icons.svg b/files_svgedit/images/svg_edit_icons.svg deleted file mode 100644 index 2255ba5ea..000000000 --- a/files_svgedit/images/svg_edit_icons.svg +++ /dev/null @@ -1,975 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg"> -<!-- All images created with SVG-edit - http://svg-edit.googlecode.com/ --> - -<g id="logo"> -<svg viewBox="0 0 478 472" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> - <defs> - <linearGradient id="svg_5" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#ffffe0" stop-opacity="1"/> - <stop offset="1" stop-color="#edc39c" stop-opacity="1"/> - </linearGradient> - <linearGradient id="svg_10" x1="0.57031" y1="0.78125" x2="0.28906" y2="0.41406"> - <stop offset="0" stop-color="#ff7f00" stop-opacity="1"/> - <stop offset="1" stop-color="#ffff00"/> - </linearGradient> - <linearGradient id="svg_18" x1="0.37891" y1="0.35938" x2="1" y2="1"> - <stop offset="0" stop-color="#e0e0e0" stop-opacity="1"/> - <stop offset="1" stop-color="#666666" stop-opacity="1"/> - </linearGradient> - </defs> - <g> - <path d="m68.82031,270.04688l-22,-33l17,-35l34,2l25,15l7,-35l28,-16l25,12l100,102l21,23l-15,35l-36,9l20,49l-31,24l-49,-17l-1,31l-33,21l-31,-19l-13,-35l-30,21l-30,-9l-5,-35l16,-31l-32,-6l-15,-19l3,-36l47,-18z" id="svg_19" fill="#ffffff"/> - <path fill="#1a171a" fill-rule="nonzero" id="path2902" d="m158.96452,155.03685c-25.02071,0 -45.37077,20.35121 -45.37077,45.3775c0,0.72217 0.01794,1.4399 0.0471,2.15645c-0.49339,-0.53604 -0.99355,-1.06085 -1.50603,-1.58452c-8.56077,-8.55519 -19.95982,-13.28413 -32.07432,-13.28413c-12.12122,0 -23.52027,4.72334 -32.08778,13.29646c-17.69347,17.69464 -17.69347,46.4619 0,64.17445c0.51809,0.51697 1.0485,1.0126 1.59015,1.50601c-0.72891,-0.03586 -1.45782,-0.04822 -2.19234,-0.04822c-25.02071,0 -45.37189,20.35117 -45.37189,45.37747c0,25.01398 20.35119,45.36517 45.37189,45.36517c0.72891,0 1.45221,-0.01236 2.1744,-0.04828c-0.5293,0.48221 -1.05412,0.98801 -1.56547,1.49368c-17.70021,17.68906 -17.70021,46.48654 -0.00628,64.18677c8.57872,8.56747 19.96655,13.2785 32.08778,13.2785c12.1145,0 23.5012,-4.71103 32.07433,-13.2785c0.51247,-0.51694 1.01823,-1.04849 1.50603,-1.57895c-0.02915,0.71213 -0.04709,1.44669 -0.04709,2.15759c0,25.01511 20.35007,45.37747 45.37077,45.37747c25.01398,0 45.37079,-20.3624 45.37079,-45.37747c0,-0.7222 -0.01689,-1.44553 -0.05266,-2.18112c0.48105,0.52933 0.97562,1.04849 1.48697,1.56662c8.57982,8.57977 19.97775,13.2908 32.1057,13.2908c12.11003,0 23.51358,-4.71103 32.0687,-13.2785c17.68906,-17.70013 17.68906,-46.48538 0,-64.17441c-0.50577,-0.4946 -1.01141,-1.00034 -1.54306,-1.48248c0.69983,0.03592 1.42316,0.04828 2.16992,0.04828c25.01514,0 45.35284,-20.35123 45.35284,-45.36517c0,-25.02631 -20.33774,-45.37747 -45.35284,-45.37747c-0.74683,0 -1.47009,0.01236 -2.19345,0.04822c0.53152,-0.49341 1.06082,-0.98904 1.59128,-1.50601c8.55521,-8.55521 13.2785,-19.94186 13.2785,-32.07545c0,-12.12793 -4.72336,-23.52028 -13.30319,-32.0934c-8.55515,-8.56076 -19.95866,-13.2841 -32.0687,-13.2841c-12.12122,0 -23.52025,4.72334 -32.08777,13.2841c-0.51137,0.5181 -1.01822,1.04851 -1.5049,1.57895c0.03586,-0.72331 0.05266,-1.43991 0.05266,-2.16881c0,-25.02629 -20.35681,-45.3775 -45.37079,-45.3775m0,20.71901c13.61607,0 24.65851,11.03122 24.65851,24.65849c0,6.62749 -2.651,12.62137 -6.9101,17.04979l0,51.67419l36.53975,-36.53523c0.12001,-6.14418 2.48277,-12.24686 7.18146,-16.94667c4.81305,-4.81305 11.12094,-7.22409 17.44116,-7.22409c6.30228,0 12.61577,2.41104 17.43552,7.22409c9.62166,9.63287 9.62166,25.24948 0,34.87669c-4.69977,4.68634 -10.80803,7.04915 -16.95334,7.18147l-36.5341,36.53305l51.66742,0c4.42841,-4.25351 10.42905,-6.90451 17.08008,-6.90451c13.59137,0 24.62933,11.03799 24.62933,24.66525c0,13.61606 -11.03796,24.66519 -24.62933,24.66519c-6.65106,0 -12.65167,-2.66333 -17.08008,-6.91681l-51.64836,0l36.50273,36.50946c6.16995,0.14465 12.26587,2.50522 16.96568,7.20618c9.6216,9.61487 9.6216,25.23151 0,34.85757c-4.80856,4.81979 -11.13327,7.22974 -17.43556,7.22974c-6.32019,0 -12.63371,-2.40991 -17.44786,-7.22974c-4.68074,-4.68744 -7.04802,-10.79572 -7.17473,-16.94098l-36.53975,-36.53415l0,51.66742c4.25908,4.44635 6.9101,10.43466 6.9101,17.0621c0,13.62729 -11.04243,24.66415 -24.65851,24.66415c-13.62166,0 -24.65848,-11.0369 -24.65848,-24.66415c0,-6.62744 2.64539,-12.61575 6.90335,-17.0621l0,-51.66742l-36.53864,36.54648c-0.12672,6.14413 -2.48838,12.26477 -7.18147,16.94098c-4.81416,4.81873 -11.12206,7.22974 -17.42882,7.22974c-6.31461,0 -12.6225,-2.41101 -17.43555,-7.22974c-9.63284,-9.62833 -9.63284,-25.24277 0,-34.8699c4.68073,-4.67627 10.79012,-7.05026 16.94101,-7.18262l36.533,-36.53302l-51.66632,0c-4.44075,4.25348 -10.42902,6.91681 -17.06211,6.91681c-13.61606,0 -24.65288,-11.04913 -24.65288,-24.66519c0,-13.62726 11.03682,-24.66525 24.65288,-24.66525c6.63309,0 12.62136,2.651 17.06211,6.90451l51.68537,0l-36.55208,-36.54538c-6.14527,-0.12 -12.25354,-2.49403 -16.94775,-7.19377c-9.62611,-9.61493 -9.62611,-25.23715 0,-34.86441c4.81419,-4.81305 11.12769,-7.22406 17.44228,-7.22406c6.30676,0 12.61465,2.41101 17.42883,7.22406c4.69978,4.69307 7.06034,10.80246 7.18144,16.94777l36.5386,36.53299l0,-51.66074c-4.25795,-4.42841 -6.90334,-10.42229 -6.90334,-17.04979c0,-13.62726 11.03682,-24.65848 24.65848,-24.65848"/> - <path d="m188.82031,210.04688l16,-47l155,-148l107,100l-158,156.99999l-44,12l-76,-74z" id="svg_6" fill="url(#svg_10)" stroke="none"/> - <path d="m335.57031,40.29688c-11.5,39.75 55.5,115.25 109.25,98.75l21,-20.99999l-103,-101l-27.25,23.25z" id="svg_11" fill="url(#svg_18)" stroke="none"/> - <rect x="272.80404" y="20.76382" width="42.35197" height="232.66835" id="svg_13" fill="#ffffff" stroke="none" transform="rotate(45.9094, 293.98, 137.1)" opacity="0.4"/> - <rect x="282.80404" y="22.76382" width="14" height="232.66835" fill="#ffffff" stroke="none" transform="rotate(45.9094, 289.805, 139.1)" opacity="0.4" id="svg_14"/> - <ellipse cx="415.13312" cy="64.38066" id="svg_12" fill="#ea7598" stroke="none" rx="67.79251" ry="34.82026" transform="rotate(39.4735, 415.133, 64.379)"/> - <path d="m212.07031,166.04688c-8.5,47 36.25,103.75 99.25,96.75l-152.5,53.25l53.25,-150z" id="svg_4" fill="url(#svg_5)" stroke="none"/> - <path d="m181.32031,242.54688c0.5,20.5 26.75,45 46.75,48.5l-66.25,20l19.5,-68.5z" id="svg_3" fill="#27382f" stroke="none"/> - </g> - <g> - <title>Layer 2</title> - <path d="m152.82031,317.04688l51,-152l157,-153c40,-12.00001 118,48 105,105l-157,152.99999l-156,47z" id="svg_1" fill="none" stroke="#800000" stroke-width="17"/> - </g> -</svg> -</g> - - -<g id="select"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <path stroke="#ffffff" fill="#000000" id="svg_13" d="m7.38168,2.46948l0.07502,17.03258l3.30083,-2.62617l2.62566,5.62751l4.20105,-2.62617l-3.30082,-4.80214l4.57614,-0.37517l-11.47787,-12.23044z"/> - </svg> -</g> - -<g id="select_node"> - <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <circle stroke="#0000ff" fill="#00ffff" id="svg_44" r="3.87891" cy="5.3" cx="8.7" stroke-width="1.5"/> - <path d="m9.18161,5.6695l0.07763,15.16198l3.41588,-2.33775l2.71718,5.00947l4.34748,-2.33775l-3.41587,-4.27474l4.73565,-0.33397l-11.87794,-10.88723z" id="svg_13" fill="#000000" stroke="#ffffff"/> - </svg> -</g> - -<g id="square"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient id="svg_2" x1="0.36328" y1="0.10156" x2="1" y2="1"> - <stop offset="0" stop-color="#ffffff" stop-opacity="1"/> - <stop offset="1" stop-color="#3b7e9b" stop-opacity="1"/> - </linearGradient> - </defs> - <rect x="1.5" y="1.5" width="20" height="20" id="svg_1" fill="url(#svg_2)" stroke="#000000"/> - </svg> -</g> - -<g id="rect"> -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2"> - <stop stop-opacity="1" stop-color="#ffffff" offset="0"/> - <stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/> - </linearGradient> - </defs> - <rect transform="matrix(1, 0, 0, 1, 0, 0)" stroke="#000000" fill="url(#svg_2)" id="svg_1" height="12" width="20" y="5.5" x="1.5"/> - </svg> -</g> - -<g id="fh_rect"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52"> - <defs> - <linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2"> - - <stop stop-opacity="1" stop-color="#ffffff" offset="0"/> - <stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/> - </linearGradient> - <linearGradient y2="0.3945" x2="0.6132" y1="0.1093" x1="0.3046" id="svg_9"> - <stop stop-opacity="1" stop-color="#f9d225" offset="0"/> - <stop stop-opacity="1" stop-color="#bf5f00" offset="1"/> - </linearGradient> - </defs> - <rect stroke="#000000" stroke-width="2" fill="url(#svg_2)" id="svg_1" height="50" width="50" y="0.75" x="1.25"/> - <path stroke-width="2" stroke="#000000" fill="url(#svg_9)" id="svg_2" d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5"/> - <path stroke-width="2" stroke="#000000" fill="#fce0a9" id="svg_10" d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z"/> - <path id="svg_11" stroke-width="2" stroke="#000000" fill="#000000" d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z"/> -</svg> -</g> - - -<g id="circle"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54"> - <defs> - <linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4"> - <stop stop-opacity="1" stop-color="#ffffff" offset="0.0"/> - <stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/> - </linearGradient> - </defs> - <g> - <circle stroke-opacity="1" fill-opacity="1" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" r="23" cy="27" cx="27"/> - </g> -</svg> -</g> - -<g id="ellipse"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54"> - <defs> - <linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4"> - <stop stop-opacity="1" stop-color="#ffffff" offset="0.0"/> - <stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/> - </linearGradient> - </defs> - <g> - <ellipse stroke-opacity="1" fill-opacity="1" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" rx="23" ry="15" cy="27" cx="27"/> - </g> -</svg> -</g> - -<g id="fh_ellipse"> -<svg viewBox="0 0 52 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945"> - <stop offset="0" stop-color="#f9d225" stop-opacity="1"/> - <stop offset="1" stop-color="#bf5f00" stop-opacity="1"/> - </linearGradient> - <linearGradient id="svg_4" x1="0.17188" y1="0.1875" x2="1" y2="1"> - <stop offset="0" stop-color="#ffffff" stop-opacity="1"/> - <stop offset="1" stop-color="#ff6666" stop-opacity="1"/> - </linearGradient> - </defs> - <ellipse stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" rx="23" ry="12" cy="37" cx="27"/> - <path d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#000000" stroke-width="2"/> - <path d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#000000" stroke-width="2"/> - <path d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" id="svg_11"/> - </svg> -</g> - -<g id="pencil"> -<svg viewBox="0 0 48 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945"> - <stop offset="0.0" stop-color="#f9d225" stop-opacity="1"/> - <stop offset="1.0" stop-color="#bf5f00" stop-opacity="1"/> - </linearGradient> - </defs> - <path d="M31.5,0 l-8.75,20.25 l0.75,24 l16.5,-16.5 l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/> - <path d="M39.5,28.5 c-2,-9.25 -10.25,-11.75 -17,-7.4375 l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/> - <path d="M26.9318,41.1745 c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905 l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1" id="svg_11"/> - <path d="M2.3132,4.6197 c12.4998,-1.6891 10.4729,7.0945 0,21.6215 c22.9729,-4.0539 12.1620,5.4053 12.1620,13.1756 c-0.3377,4.0539 8.7836,21.9594 26.0135,-1.3513" id="svg_12" fill="none" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/> -</svg> -</g> - -<g id="pen"> - <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_16" x1="0.46484" y1="0.15625" x2="0.9375" y2="0.39453"> - <stop offset="0" stop-color="#f2feff" stop-opacity="1"/> - <stop offset="1" stop-color="#14609b" stop-opacity="1"/> - </linearGradient> - <linearGradient id="svg_19" x1="0.18359" y1="0.26172" x2="0.77734" y2="0.56641"> - <stop offset="0" stop-color="#ffffff" stop-opacity="1"/> - <stop offset="1" stop-color="#fce564" stop-opacity="1"/> - </linearGradient> - </defs> - <line x1="0.99844" y1="1.49067" x2="12.97691" y2="21.14149" id="svg_5" stroke="#000000" fill="none"/> - <path d="m14.05272,13.68732l-1.46451,7.52632l4.03769,-6.32571" id="svg_6" fill="#a0a0a0" stroke="#000000"/> - <path d="m13.61215,10.26563c-0.38567,1.05257 -0.60723,2.40261 -0.50403,3.125l4.33468,1.81452c0.46153,-0.30769 1.6129,-1.71371 1.6129,-2.52016" id="svg_7" fill="url(#svg_19)" stroke="#000000"/> - <path d="m16.61335,1.00028l-3.67325,8.60247l7.10285,3.47318l3.17783,-7.20549" id="svg_8" fill="url(#svg_16)" stroke="#000000"/> - </svg> -</g> - -<g id="text"> - <svg viewBox="0 0 158 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <text x="58" y="120" id="svg_1" fill="#000000" stroke="none" font-size="120pt" font-family="sans-serif" text-anchor="middle" fill-opacity="1" stroke-opacity="1" font-weight="bold">A</text> - <line x1="136" y1="7" x2="136" y2="121" id="svg_2" stroke="#000000" fill="none" fill-opacity="1" stroke-opacity="1" stroke-width="5"/> - <line x1="120" y1="4" x2="152" y2="4" id="svg_3" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1"/> - <line x1="120" y1="124" x2="152" y2="124" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1" id="svg_4"/> - </svg> -</g> - - -<g id="path"> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient y2="1" x2="1" y1="0.28125" x1="0.33594" id="svg_4"> - <stop stop-opacity="1" stop-color="#ffffff" offset="0"/> - <stop stop-opacity="1" stop-color="#33a533" offset="1"/> - </linearGradient> - </defs> - <path stroke-dasharray="null" stroke-width="4" stroke="#000000" fill="url(#svg_4)" id="svg_1" d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z"/> - </svg> -</g> - -<g id="add_subpath"> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_4" x1="0.33594" y1="0.28125" x2="1" y2="1"> - <stop offset="0" stop-color="#ffffff" stop-opacity="1"/> - <stop offset="1" stop-color="#33a533" stop-opacity="1"/> - </linearGradient> - </defs> - <g> - <path d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z" id="svg_1" fill="url(#svg_4)" stroke="#000000" stroke-width="4" stroke-dasharray="null"/> - <g id="svg_7"> - <circle stroke-dasharray="null" stroke-width="5" stroke="#000000" fill="#ffffff" id="svg_6" r="22.63281" cy="88.5" cx="45.5"/> - <line stroke-dasharray="null" stroke-width="7" stroke="#000000" id="svg_2" y2="104.03768" x2="45.5" y1="72.96232" x1="45.5"/> - <line stroke-dasharray="null" stroke-width="7" stroke="#000000" id="svg_3" y2="88.5" x2="61.03768" y1="88.5" x1="29.96232"/> - </g> - </g> - </svg> -</g> - -<g id="close_path"> -<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <g> - <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/> - <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/> - <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/> - <g stroke-width="15" stroke="#00f" fill="#0ff"> - <circle r="30" cy="41" cx="123"/> - <circle r="30" cy="146" cx="40"/> - <circle r="30" cy="260" cx="69"/> - <circle r="30" cy="260" cx="228"/> - <circle r="30" cy="148" cx="260"/> - </g> - </g> -</svg> -</g> - -<g id="open_path"> -<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <g> - <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/> - <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/> - <g stroke-width="15" stroke="#00f" fill="#0ff"> - <circle r="30" cy="41" cx="123"/> - <circle r="30" cy="146" cx="40"/> - <circle r="30" cy="260" cx="69"/> - <circle r="30" cy="260" cx="228"/> - <circle r="30" cy="148" cx="260"/> - </g> - <g stroke="#A00" stroke-width="15" fill="none"> - <line x1="168" y1="24" x2="210" y2="150"/> - <line x1="210" y1="24" x2="168" y2="150"/> - </g> - </g> -</svg> -</g> - - -<g id="image"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_25"> - <stop stop-opacity="1" stop-color="#10284c" offset="0"/> - <stop stop-opacity="1" stop-color="#5374ad" offset="1"/> - </linearGradient> - <linearGradient y2="0.75781" x2="0.99609" y1="0" x1="1" id="svg_23"> - <stop stop-opacity="1" stop-color="#162e84" offset="0"/> - <stop stop-opacity="1" stop-color="#97c4ef" offset="1"/> - </linearGradient> - </defs> - <rect x="1" y="3.83333" width="22" height="17" id="svg_18" fill="#202020" stroke="none"/> - <rect stroke-width="1.2" stroke="#ffffff" fill="#232947" id="svg_15" height="14" width="19" y="5.33333" x="2.5"/> - <rect fill="url(#svg_23)" id="svg_20" height="7.02244" width="15.96424" y="6.7266" x="4"/> - <rect fill="url(#svg_25)" id="svg_24" height="4.02393" width="15.96303" y="13.77454" x="4"/> - <circle fill="#ffffad" id="svg_26" r="1.83333" cy="9.82002" cx="7.13254"/> - <path d="m14.5696,13.77458l0.70243,-4.85313l-3.12899,4.85313l2.42656,0z" id="svg_14" fill="#404040" stroke="none"/> - <path d="m15.27203,8.98531c2.74584,0.06386 2.42657,4.21456 -0.63857,4.85313c0.70243,-1.27714 1.66028,-3.63985 0.63857,-4.85313z" id="svg_17" fill="#404040" stroke="none"/> -</svg> -</g> - -<g id="zoom"> - <svg viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_30" x1="0" y1="0" x2="1" y2="0"> - <stop offset="0" stop-color="#d3d3d3" stop-opacity="1"/> - <stop offset="1" stop-color="#424242" stop-opacity="1"/> - </linearGradient> - </defs> - <path d="m107.14774,101.03477l-0.64774,43.96523c5.00857,4.72089 14.00811,5.27188 19,0l-0.31667,-44.16l-9.61514,-19.84l-8.42046,20.03477z" id="svg_29" fill="url(#svg_30)" stroke="#202020" stroke-width="2" transform="rotate(-45, 116, 114)"/> - <circle cx="58" cy="58" r="51" id="svg_22" fill="#c0c0c0" stroke="#202020" stroke-width="5"/> - <circle cx="58" cy="58" r="43" id="svg_27" fill="#aaccff" stroke="none"/> - <path d="m15.68604,61.46511c38.13954,17.67442 48.13954,15.34883 85.11628,-0.46511c1.39536,18.60465 -19.30231,41.86047 -42.7907,40.93023c-21.6279,-0.93023 -42.7907,-21.86046 -42.32558,-40.46511z" id="svg_28" fill="#8cbaff" stroke="none"/> - </svg> -</g> - -<g id="arrow_right"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 50"> - <path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/> - </svg> -</g> - -<g id="arrow_right_big"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 50"> - <path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/> - </svg> -</g> - -<g id="arrow_down"> - <svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#000000" stroke="#000000"/> - </svg> -</g> - -<g id="fill"> -<svg width="32" height="33" xmlns="http://www.w3.org/2000/svg"> - <g id="svg_5"> - <path id="svg_4" d="m17.49167,10.97621c6.9875,-0.325 12.1875,2.70833 12.13333,7.36667l-0.325,10.075c-0.75833,4.0625 -2.275,3.0875 -3.03333,0.10833l0.21667,-9.64166c-0.43333,-0.975 -1.08333,-1.625 -1.95,-1.51667" stroke-linejoin="round" stroke="#606060" fill="#c0c0c0"/> - <path id="svg_1" d="m2.00055,17.1309l10.72445,-10.72445l12.67445,12.13279l-3.52056,0.05389l-9.15389,9.26223l-10.72445,-10.72445z" stroke-linejoin="round" stroke="#000000" fill="#c0c0c0"/> - <path id="svg_3" d="m14.35,13.57621c-0.1625,-3.95417 0.86667,-11.7 -1.84167,-11.59167c-2.70833,0.10833 -2.6,2.05833 -2.16667,6.93333" stroke-linejoin="round" stroke="#000000" fill="none"/> - <circle id="svg_2" r="1.60938" cy="15.20121" cx="14.45833" stroke-linejoin="round" stroke="#000000" fill="none"/> - </g> -</svg> -</g> - -<g id="stroke"> -<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"> - <rect fill="none" stroke="#707070" stroke-width="10" x="8.625" y="8.625" width="32.75" height="32.75" id="svg_1"/> -</svg> -</g> - -<g id="opacity"> -<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"> - <defs> - <linearGradient y2="0.1" x2="0.9" y1="0.9" x1="0.1" id="svg_7"> - <stop stop-color="#000000" offset="0"/> - <stop stop-opacity="0" stop-color="#000000" offset="1"/> - </linearGradient> - </defs> - <rect id="svg_4" height="50" width="50" y="0" x="0" fill="#ffffff"/> - <rect id="svg_1" height="25" width="25" y="0" x="0" fill="#a0a0a0"/> - <rect id="svg_2" height="25" width="25" y="25" x="25" fill="#a0a0a0"/> - <rect id="svg_3" height="50" width="50" y="0" x="0" stroke-width="2" stroke="url(#svg_7)" fill="url(#svg_7)"/> - </svg> -</g> - -<g id="new_image"> -<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/> - <circle stroke="none" fill="url(#svg_9)" id="svg_65" r="6.300781" cy="7.529969" cx="17.761984"/> - <defs> - <radialGradient id="svg_9" cx="0.5" cy="0.5" r="0.5"> - <stop offset="0.1" stop-color="#ffe500" stop-opacity="1"/> - <stop offset="1" stop-color="#ffff00" stop-opacity="0"/> - </radialGradient> - </defs> -</svg> -</g> - -<g id="save"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_41"> - <stop stop-opacity="1" stop-color="#727272" offset="0"/> - <stop stop-opacity="1" stop-color="#d6d6d6" offset="1"/> - </linearGradient> - <linearGradient y2="0.875" x2="0.21484" y1="0.00391" x1="0.04297" id="svg_46"> - <stop stop-opacity="1" stop-color="#81bbf4" offset="0"/> - <stop stop-opacity="1" stop-color="#376eb7" offset="1"/> - </linearGradient> - </defs> - <path stroke="#202020" fill="#e0e0e0" id="svg_21" d="m1.51669,22.3458l21.13245,-0.10111l0,-6.06673l-2.62892,-9.80789l-16.27907,0.10111l-2.32558,9.20121l0.10111,6.67341z"/> - <rect stroke="#efefef" fill="url(#svg_41)" id="svg_32" height="4.75108" width="19.21031" y="16.58227" x="2.42667"/> - <path stroke="#ffffff" fill="#c0c0c0" id="svg_42" d="m4.55005,11.12235l0.70779,-2.83114l13.04348,0l0.70779,3.13448c-0.70779,2.52781 -4.04479,3.84227 -7.17897,3.84227c-2.72977,0 -6.37007,-1.41557 -7.28008,-4.1456z"/> - <path stroke="#285582" fill="url(#svg_46)" id="svg_45" d="m7.14286,9.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/> - </svg> -</g> - -<g id="export"> - <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"> - <defs> - <linearGradient id="svg_5" x1="0.77734" y1="0.51172" x2="0.09375" y2="0.53516"> - <stop offset="0" stop-color="#81bbf4"/> - <stop offset="1" stop-color="#376eb7"/> - </linearGradient> - </defs> - <g> - <rect x="7.22599" y="1.3603" width="15.76465" height="21.51735" id="svg_55" fill="#eaeaea" stroke="#606060"/> - <circle fill="#31abed" stroke-width="0.5" cx="17.4206" cy="11.1278" r="4.69727" id="svg_3"/> - <path fill="#ffcc00" stroke-width="0.5" d="m9.67673,20.24302l7.38701,-6.80778l2.91746,6.71323" id="svg_4"/> - <rect fill="#ff5555" stroke-width="0.5" x="9.5385" y="2.94914" width="5.74652" height="5.74652" id="svg_2"/> - <path d="m6.13727,17.94236l5.77328,-4.91041l-5.86949,-5.1832l-0.09622,2.36426l-4.64805,-0.06751l-0.04665,5.54694l4.79093,-0.02342l0.09623,2.27334z" id="svg_45" fill="url(#svg_5)" stroke="#285582"/> - </g> - </svg> -</g> - -<g id="open"> -<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient y2="0.91406" x2="0.65234" y1="0.14063" x1="0.42578" id="svg_76"> - <stop stop-opacity="1" stop-color="#81bbf4" offset="0"/> - <stop stop-opacity="1" stop-color="#376eb7" offset="1"/> - </linearGradient> - </defs> - <rect x="1.65" y="3.75" width="9.8" height="16.72712" id="svg_98" fill="#c0c0c0" stroke="#606060"/> - <rect stroke="none" fill="#a0a0a0" id="svg_88" height="14.17459" width="6.39585" y="4.9758" x="2.89542"/> - <path d="m18.62576,4.54365l0,6.91443l-9.9395,0l-0.08643,-10.11236l6.828,0l3.19792,3.19793z" id="svg_99" fill="#e0e0e0" stroke="#404040"/> - <path d="m2.95,20.53644l1.65,-12.03644l16.2,0l-1.5,12l-16.35,0.03643z" id="svg_97" fill="url(#svg_76)" stroke="#285582"/> - <line fill="none" stroke="#606060" id="svg_89" y2="4.28436" x2="13.95851" y1="4.28436" x1="10.32844"/> - <line fill="none" stroke="#606060" id="svg_91" y2="6.53155" x2="14.82282" y1="6.53155" x1="10.32844"/> - <path stroke="none" fill="#ffffff" id="svg_100" d="m15.25895,1.95069l-0.00401,2.85225l2.89558,0.00004l-2.89157,-2.85229z"/> -</svg> -</g> - -<g id="import"> -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient y2="0.875" x2="0.21484" y1="0.00391" x1="0.04297" id="svg_46_import"> - <stop stop-opacity="1" stop-color="#81f4bb" offset="0"/> - <stop stop-opacity="1" stop-color="#37b76e" offset="1"/> - </linearGradient> - </defs> - <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/> - <path stroke="#285582" fill="url(#svg_46_import)" id="svg_45" d="m7.14286,12.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/> -</svg> -</g> - -<g id="docprops"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient y2="1" x2="1" y1="0.5" x1="1" id="svg_53"> - <stop stop-opacity="1" stop-color="#606060" offset="0"/> - <stop stop-opacity="0" stop-color="#5e5e5e" offset="1"/> - </linearGradient> - </defs> - <rect stroke="#606060" fill="#eaeaea" id="svg_55" height="21" width="18" y="1.6692" x="2.42792"/> - <line fill="none" stroke="#a0a0a0" id="svg_56" y2="4.37757" x2="14.89023" y1="4.37757" x1="6.696"/> - <line fill="none" stroke="#a0a0a0" id="svg_57" y2="7.10804" x2="12.92026" y1="7.10804" x1="6.6948"/> - <line fill="none" stroke="#a0a0a0" id="svg_58" y2="9.84241" x2="15.64716" y1="9.84241" x1="6.6942"/> - <line fill="none" stroke="#a0a0a0" id="svg_59" y2="12.36585" x2="13.21805" y1="12.36585" x1="6.69691"/> - <line fill="none" stroke="#a0a0a0" id="svg_60" y2="15.06507" x2="14.43591" y1="15.06507" x1="6.69691"/> - <line fill="none" stroke="#a0a0a0" id="svg_61" y2="17.84241" x2="13.36979" y1="17.84241" x1="6.69691"/> - <g id="svg_54"> - <path transform="rotate(-45, 12.5448, 11.7085)" stroke="none" fill="#606060" id="svg_31" d="m11.24329,8.73944l0,2.79974l2.53499,0.07777l0,-2.95528c1.78134,0.07777 2.26093,1.39987 2.12391,2.95528c-0.06851,1.63318 -1.30175,3.49967 -3.49418,3.26636c-2.19242,-0.31108 -2.87755,-1.39987 -3.15161,-2.72197c-0.27406,-1.39987 0.41108,-3.34413 1.98689,-3.4219z"/> - <rect opacity="0.95" transform="rotate(-45, 16.2485, 15.1732)" stroke="none" fill="url(#svg_53)" id="svg_50" height="4.85445" width="2.57974" y="12.746" x="15.04047"/> - </g> - </svg> -</g> - -<g id="source"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 52"> - <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke="none" fill="#019191" id="svg_40" y="15" x="28.23" font-weight="bold">s</text> - <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke="none" fill="#019191" id="svg_47" y="30" x="28.23" font-weight="bold">v</text> - <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke="none" fill="#019191" id="svg_48" y="44" x="28.23" font-weight="bold">g</text> - <line stroke-width="3" fill="none" stroke="#aa0000" id="svg_51" y2="43" x2="16" y1="25" x1="5"/> - <line id="svg_62" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="16" y1="26" x1="5"/> - <line id="svg_63" stroke-width="3" fill="none" stroke="#aa0000" y2="43" x2="39" y1="25" x1="50"/> - <line id="svg_64" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="39" y1="26" x1="51"/> - </svg> -</g> - -<g id="wireframe"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <circle stroke="#000000" fill="none" id="svg_49" r="8" cy="9.5" cx="9.5"/> - <rect stroke="#000000" fill="none" id="svg_52" height="14" width="14" y="8.5" x="8.5"/> - </svg> -</g> - -<g id="undo"> -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_66" x1="0.04297" y1="0.00391" x2="0.21484" y2="0.875"> - <stop offset="0" stop-color="#f7f963" stop-opacity="1"/> - <stop offset="1" stop-color="#d3c310" stop-opacity="1"/> - </linearGradient> - </defs> - <path transform="rotate(-90, 10.3017, 11.5526)" d="m6.70188,10.72562l6.55493,-7.13388l6.65817,7.24912l-3.79441,0.03193l0,2.72259c-0.04257,2.74017 -2.76516,5.83068 -7.81235,6.02135c-5.18575,0 -7.1226,-3.75464 -7.49302,-7.41944c0.61736,1.6754 3.14913,3.78397 5.3716,3.67918c2.71635,0.1048 4.41501,-0.61714 4.41501,-2.50184l0,-2.64901l-3.89995,0z" id="svg_45" fill="url(#svg_66)" stroke="#b7a800"/> - </svg> -</g> - -<g id="redo"> -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_71"> - <stop stop-opacity="1" stop-color="#98fc46" offset="0"/> - <stop stop-opacity="1" stop-color="#56aa25" offset="1"/> - </linearGradient> - </defs> - <path transform="rotate(-90, 12.7299, 11.5526)" d="m9.11294,12.43144l6.54089,6.84566l6.6439,-6.95624l-3.78628,-0.03064l0,-2.61259c-0.04248,-2.62946 -2.75924,-5.5951 -7.79561,-5.77807c-5.17464,0 -7.10734,3.60294 -7.47697,7.11967c0.61604,-1.60771 3.14238,-3.63109 5.36009,-3.53053c2.71053,-0.10056 4.40555,0.59221 4.40555,2.40076l0,2.54198l-3.89159,0z" id="svg_45" fill="url(#svg_71)" stroke="#44aa00"/> - </svg> -</g> - -<g id="clone"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"> - <defs> - <linearGradient y2="1" x2="1" y1="0" x1="0" id="svg_36"> - <stop stop-opacity="1" stop-color="#f9f3de" offset="0"/> - <stop stop-opacity="1" stop-color="#ccbd8f" offset="1"/> - </linearGradient> - <linearGradient y2="0.80078" x2="0.42578" y1="0" x1="0" id="svg_69"> - <stop stop-opacity="1" stop-color="#f9f3de" offset="0"/> - <stop stop-opacity="1" stop-color="#af995b" offset="1"/> - </linearGradient> - </defs> - <path stroke="#8f5902" fill="url(#svg_69)" id="svg_34" d="m2.11676,16.32061l-0.13787,-5.05515l1.93015,-2.02206l10.11029,0l2.02206,2.29779l0,4.77941l-13.92463,0z"/> - <rect x="7.85379" y="6.30027" width="2.2932" height="4.3407" id="svg_38" fill="url(#svg_36)" stroke="#8f5902" rx="1" ry="1"/> - <circle stroke="#8f5902" fill="url(#svg_36)" id="svg_35" r="2.96392" cy="4.48149" cx="9.11757"/> - <line x1="2.44838" y1="12.03512" x2="15.5524" y2="12.03512" id="svg_39" stroke="#f9f3de" fill="none"/> - <path d="m6.72427,12.55859l4.74203,0l-2.30831,2.07258l-2.43372,-2.07258z" id="svg_43" fill="#000000" stroke="none"/> -</svg> -</g> - -<g id="delete"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <rect ry="3" rx="3" stroke="#800000" fill="#aa0000" id="svg_37" height="20.29514" width="21.17486" y="1.70304" x="1.42011"/> - <rect ry="3" rx="3" stroke="#ff5555" fill="#aa0000" id="svg_67" height="18.63022" width="19.61118" y="2.53597" x="2.20258"/> - <line stroke-width="2" fill="none" stroke="#ffffff" id="svg_68" y2="16.85127" x2="17.00646" y1="6.85127" x1="7.00646"/> - <line stroke-width="2" id="svg_70" fill="none" stroke="#ffffff" y2="16.85127" x2="7.00646" y1="6.85127" x1="17.00646"/> - </svg> -</g> - -<g id="go_up"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"> - <defs> - <linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_74"> - <stop stop-opacity="1" stop-color="#afe853" offset="0"/> - <stop stop-opacity="1" stop-color="#52a310" offset="1"/> - </linearGradient> - </defs> - <path stroke="#008000" fill="url(#svg_74)" id="svg_33" d="m5.38492,16.77043l7.07692,0l0,-5.23077l4.15385,0l-7.69231,-10.15385l-7.69231,10.15385l4.15385,0l0,5.23077z"/> - </svg> -</g> - -<g id="go_down"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18"> - <defs> - <linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_75"> - <stop stop-opacity="1" stop-color="#afe853" offset="0"/> - <stop stop-opacity="1" stop-color="#52a310" offset="1"/> - </linearGradient> - </defs> - <path stroke="#008000" fill="url(#svg_75)" id="svg_33" d="m5.3015,1.69202l6.93483,0l0,5.07323l4.07045,0l-7.53786,9.84803l-7.53786,-9.84803l4.07045,0l0,-5.07323z"/> - </svg> -</g> - -<g id="move_bottom"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23"> - <defs> - <linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_80"> - <stop stop-opacity="1" stop-color="#bc7f05" offset="0"/> - <stop stop-opacity="1" stop-color="#fcfc9f" offset="1"/> - </linearGradient> - </defs> - <line stroke-width="2" fill="none" stroke="#000000" id="svg_72" y2="2.5" x2="22" y1="2.5" x1="10.5"/> - <line id="svg_73" stroke-width="2" fill="none" stroke="#000000" y2="6.5" x2="21.99844" y1="6.5" x1="10.49844"/> - <line id="svg_74" stroke-width="2" fill="none" stroke="#000000" y2="10.5" x2="21.99922" y1="10.5" x1="10.49922"/> - <line id="svg_75" stroke-width="2" fill="none" stroke="#000000" y2="14.5" x2="21.99922" y1="14.5" x1="10.49922"/> - <rect stroke="#000000" fill="url(#svg_80)" id="svg_77" height="2.2" width="20" y="17.65" x="1.65"/> - <path stroke="none" fill="#000000" id="svg_81" d="m4.25,1.55l2.35,0l0,11.05l2,0l-3.175,3.45l-3.175,-3.45l2,0l0,-11.05z"/> - </svg> -</g> - -<g id="move_top"> -<svg viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_86" x1="0" y1="0" x2="1" y2="0"> - <stop offset="0" stop-color="#9fdcf4" stop-opacity="1"/> - <stop offset="1" stop-color="#617e96" stop-opacity="1"/> - </linearGradient> - </defs> - <line x1="1.3" y1="8.19922" x2="12.8" y2="8.19922" id="svg_72" stroke="#000000" fill="none" stroke-width="2"/> - <line x1="1.29844" y1="12.19922" x2="12.79844" y2="12.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_73"/> - <line x1="1.29922" y1="16.19922" x2="12.79922" y2="16.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_74"/> - <line x1="1.29922" y1="20.19922" x2="12.79922" y2="20.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_75"/> - <rect x="1.55" y="1.85" width="20" height="3.2" id="svg_77" fill="url(#svg_86)" stroke="#000000"/> - <path d="m16.83475,21.14603l2.33207,0l0,-11.04578l1.98474,0l-3.15077,-3.44869l-3.15077,3.44869l1.98474,0l0,11.04578z" id="svg_81" fill="#000000" stroke="none"/> - </svg> -</g> - -<g id="to_path"> -<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient y2="0.46875" x2="0.42969" y1="0.10156" x1="0.10547" id="svg_105"> - <stop stop-color="#ff0000" offset="0"/> - <stop stop-opacity="0" stop-color="#ff0000" offset="1"/> - </linearGradient> - </defs> - <g> - <circle cx="21" cy="21.3125" r="18.44531" id="svg_120" fill="url(#svg_105)" stroke="#000000"/> - <path fill="none" stroke="#000000" d="m2.875,21.3125c-0.375,-9.25 7.75,-18.875 17.75,-18" id="svg_115"/> - <line x1="25.375" y1="3.0625" x2="8.5" y2="3.0625" id="svg_116" stroke="#808080" fill="none"/> - <line x1="2.625" y1="24.75" x2="2.625" y2="9.8125" id="svg_117" stroke="#808080" fill="none"/> - <circle cx="8.5" cy="2.9375" r="1.95313" fill="#00ffff" stroke="#0000ff" stroke-width="0.5" id="svg_118"/> - <circle cx="2.625" cy="9.8125" r="1.95313" fill="#00ffff" stroke="#0000ff" stroke-width="0.5" id="svg_119"/> - <circle cx="20.875" cy="3.1875" r="2.5" id="svg_112" fill="#00ffff" stroke="#0000ff"/> - <circle cx="2.875" cy="21.0625" r="2.5" fill="#00ffff" stroke="#0000ff" id="svg_114"/> - </g> -</svg> -</g> - -<g id="link_controls"> -<svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="2" id="svg_102" d="m9.875,23c-2,-4.25 -1.6875,-7.375 1.6875,-10.5c3.375,-3.125 7.5625,-2.75 11.0625,2" stroke="#8dd35f" fill="none"/> - <line fill="none" stroke="#606060" id="svg_109" y2="4" x2="19" y1="19" x1="4"/> - <circle stroke="#0000ff" fill="#00ffff" id="svg_111" r="2.17578" cy="11.5" cx="11.5"/> - <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19"/> - <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19" cx="4"/> -</svg> -</g> - -<g id="reorient"> -<svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> - <defs> - <linearGradient y2="1" x2="1" y1="1" x1="0" id="svg_113"> - <stop stop-opacity="0" stop-color="#0000ff" offset="0"/> - <stop stop-opacity="1" stop-color="#507ece" offset="1"/> - </linearGradient> - </defs> - <rect stroke-dasharray="2,2" stroke="#0000ff" fill="none" id="svg_108" height="19.125" width="18.625" y="2.625" x="2.875"/> - <rect transform="rotate(45, 12.2344, 12.1719)" stroke="#000000" fill="url(#svg_113)" id="svg_107" height="6.125" width="16" y="9.10848" x="4.23267"/> -</svg> -</g> - -<g id="group"> -<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_90" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#ccddff" stop-opacity="1"/> - <stop offset="1" stop-color="#789fed" stop-opacity="1"/> - </linearGradient> - <linearGradient id="svg_92" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#70a1e5" stop-opacity="1"/> - <stop offset="1" stop-color="#4b6baf" stop-opacity="1"/> - </linearGradient> - </defs> - <rect x="13.5" y="0.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_79"/> - <rect x="13.5" y="13.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_82"/> - <rect x="0.5" y="13.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_83"/> - <rect x="2.5" y="2.5" width="8" height="7" fill="#a0a0a0" stroke="#555555" id="svg_85"/> - <rect x="2.5" y="2.5" width="8" height="7" fill="url(#svg_90)" stroke="url(#svg_92)" id="svg_87"/> - <rect x="5.5" y="6.5" width="8" height="7" id="svg_84" fill="#7399d6" stroke="url(#svg_92)"/> - <rect x="0.5" y="0.5" width="2" height="2" id="svg_78" fill="#a0a0a0" stroke="#555555"/> - </svg> -</g> - -<g id="ungroup"> -<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <defs> - <linearGradient id="svg_90" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#ccddff" stop-opacity="1"/> - <stop offset="1" stop-color="#789fed" stop-opacity="1"/> - </linearGradient> - <linearGradient id="svg_92" x1="0" y1="0" x2="1" y2="1"> - <stop offset="0" stop-color="#70a1e5" stop-opacity="1"/> - <stop offset="1" stop-color="#4b6baf" stop-opacity="1"/> - </linearGradient> - </defs> - <rect x="2.5" y="2.5" width="8" height="7" fill="url(#svg_90)" stroke="url(#svg_92)" id="svg_87"/> - <rect x="5.5" y="6.5" width="8" height="7" id="svg_84" fill="#7399d6" stroke="url(#svg_92)"/> - <rect x="9.5" y="1.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_79"/> - <rect x="1.5" y="8.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_83"/> - <rect x="1.5" y="1.5" width="2" height="2" id="svg_78" fill="#a0a0a0" stroke="#555555"/> - <rect id="svg_93" x="12.5" y="5.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/> - <rect id="svg_94" x="12.5" y="12.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/> - <rect id="svg_95" x="4.5" y="12.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/> - <rect id="svg_96" x="4.5" y="5.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/> -</svg> -</g> - -<g id="width"> - <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"> - <path id="svg_6" d="m19,42.5l-7.5,7.5l7.5,7.5l0,-15zm0,7.5l62,0l0,-7.5l7.5,7.5l-7.5,7.5l0,-7.5" stroke-width="8" stroke="#000000" fill="#000000"/> - </svg> -</g> - -<g id="height"> - <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"> - <path transform="rotate(90, 50, 50)" fill="#000000" stroke="#000000" stroke-width="8" d="m19,42.5l-7.5,7.5l7.5,7.5l0,-15zm0,7.5l62,0l0,-7.5l7.5,7.5l-7.5,7.5l0,-7.5" id="svg_6"/> - </svg> -</g> - -<g id="c_radius"> -<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg"> - <rect stroke="#404040" fill="none" stroke-width="0.5" x="2.37501" y="2.4375" width="43.9375" height="43.9375" id="svg_1" rx="13" ry="13"/> - <path fill="none" stroke="#000000" d="m2.43674,15.88952l13.73722,0l0.08978,-13.46483m0.08978,14.08493" id="svg_3"/> - <line fill="none" stroke="#000000" x1="16.35107" y1="15.88934" x2="5.20504" y2="5.20504" id="svg_4" stroke-dasharray="2,2"/> -</svg> -</g> - -<g id="angle"> -<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="2" stroke-dasharray="1,3" id="svg_6" d="m32.78778,41.03469c-0.40379,-8.68145 -4.50873,-16.79003 -12.11365,-20.5932" stroke="#000000" fill="none"/> - <path id="svg_7" d="m29.20348,7.67055l-24.20348,34.47921l41.16472,0" stroke-width="3" stroke="#404040" fill="none"/> -</svg> -</g> - -<g id="blur"> -<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <filter id="svg_4_blur" x="-50%" y="-50%" width="200%" height="200%"> - <feGaussianBlur stdDeviation="25"/> - </filter> - </defs> - <circle fill="#000000" stroke="#000000" stroke-width="5" stroke-dasharray="null" cx="150" cy="150" r="91.80151" id="svg_4" filter="url(#svg_4_blur)"/> -</svg> -</g> - -<g id="fontsize"> -<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg" xmlns:xml="http://www.w3.org/XML/1998/namespace"> - <text fill="#606060" stroke="none" x="14.451" y="41.4587" id="svg_2" font-size="26" font-family="serif" text-anchor="middle" xml:space="preserve">T</text> - <text fill="#000000" stroke="none" x="28.853" y="41.8685" font-size="52" font-family="serif" text-anchor="middle" xml:space="preserve" id="svg_3">T</text> -</svg> -</g> - -<g id="align"> - <svg width="22" height="22" xmlns="http://www.w3.org/2000/svg"> - <rect stroke="#606060" fill="#c0c0c0" id="svg_4" height="7" width="12" y="7.5" x="4.5"/> - <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="9.5"/> - <rect stroke="#ffffff" fill="none" id="svg_5" height="5" width="10" y="8.5" x="5.5"/> - </svg> -</g> - -<g id="align_left"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"> - <rect stroke="#606060" fill="#ffffff" id="svg_4" height="7" width="12" y="2.5" x="2.5"/> - <rect stroke="none" fill="#c0c0c0" id="svg_5" height="4" width="11" y="4" x="2"/> - <rect id="svg_6" stroke="#606060" fill="#ffffff" height="7" width="18" y="12.5" x="2.5"/> - <rect id="svg_7" stroke="none" fill="#c0c0c0" height="4" width="17" y="14" x="2"/> - <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="1.5"/> - </svg> -</g> - -<g id="align_center"> - <svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <rect x="1.5" y="12.5" width="18" height="7" fill="#c0c0c0" stroke="#606060" id="svg_6"/> - <rect x="4.5" y="2.5" width="12" height="7" id="svg_4" fill="#c0c0c0" stroke="#606060"/> - <rect x="9.5" y="-10" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/> - <rect x="2.5" y="13.5" width="16" height="5" fill="none" stroke="#ffffff" id="svg_7"/> - <rect x="5.5" y="3.5" width="10" height="5" id="svg_5" fill="none" stroke="#ffffff"/> - </svg> -</g> - -<g id="align_right"> - <svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <rect x="7.5" y="2.5" width="12" height="7" id="svg_4" fill="#ffffff" stroke="#606060"/> - <rect x="9" y="4" width="11" height="4" id="svg_5" fill="#c0c0c0" stroke="none"/> - <rect x="1.5" y="12.5" width="18" height="7" fill="#ffffff" stroke="#606060" id="svg_6"/> - <rect x="3" y="14" width="17" height="4" fill="#c0c0c0" stroke="none" id="svg_7"/> - <rect x="18.5" y="-10" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/> - </svg> -</g> - -<g id="align_top"> - <svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> - <g transform="rotate(90, 11, 11)" id="svg_1"> - <rect x="2.5" y="3.5" width="12" height="7" id="svg_4" fill="#ffffff" stroke="#606060"/> - <rect x="2" y="5" width="11" height="4" id="svg_5" fill="#c0c0c0" stroke="none"/> - <rect x="2.5" y="13.5" width="18" height="7" fill="#ffffff" stroke="#606060" id="svg_6"/> - <rect x="2" y="15" width="17" height="4" fill="#c0c0c0" stroke="none" id="svg_7"/> - <rect x="1.5" y="-9" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/> - </g> - </svg> -</g> - -<g id="align_middle"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"> - <g transform="rotate(90, 12, 11.5)" id="svg_1"> - <rect id="svg_6" stroke="#606060" fill="#c0c0c0" height="7" width="18" y="14" x="3"/> - <rect stroke="#606060" fill="#c0c0c0" id="svg_4" height="7" width="12" y="4" x="6"/> - <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-8.5" x="11"/> - <rect id="svg_7" stroke="#ffffff" fill="none" height="5" width="16" y="15" x="4"/> - <rect stroke="#ffffff" fill="none" id="svg_5" height="5" width="10" y="5" x="7"/> - </g> -</svg> -</g> - -<g id="align_bottom"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"> - <g transform="rotate(90, 11, 11)" id="svg_1"> - <rect stroke="#606060" fill="#ffffff" id="svg_4" height="7" width="12" y="2.5" x="7.5"/> - <rect stroke="none" fill="#c0c0c0" id="svg_5" height="4" width="11" y="4" x="9"/> - <rect id="svg_6" stroke="#606060" fill="#ffffff" height="7" width="18" y="12.5" x="1.5"/> - <rect id="svg_7" stroke="none" fill="#c0c0c0" height="4" width="17" y="14" x="3"/> - <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="18.5"/> - </g> -</svg> -</g> - -<g id="linecap_butt"> -<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1"> - <stop offset="0" stop-color="#000000" stop-opacity="1"/> - <stop offset="1" stop-color="#000000" stop-opacity="0"/> - </linearGradient> - </defs> - <g> - <rect fill="url(#svg_8)" stroke="#a0a0a0" stroke-width="2" x="-15.20196" y="43.5974" width="94.8373" height="50.3728" id="svg_3" transform="rotate(-45, 32.2148, 68.7832)"/> - <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/> - <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/> - </g> -</svg> -</g> - -<g id="linecap_square"> -<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1"> - <stop offset="0" stop-color="#000000" stop-opacity="1"/> - <stop offset="1" stop-color="#000000" stop-opacity="0"/> - </linearGradient> - </defs> - <g> - <rect fill="url(#svg_8)" stroke="none" x="-18.51568" y="35.5974" width="117.46469" height="50.3728" id="svg_3" transform="rotate(-45, 40.2168, 60.7832)"/> - <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/> - <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/> - </g> -</svg> -</g> - -<g id="linecap_round"> -<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8"> - <stop stop-opacity="1" stop-color="#000000" offset="0"/> - <stop stop-opacity="0" stop-color="#000000" offset="1"/> - </linearGradient> - </defs> - <g> - <path transform="rotate(-45, 41.5117, 59.4648)" id="svg_3" d="m-19.0679,34.2946l94.8359,0c36.499,-1.4142 33.67101,48.9569 0,50.3711l-94.8359,0l0,-50.3711z" stroke-width="2" stroke="#a0a0a0" fill="url(#svg_8)"/> - <path id="svg_1" d="m6.63133,95.07755l59.17515,-59.17515" stroke-width="3" stroke="#00ffff" fill="none"/> - <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/> - </g> -</svg> -</g> - -<g id="linejoin_miter"> -<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8"> - <stop stop-opacity="1" stop-color="#000000" offset="0"/> - <stop stop-opacity="0" stop-color="#000000" offset="1"/> - </linearGradient> - </defs> - <g> - <path fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/> - <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/> - <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/> - </g> -</svg> -</g> - -<g id="linejoin_bevel"> -<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8"> - <stop stop-opacity="1" stop-color="#000000" offset="0"/> - <stop stop-opacity="0" stop-color="#000000" offset="1"/> - </linearGradient> - </defs> - <g> - <path stroke-linejoin="bevel" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/> - <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/> - <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/> - </g> -</svg> -</g> - -<g id="linejoin_round"> -<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com"> - <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ --> - <defs> - <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8"> - <stop stop-opacity="1" stop-color="#000000" offset="0"/> - <stop stop-opacity="0" stop-color="#000000" offset="1"/> - </linearGradient> - </defs> - <g> - <path stroke-linejoin="round" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/> - <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/> - <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/> - </g> -</svg> -</g> - -<g id="eye"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 17"> - <defs> - <linearGradient y2="0.79688" x2="0.5625" y1="0.19141" x1="0.42969" id="svg_91"> - <stop stop-opacity="1" stop-color="#d3a16b" offset="0"/> - <stop stop-opacity="1" stop-color="#a37c53" offset="1"/> - </linearGradient> - </defs> - <path stroke="none" fill="url(#svg_91)" id="svg_9" d="m0.12852,8.18338c3.59931,-7.71208 13.19749,-7.36932 16.75236,0.08569c-3.02165,7.5407 -13.59741,7.66924 -16.75236,-0.08569z"/> - <path id="svg_76" stroke="none" fill="#ffffff" d="m0.33033,8.2557c3.5173,-4.97159 12.89675,-4.75063 16.37062,0.05524c-2.95279,4.86111 -13.28756,4.94397 -16.37062,-0.05524z"/> - <circle stroke="none" fill="#4f92c1" id="svg_88" r="3.08008" cy="7.71116" cx="8.45861"/> - <circle stroke="none" fill="#000000" id="svg_89" r="1.27539" cy="7.6539" cx="8.43159"/> - </svg> -</g> - -<g id="no_color"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <line fill="none" stroke="#d40000" id="svg_90" y2="24" x2="24" y1="0" x1="0"/> - <line id="svg_92" fill="none" stroke="#d40000" y2="24" x2="0" y1="0" x1="24"/> - </svg> -</g> - -<g id="ok"> - <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient y2="0.65625" x2="0.94141" y1="0.43359" x1="0.42969" id="svg_106"> - <stop stop-opacity="1" stop-color="#38ff45" offset="0"/> - <stop stop-opacity="1" stop-color="#127c0c" offset="1"/> - </linearGradient> - </defs> - <path transform="rotate(45, 12, 10)" stroke="#005500" fill="url(#svg_106)" id="svg_101" d="m7.9,15.9l4.9,-0.05l0,-13.75l3.8,0l0,17.6l-8.7,0l0,-3.8z"/> - </svg> -</g> - -<g id="cancel"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient y2="0.65625" x2="0.94141" y1="0.43359" x1="0.42969" id="svg_9"> - <stop stop-opacity="1" stop-color="#ff3838" offset="0"/> - <stop stop-opacity="1" stop-color="#7a0c0c" offset="1"/> - </linearGradient> - </defs> - <path stroke="#550000" fill="url(#svg_9)" id="svg_101" d="m2.10526,10.52632l7.36842,0l0,-7.36842l3.68421,0l0,7.36842l7.36842,0l0,3.68421l-7.36842,0l0,7.36842l-3.68421,0l0,-7.36842l-7.36842,0l0,-3.68421z" transform="rotate(45, 11.3, 12.3)"/> - </svg> -</g> - -<g id="warning"> -<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> - <defs> - <linearGradient y2="0.98047" x2="0.57813" y1="0.44922" x1="0.56641" id="svg_110"> - <stop stop-opacity="1" stop-color="#ffff00" offset="0"/> - <stop stop-opacity="1" stop-color="#9e9e00" offset="1"/> - </linearGradient> - </defs> - <path d="m1.42857,21.55559l10.71429,-19.36489l10.71429,19.20352l-21.42857,0.16137z" id="svg_44" fill="url(#svg_110)" stroke="#916d1f" stroke-width="2"/> - <path stroke="none" fill="#000000" id="svg_103" d="m11.98371,14.68571c-0.57143,-3.82857 -1.82857,-6.4 0.11429,-6.4c2.11429,0 0.74286,2.57143 0.11429,6.4l-0.22857,0z"/> - <circle stroke="none" fill="#000000" id="svg_104" r="1.17578" cy="17.37143" cx="12.14308"/> - </svg> -</g> - -<g id="node_delete"> -<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/> - <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/> - <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/> - <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/> - <g transform="rotate(-45.291072845458984 9.81157112121582,9.244086265563965) " id="svg_6"> - <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/> - <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/> - </g> -</svg> -</g> - -<g id="node_clone"> -<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"> - <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/> - <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/> - <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/> - <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/> - <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/> - <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/> -</svg> -</g> - -<g id="svg_eof"/> - -</svg> diff --git a/files_svgedit/images/svg_edit_icons.svgz b/files_svgedit/images/svg_edit_icons.svgz Binary files differdeleted file mode 100644 index cb8c80cc5..000000000 --- a/files_svgedit/images/svg_edit_icons.svgz +++ /dev/null diff --git a/files_svgedit/images/text.png b/files_svgedit/images/text.png Binary files differdeleted file mode 100644 index 5652e2fab..000000000 --- a/files_svgedit/images/text.png +++ /dev/null diff --git a/files_svgedit/images/text.svg b/files_svgedit/images/text.svg deleted file mode 100644 index 5c28753c3..000000000 --- a/files_svgedit/images/text.svg +++ /dev/null @@ -1,157 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://web.resource.org/cc/" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:xlink="http://www.w3.org/1999/xlink" - xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="22.000000px" - height="22.000000px" - id="svg1306" - sodipodi:version="0.32" - inkscape:version="0.42.2" - sodipodi:docbase="/home/andreas/projekt/bild/tango/22" - sodipodi:docname="draw-text2.svg"> - <defs - id="defs1308"> - <linearGradient - id="linearGradient3682"> - <stop - style="stop-color:#1f1f1f;stop-opacity:1.0000000;" - offset="0.0000000" - id="stop3684" /> - <stop - style="stop-color:#5c5c5c;stop-opacity:1.0000000;" - offset="1.0000000" - id="stop3686" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - id="linearGradient3558"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop3560" /> - <stop - style="stop-color:#000000;stop-opacity:0;" - offset="1" - id="stop3562" /> - </linearGradient> - <radialGradient - inkscape:collect="always" - xlink:href="#linearGradient3558" - id="radialGradient3564" - cx="22.571428" - cy="30.857143" - fx="22.571428" - fy="30.857143" - r="15.571428" - gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.300378e-15,10.75754)" - gradientUnits="userSpaceOnUse" /> - <linearGradient - id="linearGradient2834"> - <stop - style="stop-color:#ffffff;stop-opacity:1;" - offset="0" - id="stop2836" /> - <stop - style="stop-color:#b3b3b3;stop-opacity:0.0000000;" - offset="1.0000000" - id="stop2838" /> - </linearGradient> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient2834" - id="linearGradient2840" - x1="19.944447" - y1="16.527262" - x2="24.133829" - y2="19.642126" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.498259,0.000000,0.000000,0.466519,-0.799974,-0.839637)" /> - <linearGradient - inkscape:collect="always" - xlink:href="#linearGradient3682" - id="linearGradient3688" - x1="23.305620" - y1="24.843527" - x2="14.388516" - y2="9.5902243" - gradientUnits="userSpaceOnUse" - gradientTransform="matrix(0.498259,0.000000,0.000000,0.488600,-0.799974,-1.273557)" /> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="14.000000" - inkscape:cx="17.541947" - inkscape:cy="12.572768" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:grid-bbox="true" - inkscape:document-units="px" - showguides="true" - inkscape:guide-bbox="true" - inkscape:window-width="1280" - inkscape:window-height="885" - inkscape:window-x="0" - inkscape:window-y="25" /> - <metadata - id="metadata1311"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1" - inkscape:label="Layer 1" - inkscape:groupmode="layer"> - <path - sodipodi:type="arc" - style="opacity:0.47368422;color:#000000;fill:url(#radialGradient3564);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" - id="path3556" - sodipodi:cx="22.571428" - sodipodi:cy="30.857143" - sodipodi:rx="15.571428" - sodipodi:ry="10.142858" - d="M 38.142857 30.857143 A 15.571428 10.142858 0 1 1 7.0000000,30.857143 A 15.571428 10.142858 0 1 1 38.142857 30.857143 z" - transform="matrix(0.706422,0.000000,0.000000,0.208015,-4.944952,13.47138)" /> - <path - style="font-size:54.869392px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient3688);fill-opacity:1.0000000;stroke:#000000;stroke-width:1.0000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" - d="M 15.189363,15.520771 L 7.1531447,15.520771 L 5.8598048,19.513834 L 0.51627279,19.513834 L 8.1009381,0.48837876 L 14.228221,0.48837876 L 21.560524,19.464779 L 16.444188,19.464779 L 15.189363,15.520771 M 8.3990779,12.473977 L 13.858901,12.473977 L 11.171254,5.1526958 L 8.3990779,12.473977" - id="text1314" - sodipodi:nodetypes="ccccccccccccc" /> - <path - style="font-size:54.869392px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;opacity:0.37912086;fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2840);stroke-width:1.0000008;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans" - d="M 15.684541,15.159554 L 6.6710758,15.159554 L 5.4166733,18.527305 L 2.0035414,18.527305 L 8.7384662,1.4621947 L 13.512484,1.4621947 L 20.022564,18.410463 L 16.899702,18.410463 L 15.684541,15.159554 z " - id="path2047" - sodipodi:nodetypes="ccccccccc" /> - <image - id="image2089" - height="459.00000" - width="400.00000" - sodipodi:absref="/home/andreas/palette2.png" - xlink:href="/home/andreas/palette2.png" - x="-354.93631" - y="-214.53793" /> - <path - style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#999999;stroke-width:1.0000007;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;opacity:0.51098901" - d="M 8.1686844,13.551882 L 14.147791,13.551882" - id="path5142" - sodipodi:nodetypes="cc" /> - </g> -</svg> diff --git a/files_svgedit/images/to_path.png b/files_svgedit/images/to_path.png Binary files differdeleted file mode 100644 index 4209828db..000000000 --- a/files_svgedit/images/to_path.png +++ /dev/null diff --git a/files_svgedit/images/undo.png b/files_svgedit/images/undo.png Binary files differdeleted file mode 100644 index cd4ab955f..000000000 --- a/files_svgedit/images/undo.png +++ /dev/null diff --git a/files_svgedit/images/view-refresh.png b/files_svgedit/images/view-refresh.png Binary files differdeleted file mode 100644 index 3fd71d6e5..000000000 --- a/files_svgedit/images/view-refresh.png +++ /dev/null diff --git a/files_svgedit/images/wave.png b/files_svgedit/images/wave.png Binary files differdeleted file mode 100644 index 10fa7122d..000000000 --- a/files_svgedit/images/wave.png +++ /dev/null diff --git a/files_svgedit/images/wireframe.png b/files_svgedit/images/wireframe.png Binary files differdeleted file mode 100644 index 89db7e9e3..000000000 --- a/files_svgedit/images/wireframe.png +++ /dev/null diff --git a/files_svgedit/images/zoom.png b/files_svgedit/images/zoom.png Binary files differdeleted file mode 100644 index c4fb6f17d..000000000 --- a/files_svgedit/images/zoom.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/AlphaBar.png b/files_svgedit/jgraduate/images/AlphaBar.png Binary files differdeleted file mode 100644 index 2950daeb8..000000000 --- a/files_svgedit/jgraduate/images/AlphaBar.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/Bars.png b/files_svgedit/jgraduate/images/Bars.png Binary files differdeleted file mode 100644 index a9801ec19..000000000 --- a/files_svgedit/jgraduate/images/Bars.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/Maps.png b/files_svgedit/jgraduate/images/Maps.png Binary files differdeleted file mode 100644 index de33e3de2..000000000 --- a/files_svgedit/jgraduate/images/Maps.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/NoColor.png b/files_svgedit/jgraduate/images/NoColor.png Binary files differdeleted file mode 100644 index ae3614551..000000000 --- a/files_svgedit/jgraduate/images/NoColor.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/bar-opacity.png b/files_svgedit/jgraduate/images/bar-opacity.png Binary files differdeleted file mode 100644 index e42ad0812..000000000 --- a/files_svgedit/jgraduate/images/bar-opacity.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/map-opacity.png b/files_svgedit/jgraduate/images/map-opacity.png Binary files differdeleted file mode 100644 index 6756cee6d..000000000 --- a/files_svgedit/jgraduate/images/map-opacity.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/mappoint.gif b/files_svgedit/jgraduate/images/mappoint.gif Binary files differdeleted file mode 100644 index f5f855745..000000000 --- a/files_svgedit/jgraduate/images/mappoint.gif +++ /dev/null diff --git a/files_svgedit/jgraduate/images/mappoint_c.png b/files_svgedit/jgraduate/images/mappoint_c.png Binary files differdeleted file mode 100644 index d0a6e1cea..000000000 --- a/files_svgedit/jgraduate/images/mappoint_c.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/mappoint_f.png b/files_svgedit/jgraduate/images/mappoint_f.png Binary files differdeleted file mode 100644 index 563ff87c2..000000000 --- a/files_svgedit/jgraduate/images/mappoint_f.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/picker.gif b/files_svgedit/jgraduate/images/picker.gif Binary files differdeleted file mode 100644 index 374d89104..000000000 --- a/files_svgedit/jgraduate/images/picker.gif +++ /dev/null diff --git a/files_svgedit/jgraduate/images/preview-opacity.png b/files_svgedit/jgraduate/images/preview-opacity.png Binary files differdeleted file mode 100644 index 0dd9a2f8b..000000000 --- a/files_svgedit/jgraduate/images/preview-opacity.png +++ /dev/null diff --git a/files_svgedit/jgraduate/images/rangearrows.gif b/files_svgedit/jgraduate/images/rangearrows.gif Binary files differdeleted file mode 100644 index 218872ccc..000000000 --- a/files_svgedit/jgraduate/images/rangearrows.gif +++ /dev/null diff --git a/files_svgedit/jgraduate/images/rangearrows2.gif b/files_svgedit/jgraduate/images/rangearrows2.gif Binary files differdeleted file mode 100644 index fdeb54a10..000000000 --- a/files_svgedit/jgraduate/images/rangearrows2.gif +++ /dev/null diff --git a/files_svgedit/js/jgraduate/LICENSE b/files_svgedit/js/jgraduate/LICENSE deleted file mode 100644 index d64569567..000000000 --- a/files_svgedit/js/jgraduate/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/files_svgedit/js/jgraduate/README b/files_svgedit/js/jgraduate/README deleted file mode 100644 index ef3e21ff8..000000000 --- a/files_svgedit/js/jgraduate/README +++ /dev/null @@ -1,3 +0,0 @@ -jGraduate - A jQuery plugin for picking gradients - -Licensed under the Apache License 2. See LICENSE for more information. diff --git a/files_svgedit/js/jgraduate/jpicker-1.0.12.min.js b/files_svgedit/js/jgraduate/jpicker-1.0.12.min.js deleted file mode 100644 index 9b408ad92..000000000 --- a/files_svgedit/js/jgraduate/jpicker-1.0.12.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(e,a){var d=function(t,k){var o=this,j=t.find("img"),B=0,A=100,s=100,z=0,w=100,r=100,q=0,p=0,m,n=function(x){var y=t.offset();m={left:y.left+parseInt(t.css("border-left-width")),top:y.top+parseInt(t.css("border-top-width"))};u(x);o.draw();e(document).bind("mousemove",l).bind("mouseup",h);x.stopPropagation();x.preventDefault();return false;},l=function(x){u(x);o.draw();x.stopPropagation();x.preventDefault();return false;},h=function(x){e(document).unbind("mouseup",h).unbind("mousemove",l);x.stopPropagation();x.preventDefault();return false;},u=function(E){var C=E.pageX-m.left,x=E.pageY-m.top,D=t.w,y=t.h;if(C<0){C=0;}else{if(C>D){C=D;}}if(x<0){x=0;}else{if(x>y){x=y;}}o.set_X(((C/D)*s)+B);o.set_Y(((x/y)*r)+z);e.isFunction(o.valuesChanged)&&o.valuesChanged(o);};e.extend(true,o,{settings:k,valuesChanged:e.isFunction(arguments[2])&&arguments[2]||null,get_X:function(){return q;},set_X:function(x){x=Math.floor(x);if(q==x){return;}if(x<B){x=B;}else{if(x>A){x=A;}}q=x;},get_Y:function(){return p;},set_Y:function(x){x=Math.floor(x);if(p==x){return;}if(x<z){x=z;}else{if(x>w){x=w;}}p=x;},set_RangeX:function(y,x){if(B==y&&A==x){return;}if(y>x){return;}B=y;A=x;s=A-B;},set_RangeY:function(y,x){if(z==y&&w==x){return;}if(y>x){return;}z=y;w=x;r=w-z;},draw:function(){var D=0,x=0,F=t.w,C=t.h,E=j.w,y=j.h;if(s>0){if(q==A){D=F;}else{D=Math.floor((q/s)*F);}}if(r>0){if(p==w){x=C;}else{x=Math.floor((p/r)*C);}}if(E>F){D=(F>>1)-(E>>1);}else{D-=E>>1;}if(y>C){x=(C>>1)-(y>>1);}else{x-=y>>1;}j.css({left:D+"px",top:x+"px"});},destroy:function(){e(document).unbind("mouseup",h).unbind("mousemove",l);t.unbind("mousedown",n);t=null;j=null;o.valuesChanged=null;}});var v=o.settings;j.src=v.arrow&&v.arrow.image;j.w=v.arrow&&v.arrow.width||j.width();j.h=v.arrow&&v.arrow.height||j.height();t.w=v.map&&v.map.width||t.width();t.h=v.map&&v.map.height||t.height();t.bind("mousedown",n);o.draw();e.isFunction(o.valuesChanged)&&o.valuesChanged(o);},b=function(m){var l=this,w=function(A){if(A.target.value==""){return;}if(!u.get_R()){s.red.val(0);}if(!u.get_G()){s.green.val(0);}if(!u.get_B()){s.blue.val(0);}if(!u.get_A()){s.alpha.val(100);}q(A);l.setValuesFromHsva();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},p=function(A){if(A.target.value==""){return;}if(!u.get_H()){s.hue.val(0);}if(!u.get_S()){s.saturation.val(0);}if(!u.get_V()){s.value.val(0);}if(!u.get_A()){s.alpha.val(100);}o(A);l.setValuesFromRgba();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},r=function(A){if(A.target.value==""){return;}if(!u.get_R()){s.red.val(0);}if(!u.get_G()){s.green.val(0);}if(!u.get_B()){s.blue.val(0);}if(!u.get_H()){s.hue.val(0);}if(!u.get_S()){s.saturation.val(0);}if(!u.get_V()){s.value.val(0);}y(A);l.setValuesFromRgba();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},t=function(A){if(A.target.value==""){l.setValuesFromRgba();}e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},k=function(A){if(A.target.value==""){l.setValuesFromHsva();}e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},x=function(A){if(A.target.value==""){s.alpha.val(100);}e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},z=function(A){v(A);l.setValuesFromHex();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},j=function(A){if(A.target.value==""){l.setValuesFromHex();}},o=function(D){if(!n(D)){return D;}var C=h(s.red.val(),0,255),B=h(s.green.val(),0,255),A=h(s.blue.val(),0,255);s.red.val(C!=null?C:"");s.green.val(B!=null?B:"");s.blue.val(A!=null?A:"");},y=function(B){if(!n(B)){return B;}var A=h(s.alpha.val(),0,100);s.alpha.val(A!=null?A:"");},q=function(D){if(!n(D)){return D;}var A=h(s.hue.val(),0,360),B=h(s.saturation.val(),0,100),C=h(s.value.val(),0,100);s.hue.val(A!=null?A:"");s.saturation.val(B!=null?B:"");s.value.val(C!=null?C:"");},v=function(A){if(!n(A)){return A;}s.hex.val(s.hex.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,8));},n=function(A){switch(A.keyCode){case 9:case 16:case 29:case 37:case 38:case 40:return false;case"c".charCodeAt():case"v".charCodeAt():if(A.ctrlKey){return false;}}return true;},h=function(C,B,A){if(C==""||isNaN(C)){return B;}if(C>A){return A;}if(C<B){return B;}return C;};e.extend(true,l,{color:new f(),fields:{hue:m.find(".jPicker_HueText"),saturation:m.find(".jPicker_SaturationText"),value:m.find(".jPicker_BrightnessText"),red:m.find(".jPicker_RedText"),green:m.find(".jPicker_GreenText"),blue:m.find(".jPicker_BlueText"),hex:m.find(".jPicker_HexText"),alpha:m.find(".jPicker_AlphaText")},valuesChanged:e.isFunction(arguments[1])&&arguments[1]||null,bindedHexKeyUp:function(A){z(A);},setValuesFromRgba:function(){u.fromRgba(s.red.val(),s.green.val(),s.blue.val(),s.alpha.val());var B=u.get_Rgba(),A=u.get_H(),C=u.get_S(),D=u.get_V(),E=u.get_A();s.hex.val(B!=null?B:"");s.hue.val(A!=null?A:"");s.saturation.val(C!=null?C:"");s.value.val(D!=null?D:"");s.alpha.val(E!=null?E:"");},setValuesFromHsva:function(){u.fromHsva(s.hue.val(),s.saturation.val(),s.value.val(),s.alpha.val());var B=u.get_Rgba(),E=u.get_R(),C=u.get_G(),A=u.get_B(),D=u.get_A();s.hex.val(B!=null?B:"");s.red.val(E!=null?E:"");s.green.val(C!=null?C:"");s.blue.val(A!=null?A:"");s.alpha.val(D!=null?D:"");},setValuesFromHex:function(){u.fromHex(s.hex.val());var C=u.get_Rgba(),H=u.get_R(),F=u.get_G(),A=u.get_B(),G=u.get_A(),B=u.get_H(),D=u.get_S(),E=u.get_V();s.red.val(H!=null?H:"");s.green.val(F!=null?F:"");s.blue.val(A!=null?A:"");s.alpha.val(G!=null?G:"");s.hue.val(B!=null?B:"");s.saturation.val(D!=null?D:"");s.value.val(E!=null?E:"");},destroy:function(){s.hue.add(s.saturation).add(s.value).unbind("keyup",events.hsvKeyUp).unbind("blur",t);s.red.add(s.green).add(s.blue).unbind("keyup",events.rgbKeyUp).unbind("blur",k);s.alpha.unbind("keyup",alphaKeyUp).unbind("blur",x);s.hex.unbind("keyup",z);s=null;u=null;l.valuesChanged=null;}});var s=l.fields,u=l.color;s.hue.add(s.saturation).add(s.value).bind("keyup",w).bind("blur",t);s.red.add(s.green).add(s.blue).bind("keyup",p).bind("blur",k);s.alpha.bind("keyup",r).bind("blur",x);s.hex.bind("keyup",z).bind("blur",j);if(s.hex.val()!=""){u.fromHex(s.hex.val());l.setValuesFromHex();}};e.jPicker={List:[],Color:function(q){var m=this,j,l,n,o,k,t,p;e.extend(true,m,{get_R:function(){return j;},get_G:function(){return l;},get_B:function(){return n;},get_A:function(){return o;},get_Rgba:function(){return j!=null&&l!=null&&n!=null&&o!=null?g.rgbaToHex({r:j,g:l,b:n,a:o}):null;},get_Hex:function(){var h=m.get_Rgba();return h&&h.substring(0,6)||null;},get_H:function(){return k;},get_S:function(){return t;},get_V:function(){return p;},get_Hsv:function(){return{h:k,s:t,v:p};},fromRgba:function(v,s,h,u){j=v;l=s;n=h;o=u;var r=g.rgbToHsv({r:v,g:s,b:h});k=r.h;t=r.s;p=r.v;},fromHsva:function(h,s,u,v){k=h;t=s;p=u;o=v;var r=g.hsvToRgb({h:h,s:s,v:u});j=r.r;l=r.g;n=r.b;},fromHex:function(s){if(s==null||s==""){j=null;l=null;n=null;o=null;k=null;t=null;p=null;return;}var r=g.hexToRgba(s);j=r.r;l=r.g;n=r.b;o=r.a;var h=g.rgbToHsv({r:r.r,g:r.g,b:r.b});k=h.h;t=h.s;p=h.v;}});if(q){if(q.hex!=null&&q.hex!=""){m.fromHex(q.hex);}else{if(!isNaN(q.r)){m.fromRgba(q.r,q.g,q.b,q.a||100);}else{if(!isNaN(q.h)){m.fromHsva(q.h,q.s,q.v,q.a||100);}}}}},ColorMethods:{hexToRgba:function(m){m=this.validateHex(m);if(m==""){return{r:null,g:null,b:null,a:null};}var l="00",k="00",h="00",j="100";if(m.length==6){m+="ff";}if(m.length>6){l=m.substring(0,2);k=m.substring(2,4);h=m.substring(4,6);j=m.substring(6,m.length);}else{if(m.length>4){l=m.substring(4,m.length);m=m.substring(0,4);}if(m.length>2){k=m.substring(2,m.length);m=m.substring(0,2);}if(m.length>0){h=m.substring(0,m.length);}}return{r:this.hexToInt(l),g:this.hexToInt(k),b:this.hexToInt(h),a:Math.floor((this.hexToInt(j)*100)/255)};},validateHex:function(h){h=h.toLowerCase().replace(/[^a-f0-9]/g,"");if(h.length>8){h=h.substring(0,8);}return h;},rgbaToHex:function(h){return this.intToHex(h.r)+this.intToHex(h.g)+this.intToHex(h.b)+this.intToHex(Math.floor((h.a*255)/100));},intToHex:function(j){var h=Math.floor(j).toString(16);if(h.length==1){h=("0"+h);}return h.toLowerCase();},hexToInt:function(h){return parseInt(h,16);},rgbToHsv:function(l){var o=l.r/255,n=l.g/255,j=l.b/255,k={h:0,s:0,v:0},m=0,h=0,p;if(o>=n&&o>=j){h=o;m=n>j?j:n;}else{if(n>=j&&n>=o){h=n;m=o>j?j:o;}else{h=j;m=n>o?o:n;}}k.v=h;k.s=h?(h-m)/h:0;if(!k.s){k.h=0;}else{p=h-m;if(o==h){k.h=(n-j)/p;}else{if(n==h){k.h=2+(j-o)/p;}else{k.h=4+(o-n)/p;}}k.h=parseInt(k.h*60);if(k.h<0){k.h+=360;}}k.s=Math.floor(k.s*100);k.v=Math.floor(k.v*100);return k;},hsvToRgb:function(n){var r={r:0,g:0,b:0,a:100},m=n.h,x=n.s,u=n.v;if(x==0){if(u==0){r.r=r.g=r.b=0;}else{r.r=r.g=r.b=Math.floor(u*255/100);}}else{if(m==360){m=0;}m/=60;x=x/100;u=u/100;var l=Math.floor(m),o=m-l,k=u*(1-x),j=u*(1-(x*o)),w=u*(1-(x*(1-o)));switch(l){case 0:r.r=u;r.g=w;r.b=k;break;case 1:r.r=j;r.g=u;r.b=k;break;case 2:r.r=k;r.g=u;r.b=w;break;case 3:r.r=k;r.g=j;r.b=u;break;case 4:r.r=w;r.g=k;r.b=u;break;case 5:r.r=u;r.g=k;r.b=j;break;}r.r=Math.floor(r.r*255);r.g=Math.floor(r.g*255);r.b=Math.floor(r.b*255);}return r;}}};var f=e.jPicker.Color,c=e.jPicker.List,g=e.jPicker.ColorMethods;e.fn.jPicker=function(j){var h=arguments;return this.each(function(){var w=e(this),y=e.extend(true,{},e.fn.jPicker.defaults,j);if(w.get(0).nodeName.toLowerCase()=="input"){e.extend(true,y,{window:{bindToInput:true,expandable:true,input:w}});if(g.validateHex(w.val())){y.color.active=new f({hex:w.val(),a:y.color.active.get_A()});y.color.current=new f({hex:w.val(),a:y.color.active.get_A()});}}if(y.window.expandable){w.after('<span class="jPicker_Picker"><span class="jPicker_Color"> </span><span class="jPicker_Alpha"> </span><span class="jPicker_Icon" title="Click To Open Color Picker"> </span><span class="jPicker_Container"> </span></span>');}else{y.window.liveUpdate=false;}var U=parseFloat(navigator.appVersion.split("MSIE")[1])<7&&document.body.filters,ay=null,av=null,au=null,T=null,S=null,R=null,Q=null,P=null,O=null,V=null,aa=null,aA=null,ak=null,am=null,ao=null,I=null,aw=null,G=null,Y=null,az=null,M=null,L=null,at=null,aq=null,A=null,l=null,J=null,ap=null,ab=null,ai=null,o=null,m=null,C=null,u=null,an=function(aE){K.active=az.color;var aF=K.active,aG=q.clientPath,aD=aF.get_Hex(),aC=function(aH){ad(aH,100);aH.css({backgroundColor:"transparent",backgroundPosition:"0px 0px",filter:""});};aC(ay);aC(av);aC(au);aC(T);aC(S);aC(R);aC(Q);aC(P);aC(O);aa.add(aA).add(ak).add(am).add(ao).add(I).removeAttr("checked");switch(aE){case"h":aa.attr({checked:true});ay.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});av.css({backgroundColor:"transparent"});x(av,-256);ad(av,100);x(Q,-256);ad(O,0);break;case"s":aA.attr({checked:true});x(ay,-512);x(av,-768);z(R,aF.get_Hex());x(Q,-512);ad(O,0);break;case"v":ak.attr({checked:true});z(ay,"000000");x(av,-1024);R.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});x(Q,-768);ad(O,0);break;case"r":am.attr({checked:true});x(av,-1536);x(ay,-1280);x(Q,-1024);x(R,-1280);x(S,-1536);x(T,-1792);ad(O,0);break;case"g":ao.attr({checked:true});x(av,-2048);x(ay,-1792);x(Q,-2048);x(R,-2304);x(S,-2560);x(T,-2816);ad(O,0);break;case"b":I.attr({checked:true});x(av,-2560);x(ay,-2304);x(Q,-3072);x(R,-3328);x(S,-3584);x(T,-3840);ad(O,0);break;case"a":aw.attr({checked:true});x(ay,-512);x(av,-768);ad(av,0);z(R,aF.get_Hex());ad(Q,0);ad(P,0);ad(O,100);break;default:throw ("Invalid Mode");break;}switch(aE){case"h":G.set_RangeX(0,100);G.set_RangeY(0,100);Y.set_RangeY(0,360);break;case"s":case"v":case"a":G.set_RangeX(0,360);G.set_RangeY(0,100);Y.set_RangeY(0,100);break;case"r":case"g":case"b":G.set_RangeX(0,255);G.set_RangeY(0,255);Y.set_RangeY(0,255);break;}K.mode=aE;v();G.draw();Y.draw();ah();if(aj.expandable&&aj.liveUpdate){o.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});ad(m,100-aF.get_A());if(aj.bindToInput){aj.input.val(aF.get_Rgba()||"").css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent",color:aF.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aF);},n=function(){v();G.draw();Y.draw();ah();K.active=az.color;var aD=K.active;if(aj.expandable&&aj.liveUpdate){var aC=aD.get_Hex();o.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(m,100-aD.get_A());if(aj.bindToInput){aj.input.val(az.fields.hex.val()||"").css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent",color:aD.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aD);},B=function(){if(!az||!G||!Y){return;}K.active=az.color;var aC=az.fields,aE=K.active;switch(K.mode){case"h":aC.saturation.val(G.get_X());aC.value.val(100-G.get_Y());if(aE.get_H()==null){aC.hue.val(0);}break;case"s":case"a":aC.hue.val(G.get_X());aC.value.val(100-G.get_Y());if(aE.get_S()==null){aC.saturation.val(0);}break;case"v":aC.hue.val(G.get_X());aC.saturation.val(100-G.get_Y());if(aE.get_V()==null){aC.value.val(0);}break;case"r":aC.green.val(255-G.get_Y());aC.blue.val(G.get_X());if(aE.get_R()==null){aC.red.val(0);}break;case"g":aC.red.val(255-G.get_Y());aC.blue.val(G.get_X());if(aE.get_G()==null){aC.green.val(0);}break;case"b":aC.red.val(G.get_X());aC.green.val(255-G.get_Y());if(aE.get_B()==null){aC.blue.val(0);}break;}if(aE.get_A()==null){aC.alpha.val(100);az.setValuesFromHsva();v();Y.draw();}switch(K.mode){case"h":case"s":case"v":case"a":az.setValuesFromHsva();break;case"r":case"g":case"b":az.setValuesFromRgba();break;}ah();if(aj.expandable&&aj.liveUpdate){var aD=aE.get_Hex();o.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});ad(m,100-aE.get_A());if(aj.bindToInput){aj.input.val(aE.get_Rgba()||"").css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent",color:aE.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aE);},al=function(){if(!az||!G||!Y){return;}K.active=az.color;var aC=az.fields,aE=K.active;switch(K.mode){case"h":aC.hue.val(360-Y.get_Y());if(aE.get_S()==null){aC.saturation.val(0);}if(aE.get_V()==null){aC.value.val(0);}break;case"s":aC.saturation.val(100-Y.get_Y());if(aE.get_H()==null){aC.hue.val(0);}if(aE.get_V()==null){aC.value.val(0);}break;case"v":aC.value.val(100-Y.get_Y());if(aE.get_H()==null){aC.hue.val(0);}if(aE.get_S()==null){aC.saturation.val(0);}break;case"r":aC.red.val(255-Y.get_Y());if(aE.get_G()==null){aC.green.val(0);}if(aE.get_B()==null){aC.blue.val(0);}break;case"g":aC.green.val(255-Y.get_Y());if(aE.get_R()==null){aC.red.val(0);}if(aE.get_B()==null){aC.blue.val(0);}break;case"b":aC.blue.val(255-Y.get_Y());if(aE.get_R()==null){aC.red.val(0);}if(aE.get_G()==null){aC.green.val(0);}break;case"a":aC.alpha.val(100-Y.get_Y());if(aE.get_R()==null){aC.red.val(0);}if(aE.get_G()==null){aC.green.val(0);}if(aE.get_B()==null){aC.blue.val(0);}break;}if(aE.get_A()==null){aC.alpha.val(100);}switch(K.mode){case"h":case"s":case"v":az.setValuesFromHsva();break;case"r":case"g":case"b":case"a":az.setValuesFromRgba();break;}ah();if(aj.expandable&&aj.liveUpdate){var aD=aE.get_Hex();o.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});ad(m,100-aE.get_A());if(aj.bindToInput){aj.input.val(aE.get_Rgba()||"").css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent",color:aE.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aE);},v=function(){K.active=az.color;var aF=0,aE=K.active;switch(w.settings.color.mode){case"h":aF=360-aE.get_H();break;case"s":aF=100-aE.get_S();break;case"v":aF=100-aE.get_V();break;case"r":aF=255-aE.get_R();break;case"g":aF=255-aE.get_G();break;case"b":aF=255-aE.get_B();break;case"a":aF=100-aE.get_A();break;}Y.set_Y(aF);var aD=0,aC=0;switch(w.settings.color.mode){case"h":aD=aE.get_S();aC=100-aE.get_V();break;case"s":case"a":aD=aE.get_H();aC=100-aE.get_V();break;case"v":aD=aE.get_H();aC=100-aE.get_S();break;case"r":aD=aE.get_B();aC=255-aE.get_G();break;case"g":aD=aE.get_B();aC=255-aE.get_R();break;case"b":aD=aE.get_R();aC=255-aE.get_G();break;}G.set_X(aD);G.set_Y(aC);},ah=function(){aB();ar();Z();},aB=function(){try{var aC=az.color.get_Hex();A.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(A,az.color.get_A());}catch(aD){}},ar=function(){if(!K||!az){return;}K.active=az.color;var aC=K.active;switch(K.mode){case"h":z(ay,new f({h:aC.get_H(),s:100,v:100}).get_Hex());break;case"s":case"a":ad(av,100-aC.get_S());break;case"v":ad(av,aC.get_V());break;case"r":ad(av,aC.get_R()/255*100);break;case"g":ad(av,aC.get_G()/255*100);break;case"b":ad(av,aC.get_B()/255*100);break;}ad(au,100-aC.get_A());},Z=function(){if(!K||!az){return;}K.active=az.color;var aG=K.active;switch(K.mode){case"h":ad(P,100-aG.get_A());break;case"s":var aH=new f({h:aG.get_H(),s:100,v:aG.get_V()});z(R,aH.get_Hex());ad(P,100-aG.get_A());break;case"v":var aJ=new f({h:aG.get_H(),s:aG.get_S(),v:100});z(R,aJ.get_Hex());ad(P,100-aG.get_A());break;case"r":case"g":case"b":var aI=0,aK=0;if(K.mode=="r"){aI=aG.get_B();aK=aG.get_G();}else{if(K.mode=="g"){aI=aG.get_B();aK=aG.get_R();}else{if(K.mode=="b"){aI=aG.get_R();aK=aG.get_G();}}}var aC=aI/255*100,aF=aK/255*100,aE=(255-aI)/255*100,aD=(255-aK)/255*100;ad(T,aD>aE?aE:aD);ad(S,aD>aC?aC:aD);ad(R,aF>aC?aC:aF);ad(Q,aF>aE?aE:aF);ad(P,100-aG.get_A());break;case"a":z(R,aG.get_Hex());break;}},z=function(aC,aD){aC.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});},t=function(aC,aD){aC.css({backgroundImage:"url("+aD+")"});},x=function(aC,aD){aC.css({backgroundPosition:"0px "+aD+"px"});},ad=function(aD,aC){aD.css({visibility:aC>0?"visible":"hidden"});if(aC>0&&aC<100){aD.css({opacity:aC/100});}else{if(aC==0||aC==100){aD.css({opacity:""});}}},E=function(){az.fields.hex.val(K.current.get_Rgba()||"");az.setValuesFromHex();e.isFunction(az.valuesChanged)&&az.valuesChanged(az);},D=function(aC){an(aC.target.value);},ae=function(){E();},s=function(){E();aj.expandable&&w.hide();e.isFunction(w.cancelCallback)&&w.cancelCallback(K.active);},X=function(){var aD=K.active;K.current=new f({hex:aD.get_Rgba()});var aC=aD.get_Hex();l.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(l,az.color.get_A());if(aj.expandable){o.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(m,100-aD.get_A());if(aj.bindToInput){aj.input.val(aD.get_Rgba()||"").css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent",color:aD.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.commitCallback)&&w.commitCallback(aD);},p=function(){X();aj.expandable&&w.hide();},ag=function(){w.show();},W=function(aE){var aC=aj.element,aD=aj.page;M=parseInt(V.css("left"));L=parseInt(V.css("top"));at=aE.pageX;aq=aE.pageY;e(document).bind("mousemove",k).bind("mouseup",r);aE.stopPropagation();aE.preventDefault();return false;},k=function(aC){V.css({left:M-(at-aC.pageX)+"px",top:L-(aq-aC.pageY)+"px"});aC.stopPropagation();aC.preventDefault();return false;},r=function(aC){e(document).unbind("mousemove",k).unbind("mouseup",r);aC.stopPropagation();aC.preventDefault();return false;},F=function(aC){az.fields.hex.val(w.settings.window.input.val());az.bindedHexKeyUp(aC);},H=function(aC){az.fields.hex.val(new f({hex:e(this).attr("title")}).get_Rgba()||"");az.setValuesFromHex();e.isFunction(az.valuesChanged)&&az.valuesChanged(az);};e.extend(true,w,{id:w.attr("id"),settings:y,color:null,icon:null,commitCallback:e.isFunction(h[1])&&h[1]||null,liveCallback:e.isFunction(h[2])&&h[2]||null,cancelCallback:e.isFunction(h[3])&&h[3]||null,show:function(){if(document.all){var aD=false;for(i=0;i<c.length;i++){if(aD){c[i].color.add(c[i].icon).css({display:"none"});}if(c[i].id==w.id){aD=true;}}}K.current=new f({hex:K.active.get_Rgba()});var aC=K.active.get_Hex();l.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(l,K.active.get_A());V.css({display:"block"});v();},hide:function(){if(document.all){var aC=false;for(i=0;i<c.length;i++){if(aC){c[i].color.add(c[i].icon).css({display:"block"});}if(c[i].id==w.id){aC=true;}}}V.css({display:"none"});},destroy:function(){if(aj.expandable){C=V.find(".jPicker_Icon").unbind("click",ag);}if(aj.bindToInput){aj.input.unbind("keyup",F).unbind("change",F);}aa.add(aA).add(ak).add(am).add(ao).add(I).unbind("click",D);l.unbind("click",ae);ab.unbind("click",s);ap.unbind("click",p);if(aj.expandable){u.unbind("mousedown",W);}V.find(".jPicker_QuickColor").unbind("click",H);aa=null;aA=null;ak=null;am=null;ao=null;I=null;aw=null;ay=null;av=null;au=null;T=null;S=null;R=null;Q=null;P=null;O=null;J=null;A=null;l=null;ap=null;ab=null;ai=null;w.color=null;w.icon=null;G.destroy();G=null;Y.destroy();Y=null;az.destroy();az=null;w.commitCallback=null;w.cancelCallback=null;w.liveCallback=null;V.html("");for(i=0;i<c.length;i++){if(c[i].id==w.id){c.splice(i,1);}}}});var q=w.settings.images,aj=w.settings.window,af=w.settings.localization,K=w.settings.color;V=aj.expandable?w.next().find(".jPicker_Container"):w;if(aj.expandable){V.css({left:aj.position.x=="left"?"-526px":aj.position.x=="center"?"-259px":aj.position.x=="right"?"0px":aj.position.x=="screenCenter"?((e(document).width()>>1)-259)-w.next().offset().left+"px":aj.position.x,position:"absolute",top:aj.position.y=="top"?"-350px":aj.position.y=="center"?"-158px":aj.position.y=="bottom"?"25px":aj.position.y});}if((typeof(K.active)).toString().toLowerCase()=="string"){K.active=new f({hex:K.active});}V.html('<table class="jPicker_table"><tbody>'+(aj.expandable?'<tr><td class="jPicker_MoveBar" colspan="6"> </td></tr>':"")+'<tr><td rowspan="9"><h2 class="jPicker_Title">'+(aj.title||af.text.title)+'</h2><div class="jPicker_ColorMap"><span class="jPicker_ColorMap_l1"> </span><span class="jPicker_ColorMap_l2"> </span><span class="jPicker_ColorMap_l3"> </span><img src="'+q.clientPath+q.colorMap.arrow.file+'" class="jPicker_ColorMap_Arrow"/></div></td><td rowspan="9"><div class="jPicker_ColorBar"><span class="jPicker_ColorBar_l1"> </span><span class="jPicker_ColorBar_l2"> </span><span class="jPicker_ColorBar_l3"> </span><span class="jPicker_ColorBar_l4"> </span><span class="jPicker_ColorBar_l5"> </span><span class="jPicker_ColorBar_l6"> </span><img src="'+q.clientPath+q.colorBar.arrow.file+'" class="jPicker_ColorBar_Arrow"/></div></td><td colspan="3" class="jPicker_Preview">'+af.text.newColor+'<div class="jPicker_NewCurrent"><span class="jPicker_Active" title="'+af.tooltips.colors.newColor+'"> </span><span class="jPicker_Current" title="'+af.tooltips.colors.currentColor+'"> </span></div>'+af.text.currentColor+'</td><td rowspan="9" class="jPicker_OkCancel"><input type="button" class="jPicker_Ok" value="'+af.text.ok+'" title="'+af.tooltips.buttons.ok+'"/><input type="button" class="jPicker_Cancel" value="'+af.text.cancel+'" title="'+af.tooltips.buttons.cancel+'"/><hr/><div class="jPicker_Grid"> </div></td></tr><tr><td><input type="radio" class="jPicker_HueRadio" id="jPicker_Hue_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="h" title="'+af.tooltips.hue.radio+'"/></td><td><label for="jPicker_Hue_'+c.length+'" title="'+af.tooltips.hue.radio+'">H:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_HueText" value="'+K.active.get_H()+'" title="'+af.tooltips.hue.textbox+'"/> °</td></tr><tr><td><input type="radio" class="jPicker_SaturationRadio" id="jPicker_Saturation_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="s" title="'+af.tooltips.saturation.radio+'"/></td><td><label for="jPicker_Saturation_'+c.length+'" title="'+af.tooltips.saturation.radio+'">S:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_SaturationText" value="'+K.active.get_S()+'" title="'+af.tooltips.saturation.textbox+'"/> %</td></tr><tr><td><input type="radio" class="jPicker_BrightnessRadio" id="jPicker_Brightness_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="v" title="'+af.tooltips.brightness.radio+'"/><br/><br/></td><td><label for="jPicker_Brightness_'+c.length+'" title="'+af.tooltips.brightness.radio+'">B:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_BrightnessText" value="'+K.active.get_V()+'" title="'+af.tooltips.brightness.textbox+'"/> %</td></tr><tr><td><input type="radio" class="jPicker_RedRadio" id="jPicker_Red_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="r" title="'+af.tooltips.red.radio+'"/></td><td><label for="jPicker_Red_'+c.length+'" title="'+af.tooltips.red.radio+'">R:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_RedText" value="'+K.active.get_R()+'" title="'+af.tooltips.red.textbox+'"/></td></tr><tr><td><input type="radio" class="jPicker_GreenRadio" id="jPicker_Green_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="g" title="'+af.tooltips.green.radio+'"/></td><td><label for="jPicker_Green_'+c.length+'" title="'+af.tooltips.green.radio+'">G:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_GreenText" value="'+K.active.get_G()+'" title="'+af.tooltips.green.textbox+'"/></td></tr><tr><td><input type="radio" class="jPicker_BlueRadio" id="jPicker_Blue_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="b" title="'+af.tooltips.blue.radio+'"/></td><td><label for="jPicker_Blue_'+c.length+'" title="'+af.tooltips.blue.radio+'">B:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_BlueText" value="'+K.active.get_B()+'" title="'+af.tooltips.blue.textbox+'"/></td></tr><tr><td><input type="radio" class="jPicker_AlphaRadio" id="jPicker_Alpha_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="a" title="'+af.tooltips.alpha.radio+'"/></td><td><label for="jPicker_Alpha_'+c.length+'" title="'+af.tooltips.alpha.radio+'">A:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_AlphaText" value="'+K.active.get_A()+'" title="'+af.tooltips.alpha.textbox+'"/> %</td></tr><tr><td class="jPicker_HexCol"><label for="jPicker_Hex_'+c.length+'" title="'+af.tooltips.hex.textbox+'">#:</label></td><td class="jPicker_EnterHex" colspan="2"><input type="text" class="jPicker_HexText" id="jPicker_Hex_'+c.length+'" value="'+K.active.get_Rgba()+'" title="'+af.tooltips.hex.textbox+'"/></td></tr></tbody></table>');aa=V.find(".jPicker_HueRadio");aA=V.find(".jPicker_SaturationRadio");ak=V.find(".jPicker_BrightnessRadio");am=V.find(".jPicker_RedRadio");ao=V.find(".jPicker_GreenRadio");I=V.find(".jPicker_BlueRadio");aw=V.find(".jPicker_AlphaRadio");ay=V.find(".jPicker_ColorMap_l1");av=V.find(".jPicker_ColorMap_l2");au=V.find(".jPicker_ColorMap_l3");T=V.find(".jPicker_ColorBar_l1");S=V.find(".jPicker_ColorBar_l2");R=V.find(".jPicker_ColorBar_l3");Q=V.find(".jPicker_ColorBar_l4");P=V.find(".jPicker_ColorBar_l5");O=V.find(".jPicker_ColorBar_l6");J=V.find(".jPicker_NewCurrent");var ac=K.active.get_Hex();A=V.find(".jPicker_Active").css({backgroundColor:ac&&ac.length==6?"#"+ac:"transparent"});l=V.find(".jPicker_Current").css({backgroundColor:ac&&ac.length==6?"#"+ac:"transparent"});ap=V.find(".jPicker_Ok");ab=V.find(".jPicker_Cancel");ai=V.find(".jPicker_Grid");w.color=e(".Picker_Color");w.icon=e(".jPicker_Icon");az=new b(V,n);G=new d(V.find(".jPicker_ColorMap"),{map:{width:q.colorMap.width,height:q.colorMap.height},arrow:{image:q.clientPath+q.colorMap.arrow.file,width:q.colorMap.arrow.width,height:q.colorMap.arrow.height}},B);Y=new d(V.find(".jPicker_ColorBar"),{map:{width:q.colorBar.width,height:q.colorBar.height},arrow:{image:q.clientPath+q.colorBar.arrow.file,width:q.colorBar.arrow.width,height:q.colorBar.arrow.height}},al);t(ay,q.clientPath+"Maps.png");t(av,q.clientPath+"Maps.png");t(au,q.clientPath+"map-opacity.png");t(T,q.clientPath+"Bars.png");t(S,q.clientPath+"Bars.png");t(R,q.clientPath+"Bars.png");t(Q,q.clientPath+"Bars.png");t(P,q.clientPath+"bar-opacity.png");t(O,q.clientPath+"AlphaBar.png");t(J,q.clientPath+"preview-opacity.png");if(aj.expandable){o=w.next().find(".jPicker_Color").css({backgroundColor:ac&&ac.length==6?"#"+ac:"transparent"});m=w.next().find(".jPicker_Alpha");t(m,q.clientPath+"bar-opacity.png");ad(m,100-K.active.get_A());C=w.next().find(".jPicker_Icon").css({backgroundImage:"url("+q.clientPath+q.picker.file+")"}).bind("click",ag);if(aj.bindToInput){aj.input.bind("keyup",F).bind("change",F);}}aa.add(aA).add(ak).add(am).add(ao).add(I).add(aw).bind("click",D);l.bind("click",ae);ab.bind("click",s);ap.bind("click",p);if(aj.expandable){u=V.find(".jPicker_MoveBar").bind("mousedown",W);}if(K.quickList&&K.quickList.length>0){ai.html("");for(i=0;i<K.quickList.length;i++){if((typeof(K.quickList[i])).toString().toLowerCase()=="string"){K.quickList[i]=new f({hex:K.quickList[i]});}var ax=K.quickList[i].get_Rgba();ai.append('<span class="jPicker_QuickColor" title="'+(ax&&"#"+ax||"")+'"> </span>');var N=K.quickList[i].get_Hex();V.find(".jPicker_QuickColor").eq(i).css({backgroundColor:N&&N.length==6?"#"+N:"transparent",backgroundImage:N?"none":"url("+q.clientPath+"NoColor.png)"}).click(H);}}an(K.mode);az.fields.hex.val(K.active.get_Rgba()||"");az.setValuesFromHex();v();ah();if(!aj.expandable){w.show();}c.push(w);});};e.fn.jPicker.defaults={window:{title:null,position:{x:"screenCenter",y:"top"},expandable:false,liveUpdate:true},color:{mode:"h",active:new f({hex:"#ffcc00ff"}),quickList:[new f({h:360,s:33,v:100}),new f({h:360,s:66,v:100}),new f({h:360,s:100,v:100}),new f({h:360,s:100,v:75}),new f({h:360,s:100,v:50}),new f({h:180,s:0,v:100}),new f({h:30,s:33,v:100}),new f({h:30,s:66,v:100}),new f({h:30,s:100,v:100}),new f({h:30,s:100,v:75}),new f({h:30,s:100,v:50}),new f({h:180,s:0,v:90}),new f({h:60,s:33,v:100}),new f({h:60,s:66,v:100}),new f({h:60,s:100,v:100}),new f({h:60,s:100,v:75}),new f({h:60,s:100,v:50}),new f({h:180,s:0,v:80}),new f({h:90,s:33,v:100}),new f({h:90,s:66,v:100}),new f({h:90,s:100,v:100}),new f({h:90,s:100,v:75}),new f({h:90,s:100,v:50}),new f({h:180,s:0,v:70}),new f({h:120,s:33,v:100}),new f({h:120,s:66,v:100}),new f({h:120,s:100,v:100}),new f({h:120,s:100,v:75}),new f({h:120,s:100,v:50}),new f({h:180,s:0,v:60}),new f({h:150,s:33,v:100}),new f({h:150,s:66,v:100}),new f({h:150,s:100,v:100}),new f({h:150,s:100,v:75}),new f({h:150,s:100,v:50}),new f({h:180,s:0,v:50}),new f({h:180,s:33,v:100}),new f({h:180,s:66,v:100}),new f({h:180,s:100,v:100}),new f({h:180,s:100,v:75}),new f({h:180,s:100,v:50}),new f({h:180,s:0,v:40}),new f({h:210,s:33,v:100}),new f({h:210,s:66,v:100}),new f({h:210,s:100,v:100}),new f({h:210,s:100,v:75}),new f({h:210,s:100,v:50}),new f({h:180,s:0,v:30}),new f({h:240,s:33,v:100}),new f({h:240,s:66,v:100}),new f({h:240,s:100,v:100}),new f({h:240,s:100,v:75}),new f({h:240,s:100,v:50}),new f({h:180,s:0,v:20}),new f({h:270,s:33,v:100}),new f({h:270,s:66,v:100}),new f({h:270,s:100,v:100}),new f({h:270,s:100,v:75}),new f({h:270,s:100,v:50}),new f({h:180,s:0,v:10}),new f({h:300,s:33,v:100}),new f({h:300,s:66,v:100}),new f({h:300,s:100,v:100}),new f({h:300,s:100,v:75}),new f({h:300,s:100,v:50}),new f({h:180,s:0,v:0}),new f({h:330,s:33,v:100}),new f({h:330,s:66,v:100}),new f({h:330,s:100,v:100}),new f({h:330,s:100,v:75}),new f({h:330,s:100,v:50}),new f()]},images:{clientPath:"/jPicker/images/",colorMap:{width:256,height:256,arrow:{file:"mappoint.gif",width:15,height:15}},colorBar:{width:20,height:256,arrow:{file:"rangearrows.gif",width:40,height:9}},picker:{file:"picker.gif",width:25,height:24}},localization:{text:{title:"Drag Markers To Pick A Color",newColor:"new",currentColor:"current",ok:"OK",cancel:"Cancel"},tooltips:{colors:{newColor:"New Color - Press “OK” To Commit",currentColor:"Click To Revert To Original Color"},buttons:{ok:"Commit To This Color Selection",cancel:"Cancel And Revert To Original Color"},hue:{radio:"Set To “Hue” Color Mode",textbox:"Enter A “Hue” Value (0-360°)"},saturation:{radio:"Set To “Saturation” Color Mode",textbox:"Enter A “Saturation” Value (0-100%)"},brightness:{radio:"Set To “Brightness” Color Mode",textbox:"Enter A “Brightness” Value (0-100%)"},red:{radio:"Set To “Red” Color Mode",textbox:"Enter A “Red” Value (0-255)"},green:{radio:"Set To “Green” Color Mode",textbox:"Enter A “Green” Value (0-255)"},blue:{radio:"Set To “Blue” Color Mode",textbox:"Enter A “Blue” Value (0-255)"},alpha:{radio:"Set To “Alpha” Color Mode",textbox:"Enter A “Alpha” Value (0-100)"},hex:{textbox:"Enter A “Hex” Color Value (#000000-#ffffff)"}}}};})(jQuery,"1.0.12");
\ No newline at end of file diff --git a/files_svgedit/js/jgraduate/jquery.jgraduate.min.js b/files_svgedit/js/jgraduate/jquery.jgraduate.min.js deleted file mode 100644 index 7a1adde2e..000000000 --- a/files_svgedit/js/jgraduate/jquery.jgraduate.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console){window.console=new function(){this.log=function(b){};this.dir=function(b){}}}$.jGraduate={Paint:function(c){var b=c||{};this.alpha=b.alpha||100;if(b.copy){this.type=b.copy.type;this.alpha=b.copy.alpha;this.solidColor=null;this.linearGradient=null;this.radialGradient=null;switch(this.type){case"none":break;case"solidColor":this.solidColor=b.copy.solidColor;break;case"linearGradient":this.linearGradient=b.copy.linearGradient.cloneNode(true);break;case"radialGradient":this.radialGradient=b.copy.radialGradient.cloneNode(true);break}}else{if(b.linearGradient){this.type="linearGradient";this.solidColor=null;this.radialGradient=null;this.linearGradient=b.linearGradient.cloneNode(true)}else{if(b.radialGradient){this.type="radialGradient";this.solidColor=null;this.linearGradient=null;this.radialGradient=b.radialGradient.cloneNode(true)}else{if(b.solidColor){this.type="solidColor";this.solidColor=b.solidColor}else{this.type="none";this.solidColor=null;this.linearGradient=null;this.radialGradient=null}}}}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint(),window:{pickerTitle:"Drag markers to pick a paint",},images:{clientPath:"images/",},};jQuery.fn.jGraduate=function(c){var b=arguments;return this.each(function(){var k=$(this),g=$.extend(true,{},jQuery.fn.jGraduateDefaults,c),p=k.attr("id"),v="#"+k.attr("id")+" ";if(!v){alert("Container element must have an id attribute to maintain unique id strings for sub-elements.");return}var h=function(){if(k.paint.type=="radialGradient"){k.paint.linearGradient=null}else{if(k.paint.type=="linearGradient"){k.paint.radialGradient=null}else{if(k.paint.type=="solidColor"){k.paint.linearGradient=null;k.paint.radialGradient=null}}}$.isFunction(k.okCallback)&&k.okCallback(k.paint);k.hide()},i=function(){$.isFunction(k.cancelCallback)&&k.cancelCallback();k.hide()};$.extend(true,k,{paint:new $.jGraduate.Paint({copy:g.paint}),okCallback:$.isFunction(b[1])&&b[1]||null,cancelCallback:$.isFunction(b[2])&&b[2]||null,});var j=k.position(),r=null;if(k.paint.type=="none"){k.paint=$.jGraduate.Paint({solidColor:"ffffff"})}k.addClass("jGraduate_Picker");k.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_lgPick"></div><div class="jGraduate_rgPick"></div>');var u=$(v+"> .jGraduate_colPick");var q=$(v+"> .jGraduate_lgPick");var f=$(v+"> .jGraduate_rgPick");q.html('<div id="'+p+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+g.window.pickerTitle+'</h2><div id="'+p+'_lg_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+p+'_lg_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint"><img id="'+p+'_lg_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="'+g.images.clientPath+'rangearrows2.gif"></img></div></div><div class="jGraduate_Form"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Stop</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+p+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/><div id="'+p+'_jGraduate_colorBoxBegin" class="colorBox"></div><label id="'+p+'_jGraduate_beginOpacity"> 100%</label></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Stop</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+p+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/><div id="'+p+'_jGraduate_colorBoxEnd" class="colorBox"></div><label id="'+p+'_jGraduate_endOpacity">100%</label></div></div><div class="lg_jGraduate_OpacityField"><label class="lg_jGraduate_OpacityLabel">A: </label><input type="text" id="'+p+'_lg_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%</div></div><div class="jGraduate_OkCancel"><input type="button" id="'+p+'_lg_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+p+'_lg_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div><div class="jGraduate_LightBox"></div><div id="'+p+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');f.html('<div class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+g.window.pickerTitle+'</h2><div id="'+p+'_rg_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+p+'_rg_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint"><img id="'+p+'_rg_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="'+g.images.clientPath+'rangearrows2.gif"></img></div></div><div id="jGraduate_radColors" class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Colors</label><div class="jGraduate_Form_Section jGraduate_Colorblocks"><div class="jGraduate_colorblock"><span>Center:</span><div id="'+p+'_jGraduate_colorBoxCenter" class="colorBox"></div><label id="'+p+'_rg_jGraduate_centerOpacity"> 100%</label></div><div class="jGraduate_colorblock"><span>Outer:</span><div id="'+p+'_jGraduate_colorBoxOuter" class="colorBox"></div><label id="'+p+'_jGraduate_outerOpacity"> 100%</label></div></div></div><div class="jGraduate_StopSection"></div><div class="jGraduate_Form"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+p+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+p+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+p+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_RadiusField"><label class="jGraduate_Form_Heading">Radius</label><div class="jGraduate_Form_Section"><div id="'+p+'_jGraduate_RadiusContainer" class="jGraduate_RadiusContainer"></div><input type="text" id="'+p+'_jGraduate_RadiusInput" size="3" value="100"/>%<div id="'+p+'_jGraduate_Radius" class="jGraduate_Radius" title="Click to set radius"><img id="'+p+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+g.images.clientPath+'rangearrows2.gif"></img></div></div></div></div><div class="rg_jGraduate_OpacityField"><label class="rg_jGraduate_OpacityLabel">A: </label><input type="text" id="'+p+'_rg_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%</div><div class="jGraduate_OkCancel"><input type="button" id="'+p+'_rg_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+p+'_rg_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div><div class="jGraduate_LightBox"></div><div id="'+p+'_rg_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var t=256,o=0,n=0,d=15/2,m=t-2*o,l=t-2*n;$.each(["lg","rg"],function(z){var y=p+"_"+this;var w=document.getElementById(y+"_jGraduate_GradContainer");var x=w.appendChild(document.createElementNS(a.svg,"svg"));x.id=y+"_jgraduate_svg";x.setAttribute("width",t);x.setAttribute("height",t);x.setAttribute("xmlns",a.svg)});(function(){var Q=document.getElementById(p+"_lg_jgraduate_svg");if(k.paint.type=="linearGradient"){k.paint.linearGradient.id=p+"_jgraduate_grad";k.paint.linearGradient=Q.appendChild(k.paint.linearGradient.cloneNode(true))}else{var I=Q.appendChild(document.createElementNS(a.svg,"linearGradient"));I.id=p+"_jgraduate_grad";I.setAttribute("x1","0.0");I.setAttribute("y1","0.0");I.setAttribute("x2","1.0");I.setAttribute("y2","1.0");var V=I.appendChild(document.createElementNS(a.svg,"stop"));V.setAttribute("offset","0.0");V.setAttribute("stop-color","#ff0000");var E=I.appendChild(document.createElementNS(a.svg,"stop"));E.setAttribute("offset","1.0");E.setAttribute("stop-color","#ffff00");k.paint.linearGradient=I}var D=k.paint.alpha;$("#"+p+"_lg_jGraduate_OpacityInput").val(D);var S=parseInt(255*(D/100))-4.5;$("#"+p+"_lg_jGraduate_AlphaArrows").css({"margin-left":S});var U=parseFloat(k.paint.linearGradient.getAttribute("x1")||0),C=parseFloat(k.paint.linearGradient.getAttribute("y1")||0),T=parseFloat(k.paint.linearGradient.getAttribute("x2")||1),A=parseFloat(k.paint.linearGradient.getAttribute("y2")||0);var y=document.createElementNS(a.svg,"rect");y.id=p+"_lg_jgraduate_rect";y.setAttribute("x",o);y.setAttribute("y",n);y.setAttribute("width",l);y.setAttribute("height",l);y.setAttribute("fill","url(#"+p+"_jgraduate_grad)");y.setAttribute("fill-opacity","1.0");y=Q.appendChild(y);$("#"+p+"_lg_jgraduate_rect").attr("fill-opacity",D/100);var x=document.createElementNS(a.svg,"image");x.id=p+"_stop1";x.setAttribute("class","stop");x.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint.gif");x.setAttributeNS(a.xlink,"title","Begin Stop");x.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("Begin Stop"));x.setAttribute("width",18);x.setAttribute("height",18);x.setAttribute("x",o+m*U-d);x.setAttribute("y",n+l*C-d);x.setAttribute("cursor","move");x=Q.appendChild(x);var P=document.createElementNS(a.svg,"image");P.id=p+"_stop2";P.setAttribute("class","stop");P.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint.gif");P.setAttributeNS(a.xlink,"title","End Stop");P.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("End Stop"));P.setAttribute("width",18);P.setAttribute("height",18);P.setAttribute("x",o+m*T-d);P.setAttribute("y",n+l*A-d);P.setAttribute("cursor","move");P=Q.appendChild(P);$("#"+p+"_lg_jGraduate_Ok").bind("click",function(){k.paint.type="linearGradient";k.paint.solidColor=null;h()});$("#"+p+"_lg_jGraduate_Cancel").bind("click",function(Y){i()});var U=k.paint.linearGradient.getAttribute("x1");if(!U){U="0.0"}var G=$("#"+p+"_jGraduate_x1");G.val(U);G.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.linearGradient.setAttribute("x1",this.value);x.setAttribute("x",o+m*this.value-d)});var C=k.paint.linearGradient.getAttribute("y1");if(!C){C="0.0"}var F=$("#"+p+"_jGraduate_y1");F.val(C);F.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.linearGradient.setAttribute("y1",this.value);x.setAttribute("y",n+l*this.value-d)});var T=k.paint.linearGradient.getAttribute("x2");if(!T){T="1.0"}var K=$("#"+p+"_jGraduate_x2");K.val(T);K.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=1}k.paint.linearGradient.setAttribute("x2",this.value);P.setAttribute("x",o+m*this.value-d)});var A=k.paint.linearGradient.getAttribute("y2");if(!A){A="0.0"}y2Input=$("#"+p+"_jGraduate_y2");y2Input.val(A);y2Input.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.linearGradient.setAttribute("y2",this.value);P.setAttribute("y",n+l*this.value-d)});var J=k.paint.linearGradient.getElementsByTagNameNS(a.svg,"stop");var w=J.length;if(w<2){while(w<2){k.paint.linearGradient.appendChild(document.createElementNS(a.svg,"stop"));++w}J=k.paint.linearGradient.getElementsByTagNameNS(a.svg,"stop")}var X=function(aa,ac){var ab=ac.offset();var Z=(aa.pageX-ab.left-parseInt(ac.css("border-left-width")));if(Z>255){Z=255}if(Z<0){Z=0}var Y=Z-4.5;Z/=255;$("#"+p+"_lg_jGraduate_AlphaArrows").css({"margin-left":Y});$("#"+p+"_lg_jgraduate_rect").attr("fill-opacity",Z);Z=parseInt(Z*100);$("#"+p+"_lg_jGraduate_OpacityInput").val(Z);k.paint.alpha=Z};var W=false;$("#"+p+"_lg_jGraduate_Opacity").mousedown(function(Y){X(Y,$(this));W=true;Y.preventDefault()}).mousemove(function(Y){if(W){X(Y,$(this));Y.preventDefault()}}).mouseup(function(Y){X(Y,$(this));W=false;Y.preventDefault()});var M=null;var B=-1,z=-1;$(".stop, #color_picker_lg_jGraduate_GradContainer image").mousedown(function(Y){M=this;B=Y.clientX;z=Y.clientY;Y.preventDefault()});$("#"+p+"_lg_jgraduate_svg").mousemove(function(aa){if(null!=M){var ac=aa.clientX-B;var Z=aa.clientY-z;B+=ac;z+=Z;var Y=parseFloat(M.getAttribute("x"))+ac;var ae=parseFloat(M.getAttribute("y"))+Z;if(Y<o-d){Y=o-d}if(ae<n-d){ae=n-d}if(Y>o+m-d){Y=o+m-d}if(ae>n+l-d){ae=n+l-d}M.setAttribute("x",Y);M.setAttribute("y",ae);var ad=(Y-o+d)/m;var ab=(ae-n+d)/l;if(M.id==(p+"_stop1")){G.val(ad);F.val(ab);k.paint.linearGradient.setAttribute("x1",ad);k.paint.linearGradient.setAttribute("y1",ab)}else{K.val(ad);y2Input.val(ab);k.paint.linearGradient.setAttribute("x2",ad);k.paint.linearGradient.setAttribute("y2",ab)}aa.preventDefault()}});$("#"+p+"_lg_jgraduate_svg").mouseup(function(Y){M=null});var H=J[0].getAttribute("stop-color");if(!H){H="#000"}beginColorBox=$("#"+p+"_jGraduate_colorBoxBegin");beginColorBox.css({"background-color":H});var R=J[0].getAttribute("stop-opacity");if(!R){R="1.0"}$("#"+p+"lg_jGraduate_beginOpacity").html((R*100)+"%");var N=J[J.length-1].getAttribute("stop-color");if(!N){N="#000"}endColorBox=$("#"+p+"_jGraduate_colorBoxEnd");endColorBox.css({"background-color":N});var L=J[J.length-1].getAttribute("stop-opacity");if(!L){L="1.0"}$("#"+p+"jGraduate_endOpacity").html((L*100)+"%");$("#"+p+"_jGraduate_colorBoxBegin").click(function(){$("div.jGraduate_LightBox").show();var Z=$(this);var Y=(parseFloat(R)*255).toString(16);while(Y.length<2){Y="0"+Y}r=H.substr(1)+Y;$("#"+p+"_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(aa){H=aa.get_Hex()?("#"+aa.get_Hex()):"none";R=aa.get_A()?aa.get_A()/100:1;Z.css("background",H);$("#"+p+"_jGraduate_beginOpacity").html(parseInt(R*100)+"%");J[0].setAttribute("stop-color",H);J[0].setAttribute("stop-opacity",R);$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()})});$("#"+p+"_jGraduate_colorBoxEnd").click(function(){$("div.jGraduate_LightBox").show();var Z=$(this);var Y=(parseFloat(L)*255).toString(16);while(Y.length<2){Y="0"+Y}r=N.substr(1)+Y;$("#"+p+"_jGraduate_stopPicker").css({left:100,top:15}).jPicker({window:{title:"Pick the end color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(aa){N=aa.get_Hex()?("#"+aa.get_Hex()):"none";L=aa.get_A()?aa.get_A()/100:1;Z.css("background",N);$("#"+p+"_jGraduate_endOpacity").html(parseInt(L*100)+"%");J[1].setAttribute("stop-color",N);J[1].setAttribute("stop-opacity",L);$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()})});var O=(k.paint.alpha*255/100).toString(16);while(O.length<2){O="0"+O}r=k.paint.solidColor=="none"?"":k.paint.solidColor+O;u.jPicker({window:{title:g.window.pickerTitle},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(Y){k.paint.type="solidColor";k.paint.alpha=Y.get_A()?Y.get_A():100;k.paint.solidColor=Y.get_Hex()?Y.get_Hex():"none";k.paint.linearGradient=null;h()},null,function(){i()})}());(function(){var w=document.getElementById(p+"_rg_jgraduate_svg");if(k.paint.type=="radialGradient"){k.paint.radialGradient.id=p+"_rg_jgraduate_grad";k.paint.radialGradient=w.appendChild(k.paint.radialGradient.cloneNode(true))}else{var G=w.appendChild(document.createElementNS(a.svg,"radialGradient"));G.id=p+"_rg_jgraduate_grad";G.setAttribute("cx","0.5");G.setAttribute("cy","0.5");G.setAttribute("r","0.5");var B=G.appendChild(document.createElementNS(a.svg,"stop"));B.setAttribute("offset","0.0");B.setAttribute("stop-color","#ff0000");var E=G.appendChild(document.createElementNS(a.svg,"stop"));E.setAttribute("offset","1.0");E.setAttribute("stop-color","#ffff00");k.paint.radialGradient=G}var R=k.paint.alpha;$("#"+p+"_rg_jGraduate_OpacityInput").val(R);var D=parseInt(255*(R/100))-4.5;$("#"+p+"_rg_jGraduate_AlphaArrows").css({"margin-left":D});var G=k.paint.radialGradient;var M=parseFloat(G.getAttribute("cx")||0.5),K=parseFloat(G.getAttribute("cy")||0.5),O=parseFloat(G.getAttribute("fx")||0.5),N=parseFloat(G.getAttribute("fy")||0.5);var H=G.getAttribute("fx")!=null&&!(M==O&&K==N);var U=document.createElementNS(a.svg,"rect");U.id=p+"_rg_jgraduate_rect";U.setAttribute("x",o);U.setAttribute("y",n);U.setAttribute("width",l);U.setAttribute("height",l);U.setAttribute("fill","url(#"+p+"_rg_jgraduate_grad)");U.setAttribute("fill-opacity","1.0");U=w.appendChild(U);$("#"+p+"_rg_jgraduate_rect").attr("fill-opacity",R/100);var V=document.createElementNS(a.svg,"image");V.id=p+"_center_pt";V.setAttribute("class","stop");V.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint_c.png");V.setAttributeNS(a.xlink,"title","Center Point");V.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("Center Point"));V.setAttribute("width",18);V.setAttribute("height",18);V.setAttribute("x",o+m*M-d);V.setAttribute("y",n+l*K-d);V.setAttribute("cursor","move");var A=document.createElementNS(a.svg,"image");A.id=p+"_focus_pt";A.setAttribute("class","stop");A.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint_f.png");A.setAttributeNS(a.xlink,"title","Focus Point");A.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("Focus Point"));A.setAttribute("width",18);A.setAttribute("height",18);A.setAttribute("x",o+m*O-d);A.setAttribute("y",n+l*N-d);A.setAttribute("cursor","move");A=w.appendChild(A);V=w.appendChild(V);$("#"+p+"_rg_jGraduate_Ok").bind("click",function(){k.paint.type="radialGradient";k.paint.solidColor=null;h()});$("#"+p+"_rg_jGraduate_Cancel").bind("click",function(ag){i()});var M=k.paint.radialGradient.getAttribute("cx");if(!M){M="0.0"}var af=$("#"+p+"_jGraduate_cx");af.val(M);af.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.radialGradient.setAttribute("cx",this.value);V.setAttribute("x",o+m*this.value-d)});var K=k.paint.radialGradient.getAttribute("cy");if(!K){K="0.0"}var P=$("#"+p+"_jGraduate_cy");P.val(K);P.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.radialGradient.setAttribute("cy",this.value);V.setAttribute("y",n+l*this.value-d)});var O=k.paint.radialGradient.getAttribute("fx");if(!O){O="1.0"}var ae=$("#"+p+"_jGraduate_fx");ae.val(O);ae.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=1}k.paint.radialGradient.setAttribute("fx",this.value);A.setAttribute("x",o+m*this.value-d)});var N=k.paint.radialGradient.getAttribute("fy");if(!N){N="0.0"}var Q=$("#"+p+"_jGraduate_fy");Q.val(N);Q.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.radialGradient.setAttribute("fy",this.value);A.setAttribute("y",n+l*this.value-d)});if(!H){A.setAttribute("display","none");ae.val("");Q.val("")}$("#"+p+"_jGraduate_match_ctr")[0].checked=!H;var J,I;$("#"+p+"_jGraduate_match_ctr").change(function(){H=!this.checked;A.setAttribute("display",H?"inline":"none");ae.val("");Q.val("");var ai=k.paint.radialGradient;if(!H){J=ai.getAttribute("fx");I=ai.getAttribute("fy");ai.removeAttribute("fx");ai.removeAttribute("fy")}else{var ah=J||0.5;var ag=I||0.5;ai.setAttribute("fx",ah);ai.setAttribute("fy",ag);ae.val(ah);Q.val(ag)}});var T=k.paint.radialGradient.getElementsByTagNameNS(a.svg,"stop");var X=T.length;if(X<2){while(X<2){k.paint.radialGradient.appendChild(document.createElementNS(a.svg,"stop"));++X}T=k.paint.radialGradient.getElementsByTagNameNS(a.svg,"stop")}var ab=k.paint.radialGradient.getAttribute("r")-0;var Z=parseInt((245/2)*(ab))-4.5;$("#"+p+"_jGraduate_RadiusArrows").css({"margin-left":Z});$("#"+p+"_jGraduate_RadiusInput").val(parseInt(ab*100)).change(function(ai){var ah=this.value/100;if(ah<0.01){ah=0.01}k.paint.radialGradient.setAttribute("r",ah);if(ah>2){ah=2}var ag=parseInt((245/2)*ah)-4.5;$("#"+p+"_jGraduate_RadiusArrows").css({"margin-left":ag})});var z=function(ai,ak){var aj=ak.offset();var ah=(ai.pageX-aj.left-parseInt(ak.css("border-left-width")));if(ah>255){ah=255}if(ah<0){ah=0}var ag=ah-4.5;ah/=255;$("#"+p+"_rg_jGraduate_AlphaArrows").css({"margin-left":ag});$("#"+p+"_rg_jgraduate_rect").attr("fill-opacity",ah);ah=parseInt(ah*100);$("#"+p+"_rg_jGraduate_OpacityInput").val(ah);k.paint.alpha=ah};var ad=false;$("#"+p+"_rg_jGraduate_Opacity").mousedown(function(ag){z(ag,$(this));ad=true;ag.preventDefault()}).mousemove(function(ag){if(ad){z(ag,$(this));ag.preventDefault()}}).mouseup(function(ag){z(ag,$(this));ad=false;ag.preventDefault()});var L=function(ai,ak){var aj=ak.offset();var ah=(ai.pageX-aj.left-parseInt(ak.css("border-left-width")));if(ah>245){ah=245}if(ah<=1){ah=1}var ag=ah-5;ah/=(245/2);$("#"+p+"_jGraduate_RadiusArrows").css({"margin-left":ag});k.paint.radialGradient.setAttribute("r",ah);ah=parseInt(ah*100);$("#"+p+"_jGraduate_RadiusInput").val(ah)};var C=false;$("#"+p+"_jGraduate_Radius").mousedown(function(ag){L(ag,$(this));C=true;ag.preventDefault()}).mousemove(function(ag){if(C){L(ag,$(this));ag.preventDefault()}}).mouseup(function(ag){L(ag,$(this));C=false;ag.preventDefault()});var ac=null;var y=-1,x=-1;$(".stop, #color_picker_rg_jGraduate_GradContainer image").mousedown(function(ag){ac=this;y=ag.clientX;x=ag.clientY;ag.preventDefault()});$("#"+p+"_rg_jgraduate_svg").mousemove(function(ai){if(null!=ac){var ak=ai.clientX-y;var ah=ai.clientY-x;y+=ak;x+=ah;var ag=parseFloat(ac.getAttribute("x"))+ak;var am=parseFloat(ac.getAttribute("y"))+ah;if(ag<o-d){ag=o-d}if(am<n-d){am=n-d}if(ag>o+m-d){ag=o+m-d}if(am>n+l-d){am=n+l-d}ac.setAttribute("x",ag);ac.setAttribute("y",am);var al=(ag-o+d)/m;var aj=(am-n+d)/l;if(ac.id==(p+"_center_pt")){af.val(al);P.val(aj);k.paint.radialGradient.setAttribute("cx",al);k.paint.radialGradient.setAttribute("cy",aj);if(!H){k.paint.radialGradient.setAttribute("fx",al);k.paint.radialGradient.setAttribute("fy",aj)}}else{ae.val(al);Q.val(aj);k.paint.radialGradient.setAttribute("fx",al);k.paint.radialGradient.setAttribute("fy",aj)}ai.preventDefault()}});$("#"+p+"_rg_jgraduate_svg").mouseup(function(ag){ac=null});var S=T[0].getAttribute("stop-color");if(!S){S="#000"}centerColorBox=$("#"+p+"_jGraduate_colorBoxCenter");centerColorBox.css({"background-color":S});var W=T[0].getAttribute("stop-opacity");if(!W){W="1.0"}$("#"+p+"jGraduate_centerOpacity").html((W*100)+"%");var F=T[T.length-1].getAttribute("stop-color");if(!F){F="#000"}outerColorBox=$("#"+p+"_jGraduate_colorBoxOuter");outerColorBox.css({"background-color":F});var Y=T[T.length-1].getAttribute("stop-opacity");if(!Y){Y="1.0"}$("#"+p+"rg_jGraduate_outerOpacity").html((Y*100)+"%");$("#"+p+"_jGraduate_colorBoxCenter").click(function(){$("div.jGraduate_LightBox").show();var ah=$(this);var ag=(parseFloat(W)*255).toString(16);while(ag.length<2){ag="0"+ag}r=S.substr(1)+ag;$("#"+p+"_rg_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the center color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(ai){S=ai.get_Hex()?("#"+ai.get_Hex()):"none";W=ai.get_A()?ai.get_A()/100:1;ah.css("background",S);$("#"+p+"_rg_jGraduate_centerOpacity").html(parseInt(W*100)+"%");T[0].setAttribute("stop-color",S);T[0].setAttribute("stop-opacity",W);$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()})});$("#"+p+"_jGraduate_colorBoxOuter").click(function(){$("div.jGraduate_LightBox").show();var ah=$(this);var ag=(parseFloat(Y)*255).toString(16);while(ag.length<2){ag="0"+ag}r=F.substr(1)+ag;$("#"+p+"_rg_jGraduate_stopPicker").css({left:100,top:15}).jPicker({window:{title:"Pick the outer color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(ai){F=ai.get_Hex()?("#"+ai.get_Hex()):"none";Y=ai.get_A()?ai.get_A()/100:1;ah.css("background",F);$("#"+p+"_jGraduate_outerOpacity").html(parseInt(Y*100)+"%");T[1].setAttribute("stop-color",F);T[1].setAttribute("stop-opacity",Y);$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()})});var aa=(k.paint.alpha*255/100).toString(16);while(aa.length<2){aa="0"+aa}r=k.paint.solidColor=="none"?"":k.paint.solidColor+aa;u.jPicker({window:{title:g.window.pickerTitle},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(ag){k.paint.type="solidColor";k.paint.alpha=ag.get_A()?ag.get_A():100;k.paint.solidColor=ag.get_Hex()?ag.get_Hex():"none";k.paint.radialGradient=null;h()},null,function(){i()})}());var s=$(v+" .jGraduate_tabs li");s.click(function(){s.removeClass("jGraduate_tab_current");$(this).addClass("jGraduate_tab_current");$(v+" > div").hide();$(v+" .jGraduate_"+$(this).attr("data-type")+"Pick").show()});$(v+" > div").hide();s.removeClass("jGraduate_tab_current");var e;switch(k.paint.type){case"linearGradient":e=$(v+" .jGraduate_tab_lingrad");break;case"radialGradient":e=$(v+" .jGraduate_tab_radgrad");break;default:e=$(v+" .jGraduate_tab_color");break}e.addClass("jGraduate_tab_current").click();k.show()})}})();
\ No newline at end of file diff --git a/files_svgedit/js/jquerybbq/jquery.bbq.min.js b/files_svgedit/js/jquerybbq/jquery.bbq.min.js deleted file mode 100644 index edb781914..000000000 --- a/files_svgedit/js/jquerybbq/jquery.bbq.min.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010 - * http://benalman.com/projects/jquery-bbq-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this); -/* - * jQuery hashchange event - v1.2 - 2/11/2010 - * http://benalman.com/projects/jquery-hashchange-plugin/ - * - * Copyright (c) 2010 "Cowboy" Ben Alman - * Dual licensed under the MIT and GPL licenses. - * http://benalman.com/about/license/ - */ -(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this);
\ No newline at end of file diff --git a/files_svgedit/js/js-hotkeys/README.md b/files_svgedit/js/js-hotkeys/README.md deleted file mode 100644 index 696e98942..000000000 --- a/files_svgedit/js/js-hotkeys/README.md +++ /dev/null @@ -1,45 +0,0 @@ -#About -**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination. - -This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](http://github.com/tzuryby/hotkeys) - -The syntax is as follows: - - $(expression).bind(types, keys, handler); - $(expression).unbind(types, handler); - - $(document).bind('keydown', 'ctrl+a', fn); - - // e.g. replace '$' sign with 'EUR' - $('input.foo').bind('keyup', '$', function(){ - this.value = this.value.replace('$', 'EUR'); - }); - -## Types -Supported types are `'keydown'`, `'keyup'` and `'keypress'` - -## Notes - -If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift - -Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing. - -## jQuery Compatibility - -Works with jQuery 1.4.2 and newer. - -It known to be working with all the major browsers on all available platforms (Win/Mac/Linux) - - * IE 6/7/8 - * FF 1.5/2/3 - * Opera-9 - * Safari-3 - * Chrome-0.2 - -### Addendum - -Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler. - -Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all. - -*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.*
\ No newline at end of file diff --git a/files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js b/files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js deleted file mode 100644 index 52d955174..000000000 --- a/files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/* - * jQuery Hotkeys Plugin - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * - * http://github.com/jeresig/jquery.hotkeys - * - * Based upon the plugin by Tzury Bar Yochay: - * http://github.com/tzuryby/hotkeys - * - * Original idea by: - * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/ -*/ - -(function(b){b.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(/textarea|select/i.test(n.target.nodeName)||n.target.type==="text")){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j<f;j++){if(g[e[j]]){return c.apply(this,arguments)}}}}b.each(["keydown","keyup","keypress"],function(){b.event.special[this]={add:a}})})(jQuery);
\ No newline at end of file diff --git a/files_svgedit/js/locale/README.txt b/files_svgedit/js/locale/README.txt deleted file mode 100644 index 9d6ac5882..000000000 --- a/files_svgedit/js/locale/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -This directory holds JSON files that translate the UI strings in SVG-edit. -Initial translations were done by Narendra Sisodiya putting the English -strings through the Google Translation API. Humans will need to take these -automated translations and ensure they make sense. - -See AUTHORS for the translations credits. - -Languages Already Translated By Humans: - * lang.cs.js - * lang.de.js - * lang.en.js - * lang.es.js - * lang.fr.js - * lang.ja.js - * lang.nl.js - * lang.ro.js - * lang.sk.js diff --git a/files_svgedit/js/locale/lang.af.js b/files_svgedit/js/locale/lang.af.js deleted file mode 100644 index 07f132167..000000000 --- a/files_svgedit/js/locale/lang.af.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Align in verhouding tot ..."}, -{"id": "bkgnd_color", "title": "Verander agtergrondkleur / opaciteit"}, -{"id": "circle_cx", "title": "Verandering sirkel se cx koördineer"}, -{"id": "circle_cy", "title": "Verandering sirkel se cy koördineer"}, -{"id": "circle_r", "title": "Verandering sirkel se radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Verandering Rechthoek Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Verandering ellips se cx koördineer"}, -{"id": "ellipse_cy", "title": "Verander ellips se cy koördineer"}, -{"id": "ellipse_rx", "title": "Verandering ellips se x radius"}, -{"id": "ellipse_ry", "title": "Verander ellips se j radius"}, -{"id": "fill_color", "title": "Verandering vul kleur"}, -{"id": "fitToContent", "textContent": "Pas na inhoud"}, -{"id": "fit_to_all", "textContent": "Passing tot al inhoud"}, -{"id": "fit_to_canvas", "textContent": "Passing tot doek"}, -{"id": "fit_to_layer_content", "textContent": "Passing tot laag inhoud"}, -{"id": "fit_to_sel", "textContent": "Passing tot seleksie"}, -{"id": "font_family", "title": "Lettertipe verander Familie"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Verandering prent hoogte"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "URL verander"}, -{"id": "image_width", "title": "Verander prent breedte"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "grootste voorwerp"}, -{"id": "layer_delete", "title": "Verwyder Laag"}, -{"id": "layer_down", "title": "Beweeg afbreek Down"}, -{"id": "layer_new", "title": "Nuwe Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Beweeg afbreek Up"}, -{"id": "layersLabel", "textContent": "Lae:"}, -{"id": "line_x1", "title": "Verandering lyn se vertrek x koördinaat"}, -{"id": "line_x2", "title": "Verandering lyn se eindig x koördinaat"}, -{"id": "line_y1", "title": "Verandering lyn se vertrek y koördinaat"}, -{"id": "line_y2", "title": "Verandering lyn se eindig y koördinaat"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "bladsy"}, -{"id": "palette", "title": "Klik om te verander vul kleur, verskuiwing klik om 'n beroerte kleur verander"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Verandering reghoek hoogte"}, -{"id": "rect_width_tool", "title": "Verandering reghoek breedte"}, -{"id": "relativeToLabel", "textContent": "relatief tot:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Kies gedefinieerde:"}, -{"id": "selected_objects", "textContent": "verkose voorwerpe"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "kleinste voorwerp"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Verandering beroerte kleur"}, -{"id": "stroke_style", "title": "Verandering beroerte dash styl"}, -{"id": "stroke_width", "title": "Verandering beroerte breedte"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Doek Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Lengte:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Wydte:"}, -{"id": "text", "title": "Verander teks inhoud"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Rig Middel"}, -{"id": "tool_alignleft", "title": "Links Regterkant"}, -{"id": "tool_alignmiddle", "title": "Align Midde"}, -{"id": "tool_alignright", "title": "Lijn regs uit"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Verandering rotasie-hoek"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Vetgedrukte teks"}, -{"id": "tool_circle", "title": "Sirkel"}, -{"id": "tool_clear", "textContent": "Nuwe Beeld"}, -{"id": "tool_clone", "title": "Kloon Element"}, -{"id": "tool_clone_multi", "title": "Kloon Elemente"}, -{"id": "tool_delete", "title": "Verwyder Element"}, -{"id": "tool_delete_multi", "title": "Verwyder geselekteerde Elemente"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Annuleer"}, -{"id": "tool_docprops_save", "textContent": "Spaar"}, -{"id": "tool_ellipse", "title": "Ellips"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Gratis-Hand Ellips"}, -{"id": "tool_fhpath", "title": "Potlood tool"}, -{"id": "tool_fhrect", "title": "Free-hand Rectangle"}, -{"id": "tool_font_size", "title": "Verandering Lettertipe Grootte"}, -{"id": "tool_group", "title": "Groep Elemente"}, -{"id": "tool_image", "title": "Image Gereedskap"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Lyn Gereedskap"}, -{"id": "tool_move_bottom", "title": "Skuif na Bottom"}, -{"id": "tool_move_top", "title": "Skuif na bo"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Verander geselekteerde item opaciteit"}, -{"id": "tool_open", "textContent": "Open Beeld"}, -{"id": "tool_path", "title": "Poli Gereedskap"}, -{"id": "tool_rect", "title": "Reghoek"}, -{"id": "tool_redo", "title": "Oordoen"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Slaan Beeld"}, -{"id": "tool_select", "title": "Select Gereedschap"}, -{"id": "tool_source", "title": "Wysig Bron"}, -{"id": "tool_source_cancel", "textContent": "Annuleer"}, -{"id": "tool_source_save", "textContent": "Spaar"}, -{"id": "tool_square", "title": "Vierkant"}, -{"id": "tool_text", "title": "Text Gereedskap"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Boontoe"}, -{"id": "tool_ungroup", "title": "Ungroup Elemente"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Klik op die Gereedskap"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Change zoom vlak"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ar.js b/files_svgedit/js/locale/lang.ar.js deleted file mode 100644 index 26e8fba42..000000000 --- a/files_svgedit/js/locale/lang.ar.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "محاذاة النسبي ل ..."}, -{"id": "bkgnd_color", "title": "تغير لون الخلفية / غموض"}, -{"id": "circle_cx", "title": "دائرة التغيير لتنسيق cx"}, -{"id": "circle_cy", "title": "Change circle's cy coordinate"}, -{"id": "circle_r", "title": "التغيير في دائرة نصف قطرها"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "تغيير مستطيل ركن الشعاع"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "تغيير شكل البيضاوي cx تنسيق"}, -{"id": "ellipse_cy", "title": "تغيير شكل البيضاوي قبرصي تنسيق"}, -{"id": "ellipse_rx", "title": "تغيير شكل البيضاوي خ نصف قطرها"}, -{"id": "ellipse_ry", "title": "تغيير القطع الناقص في دائرة نصف قطرها ذ"}, -{"id": "fill_color", "title": "تغير لون التعبئة"}, -{"id": "fitToContent", "textContent": "لائقا للمحتوى"}, -{"id": "fit_to_all", "textContent": "يصلح لجميع المحتويات"}, -{"id": "fit_to_canvas", "textContent": "يصلح لوحة زيتية على قماش"}, -{"id": "fit_to_layer_content", "textContent": "يصلح لطبقة المحتوى"}, -{"id": "fit_to_sel", "textContent": "يصلح لاختيار"}, -{"id": "font_family", "title": "تغيير الخط الأسرة"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "تغيير ارتفاع الصورة"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "تغيير العنوان"}, -{"id": "image_width", "title": "تغيير صورة العرض"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "أكبر كائن"}, -{"id": "layer_delete", "title": "حذف طبقة"}, -{"id": "layer_down", "title": "تحرك لأسفل طبقة"}, -{"id": "layer_new", "title": "طبقة جديدة"}, -{"id": "layer_rename", "title": "تسمية الطبقة"}, -{"id": "layer_up", "title": "تحرك لأعلى طبقة"}, -{"id": "layersLabel", "textContent": "طبقات:"}, -{"id": "line_x1", "title": "تغيير الخط لبدء تنسيق خ"}, -{"id": "line_x2", "title": "تغيير الخط لانهاء خ تنسيق"}, -{"id": "line_y1", "title": "تغيير الخط لبدء تنسيق ذ"}, -{"id": "line_y2", "title": "تغيير الخط لإنهاء تنسيق ذ"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "الصفحة"}, -{"id": "palette", "title": "انقر لتغيير لون التعبئة ، تحولا مزدوجا فوق لتغيير لون السكتة الدماغية"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "تغيير المستطيل الارتفاع"}, -{"id": "rect_width_tool", "title": "تغيير عرض المستطيل"}, -{"id": "relativeToLabel", "textContent": "بالنسبة إلى:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "حدد سلفا:"}, -{"id": "selected_objects", "textContent": "انتخب الأجسام"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "أصغر كائن"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "تغير لون السكتة الدماغية"}, -{"id": "stroke_style", "title": "تغيير نمط السكتة الدماغية اندفاعة"}, -{"id": "stroke_width", "title": "تغيير عرض السكتة الدماغية"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "ارتفاع:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "عرض:"}, -{"id": "text", "title": "تغيير محتويات النص"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "محاذاة القاع"}, -{"id": "tool_aligncenter", "title": "مركز محاذاة"}, -{"id": "tool_alignleft", "title": "محاذاة إلى اليسار"}, -{"id": "tool_alignmiddle", "title": "محاذاة الأوسط"}, -{"id": "tool_alignright", "title": "محاذاة إلى اليمين"}, -{"id": "tool_aligntop", "title": "محاذاة الأعلى"}, -{"id": "tool_angle", "title": "تغيير زاوية الدوران"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "نص جريء"}, -{"id": "tool_circle", "title": "دائرة"}, -{"id": "tool_clear", "textContent": "صورة جديدة"}, -{"id": "tool_clone", "title": "استنساخ عنصر"}, -{"id": "tool_clone_multi", "title": "استنساخ الأركان"}, -{"id": "tool_delete", "title": "حذف عنصر"}, -{"id": "tool_delete_multi", "title": "حذف عناصر مختارة"}, -{"id": "tool_docprops", "textContent": "خصائص المستند"}, -{"id": "tool_docprops_cancel", "textContent": "إلغاء"}, -{"id": "tool_docprops_save", "textContent": "حفظ"}, -{"id": "tool_ellipse", "title": "القطع الناقص"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "اليد الحرة البيضوي"}, -{"id": "tool_fhpath", "title": "أداة قلم رصاص"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "تغيير حجم الخط"}, -{"id": "tool_group", "title": "مجموعة عناصر"}, -{"id": "tool_image", "title": "الصورة أداة"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "مائل نص"}, -{"id": "tool_line", "title": "خط أداة"}, -{"id": "tool_move_bottom", "title": "الانتقال إلى أسفل"}, -{"id": "tool_move_top", "title": "الانتقال إلى أعلى"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "تغيير مختارة غموض البند"}, -{"id": "tool_open", "textContent": "فتح الصورة"}, -{"id": "tool_path", "title": "بولي أداة"}, -{"id": "tool_rect", "title": "المستطيل"}, -{"id": "tool_redo", "title": "إعادته"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "حفظ صورة"}, -{"id": "tool_select", "title": "اختر أداة"}, -{"id": "tool_source", "title": "عدل المصدر"}, -{"id": "tool_source_cancel", "textContent": "إلغاء"}, -{"id": "tool_source_save", "textContent": "حفظ"}, -{"id": "tool_square", "title": "ميدان"}, -{"id": "tool_text", "title": "النص أداة"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "التراجع"}, -{"id": "tool_ungroup", "title": "فك تجميع عناصر"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "أداة تكبير"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "تغيير مستوى التكبير"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.az.js b/files_svgedit/js/locale/lang.az.js deleted file mode 100644 index 28f63a64d..000000000 --- a/files_svgedit/js/locale/lang.az.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Align relative to ..."}, -{"id": "bkgnd_color", "title": "Change background color/opacity"}, -{"id": "circle_cx", "title": "Change circle's cx coordinate"}, -{"id": "circle_cy", "title": "Change circle's cy coordinate"}, -{"id": "circle_r", "title": "Change circle's radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Change Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Change ellipse's cx coordinate"}, -{"id": "ellipse_cy", "title": "Change ellipse's cy coordinate"}, -{"id": "ellipse_rx", "title": "Change ellipse's x radius"}, -{"id": "ellipse_ry", "title": "Change ellipse's y radius"}, -{"id": "fill_color", "title": "Change fill color"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit to all content"}, -{"id": "fit_to_canvas", "textContent": "Fit to canvas"}, -{"id": "fit_to_layer_content", "textContent": "Fit to layer content"}, -{"id": "fit_to_sel", "textContent": "Fit to selection"}, -{"id": "font_family", "title": "Change Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Change image height"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Change image width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "largest object"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Change line's starting x coordinate"}, -{"id": "line_x2", "title": "Change line's ending x coordinate"}, -{"id": "line_y1", "title": "Change line's starting y coordinate"}, -{"id": "line_y2", "title": "Change line's ending y coordinate"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "page"}, -{"id": "palette", "title": "Click to change fill color, shift-click to change stroke color"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Change rectangle height"}, -{"id": "rect_width_tool", "title": "Change rectangle width"}, -{"id": "relativeToLabel", "textContent": "relative to:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select predefined:"}, -{"id": "selected_objects", "textContent": "selected objects"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "smallest object"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change stroke color"}, -{"id": "stroke_style", "title": "Change stroke dash style"}, -{"id": "stroke_width", "title": "Change stroke width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Height:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Width:"}, -{"id": "text", "title": "Change text contents"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Align Center"}, -{"id": "tool_alignleft", "title": "Align Left"}, -{"id": "tool_alignmiddle", "title": "Align Middle"}, -{"id": "tool_alignright", "title": "Align Right"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Change rotation angle"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Delete Element"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Cancel"}, -{"id": "tool_docprops_save", "textContent": "OK"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Change Font Size"}, -{"id": "tool_group", "title": "Group Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Change selected item opacity"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Cancel"}, -{"id": "tool_source_save", "textContent": "Apply Changes"}, -{"id": "tool_square", "title": "Square"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Change zoom level"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.be.js b/files_svgedit/js/locale/lang.be.js deleted file mode 100644 index a399f996d..000000000 --- a/files_svgedit/js/locale/lang.be.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Выраўнаваць па дачыненні да ..."}, -{"id": "bkgnd_color", "title": "Змяненне колеру фону / непразрыстасць"}, -{"id": "circle_cx", "title": "CX змене круга каардынаты"}, -{"id": "circle_cy", "title": "Змены гуртка CY каардынаты"}, -{"id": "circle_r", "title": "Старонка круга's радыус"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Змены прастакутнік Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Змены эліпса CX каардынаты"}, -{"id": "ellipse_cy", "title": "Змены эліпса CY каардынаты"}, -{"id": "ellipse_rx", "title": "Х змяненні эліпса радыюсам"}, -{"id": "ellipse_ry", "title": "Змены у эліпса радыюсам"}, -{"id": "fill_color", "title": "Змяненне колеру залівання"}, -{"id": "fitToContent", "textContent": "Па памеры ўтрымання"}, -{"id": "fit_to_all", "textContent": "Па памеру ўсе змесціва"}, -{"id": "fit_to_canvas", "textContent": "Памер палатна"}, -{"id": "fit_to_layer_content", "textContent": "По размеру слой ўтрымання"}, -{"id": "fit_to_sel", "textContent": "Выбар памеру"}, -{"id": "font_family", "title": "Змены Сямейства шрыфтоў"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Змена вышыні выявы"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Змяніць URL"}, -{"id": "image_width", "title": "Змены шырыня выявы"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "найбуйнейшы аб'ект"}, -{"id": "layer_delete", "title": "Выдаліць слой"}, -{"id": "layer_down", "title": "Перамясціць слой на"}, -{"id": "layer_new", "title": "Новы слой"}, -{"id": "layer_rename", "title": "Перайменаваць Слой"}, -{"id": "layer_up", "title": "Перамяшчэнне слоя да"}, -{"id": "layersLabel", "textContent": "Слаі:"}, -{"id": "line_x1", "title": "Змены лінія пачынае каардынаты х"}, -{"id": "line_x2", "title": "Змяненне за перыяд, скончыўся лінія каардынаты х"}, -{"id": "line_y1", "title": "Змены лінія пачынае Y каардынаты"}, -{"id": "line_y2", "title": "Змяненне за перыяд, скончыўся лінія Y каардынаты"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "старонка"}, -{"id": "palette", "title": "Націсніце для змены колеру залівання, Shift-Click змяніць обводка"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Змены прастакутнік вышынёй"}, -{"id": "rect_width_tool", "title": "Змяненне шырыні прамавугольніка"}, -{"id": "relativeToLabel", "textContent": "па параўнанні з:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Выберыце прадвызначэньні:"}, -{"id": "selected_objects", "textContent": "выбранымі аб'ектамі"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "маленькі аб'ект"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Змяненне колеру інсульт"}, -{"id": "stroke_style", "title": "Змяненне стылю інсульт працяжнік"}, -{"id": "stroke_width", "title": "Змены шырыня штрых"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Вышыня:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Шырыня:"}, -{"id": "text", "title": "Змяненне зместу тэксту"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Лінаваць па ніжнім краю"}, -{"id": "tool_aligncenter", "title": "Лінаваць па цэнтру"}, -{"id": "tool_alignleft", "title": "Па левым краю"}, -{"id": "tool_alignmiddle", "title": "Выраўнаваць Блізкага"}, -{"id": "tool_alignright", "title": "Па правым краю"}, -{"id": "tool_aligntop", "title": "Лінаваць па верхнім краю"}, -{"id": "tool_angle", "title": "Змены вугла павароту"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Тоўсты тэкст"}, -{"id": "tool_circle", "title": "Круг"}, -{"id": "tool_clear", "textContent": "Новае выява"}, -{"id": "tool_clone", "title": "Клон элемента"}, -{"id": "tool_clone_multi", "title": "Клон Элементы"}, -{"id": "tool_delete", "title": "Выдаліць элемент"}, -{"id": "tool_delete_multi", "title": "Выдаліць выбраныя элементы"}, -{"id": "tool_docprops", "textContent": "Уласцівасці дакумента"}, -{"id": "tool_docprops_cancel", "textContent": "Адмена"}, -{"id": "tool_docprops_save", "textContent": "Захаваць"}, -{"id": "tool_ellipse", "title": "Эліпс"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Свабоднай рукі Эліпс"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Свабоднай рукі Прастакутнік"}, -{"id": "tool_font_size", "title": "Змяніць памер шрыфта"}, -{"id": "tool_group", "title": "Група элементаў"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Нахілены тэкст"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Перамясціць уніз"}, -{"id": "tool_move_top", "title": "Перамясціць угару"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Старонка абранага пункта непразрыстасці"}, -{"id": "tool_open", "textContent": "Адкрыць выява"}, -{"id": "tool_path", "title": "Poly Tool"}, -{"id": "tool_rect", "title": "Прамавугольнік"}, -{"id": "tool_redo", "title": "Паўтор"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Захаваць малюнак"}, -{"id": "tool_select", "title": "Выберыце інструмент"}, -{"id": "tool_source", "title": "Змяніць зыходны"}, -{"id": "tool_source_cancel", "textContent": "Адмена"}, -{"id": "tool_source_save", "textContent": "Захаваць"}, -{"id": "tool_square", "title": "Плошча"}, -{"id": "tool_text", "title": "Тэкст Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Адмяніць"}, -{"id": "tool_ungroup", "title": "Элементы Разгруппировать"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Змяненне маштабу"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.bg.js b/files_svgedit/js/locale/lang.bg.js deleted file mode 100644 index 3ee57a99a..000000000 --- a/files_svgedit/js/locale/lang.bg.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Привеждане в сравнение с ..."}, -{"id": "bkgnd_color", "title": "Промяна на цвета на фона / непрозрачност"}, -{"id": "circle_cx", "title": "CX Промяна кръг на координатната"}, -{"id": "circle_cy", "title": "Промяна кръг's CY координира"}, -{"id": "circle_r", "title": "Промяна кръг радиус"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Промяна на правоъгълник Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Промяна на елипса's CX координира"}, -{"id": "ellipse_cy", "title": "Промяна на елипса's CY координира"}, -{"id": "ellipse_rx", "title": "Промяна на елипса's X радиус"}, -{"id": "ellipse_ry", "title": "Промяна на елипса's Y радиус"}, -{"id": "fill_color", "title": "Промяна попълнете цвят"}, -{"id": "fitToContent", "textContent": "Fit към съдържание"}, -{"id": "fit_to_all", "textContent": "Побери цялото съдържание"}, -{"id": "fit_to_canvas", "textContent": "Fit на платно"}, -{"id": "fit_to_layer_content", "textContent": "Fit да слой съдържание"}, -{"id": "fit_to_sel", "textContent": "Fit за подбор"}, -{"id": "font_family", "title": "Промяна на шрифта Семейство"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Промяна на изображението височина"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Промяна на URL"}, -{"id": "image_width", "title": "Промяна на изображението ширина"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "най-големият обект"}, -{"id": "layer_delete", "title": "Изтриване на слой"}, -{"id": "layer_down", "title": "Move слой надолу"}, -{"id": "layer_new", "title": "Нов слой"}, -{"id": "layer_rename", "title": "Преименуване Layer"}, -{"id": "layer_up", "title": "Move Up Layer"}, -{"id": "layersLabel", "textContent": "Слоевете:"}, -{"id": "line_x1", "title": "Промяна на линия, започваща х координира"}, -{"id": "line_x2", "title": "Промяна на линията приключва х координира"}, -{"id": "line_y1", "title": "Промяна линия, започваща Y координира"}, -{"id": "line_y2", "title": "Промяна на линията приключва Y координира"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "страница"}, -{"id": "palette", "title": "Кликнете, за да промени попълнете цвят, на смени, кликнете да променят цвета си удар"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Промяна на правоъгълник височина"}, -{"id": "rect_width_tool", "title": "Промяна на правоъгълник ширина"}, -{"id": "relativeToLabel", "textContent": "в сравнение с:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Изберете предварително:"}, -{"id": "selected_objects", "textContent": "избраните обекти"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "най-малката обект"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Промяна на инсулт цвят"}, -{"id": "stroke_style", "title": "Промяна на стила удар тире"}, -{"id": "stroke_width", "title": "Промяна на ширината инсулт"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Височина:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Ширина:"}, -{"id": "text", "title": "Промяна на текст съдържание"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Привеждане Отдолу"}, -{"id": "tool_aligncenter", "title": "Подравняване в средата"}, -{"id": "tool_alignleft", "title": "Подравняване вляво"}, -{"id": "tool_alignmiddle", "title": "Привеждане в Близкия"}, -{"id": "tool_alignright", "title": "Подравняване надясно"}, -{"id": "tool_aligntop", "title": "Привеждане Топ"}, -{"id": "tool_angle", "title": "Промяна ъгъл на завъртане"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Получер текст"}, -{"id": "tool_circle", "title": "Кръгът"}, -{"id": "tool_clear", "textContent": "Ню Имидж"}, -{"id": "tool_clone", "title": "Clone Елемент"}, -{"id": "tool_clone_multi", "title": "Clone Елементи"}, -{"id": "tool_delete", "title": "Изтриване на елемент"}, -{"id": "tool_delete_multi", "title": "Изтриване на избрани елементи"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Отказ"}, -{"id": "tool_docprops_save", "textContent": "Спасявам"}, -{"id": "tool_ellipse", "title": "Елипса"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Свободен Употребявани Елипса"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Свободен Употребявани правоъгълник"}, -{"id": "tool_font_size", "title": "Промени размера на буквите"}, -{"id": "tool_group", "title": "Група Елементи"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Курсив текст"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Премести надолу"}, -{"id": "tool_move_top", "title": "Премести в началото"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Промяна на избрания елемент непрозрачност"}, -{"id": "tool_open", "textContent": "Отворете изображението"}, -{"id": "tool_path", "title": "Поли Tool"}, -{"id": "tool_rect", "title": "Правоъгълник"}, -{"id": "tool_redo", "title": "Възстановяване"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Редактиране Източник"}, -{"id": "tool_source_cancel", "textContent": "Отказ"}, -{"id": "tool_source_save", "textContent": "Спасявам"}, -{"id": "tool_square", "title": "Квадрат"}, -{"id": "tool_text", "title": "Текст Оръдие"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Отмени"}, -{"id": "tool_ungroup", "title": "Разгрупирай Елементи"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Промяна на ниво на мащабиране"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ca.js b/files_svgedit/js/locale/lang.ca.js deleted file mode 100644 index e2dd954b9..000000000 --- a/files_svgedit/js/locale/lang.ca.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Alinear pel que fa a ..."}, -{"id": "bkgnd_color", "title": "Color de fons / opacitat"}, -{"id": "circle_cx", "title": "CX cercle Canvi de coordenades"}, -{"id": "circle_cy", "title": "Cercle Canvi CY coordinar"}, -{"id": "circle_r", "title": "Ràdio de cercle Canvi"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Canviar Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Canviar lipse CX coordinar"}, -{"id": "ellipse_cy", "title": "Lipse Canvi CY coordinar"}, -{"id": "ellipse_rx", "title": "Ràdio x lipse Canvi"}, -{"id": "ellipse_ry", "title": "Ràdio i lipse Canvi"}, -{"id": "fill_color", "title": "Canviar el color de farciment"}, -{"id": "fitToContent", "textContent": "Ajustar al contingut"}, -{"id": "fit_to_all", "textContent": "Ajustar a tot el contingut"}, -{"id": "fit_to_canvas", "textContent": "Ajustar a la lona"}, -{"id": "fit_to_layer_content", "textContent": "Ajustar al contingut de la capa d'"}, -{"id": "fit_to_sel", "textContent": "Ajustar a la selecció"}, -{"id": "font_family", "title": "Canviar la font Família"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Canviar l'altura de la imatge"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Canviar URL"}, -{"id": "image_width", "title": "Amplada de la imatge Canvi"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "objecte més gran"}, -{"id": "layer_delete", "title": "Eliminar capa"}, -{"id": "layer_down", "title": "Mou la capa de Down"}, -{"id": "layer_new", "title": "Nova capa"}, -{"id": "layer_rename", "title": "Canvieu el nom de la capa"}, -{"id": "layer_up", "title": "Mou la capa Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Canviar la línia de partida de la coordenada x"}, -{"id": "line_x2", "title": "Canviar la línia d'hores de coordenada x"}, -{"id": "line_y1", "title": "Canviar la línia de partida i de coordinar"}, -{"id": "line_y2", "title": "Canviar la línia d'hores de coordenada"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Pàgina"}, -{"id": "palette", "title": "Feu clic per canviar el color de farciment, shift-clic per canviar el color del traç"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Rectangle d'alçada Canvi"}, -{"id": "rect_width_tool", "title": "Ample rectangle Canvi"}, -{"id": "relativeToLabel", "textContent": "en relació amb:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Seleccioneu predefinides:"}, -{"id": "selected_objects", "textContent": "objectes escollits"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "objecte més petit"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Canviar el color del traç"}, -{"id": "stroke_style", "title": "Canviar estil de traç guió"}, -{"id": "stroke_width", "title": "Canviar l'amplada del traç"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Alçada:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Amplada:"}, -{"id": "text", "title": "Contingut del text"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Alinear baix"}, -{"id": "tool_aligncenter", "title": "Alinear al centre"}, -{"id": "tool_alignleft", "title": "Alinear a l'esquerra"}, -{"id": "tool_alignmiddle", "title": "Alinear Medi"}, -{"id": "tool_alignright", "title": "Alinear a la dreta"}, -{"id": "tool_aligntop", "title": "Alinear a dalt"}, -{"id": "tool_angle", "title": "Canviar l'angle de rotació"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Text en negreta"}, -{"id": "tool_circle", "title": "Cercle"}, -{"id": "tool_clear", "textContent": "Nova imatge"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Elements Clone"}, -{"id": "tool_delete", "title": "Eliminar element"}, -{"id": "tool_delete_multi", "title": "Elimina els elements seleccionats"}, -{"id": "tool_docprops", "textContent": "Propietats del document"}, -{"id": "tool_docprops_cancel", "textContent": "Cancel"}, -{"id": "tool_docprops_save", "textContent": "Salvar"}, -{"id": "tool_ellipse", "title": "Lipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Eina Llapis"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Change Font Size"}, -{"id": "tool_group", "title": "Elements de Grup de"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Text en cursiva"}, -{"id": "tool_line", "title": "L'eina"}, -{"id": "tool_move_bottom", "title": "Mou al final"}, -{"id": "tool_move_top", "title": "Mou al principi"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Canviar la opacitat tema seleccionat"}, -{"id": "tool_open", "textContent": "Obrir imatge"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Refer"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Guardar imatge"}, -{"id": "tool_select", "title": "Eina de selecció"}, -{"id": "tool_source", "title": "Font Edita"}, -{"id": "tool_source_cancel", "textContent": "Cancel"}, -{"id": "tool_source_save", "textContent": "Salvar"}, -{"id": "tool_square", "title": "Quadrat"}, -{"id": "tool_text", "title": "Eina de text"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Desfés"}, -{"id": "tool_ungroup", "title": "Desagrupar elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Canviar el nivell de zoom"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.cs.js b/files_svgedit/js/locale/lang.cs.js deleted file mode 100644 index 8b4cbfae7..000000000 --- a/files_svgedit/js/locale/lang.cs.js +++ /dev/null @@ -1,176 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Zarovnat relativně"}, -{"id": "bkgnd_color", "title": "Změnit barvu a průhlednost pozadí"}, -{"id": "circle_cx", "title": "Změnit souřadnici X středu kružnice"}, -{"id": "circle_cy", "title": "Změnit souřadnici Y středu kružnice"}, -{"id": "circle_r", "title": "Změnit poloměr kružnice"}, -{"id": "connector_no_arrow", "textContent": "Bez šipky"}, -{"id": "copyrightLabel", "textContent": "Běží na"}, -{"id": "cornerRadiusLabel", "title": "Změnit zaoblení obdélníku"}, -{"id": "curve_segments", "textContent": "křivka"}, -{"id": "ellipse_cx", "title": "Změnit souřadnici X středu elipsy"}, -{"id": "ellipse_cy", "title": "Změnit souřadnici Y středu elipsy"}, -{"id": "ellipse_rx", "title": "Změnit poloměr X elipsy"}, -{"id": "ellipse_ry", "title": "Změnit poloměr Y elipsy"}, -{"id": "fill_color", "title": "Změnit barvu výplně"}, -{"id": "fitToContent", "textContent": "přizpůsobit obsahu"}, -{"id": "fit_to_all", "textContent": "Přizpůsobit veškerému obsahu"}, -{"id": "fit_to_canvas", "textContent": "Přizpůsobit stránce"}, -{"id": "fit_to_layer_content", "textContent": "Přizpůsobit obsahu vrstvy"}, -{"id": "fit_to_sel", "textContent": "Přizpůsobit výběru"}, -{"id": "font_family", "title": "Změnit font"}, -{"id": "icon_large", "textContent": "velké"}, -{"id": "icon_medium", "textContent": "střední"}, -{"id": "icon_small", "textContent": "malé"}, -{"id": "icon_xlarge", "textContent": "největší"}, -{"id": "idLabel", "title": "Změnit ID elementu"}, -{"id": "image_height", "title": "Změnit výšku dokumentu"}, -{"id": "image_opt_embed", "textContent": "Vkládat do dokumentu"}, -{"id": "image_opt_ref", "textContent": "Jen odkazem"}, -{"id": "image_url", "title": "Změnit adresu URL"}, -{"id": "image_width", "title": "Změnit šířku dokumentu"}, -{"id": "includedImages", "textContent": "Vložené obrázky"}, -{"id": "largest_object", "textContent": "největšímu objektu"}, -{"id": "layer_delete", "title": "Odstranit vrstvu"}, -{"id": "layer_down", "title": "Přesunout vrstvu níž"}, -{"id": "layer_new", "title": "Přidat vrstvu"}, -{"id": "layer_rename", "title": "Přejmenovat vrstvu"}, -{"id": "layer_up", "title": "Přesunout vrstvu výš"}, -{"id": "layersLabel", "textContent": "vrstvy:"}, -{"id": "line_x1", "title": "Změnit počáteční souřadnici X úsečky"}, -{"id": "line_x2", "title": "Změnit koncovou souřadnici X úsečky"}, -{"id": "line_y1", "title": "Změnit počáteční souřadnici Y úsečky"}, -{"id": "line_y2", "title": "Změnit koncovou souřadnici X úsečky"}, -{"id": "linecap_butt", "title": "Konec úsečky: přesný"}, -{"id": "linecap_round", "title": "Konec úsečky: zaoblený"}, -{"id": "linecap_square", "title": "Konec úsečky: s čtvercovým přesahem"}, -{"id": "linejoin_bevel", "title": "Styl napojení úseček: zkosené"}, -{"id": "linejoin_miter", "title": "Styl napojení úseček: ostré"}, -{"id": "linejoin_round", "title": "Styl napojení úseček: oblé"}, -{"id": "main_icon", "title": "Hlavní menu"}, -{"id": "mode_connect", "title": "Spojit dva objekty"}, -{"id": "page", "textContent": "stránce"}, -{"id": "palette", "title": "Kliknutím změníte barvu výplně, kliknutím současně s klávesou shift změníte barvu čáry"}, -{"id": "path_node_x", "title": "Změnit souřadnici X uzlu"}, -{"id": "path_node_y", "title": "Změnit souřadnici Y uzlu"}, -{"id": "rect_height_tool", "title": "Změnit výšku obdélníku"}, -{"id": "rect_width_tool", "title": "Změnit šířku obdélníku"}, -{"id": "relativeToLabel", "textContent": "relatativně k:"}, -{"id": "seg_type", "title": "Změnit typ segmentu"}, -{"id": "selLayerLabel", "textContent": "Přesunout objekty do:"}, -{"id": "selLayerNames", "title": "Přesunout objekty do jiné vrstvy"}, -{"id": "selectedPredefined", "textContent": "vybrat předdefinovaný:"}, -{"id": "selected_objects", "textContent": "zvoleným objektům"}, -{"id": "selected_x", "title": "Změnit souřadnici X"}, -{"id": "selected_y", "title": "Změnit souřadnici Y"}, -{"id": "smallest_object", "textContent": "nejmenšímu objektu"}, -{"id": "straight_segments", "textContent": "úsečka"}, -{"id": "stroke_color", "title": "Změnit barvu čáry"}, -{"id": "stroke_style", "title": "Změnit styl čáry"}, -{"id": "stroke_width", "title": "Změnit šířku čáry"}, -{"id": "svginfo_bg_note", "textContent": "Pozor: obrázek v pozadí nebude uložen jako součást dokumentu."}, -{"id": "svginfo_change_background", "textContent": "Obrázek v pozadí editoru"}, -{"id": "svginfo_dim", "textContent": "Vlastní velikost"}, -{"id": "svginfo_editor_prefs", "textContent": "Nastavení editoru"}, -{"id": "svginfo_height", "textContent": "výška:"}, -{"id": "svginfo_icons", "textContent": "Velikost ikon"}, -{"id": "svginfo_image_props", "textContent": "Vlastnosti dokumentu"}, -{"id": "svginfo_lang", "textContent": "Jazyk"}, -{"id": "svginfo_title", "textContent": "Název"}, -{"id": "svginfo_width", "textContent": "šířka:"}, -{"id": "text", "title": "Změnit text"}, -{"id": "toggle_stroke_tools", "title": "Zobrazit/schovat více možností"}, -{"id": "tool_add_subpath", "title": "Přidat další součást křivky"}, -{"id": "tool_alignbottom", "title": "Zarovnat dolů"}, -{"id": "tool_aligncenter", "title": "Zarovnat nastřed"}, -{"id": "tool_alignleft", "title": "Zarovnat doleva"}, -{"id": "tool_alignmiddle", "title": "Zarovnat nastřed"}, -{"id": "tool_alignright", "title": "Zarovnat doprava"}, -{"id": "tool_aligntop", "title": "Zarovnat nahoru"}, -{"id": "tool_angle", "title": "Změnit úhel natočení"}, -{"id": "tool_blur", "title": "Změnit rozostření"}, -{"id": "tool_bold", "title": "Tučně"}, -{"id": "tool_circle", "title": "Kružnice"}, -{"id": "tool_clear", "textContent": "Nový dokument"}, -{"id": "tool_clone", "title": "Duplikovat"}, -{"id": "tool_clone_multi", "title": "Duplikovat objekty"}, -{"id": "tool_delete", "title": "Odstranit"}, -{"id": "tool_delete_multi", "title": "Odstranit objekty"}, -{"id": "tool_docprops", "textContent": "Vlastnosti dokumentu"}, -{"id": "tool_docprops_cancel", "textContent": "Storno"}, -{"id": "tool_docprops_save", "textContent": "Uložit"}, -{"id": "tool_ellipse", "title": "Elipsa"}, -{"id": "tool_export", "textContent": "Exportovat jako PNG"}, -{"id": "tool_eyedropper", "title": "Kapátko"}, -{"id": "tool_fhellipse", "title": "Elipsa volnou rukou"}, -{"id": "tool_fhpath", "title": "Kresba od ruky"}, -{"id": "tool_fhrect", "title": "Obdélník volnou rukou"}, -{"id": "tool_font_size", "title": "Změnit velikost písma"}, -{"id": "tool_group", "title": "Seskupit objekty"}, -{"id": "tool_image", "title": "Obrázek"}, -{"id": "tool_import", "textContent": "Importovat SVG"}, -{"id": "tool_italic", "title": "Kurzíva"}, -{"id": "tool_line", "title": "Úsečka"}, -{"id": "tool_move_bottom", "title": "Vrstvu úplně dospodu"}, -{"id": "tool_move_top", "title": "Vrstvu úplně nahoru"}, -{"id": "tool_node_clone", "title": "Vložit nový uzel"}, -{"id": "tool_node_delete", "title": "Ostranit uzel"}, -{"id": "tool_node_link", "title": "Provázat ovládací body uzlu"}, -{"id": "tool_opacity", "title": "Změnit průhlednost objektů"}, -{"id": "tool_open", "textContent": "Otevřít dokument"}, -{"id": "tool_openclose_path", "title": "Otevřít/zavřít součást křivky"}, -{"id": "tool_path", "title": "Křivka"}, -{"id": "tool_position", "title": "Zarovnat element na stránku"}, -{"id": "tool_rect", "title": "Obdélník"}, -{"id": "tool_redo", "title": "Znovu"}, -{"id": "tool_reorient", "title": "Změna orientace křivky"}, -{"id": "tool_save", "textContent": "Uložit dokument"}, -{"id": "tool_select", "title": "Výběr a transformace objektů"}, -{"id": "tool_source", "title": "Upravovat SVG kód"}, -{"id": "tool_source_cancel", "textContent": "Storno"}, -{"id": "tool_source_save", "textContent": "Uložit"}, -{"id": "tool_square", "title": "Čtverec"}, -{"id": "tool_text", "title": "Text"}, -{"id": "tool_topath", "title": "Objekt na křivku"}, -{"id": "tool_undo", "title": "Zpět"}, -{"id": "tool_ungroup", "title": "Zrušit seskupení"}, -{"id": "tool_wireframe", "title": "Zobrazit jen kostru"}, -{"id": "tool_zoom", "title": "Přiblížení"}, -{"id": "url_notice", "title": "POZOR: Obrázek nelze uložit s dokumentem. Bude zobrazován z adresáře, kde se nyní nachází."}, -{"id": "zoom_panel", "title": "Změna přiblížení"}, -{"id": "sidepanel_handle", "textContent": "V r s t v y", "title": "Táhnutím změnit velikost"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Chyba v parsování zdrojového kódu SVG.\nChcete se vrátit k původnímu?", - "QignoreSourceChanges": "Opravdu chcete stornovat změny provedené v SVG kódu?", - "QmoveElemsToLayer": "Opravdu chcete přesunout vybrané objekty do vrstvy '%s'?", - "QwantToClear": "Opravdu chcete smazat současný dokument?\nHistorie změn bude také smazána.", - "cancel": "Storno", - "defsFailOnSave": "POZOR: Kvůli nedokonalosti Vašeho prohlížeče se mohou některé části dokumentu špatně vykreslovat (mohou chybět barevné přechody nebo některé objekty). Po uložení dokumentu by se ale vše mělo zobrazovat správně.", - "dupeLayerName": "Taková vrstva už bohužel existuje", - "enterNewImgURL": "Vložte adresu URL, na které se nachází vkládaný obrázek", - "enterNewLayerName": "Zadejte prosím jméno pro novou vrstvu", - "enterUniqueLayerName": "Zadejte prosím jedinečné jméno pro vrstvu", - "exportNoBlur": "bez rozostření elementů", - "exportNoDashArray": "plné tahy", - "exportNoImage": "bez vložených obrázků", - "exportNoText": "vložený text může vypadat jinak", - "exportNoforeignObject": "bez foreignObject objektů", - "featNotSupported": "Tato vlastnost ještě není k dispozici", - "invalidAttrValGiven": "Nevhodná hodnota", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "šipka dolů", - "key_up": "šipka nahoru", - "layer": "Vrstva", - "layerHasThatName": "Vrstva už se tak jmenuje", - "loadingImage": "Nahrávám obrázek ...", - "noContentToFitTo": "Vyberte oblast pro přizpůsobení", - "noteTheseIssues": "Mohou se vyskytnout následující problémy: ", - "ok": "OK", - "pathCtrlPtTooltip": "Táhnutím ovládacího bodu myší tvarujete křivku.", - "pathNodeTooltip": "Táhnutím myši uzel přesunete. Dvojklik mění typ segmentu.", - "saveFromBrowser": "Použijte nabídku \"Uložit stránku jako ...\" ve Vašem prohlížeči pro uložení dokumentu do souboru %s." - } -} -] diff --git a/files_svgedit/js/locale/lang.cy.js b/files_svgedit/js/locale/lang.cy.js deleted file mode 100644 index d3e62ae28..000000000 --- a/files_svgedit/js/locale/lang.cy.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Alinio perthynas i ..."}, -{"id": "bkgnd_color", "title": "Newid lliw cefndir / Didreiddiad"}, -{"id": "circle_cx", "title": "CX Newid cylch yn cydlynu"}, -{"id": "circle_cy", "title": "Newid cylch's cy gydgysylltu"}, -{"id": "circle_r", "title": "Newid radiws cylch yn"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Newid Hirsgwâr Corner Radiws"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Newid Ellipse yn CX gydgysylltu"}, -{"id": "ellipse_cy", "title": "Newid Ellipse yn cydlynu cy"}, -{"id": "ellipse_rx", "title": "Radiws Newid Ellipse's x"}, -{"id": "ellipse_ry", "title": "Radiws Newid Ellipse yn y"}, -{"id": "fill_color", "title": "Newid lliw llenwi"}, -{"id": "fitToContent", "textContent": "Ffit i Cynnwys"}, -{"id": "fit_to_all", "textContent": "Yn addas i bawb content"}, -{"id": "fit_to_canvas", "textContent": "Ffit i ofyn"}, -{"id": "fit_to_layer_content", "textContent": "Ffit cynnwys haen i"}, -{"id": "fit_to_sel", "textContent": "Yn addas at ddewis"}, -{"id": "font_family", "title": "Newid Font Teulu"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Uchder delwedd Newid"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Newid URL"}, -{"id": "image_width", "title": "Lled delwedd Newid"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "gwrthrych mwyaf"}, -{"id": "layer_delete", "title": "Dileu Haen"}, -{"id": "layer_down", "title": "Symud Haen i Lawr"}, -{"id": "layer_new", "title": "Haen Newydd"}, -{"id": "layer_rename", "title": "Ail-enwi Haen"}, -{"id": "layer_up", "title": "Symud Haen Up"}, -{"id": "layersLable", "textContent": "Haen:"}, -{"id": "line_x1", "title": "Newid llinell yn cychwyn x gydgysylltu"}, -{"id": "line_x2", "title": "Newid llinell yn diweddu x gydgysylltu"}, -{"id": "line_y1", "title": "Newid llinell ar y cychwyn yn cydlynu"}, -{"id": "line_y2", "title": "Newid llinell yn dod i ben y gydgysylltu"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "tudalen"}, -{"id": "palette", "title": "Cliciwch yma i lenwi newid lliw, sifft-cliciwch i newid lliw strôc"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Uchder petryal Newid"}, -{"id": "rect_width_tool", "title": "Lled petryal Newid"}, -{"id": "relativeToLabel", "textContent": "cymharol i:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Rhagosodol Dewis:"}, -{"id": "selected_objects", "textContent": "gwrthrychau etholedig"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "lleiaf gwrthrych"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Newid lliw strôc"}, -{"id": "stroke_style", "title": "Newid arddull strôc diferyn"}, -{"id": "stroke_width", "title": "Lled strôc Newid"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Uchder:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Lled:"}, -{"id": "text", "title": "Cynnwys testun Newid"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Alinio Gwaelod"}, -{"id": "tool_aligncenter", "title": "Alinio Center"}, -{"id": "tool_alignleft", "title": "Alinio Chwith"}, -{"id": "tool_alignmiddle", "title": "Alinio Canol"}, -{"id": "tool_alignright", "title": "Alinio Hawl"}, -{"id": "tool_aligntop", "title": "Alinio Top"}, -{"id": "tool_angle", "title": "Ongl cylchdro Newid"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Testun Bras"}, -{"id": "tool_circle", "title": "Cylch"}, -{"id": "tool_clear", "textContent": "Newydd Delwedd"}, -{"id": "tool_clone", "title": "Clone Elfen"}, -{"id": "tool_clone_multi", "title": "Elfennau Clone "}, -{"id": "tool_delete", "title": "Dileu Elfen"}, -{"id": "tool_delete_multi", "title": "Elfennau Selected Dileu"}, -{"id": "tool_docprops", "textContent": "Document Eiddo"}, -{"id": "tool_docprops_cancel", "textContent": "Canslo"}, -{"id": "tool_docprops_save", "textContent": "Cadw"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Rhad ac am ddim Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Teclyn pensil"}, -{"id": "tool_fhrect", "title": "Hand rhad ac am ddim Hirsgwâr"}, -{"id": "tool_font_size", "title": "Newid Maint Ffont"}, -{"id": "tool_group", "title": "Elfennau Grŵp"}, -{"id": "tool_image", "title": "Offer Delwedd"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italig Testun"}, -{"id": "tool_line", "title": "Llinell Offer"}, -{"id": "tool_move_bottom", "title": "Symud i'r Gwaelod"}, -{"id": "tool_move_top", "title": "Symud i'r Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Newid dewis Didreiddiad eitem"}, -{"id": "tool_open", "textContent": "Delwedd Agored"}, -{"id": "tool_path", "title": "Offer poly"}, -{"id": "tool_rect", "title": "Petryal"}, -{"id": "tool_redo", "title": "Ail-wneud"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Cadw Delwedd"}, -{"id": "tool_select", "title": "Dewiswch Offer"}, -{"id": "tool_source", "title": "Golygu Ffynhonnell"}, -{"id": "tool_source_cancel", "textContent": "Canslo"}, -{"id": "tool_source_save", "textContent": "Cadw"}, -{"id": "tool_square", "title": "Sgwâr"}, -{"id": "tool_text", "title": "Testun Offer"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Dadwneud"}, -{"id": "tool_ungroup", "title": "Elfennau Ungroup"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Offer Chwyddo"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Newid lefel chwyddo"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.da.js b/files_svgedit/js/locale/lang.da.js deleted file mode 100644 index a081e0b9f..000000000 --- a/files_svgedit/js/locale/lang.da.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Juster i forhold til ..."}, -{"id": "bkgnd_color", "title": "Skift baggrundsfarve / uigennemsigtighed"}, -{"id": "circle_cx", "title": "Skift cirklens cx koordinere"}, -{"id": "circle_cy", "title": "Skift cirklens cy koordinere"}, -{"id": "circle_r", "title": "Skift cirklens radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Skift Rektangel Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Skift ellipse's cx koordinere"}, -{"id": "ellipse_cy", "title": "Skift ellipse's cy koordinere"}, -{"id": "ellipse_rx", "title": "Skift ellipse's x radius"}, -{"id": "ellipse_ry", "title": "Skift ellipse's y radius"}, -{"id": "fill_color", "title": "Skift fyldfarve"}, -{"id": "fitToContent", "textContent": "Tilpas til indhold"}, -{"id": "fit_to_all", "textContent": "Passer til alt indhold"}, -{"id": "fit_to_canvas", "textContent": "Tilpas til lærred"}, -{"id": "fit_to_layer_content", "textContent": "Tilpas til lag indhold"}, -{"id": "fit_to_sel", "textContent": "Tilpas til udvælgelse"}, -{"id": "font_family", "title": "Skift Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Skift billede højde"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Skift webadresse"}, -{"id": "image_width", "title": "Skift billede bredde"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "største objekt"}, -{"id": "layer_delete", "title": "Slet Layer"}, -{"id": "layer_down", "title": "Flyt lag ned"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Omdøb Layer"}, -{"id": "layer_up", "title": "Flyt Layer Up"}, -{"id": "layersLable", "textContent": "Lag:"}, -{"id": "line_x1", "title": "Skift linie's start x-koordinat"}, -{"id": "line_x2", "title": "Skift Line's slutter x-koordinat"}, -{"id": "line_y1", "title": "Skift linjens start y-koordinat"}, -{"id": "line_y2", "title": "Skift Line's slutter y-koordinat"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "side"}, -{"id": "palette", "title": "Klik for at ændre fyldfarve, shift-klik for at ændre stregfarve"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Skift rektangel højde"}, -{"id": "rect_width_tool", "title": "Skift rektanglets bredde"}, -{"id": "relativeToLabel", "textContent": "i forhold til:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Vælg foruddefinerede:"}, -{"id": "selected_objects", "textContent": "valgte objekter"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "mindste objekt"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Skift stregfarve"}, -{"id": "stroke_style", "title": "Skift slagtilfælde Dash stil"}, -{"id": "stroke_width", "title": "Skift slagtilfælde bredde"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Højde:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Bredde:"}, -{"id": "text", "title": "Skift tekst indhold"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Juster Bottom"}, -{"id": "tool_aligncenter", "title": "Centrer"}, -{"id": "tool_alignleft", "title": "Venstrejusteret"}, -{"id": "tool_alignmiddle", "title": "Juster Mellemøsten"}, -{"id": "tool_alignright", "title": "Højrejusteret"}, -{"id": "tool_aligntop", "title": "Juster Top"}, -{"id": "tool_angle", "title": "Skift rotationsvinkel"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Fed tekst"}, -{"id": "tool_circle", "title": "Cirkel"}, -{"id": "tool_clear", "textContent": "Nyt billede"}, -{"id": "tool_clone", "title": "Klon Element"}, -{"id": "tool_clone_multi", "title": "Klon Elements"}, -{"id": "tool_delete", "title": "Slet Element"}, -{"id": "tool_delete_multi", "title": "Slet markerede elementer"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Annuller"}, -{"id": "tool_docprops_save", "textContent": "Gemme"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Rektangel"}, -{"id": "tool_font_size", "title": "Skift skriftstørrelse"}, -{"id": "tool_group", "title": "Gruppe Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Flyt til bund"}, -{"id": "tool_move_top", "title": "Flyt til toppen"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Skift valgte element opacitet"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rektangel"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Gem billede"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Annuller"}, -{"id": "tool_source_save", "textContent": "Gemme"}, -{"id": "tool_square", "title": "Firkant"}, -{"id": "tool_text", "title": "Tekstværktøj"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Fortryd"}, -{"id": "tool_ungroup", "title": "Opdel Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Skift zoomniveau"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.de.js b/files_svgedit/js/locale/lang.de.js deleted file mode 100644 index 7bd961362..000000000 --- a/files_svgedit/js/locale/lang.de.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Relativ zu einem anderem Objekt ausrichten ..."}, -{"id": "bkgnd_color", "title": "Hintergrundfarbe ändern / Opazität"}, -{"id": "circle_cx", "title": "Kreiszentrum (cx) ändern"}, -{"id": "circle_cy", "title": "Kreiszentrum (cy) ändern"}, -{"id": "circle_r", "title": "Kreisradius (r) ändern"}, -{"id": "connector_no_arrow", "textContent": "Kein Pfeil"}, -{"id": "copyrightLabel", "textContent": "angetrieben durch"}, -{"id": "cornerRadiusLabel", "title": "Eckenradius des Rechtecks ändern"}, -{"id": "curve_segments", "textContent": "Kurve"}, -{"id": "ellipse_cx", "title": "Ellipsenzentrum (cx) ändern"}, -{"id": "ellipse_cy", "title": "Ellipsenzentrum (cy) ändern"}, -{"id": "ellipse_rx", "title": "Ellipsenradius (x) ändern"}, -{"id": "ellipse_ry", "title": "Ellipsenradius (y) ändern"}, -{"id": "fill_color", "title": "Füllfarbe ändern"}, -{"id": "fitToContent", "textContent": "An den Inhalt anpassen"}, -{"id": "fit_to_all", "textContent": "An gesamten Inhalt anpassen"}, -{"id": "fit_to_canvas", "textContent": "An die Zeichenfläche anpassen"}, -{"id": "fit_to_layer_content", "textContent": "An Inhalt der Ebene anpassen"}, -{"id": "fit_to_sel", "textContent": "An die Auswahl anpassen"}, -{"id": "font_family", "title": "Schriftart wählen"}, -{"id": "icon_large", "textContent": "Groß"}, -{"id": "icon_medium", "textContent": "Mittel"}, -{"id": "icon_small", "textContent": "Klein"}, -{"id": "icon_xlarge", "textContent": "Sehr Groß"}, -{"id": "image_height", "title": "Bildhöhe ändern"}, -{"id": "image_opt_embed", "textContent": "Daten einbetten (lokale Dateien)"}, -{"id": "image_opt_ref", "textContent": "Benutze die Datei Referenz"}, -{"id": "image_url", "title": "URL ändern"}, -{"id": "image_width", "title": "Bildbreite ändern"}, -{"id": "includedImages", "textContent": "Eingefügte Bilder"}, -{"id": "largest_object", "textContent": "größtes Objekt"}, -{"id": "layer_delete", "title": "Ebene löschen"}, -{"id": "layer_down", "title": "Ebene nach unten verschieben"}, -{"id": "layer_new", "title": "Neue Ebene"}, -{"id": "layer_rename", "title": "Ebene umbenennen"}, -{"id": "layer_up", "title": "Ebene nach oben verschieben"}, -{"id": "layersLabel", "textContent": "Ebenen:"}, -{"id": "line_x1", "title": "X-Koordinate des Linienanfangs ändern"}, -{"id": "line_x2", "title": "X-Koordinate des Linienendes ändern"}, -{"id": "line_y1", "title": "Y-Koordinate des Linienanfangs ändern"}, -{"id": "line_y2", "title": "Y-Koordinate des Linienendes ändern"}, -{"id": "page", "textContent": "Seite"}, -{"id": "linecap_butt", "title": "Form der Linienendung: Stumpf"}, -{"id": "linecap_round", "title": "Form der Linienendung: Rund"}, -{"id": "linecap_square", "title": "Form der Linienendung: Rechteckig"}, -{"id": "linejoin_bevel", "title": "Zusammentreffen von zwei Linien: abgeschrägte Kante"}, -{"id": "linejoin_miter", "title": "Zusammentreffen von zwei Linien: Gehrung"}, -{"id": "linejoin_round", "title": "Zusammentreffen von zwei Linien: Rund"}, -{"id": "main_icon", "title": "Hauptmenü"}, -{"id": "mode_connect", "title": "Verbinde zwei Objekte"}, -{"id": "palette", "title": "Klick zum Ändern der Füllfarbe, Shift-Klick zum Ändern der Linienfarbe"}, -{"id": "path_node_x", "title": "Ändere die X Koordinate des Knoten"}, -{"id": "path_node_y", "title": "Ändere die Y Koordinate des Knoten"}, -{"id": "rect_height_tool", "title": "Höhe des Rechtecks ändern"}, -{"id": "rect_width_tool", "title": "Breite des Rechtecks ändern"}, -{"id": "relativeToLabel", "textContent": "im Vergleich zu:"}, -{"id": "seg_type", "title": "Ändere den Typ des Segments"}, -{"id": "selLayerLabel", "textContent": "Verschiebe ausgewählte Objekte:"}, -{"id": "selLayerNames", "title": "Verschiebe ausgewählte Objekte auf eine andere Ebene"}, -{"id": "selectedPredefined", "textContent": "Auswahl einer vordefinierten:"}, -{"id": "selected_objects", "textContent": "gewählte Objekte"}, -{"id": "selected_x", "title": "Ändere die X Koordinate"}, -{"id": "selected_y", "title": "Ändere die Y Koordinate"}, -{"id": "smallest_object", "textContent": "kleinstes Objekt"}, -{"id": "straight_segments", "textContent": "Gerade"}, -{"id": "stroke_color", "title": "Linienfarbe ändern"}, -{"id": "stroke_style", "title": "Linienstil ändern"}, -{"id": "stroke_width", "title": "Linienbreite ändern"}, -{"id": "svginfo_bg_note", "textContent": "Anmerkung: Der Hintergrund wird mit der Speicherung des Bildes nicht gespeichert."}, -{"id": "svginfo_change_background", "textContent": "Editor Hintergrund"}, -{"id": "svginfo_dim", "textContent": "Dimension der Zeichenfläche"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Einstellungen"}, -{"id": "svginfo_height", "textContent": "Höhe:"}, -{"id": "svginfo_icons", "textContent": "Symbol Abmessungen"}, -{"id": "svginfo_image_props", "textContent": "Bildeigenschaften"}, -{"id": "svginfo_lang", "textContent": "Sprache"}, -{"id": "svginfo_title", "textContent": "Titel"}, -{"id": "svginfo_width", "textContent": "Breite:"}, -{"id": "text", "title": "Textinhalt erstellen und bearbeiten"}, -{"id": "toggle_stroke_tools", "title": "Zeige/Verberge weitere Linien Werkzeuge"}, -{"id": "tool_add_subpath", "title": "Teilpfad hinzufügen"}, -{"id": "tool_alignbottom", "title": "Unten ausrichten"}, -{"id": "tool_aligncenter", "title": "Zentriert ausrichten"}, -{"id": "tool_alignleft", "title": "Linksbündig ausrichten"}, -{"id": "tool_alignmiddle", "title": "In der Mitte ausrichten"}, -{"id": "tool_alignright", "title": "Rechtsbündig ausrichten"}, -{"id": "tool_aligntop", "title": "Oben ausrichten"}, -{"id": "tool_angle", "title": "Drehwinkel ändern"}, -{"id": "tool_blur", "title": "Ändere Gaußschen Weichzeichner Wert"}, -{"id": "tool_bold", "title": "Fetter Text"}, -{"id": "tool_circle", "title": "Kreis"}, -{"id": "tool_clear", "textContent": "Neues Bild"}, -{"id": "tool_clone", "title": "Objekt klonen"}, -{"id": "tool_clone_multi", "title": "Ausgewählte Objekte klonen"}, -{"id": "tool_delete", "title": "Objekt löschen"}, -{"id": "tool_delete_multi", "title": "Ausgewählte Objekte löschen"}, -{"id": "tool_docprops", "textContent": "Dokument-Eigenschaften"}, -{"id": "tool_docprops_cancel", "textContent": "Abbrechen"}, -{"id": "tool_docprops_save", "textContent": "OK"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Als PNG exportieren"}, -{"id": "tool_eyedropper", "title": "Ableger"}, -{"id": "tool_fhellipse", "title": "Freihand Ellipse"}, -{"id": "tool_fhpath", "title": "Freihandlinien zeichnen"}, -{"id": "tool_fhrect", "title": "Freihand Rechteck"}, -{"id": "tool_font_size", "title": "Schriftgröße einstellen"}, -{"id": "tool_group", "title": "Gruppieren"}, -{"id": "tool_image", "title": "Bild einfügen"}, -{"id": "tool_import", "textContent": "Importiere SVG"}, -{"id": "tool_italic", "title": "Kursiver Text"}, -{"id": "tool_line", "title": "Linien zeichnen"}, -{"id": "tool_move_bottom", "title": "Die gewählten Objekte nach ganz unten schieben"}, -{"id": "tool_move_top", "title": "Die gewählten Objekte nach ganz oben anheben"}, -{"id": "tool_node_clone", "title": "Klone den Knoten"}, -{"id": "tool_node_delete", "title": "Lösche den Knoten"}, -{"id": "tool_node_link", "title": "Gekoppelte oder separate Kontroll Punkte für die Bearbeitung des Pfades"}, -{"id": "tool_opacity", "title": "Opazität des ausgewählten Objekts ändern"}, -{"id": "tool_open", "textContent": "Bild öffnen"}, -{"id": "tool_path", "title": "Pfad zeichnen"}, -{"id": "tool_rect", "title": "Rechteck"}, -{"id": "tool_redo", "title": "Wiederherstellen"}, -{"id": "tool_reorient", "title": "Neuausrichtung des Pfades"}, -{"id": "tool_save", "textContent": "Bild speichern"}, -{"id": "tool_select", "title": "Objekte auswählen und verändern"}, -{"id": "tool_source", "title": "Quellecode bearbeiten"}, -{"id": "tool_source_cancel", "textContent": "Abbrechen"}, -{"id": "tool_source_save", "textContent": "Änderungen akzeptieren"}, -{"id": "tool_square", "title": "Quadrat"}, -{"id": "tool_text", "title": "Text erstellen und bearbeiten"}, -{"id": "tool_topath", "title": "Gewähltes Objekt in einen Pfad konvertieren"}, -{"id": "tool_undo", "title": "Rückgängig"}, -{"id": "tool_ungroup", "title": "Gruppierung aufheben"}, -{"id": "tool_wireframe", "title": "Drahtmodell Modus"}, -{"id": "tool_zoom", "title": "Zoomfaktor vergrößern oder verringern"}, -{"id": "url_notice", "title": "Hinweis: Dieses Bild kann nicht eingebettet werden. Eine Anzeige hängt von diesem Pfad ab."}, -{"id": "zoom_panel", "title": "vergrößern"}, -{"id": "sidepanel_handle", "textContent": "E b e n e n", "title": "Ziehe links/rechts um die Seitenleiste anzupassen"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Die Syntaxanalyse Ihrer SVG Quelle enthält Fehler.\nOriginal SVG wiederherstellen?", - "QignoreSourceChanges": "Soll die Änderung am SVG Quelltext ignoriert werden?", - "QmoveElemsToLayer": "Verschiebe ausgewählte Objekte in die Ebene '%s'?", - "QwantToClear": "Möchten Sie die Zeichnung löschen?\nDadurch wird auch die Rückgängig Funktion zurückgesetzt!", - "cancel": "Abbrechen", - "defsFailOnSave": "Hinweis: Aufgrund eines Fehlers in Ihrem Browser, kann dieses Bild falsch angezeigt werden (fehlende Gradienten oder Elemente). Es wird jedoch richtig angezeigt sobald es tatsächlich gespeichert wird.", - "dupeLayerName": "Eine Ebene hat bereits diesen Namen!", - "enterNewImgURL": "Geben Sie die URL für das neue Bild an", - "enterNewLayerName": "Geben Sie bitte einen neuen Namen für die Ebene ein", - "enterUniqueLayerName": "Verwenden Sie einen eindeutigen Namen für die Ebene", - "exportNoBlur": "Verschwommene Elemente werden als un-verschwommen erscheinen.", - "exportNoDashArray": "Linien werden ausgefüllt angezeigt.", - "exportNoImage": "Image-Elemente werden nicht angezeigt.", - "exportNoText": "Text erscheint möglicherweise nicht wie erwartet.", - "exportNoforeignObject": "Fremde Objekt Elemente werden nicht angezeigt.", - "featNotSupported": "Diese Eigenschaft wird nicht unterstützt", - "invalidAttrValGiven": "Fehlerhafter Wert", - "key_backspace": "Rücktaste", - "key_del": "Löschen", - "key_down": "nach unten", - "key_up": "nach oben", - "layer": "Ebene", - "layerHasThatName": "Eine Ebene hat bereits diesen Namen", - "loadingImage": "Bild wird geladen, bitte warten ...", - "noContentToFitTo": "Kein Inhalt anzupassen", - "noteTheseIssues": "Beachten Sie außerdem die folgenden Probleme: ", - "ok": "OK", - "pathCtrlPtTooltip": "Ziehe den Kontroll Punkt um die Kurven Eigenschaften anzupassen", - "pathNodeTooltip": "Ziehe den Knoten zum Verschieben. Doppel Klick um den Segment Typ anzupassen", - "saveFromBrowser": "Wählen Sie \"Speichern unter ...\" in Ihrem Browser, um das Bild als Datei %s zu speichern." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.el.js b/files_svgedit/js/locale/lang.el.js deleted file mode 100644 index 259408a30..000000000 --- a/files_svgedit/js/locale/lang.el.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Στοίχιση σε σχέση με ..."}, -{"id": "bkgnd_color", "title": "Αλλαγή χρώματος φόντου / αδιαφάνεια"}, -{"id": "circle_cx", "title": "Cx Αλλαγή κύκλου συντονίζουν"}, -{"id": "circle_cy", "title": "Αλλαγή κύκλου cy συντονίζουν"}, -{"id": "circle_r", "title": "Αλλαγή ακτίνα κύκλου"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Αλλαγή ορθογώνιο Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Αλλαγή ellipse του CX συντονίζουν"}, -{"id": "ellipse_cy", "title": "Αλλαγή ellipse του cy συντονίζουν"}, -{"id": "ellipse_rx", "title": "X ακτίνα Αλλαγή ellipse του"}, -{"id": "ellipse_ry", "title": "Y ακτίνα Αλλαγή ellipse του"}, -{"id": "fill_color", "title": "Αλλαγή συμπληρώστε χρώμα"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Ταιριάζει σε όλο το περιεχόμενο"}, -{"id": "fit_to_canvas", "textContent": "Προσαρμογή στο μουσαμά"}, -{"id": "fit_to_layer_content", "textContent": "Προσαρμογή στο περιεχόμενο στρώμα"}, -{"id": "fit_to_sel", "textContent": "Fit to επιλογή"}, -{"id": "font_family", "title": "Αλλαγή γραμματοσειράς Οικογένεια"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Αλλαγή ύψος εικόνας"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Αλλαγή URL"}, -{"id": "image_width", "title": "Αλλαγή πλάτος εικόνας"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "μεγαλύτερο αντικείμενο"}, -{"id": "layer_delete", "title": "Διαγραφήστρώματος"}, -{"id": "layer_down", "title": "Μετακίνηση Layer Down"}, -{"id": "layer_new", "title": "Νέο Layer"}, -{"id": "layer_rename", "title": "Μετονομασία Layer"}, -{"id": "layer_up", "title": "Μετακίνηση Layer Up"}, -{"id": "layersLable", "textContent": "Στρώματα:"}, -{"id": "line_x1", "title": "Αλλαγή γραμμής εκκίνησης x συντονίζουν"}, -{"id": "line_x2", "title": "Αλλαγή γραμμής λήγει x συντονίζουν"}, -{"id": "line_y1", "title": "Αλλαγή γραμμής εκκίνησης y συντονίζουν"}, -{"id": "line_y2", "title": "Αλλαγή γραμμής λήγει y συντονίζουν"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "σελίδα"}, -{"id": "palette", "title": "Κάντε κλικ για να συμπληρώσετε την αλλαγή χρώματος, στροφή κλικ για να αλλάξετε το χρώμα εγκεφαλικό"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Αλλαγή ύψος ορθογωνίου"}, -{"id": "rect_width_tool", "title": "Αλλαγή πλάτους ορθογώνιο"}, -{"id": "relativeToLabel", "textContent": "σε σχέση με:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Επιλογή προκαθορισμένων:"}, -{"id": "selected_objects", "textContent": "εκλέγεται αντικείμενα"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "μικρότερο αντικείμενο"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Αλλαγή χρώματος εγκεφαλικό"}, -{"id": "stroke_style", "title": "Αλλαγή στυλ παύλα εγκεφαλικό"}, -{"id": "stroke_width", "title": "Αλλαγή πλάτος γραμμής"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Ύψος:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Πλάτος:"}, -{"id": "text", "title": "Αλλαγή περιεχόμενο κειμένου"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Στοίχισηκάτω"}, -{"id": "tool_aligncenter", "title": "Στοίχισηστοκέντρο"}, -{"id": "tool_alignleft", "title": "Στοίχισηαριστερά"}, -{"id": "tool_alignmiddle", "title": "Ευθυγράμμιση Μέση"}, -{"id": "tool_alignright", "title": "Στοίχισηδεξιά"}, -{"id": "tool_aligntop", "title": "Στοίχισηπάνω"}, -{"id": "tool_angle", "title": "Αλλαγή γωνία περιστροφής"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Κύκλος"}, -{"id": "tool_clear", "textContent": "Νέα εικόνα"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Στοιχεία"}, -{"id": "tool_delete", "title": "Διαγραφή Στοιχείων [Delete/Backspace]"}, -{"id": "tool_delete_multi", "title": "Διαγραφή επιλεγμένων στοιχείων"}, -{"id": "tool_docprops", "textContent": "Ιδιότητες εγγράφου"}, -{"id": "tool_docprops_cancel", "textContent": "Άκυρο"}, -{"id": "tool_docprops_save", "textContent": "Αποθηκεύω"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Δωρεάν-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Εργαλείομολυβιού"}, -{"id": "tool_fhrect", "title": "Δωρεάν-Hand ορθογώνιο"}, -{"id": "tool_font_size", "title": "Αλλαγή μεγέθους γραμματοσειράς"}, -{"id": "tool_group", "title": "Ομάδα Στοιχεία"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Πλάγιους"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Μετακίνηση προς τα κάτω"}, -{"id": "tool_move_top", "title": "Μετακίνηση στην αρχή"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Αλλαγή αδιαφάνεια επιλεγμένο σημείο"}, -{"id": "tool_open", "textContent": "Άνοιγμα εικόνας"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Ορθογώνιο"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Αποθήκευση εικόνας"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Επεξεργασία Πηγή"}, -{"id": "tool_source_cancel", "textContent": "Άκυρο"}, -{"id": "tool_source_save", "textContent": "Αποθηκεύω"}, -{"id": "tool_square", "title": "Τετράγωνο"}, -{"id": "tool_text", "title": "Κείμενο Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Αναίρεση"}, -{"id": "tool_ungroup", "title": "Κατάργηση ομαδοποίησης Στοιχεία"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Αλλαγή επίπεδο μεγέθυνσης"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.en.js b/files_svgedit/js/locale/lang.en.js deleted file mode 100644 index d6451de18..000000000 --- a/files_svgedit/js/locale/lang.en.js +++ /dev/null @@ -1,176 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Align relative to ..."}, -{"id": "bkgnd_color", "title": "Change background color/opacity"}, -{"id": "circle_cx", "title": "Change circle's cx coordinate"}, -{"id": "circle_cy", "title": "Change circle's cy coordinate"}, -{"id": "circle_r", "title": "Change circle's radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Change Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Change ellipse's cx coordinate"}, -{"id": "ellipse_cy", "title": "Change ellipse's cy coordinate"}, -{"id": "ellipse_rx", "title": "Change ellipse's x radius"}, -{"id": "ellipse_ry", "title": "Change ellipse's y radius"}, -{"id": "fill_color", "title": "Change fill color"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit to all content"}, -{"id": "fit_to_canvas", "textContent": "Fit to canvas"}, -{"id": "fit_to_layer_content", "textContent": "Fit to layer content"}, -{"id": "fit_to_sel", "textContent": "Fit to selection"}, -{"id": "font_family", "title": "Change Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "idLabel", "title": "Identify the element"}, -{"id": "image_height", "title": "Change image height"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Change image width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "largest object"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Change line's starting x coordinate"}, -{"id": "line_x2", "title": "Change line's ending x coordinate"}, -{"id": "line_y1", "title": "Change line's starting y coordinate"}, -{"id": "line_y2", "title": "Change line's ending y coordinate"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "page"}, -{"id": "palette", "title": "Click to change fill color, shift-click to change stroke color"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Change rectangle height"}, -{"id": "rect_width_tool", "title": "Change rectangle width"}, -{"id": "relativeToLabel", "textContent": "relative to:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select predefined:"}, -{"id": "selected_objects", "textContent": "selected objects"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "smallest object"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change stroke color"}, -{"id": "stroke_style", "title": "Change stroke dash style"}, -{"id": "stroke_width", "title": "Change stroke width by 1, shift-click to change by 0.1"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Height:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Width:"}, -{"id": "text", "title": "Change text contents"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Align Center"}, -{"id": "tool_alignleft", "title": "Align Left"}, -{"id": "tool_alignmiddle", "title": "Align Middle"}, -{"id": "tool_alignright", "title": "Align Right"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Change rotation angle"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Delete Element"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Cancel"}, -{"id": "tool_docprops_save", "textContent": "OK"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Change Font Size"}, -{"id": "tool_group", "title": "Group Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Change selected item opacity"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_openclose_path", "title": "Open/close sub-path"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_position", "title": "Align Element to Page"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Cancel"}, -{"id": "tool_source_save", "textContent": "Apply Changes"}, -{"id": "tool_square", "title": "Square"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Change zoom level"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.es.js b/files_svgedit/js/locale/lang.es.js deleted file mode 100644 index 29a66bd81..000000000 --- a/files_svgedit/js/locale/lang.es.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Alinear con respecto a ..."}, -{"id": "bkgnd_color", "title": "Cambiar color de fondo / opacidad"}, -{"id": "circle_cx", "title": "Cambiar la posición horizonral CX del círculo"}, -{"id": "circle_cy", "title": "Cambiar la posición vertical CY del círculo"}, -{"id": "circle_r", "title": "Cambiar el radio del círculo"}, -{"id": "connector_no_arrow", "textContent": "Sin flecha"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Cambiar el radio de las esquinas del rectángulo"}, -{"id": "curve_segments", "textContent": "Curva"}, -{"id": "ellipse_cx", "title": "Cambiar la posición horizontal CX de la elipse"}, -{"id": "ellipse_cy", "title": "Cambiar la posición vertical CY de la elipse"}, -{"id": "ellipse_rx", "title": "Cambiar el radio horizontal X de la elipse"}, -{"id": "ellipse_ry", "title": "Cambiar el radio vertical Y de la elipse"}, -{"id": "fill_color", "title": "Cambiar el color de relleno"}, -{"id": "fitToContent", "textContent": "Ajustar al contenido"}, -{"id": "fit_to_all", "textContent": "Ajustar a todo el contenido"}, -{"id": "fit_to_canvas", "textContent": "Ajustar al lienzo"}, -{"id": "fit_to_layer_content", "textContent": "Ajustar al contenido de la capa"}, -{"id": "fit_to_sel", "textContent": "Ajustar a la selección"}, -{"id": "font_family", "title": "Tipo de fuente"}, -{"id": "icon_large", "textContent": "Grande"}, -{"id": "icon_medium", "textContent": "Mediano"}, -{"id": "icon_small", "textContent": "Pequeño"}, -{"id": "icon_xlarge", "textContent": "Muy grande"}, -{"id": "image_height", "title": "Cambiar la altura de la imagen"}, -{"id": "image_opt_embed", "textContent": "Integrar imágenes en forma de datos (archivos locales)"}, -{"id": "image_opt_ref", "textContent": "Usar la referencia del archivo"}, -{"id": "image_url", "title": "Modificar URL"}, -{"id": "image_width", "title": "Cambiar el ancho de la imagen"}, -{"id": "includedImages", "textContent": "Imágenes integradas"}, -{"id": "largest_object", "textContent": "El objeto más grande"}, -{"id": "layer_delete", "title": "Suprimir capa"}, -{"id": "layer_down", "title": "Mover la capa hacia abajo"}, -{"id": "layer_new", "title": "Nueva capa"}, -{"id": "layer_rename", "title": "Renombrar capa"}, -{"id": "layer_up", "title": "Mover la capa hacia arriba"}, -{"id": "layersLabel", "textContent": "Capas:"}, -{"id": "line_x1", "title": "Cambiar la posición horizontal X del comienzo de la línea"}, -{"id": "line_x2", "title": "Cambiar la posición horizontal X del final de la línea"}, -{"id": "line_y1", "title": "Cambiar la posición vertical Y del comienzo de la línea"}, -{"id": "line_y2", "title": "Cambiar la posición vertical Y del final de la línea"}, -{"id": "linecap_butt", "title": "Final de la línea: en el nodo"}, -{"id": "linecap_round", "title": "Final de la línea: redondeada"}, -{"id": "linecap_square", "title": "Final de la línea: cuadrada"}, -{"id": "linejoin_bevel", "title": "Unión: biselada"}, -{"id": "linejoin_miter", "title": "Unión: recta"}, -{"id": "linejoin_round", "title": "Unión: redondeada"}, -{"id": "main_icon", "title": "Menú principal"}, -{"id": "mode_connect", "title": "Conectar dos objetos"}, -{"id": "page", "textContent": "Página"}, -{"id": "palette", "title": "Haga clic para cambiar el color de relleno. Pulse Mayús y haga clic para cambiar el color del contorno."}, -{"id": "path_node_x", "title": "Cambiar la posición horizontal X del nodo"}, -{"id": "path_node_y", "title": "Cambiar la posición vertical Y del nodo"}, -{"id": "rect_height_tool", "title": "Cambiar la altura del rectángulo"}, -{"id": "rect_width_tool", "title": "Cambiar el ancho rectángulo"}, -{"id": "relativeToLabel", "textContent": "en relación con:"}, -{"id": "seg_type", "title": "Cambiar el tipo de segmento"}, -{"id": "selLayerLabel", "textContent": "Desplazar objetos a:"}, -{"id": "selLayerNames", "title": "Mover los objetos seleccionados a otra capa"}, -{"id": "selectedPredefined", "textContent": "Seleccionar predefinido:"}, -{"id": "selected_objects", "textContent": "Objetos seleccionados"}, -{"id": "selected_x", "title": "Cambiar la posición horizontal X"}, -{"id": "selected_y", "title": "Cambiar la posición vertical Y"}, -{"id": "smallest_object", "textContent": "El objeto más pequeño"}, -{"id": "straight_segments", "textContent": "Recta"}, -{"id": "stroke_color", "title": "Cambiar el color del contorno"}, -{"id": "stroke_style", "title": "Cambiar el estilo del trazo del contorno"}, -{"id": "stroke_width", "title": "Cambiar el grosor del contorno"}, -{"id": "svginfo_bg_note", "textContent": "Nota: El fondo no se guardará junto con la imagen."}, -{"id": "svginfo_change_background", "textContent": "Fondo del editor"}, -{"id": "svginfo_dim", "textContent": "Tamaño del lienzo"}, -{"id": "svginfo_editor_prefs", "textContent": "Preferencias del Editor"}, -{"id": "svginfo_height", "textContent": "Alto:"}, -{"id": "svginfo_icons", "textContent": "Tamaño de los iconos"}, -{"id": "svginfo_image_props", "textContent": "Propiedades de la Imagen"}, -{"id": "svginfo_lang", "textContent": "Idioma"}, -{"id": "svginfo_title", "textContent": "Título"}, -{"id": "svginfo_width", "textContent": "Ancho:"}, -{"id": "text", "title": "Modificar el texto"}, -{"id": "toggle_stroke_tools", "title": "Mostrar/ocultar herramientas de trazo adicionales"}, -{"id": "tool_add_subpath", "title": "Añadir subtrazado"}, -{"id": "tool_alignbottom", "title": "Alinear parte inferior"}, -{"id": "tool_aligncenter", "title": "Centrar verticalmente"}, -{"id": "tool_alignleft", "title": "Alinear lado izquierdo"}, -{"id": "tool_alignmiddle", "title": "Centrar horizontalmente"}, -{"id": "tool_alignright", "title": "Alinear lado derecho"}, -{"id": "tool_aligntop", "title": "Alinear parte superior"}, -{"id": "tool_angle", "title": "Cambiar ángulo de rotación"}, -{"id": "tool_blur", "title": "Ajustar desenfoque gausiano"}, -{"id": "tool_bold", "title": "Texto en negrita"}, -{"id": "tool_circle", "title": "Círculo"}, -{"id": "tool_clear", "textContent": "Nueva imagen"}, -{"id": "tool_clone", "title": "Clonar objeto"}, -{"id": "tool_clone_multi", "title": " Clonar objetos"}, -{"id": "tool_delete", "title": "Suprimir objeto"}, -{"id": "tool_delete_multi", "title": "Suprimir los objetos seleccionados"}, -{"id": "tool_docprops", "textContent": "Propiedades del documento"}, -{"id": "tool_docprops_cancel", "textContent": "Cancelar"}, -{"id": "tool_docprops_save", "textContent": "OK"}, -{"id": "tool_ellipse", "title": "Elipse"}, -{"id": "tool_export", "textContent": "Exportar como PNG"}, -{"id": "tool_eyedropper", "title": "Herramienta de pipeta"}, -{"id": "tool_fhellipse", "title": "Elipse a mano alzada"}, -{"id": "tool_fhpath", "title": "Herramienta de lápiz"}, -{"id": "tool_fhrect", "title": "Rectángulo a mano alzada"}, -{"id": "tool_font_size", "title": "Tamaño de la fuente"}, -{"id": "tool_group", "title": "Agrupar objetos"}, -{"id": "tool_image", "title": "Insertar imagen"}, -{"id": "tool_import", "textContent": "Importar un archivo SVG"}, -{"id": "tool_italic", "title": "Texto en cursiva"}, -{"id": "tool_line", "title": "Trazado de líneas"}, -{"id": "tool_move_bottom", "title": "Mover abajo"}, -{"id": "tool_move_top", "title": "Mover arriba"}, -{"id": "tool_node_clone", "title": "Clonar nodo"}, -{"id": "tool_node_delete", "title": "Suprimir nodo"}, -{"id": "tool_node_link", "title": "Enlazar puntos de control"}, -{"id": "tool_opacity", "title": "Cambiar la opacidad del objeto seleccionado"}, -{"id": "tool_open", "textContent": "Abrir imagen"}, -{"id": "tool_path", "title": "Herramienta de trazado"}, -{"id": "tool_rect", "title": "Rectángulo"}, -{"id": "tool_redo", "title": "Rehacer"}, -{"id": "tool_reorient", "title": "Reorientar el trazado"}, -{"id": "tool_save", "textContent": "Guardar imagen"}, -{"id": "tool_select", "title": "Herramienta de selección"}, -{"id": "tool_source", "title": "Editar código fuente"}, -{"id": "tool_source_cancel", "textContent": "Cancelar"}, -{"id": "tool_source_save", "textContent": "Aplicar cambios"}, -{"id": "tool_square", "title": "Cuadrado"}, -{"id": "tool_text", "title": "Insertar texto"}, -{"id": "tool_topath", "title": "Convertir a trazado"}, -{"id": "tool_undo", "title": "Deshacer"}, -{"id": "tool_ungroup", "title": "Desagrupar objetos"}, -{"id": "tool_wireframe", "title": "Modo marco de alambre"}, -{"id": "tool_zoom", "title": "Zoom"}, -{"id": "url_notice", "title": "NOTA: La imagen no puede ser integrada. El contenido mostrado dependerá de la imagen ubicada en esta ruta. "}, -{"id": "zoom_panel", "title": "Cambiar el nivel de zoom"}, -{"id": "sidepanel_handle", "textContent": "C a p a s", "title": "Arrastrar hacia la izquierda/derecha para modificar el tamaño del panel lateral"}, -{ - "js_strings": { - "Aceptar": "OK", - "QerrorsRevertToSource": "Existen errores sintácticos en su código fuente SVG.\n¿Desea volver al código fuente SVG original?", - "QignoreSourceChanges": "¿Desea ignorar los cambios realizados sobre el código fuente SVG?", - "QmoveElemsToLayer": "¿Desplazar los elementos seleccionados a la capa '%s'?", - "QwantToClear": "¿Desea borrar el dibujo?\n¡El historial de acciones también se borrará!", - "cancel": "Cancelar", - "defsFailOnSave": "NOTA: Debido a un fallo de su navegador, es posible que la imagen aparezca de forma incorrecta (ciertas gradaciones o elementos podría perderse). La imagen aparecerá en su forma correcta una vez guardada.", - "dupeLayerName": "¡Ya existe una capa con este nombre!", - "enterNewImgURL": "Introduzca la nueva URL de la imagen.", - "enterNewLayerName": "Introduzca el nuevo nombre de la capa.", - "enterUniqueLayerName": "Introduzca otro nombre distinto para la capa.", - "exportNoBlur": "Los elementos desenfocados aparecerán enfocados", - "exportNoDashArray": "Los contornos aparecerán rellenos", - "exportNoImage": "Los elementos “Imagen” no aparecerán", - "exportNoText": "La apariencia del texto puede cambiar", - "exportNoforeignObject": "Los elementos “foreignObject” no aparecerán", - "featNotSupported": "Función no compatible.", - "invalidAttrValGiven": "Valor no válido", - "key_backspace": "retroceso", - "key_del": "suprimir", - "key_down": "abajo", - "key_up": "arriba", - "layer": "Capa", - "layerHasThatName": "El nombre introducido es el nombre actual de la capa.", - "loadingImage": "Cargando imagen. Espere, por favor.", - "noContentToFitTo": "No existe un contenido al que ajustarse.", - "noteTheseIssues": "Existen además los problemas siguientes:", - "pathCtrlPtTooltip": "Arrastre el punto de control para ajustar las propiedades de la curva.", - "pathNodeTooltip": "Arrastre el nodo para desplazarlo. Haga doble clic sobre el nodo para cambiar el tipo de segmento.", - "saveFromBrowser": "Seleccionar \"Guardar como...\" en su navegador para guardar la imagen en forma de archivo %s." - } -} -] - diff --git a/files_svgedit/js/locale/lang.et.js b/files_svgedit/js/locale/lang.et.js deleted file mode 100644 index df60ee0cc..000000000 --- a/files_svgedit/js/locale/lang.et.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Viia võrreldes ..."}, -{"id": "bkgnd_color", "title": "Muuda tausta värvi / läbipaistmatus"}, -{"id": "circle_cx", "title": "Muuda ringi's cx kooskõlastada"}, -{"id": "circle_cy", "title": "Muuda ringi's cy kooskõlastada"}, -{"id": "circle_r", "title": "Muuda ring on raadiusega"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Muuda ristkülik Nurgakabe Raadius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Muuda ellips's cx kooskõlastada"}, -{"id": "ellipse_cy", "title": "Muuda ellips's cy kooskõlastada"}, -{"id": "ellipse_rx", "title": "Muuda ellips's x raadius"}, -{"id": "ellipse_ry", "title": "Muuda ellips's y raadius"}, -{"id": "fill_color", "title": "Muuda täitke värvi"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Sobita kogu sisu"}, -{"id": "fit_to_canvas", "textContent": "Sobita lõuend"}, -{"id": "fit_to_layer_content", "textContent": "Sobita kiht sisu"}, -{"id": "fit_to_sel", "textContent": "Fit valiku"}, -{"id": "font_family", "title": "Muutke Kirjasinperhe"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Muuda pilt kõrgus"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Muuda pilt laius"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "suurim objekt"}, -{"id": "layer_delete", "title": "Kustuta Kiht"}, -{"id": "layer_down", "title": "Liiguta kiht alla"}, -{"id": "layer_new", "title": "Uus kiht"}, -{"id": "layer_rename", "title": "Nimeta kiht"}, -{"id": "layer_up", "title": "Liiguta kiht üles"}, -{"id": "layersLabel", "textContent": "Kihid:"}, -{"id": "line_x1", "title": "Muuda rööbastee algab x-koordinaadi"}, -{"id": "line_x2", "title": "Muuda Line lõpeb x-koordinaadi"}, -{"id": "line_y1", "title": "Muuda rööbastee algab y-koordinaadi"}, -{"id": "line_y2", "title": "Muuda Line lõppenud y-koordinaadi"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "lehekülg"}, -{"id": "palette", "title": "Click muuta täitke värvi, Shift-nuppu, et muuta insult värvi"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Muuda ristküliku kõrgus"}, -{"id": "rect_width_tool", "title": "Muuda ristküliku laius"}, -{"id": "relativeToLabel", "textContent": "võrreldes:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Valige eelmääratletud:"}, -{"id": "selected_objects", "textContent": "valitud objektide"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "väikseim objekt"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Muuda insult värvi"}, -{"id": "stroke_style", "title": "Muuda insult kriips stiil"}, -{"id": "stroke_width", "title": "Muuda insult laius"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Kõrgus:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Laius:"}, -{"id": "text", "title": "Muuda teksti sisu"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Viia Bottom"}, -{"id": "tool_aligncenter", "title": "Keskele joondamine"}, -{"id": "tool_alignleft", "title": "Vasakjoondus"}, -{"id": "tool_alignmiddle", "title": "Viia Lähis -"}, -{"id": "tool_alignright", "title": "Paremjoondus"}, -{"id": "tool_aligntop", "title": "Viia Üles"}, -{"id": "tool_angle", "title": "Muuda Pöördenurk"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Rasvane kiri"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Uus pilt"}, -{"id": "tool_clone", "title": "Kloonide Element"}, -{"id": "tool_clone_multi", "title": "Kloonide Elements"}, -{"id": "tool_delete", "title": "Kustuta Element"}, -{"id": "tool_delete_multi", "title": "Kustuta valitud elemendid [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Dokumendi omadused"}, -{"id": "tool_docprops_cancel", "textContent": "Tühista"}, -{"id": "tool_docprops_save", "textContent": "Salvestama"}, -{"id": "tool_ellipse", "title": "Ellips"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Online-Hand Ellips"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Online-Hand Ristkülik"}, -{"id": "tool_font_size", "title": "Change font size"}, -{"id": "tool_group", "title": "Rühma elemendid"}, -{"id": "tool_image", "title": "Pilt Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursiiv"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Liiguta alla"}, -{"id": "tool_move_top", "title": "Liiguta üles"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Muuda valitud elemendi läbipaistmatus"}, -{"id": "tool_open", "textContent": "Pildi avamine"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Ristkülik"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Salvesta pilt"}, -{"id": "tool_select", "title": "Vali Tool"}, -{"id": "tool_source", "title": "Muuda Allikas"}, -{"id": "tool_source_cancel", "textContent": "Tühista"}, -{"id": "tool_source_save", "textContent": "Salvestama"}, -{"id": "tool_square", "title": "Nelinurkne"}, -{"id": "tool_text", "title": "Tekst Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Lõhu Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Muuda suumi taset"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.fa.js b/files_svgedit/js/locale/lang.fa.js deleted file mode 100644 index 941e73d75..000000000 --- a/files_svgedit/js/locale/lang.fa.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "تراز نسبت به ..."}, -{"id": "bkgnd_color", "title": "تغییر رنگ پس زمینه / تاری"}, -{"id": "circle_cx", "title": "تغییر مختصات cx دایره"}, -{"id": "circle_cy", "title": "تغییر مختصات cy دایره"}, -{"id": "circle_r", "title": "تغییر شعاع دایره"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "تغییر شعاع گوشه مستطیل"}, -{"id": "cornerRadiusLabel", "title": "شعاع گوشه:"}, -{"id": "curve_segments", "textContent": "منحنی"}, -{"id": "ellipse_cx", "title": "تغییر مختصات cx بیضی"}, -{"id": "ellipse_cy", "title": "تغییر مختصات cy بیضی"}, -{"id": "ellipse_rx", "title": "تغییر شعاع rx بیضی"}, -{"id": "ellipse_ry", "title": "تغییر شعاع ry بیضی"}, -{"id": "fill_color", "title": "تغییر رنگ"}, -{"id": "fitToContent", "textContent": "هم اندازه شدن با محتوا"}, -{"id": "fit_to_all", "textContent": "هم اندازه شدن با همه محتویات"}, -{"id": "fit_to_canvas", "textContent": "هم اندازه شدن با صفحه مجازی (بوم)"}, -{"id": "fit_to_layer_content", "textContent": "هم اندازه شدن با محتوای لایه"}, -{"id": "fit_to_sel", "textContent": "هم اندازه شدن با اشیاء انتخاب شده"}, -{"id": "font_family", "title": "تغییر خانواده قلم"}, -{"id": "icon_large", "textContent": "بزرگ"}, -{"id": "icon_medium", "textContent": "متوسط"}, -{"id": "icon_small", "textContent": "کوچک"}, -{"id": "icon_xlarge", "textContent": "خیلی بزرگ"}, -{"id": "image_height", "title": "تغییر ارتفاع تصویر"}, -{"id": "image_opt_embed", "textContent": "داده های جای داده شده (پرونده های محلی)"}, -{"id": "image_opt_ref", "textContent": "استفاده از ارجاع به پرونده"}, -{"id": "image_url", "title": "تغییر نشانی وب (url)"}, -{"id": "image_width", "title": "تغییر عرض تصویر"}, -{"id": "includedImages", "textContent": "تصاویر گنجانده شده"}, -{"id": "largest_object", "textContent": "بزرگترین شئ"}, -{"id": "layer_delete", "title": "حذف لایه"}, -{"id": "layer_down", "title": "انتقال لایه به پایین"}, -{"id": "layer_new", "title": "لایه جدید"}, -{"id": "layer_rename", "title": "تغییر نام لایه"}, -{"id": "layer_up", "title": "انتقال لایه به بالا"}, -{"id": "layersLabel", "textContent": "لایه:"}, -{"id": "line_x1", "title": "تغییر مختصات x آغاز خط"}, -{"id": "line_x2", "title": "تغییر مختصات x پایان خط"}, -{"id": "line_y1", "title": "تغییر مختصات y آغاز خط"}, -{"id": "line_y2", "title": "تغییر مختصات y پایان خط"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "صفحه"}, -{"id": "palette", "title": "برای تغییر رنگ، کلیک کنید. برای تغییر رنگ لبه، کلید تبدیل (shift) را فشرده و کلیک کنید"}, -{"id": "path_node_x", "title": "تغییر مختصات x نقطه"}, -{"id": "path_node_y", "title": "تغییر مختصات y نقطه"}, -{"id": "rect_height_tool", "title": "تغییر ارتفاع مستطیل"}, -{"id": "rect_width_tool", "title": "تغییر عرض مستطیل"}, -{"id": "relativeToLabel", "textContent": "نسبت به:"}, -{"id": "seg_type", "title": "تغییر نوع قطعه (segment)"}, -{"id": "selLayerLabel", "textContent": "انتقال عناصر به:"}, -{"id": "selLayerNames", "title": "انتقال عناصر انتخاب شده به یک لایه متفاوت"}, -{"id": "selectedPredefined", "textContent": "از پیش تعریف شده را انتخاب کنید:"}, -{"id": "selected_objects", "textContent": "اشیاء انتخاب شده"}, -{"id": "selected_x", "title": "تغییر مختصات X"}, -{"id": "selected_y", "title": "تغییر مختصات Y"}, -{"id": "smallest_object", "textContent": "کوچکترین شئ"}, -{"id": "straight_segments", "textContent": "مستقیم"}, -{"id": "stroke_color", "title": "تغییر رنگ لبه"}, -{"id": "stroke_style", "title": "تغییر نقطه چین لبه"}, -{"id": "stroke_width", "title": "تغییر عرض لبه"}, -{"id": "svginfo_bg_note", "textContent": "توجه: پس زمینه همراه تصویر ذخیره نخواهد شد."}, -{"id": "svginfo_change_background", "textContent": "پس زمینه ویراستار"}, -{"id": "svginfo_dim", "textContent": "ابعاد صفحه مجازی (بوم)"}, -{"id": "svginfo_editor_prefs", "textContent": "تنظیمات ویراستار"}, -{"id": "svginfo_height", "textContent": "ارتفاع:"}, -{"id": "svginfo_icons", "textContent": "اندازه شمایل"}, -{"id": "svginfo_image_props", "textContent": "مشخصات تصویر"}, -{"id": "svginfo_lang", "textContent": "زبان"}, -{"id": "svginfo_title", "textContent": "عنوان"}, -{"id": "svginfo_width", "textContent": "عرض:"}, -{"id": "text", "title": "تغییر محتویات متن"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "تراز پایین"}, -{"id": "tool_aligncenter", "title": "وسط چین"}, -{"id": "tool_alignleft", "title": "چپ چین"}, -{"id": "tool_alignmiddle", "title": "تراز میانه"}, -{"id": "tool_alignright", "title": "راست چین"}, -{"id": "tool_aligntop", "title": "تراز بالا"}, -{"id": "tool_angle", "title": "تغییر زاویه چرخش"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "متن توپر "}, -{"id": "tool_circle", "title": "دایره"}, -{"id": "tool_clear", "textContent": "تصویر جدید "}, -{"id": "tool_clone", "title": "ایجاد کپی از عنصر "}, -{"id": "tool_clone_multi", "title": "ایجاد کپی از عناصر "}, -{"id": "tool_delete", "title": "حذف عنصر "}, -{"id": "tool_delete_multi", "title": "حذف عناصر انتخاب شده "}, -{"id": "tool_docprops", "textContent": "مشخصات سند "}, -{"id": "tool_docprops_cancel", "textContent": "لغو"}, -{"id": "tool_docprops_save", "textContent": "تأیید"}, -{"id": "tool_ellipse", "title": "بیضی"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "بیضی با قابلیت تغییر پویا"}, -{"id": "tool_fhpath", "title": "ابزار مداد "}, -{"id": "tool_fhrect", "title": "مستطیل با قابلیت تغییر پویا"}, -{"id": "tool_font_size", "title": "تغییر اندازه قلم"}, -{"id": "tool_group", "title": "قرار دادن عناصر در گروه "}, -{"id": "tool_image", "title": "ابزار تصویر "}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "متن کج "}, -{"id": "tool_line", "title": "ابزار خط "}, -{"id": "tool_move_bottom", "title": "انتقال به پایین ترین "}, -{"id": "tool_move_top", "title": "انتقال به بالاترین "}, -{"id": "tool_node_clone", "title": "ایجاد کپی از نقطه"}, -{"id": "tool_node_delete", "title": "حذف نقطه"}, -{"id": "tool_node_link", "title": "پیوند دادن نقاط کنترل"}, -{"id": "tool_opacity", "title": "تغییر تاری عنصر انتخاب شده"}, -{"id": "tool_open", "textContent": "باز کردن تصویر "}, -{"id": "tool_path", "title": "ابزار مسیر "}, -{"id": "tool_rect", "title": "مستطیل"}, -{"id": "tool_redo", "title": "ازنو "}, -{"id": "tool_reorient", "title": "جهت دهی مجدد مسیر"}, -{"id": "tool_save", "textContent": "ذخیره تصویر "}, -{"id": "tool_select", "title": "ابزار انتخاب "}, -{"id": "tool_source", "title": "ویرایش منبع "}, -{"id": "tool_source_cancel", "textContent": "لغو"}, -{"id": "tool_source_save", "textContent": "اعمال تغییرات"}, -{"id": "tool_square", "title": "مربع"}, -{"id": "tool_text", "title": "ابزار متن "}, -{"id": "tool_topath", "title": "تبدیل به مسیر"}, -{"id": "tool_undo", "title": "واگرد "}, -{"id": "tool_ungroup", "title": "خارج کردن عناصر از گروه "}, -{"id": "tool_wireframe", "title": "حالت نمایش لبه ها "}, -{"id": "tool_zoom", "title": "ابزار بزرگ نمایی "}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "تغییر بزرگ نمایی"}, -{"id": "sidepanel_handle", "textContent": "لایه ها", "title": "برای تغییر اندازه منوی کناری، آن را به سمت راست/چپ بکشید "}, -{ - "js_strings": { - "QerrorsRevertToSource": "در منبع SVG شما خطاهای تجزیه (parse) وجود داشت.\nبه منبع SVG اصلی بازگردانده شود؟", - "QignoreSourceChanges": "تغییرات اعمال شده در منبع SVG نادیده گرفته شوند؟", - "QmoveElemsToLayer": "عناصر انتخاب شده به لایه '%s' منتقل شوند؟", - "QwantToClear": "آیا مطمئن هستید که می خواهید نقاشی را پاک کنید؟\nاین عمل باعث حذف تاریخچه واگرد شما خواهد شد!", - "cancel": "لغو", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "لایه ای با آن نام وجود دارد!", - "enterNewImgURL": "نشانی وب (url) تصویر جدید را وارد کنید", - "enterNewLayerName": "لطفا نام لایه جدید را وارد کنید", - "enterUniqueLayerName": "لطفا یک نام لایه یکتا انتخاب کنید", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "این ویژگی پشتیبانی نشده است", - "invalidAttrValGiven": "مقدار داده شده نامعتبر است", - "key_backspace": "پس بر ", - "key_del": "حذف ", - "key_down": "پایین ", - "key_up": "بالا ", - "layer": "لایه", - "layerHasThatName": "لایه از قبل آن نام را دارد", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "محتوایی برای هم اندازه شدن وجود ندارد", - "noteTheseIssues": "Also note the following issues: ", - "ok": "تأیید", - "pathCtrlPtTooltip": "برای تنظیم مشخصات منحنی، نقطه کنترل را بکشید", - "pathNodeTooltip": "برای جابه جا کردن نقطه، آن را بکشید. برای تغییر قطعه (segment)، روی نقطه دوبار کلیک کنید", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.fi.js b/files_svgedit/js/locale/lang.fi.js deleted file mode 100644 index a2ce312dc..000000000 --- a/files_svgedit/js/locale/lang.fi.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Kohdista suhteessa ..."}, -{"id": "bkgnd_color", "title": "Vaihda taustaväri / sameuden"}, -{"id": "circle_cx", "title": "Muuta Circlen CX koordinoida"}, -{"id": "circle_cy", "title": "Muuta Circlen CY koordinoida"}, -{"id": "circle_r", "title": "Muuta ympyrän säde"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Muuta suorakaide Corner Säde"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Muuta ellipsi's CX koordinoida"}, -{"id": "ellipse_cy", "title": "Muuta ellipsi's CY koordinoida"}, -{"id": "ellipse_rx", "title": "Muuta ellipsi's x säde"}, -{"id": "ellipse_ry", "title": "Muuta ellipsi n y säde"}, -{"id": "fill_color", "title": "Muuta täyttöväri"}, -{"id": "fitToContent", "textContent": "Sovita Content"}, -{"id": "fit_to_all", "textContent": "Sovita kaikki content"}, -{"id": "fit_to_canvas", "textContent": "Sovita kangas"}, -{"id": "fit_to_layer_content", "textContent": "Sovita kerros sisältöön"}, -{"id": "fit_to_sel", "textContent": "Sovita valinta"}, -{"id": "font_family", "title": "Muuta Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Muuta kuvan korkeus"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Muuta URL"}, -{"id": "image_width", "title": "Muuta kuvan leveys"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "Suurin kohde"}, -{"id": "layer_delete", "title": "Poista Layer"}, -{"id": "layer_down", "title": "Siirrä Layer alas"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Nimeä Layer"}, -{"id": "layer_up", "title": "Siirrä Layer"}, -{"id": "layersLabel", "textContent": "Kerrosten:"}, -{"id": "line_x1", "title": "Muuta Linen alkaa x-koordinaatti"}, -{"id": "line_x2", "title": "Muuta Linen päättyy x koordinoida"}, -{"id": "line_y1", "title": "Muuta Linen alkaa y-koordinaatti"}, -{"id": "line_y2", "title": "Muuta Linen päättyy y koordinoida"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "sivulta"}, -{"id": "palette", "title": "Klikkaa muuttaa täyttöväri, Shift-click vaihtaa aivohalvauksen väriä"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Muuta suorakaiteen korkeus"}, -{"id": "rect_width_tool", "title": "Muuta suorakaiteen leveys"}, -{"id": "relativeToLabel", "textContent": "suhteessa:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Valitse ennalta:"}, -{"id": "selected_objects", "textContent": "valittujen objektien"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "pienin kohde"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Muuta aivohalvaus väri"}, -{"id": "stroke_style", "title": "Muuta aivohalvaus Dash tyyli"}, -{"id": "stroke_width", "title": "Muuta aivohalvaus leveys"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Korkeus:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Leveys:"}, -{"id": "text", "title": "Muuta tekstin sisältö"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Keskitä"}, -{"id": "tool_alignleft", "title": "Tasaa vasemmalle"}, -{"id": "tool_alignmiddle", "title": "Kohdista Lähi"}, -{"id": "tool_alignright", "title": "Tasaa oikealle"}, -{"id": "tool_aligntop", "title": "Kohdista Top"}, -{"id": "tool_angle", "title": "Muuta kiertokulma"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Lihavoitu teksti"}, -{"id": "tool_circle", "title": "Ympyrään"}, -{"id": "tool_clear", "textContent": "Uusi kuva"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Poista Element"}, -{"id": "tool_delete_multi", "title": "Poista valitut Elements"}, -{"id": "tool_docprops", "textContent": "Asiakirjan ominaisuudet"}, -{"id": "tool_docprops_cancel", "textContent": "Peruuta"}, -{"id": "tool_docprops_save", "textContent": "Tallentaa"}, -{"id": "tool_ellipse", "title": "Soikion"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Kynätyökalu"}, -{"id": "tool_fhrect", "title": "Free-Hand suorakaide"}, -{"id": "tool_font_size", "title": "Muuta fontin kokoa"}, -{"id": "tool_group", "title": "Tuoteryhmään Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursivoitu"}, -{"id": "tool_line", "title": "Viivatyökalulla"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Muuta valitun kohteen läpinäkyvyys"}, -{"id": "tool_open", "textContent": "Avaa kuva"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Suorakulmiossa"}, -{"id": "tool_redo", "title": "Tulppaamalla ilmakanavan"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Valitse työkalu"}, -{"id": "tool_source", "title": "Muokkaa lähdekoodipaketti"}, -{"id": "tool_source_cancel", "textContent": "Peruuta"}, -{"id": "tool_source_save", "textContent": "Tallentaa"}, -{"id": "tool_square", "title": "Neliö"}, -{"id": "tool_text", "title": "Työkalua"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Kumoa"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Suurennustyökalu"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Muuta suurennustaso"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.fr.js b/files_svgedit/js/locale/lang.fr.js deleted file mode 100644 index de8e2302a..000000000 --- a/files_svgedit/js/locale/lang.fr.js +++ /dev/null @@ -1,176 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Aligner par rapport à ..."}, -{"id": "bkgnd_color", "title": "Changer la couleur d'arrière-plan / l'opacité"}, -{"id": "circle_cx", "title": "Changer la position horizontale cx du cercle"}, -{"id": "circle_cy", "title": "Changer la position verticale cy du cercle"}, -{"id": "circle_r", "title": "Changer le rayon du cercle"}, -{"id": "connector_no_arrow", "textContent": "Sans flèches"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Changer le rayon des coins du rectangle"}, -{"id": "curve_segments", "textContent": "Courbe"}, -{"id": "ellipse_cx", "title": "Changer la position horizontale cx de l'ellipse"}, -{"id": "ellipse_cy", "title": "Changer la position verticale cy de l'ellipse"}, -{"id": "ellipse_rx", "title": "Changer le rayon horizontal x de l'ellipse"}, -{"id": "ellipse_ry", "title": "Changer le rayon vertical y de l'ellipse"}, -{"id": "fill_color", "title": "Changer la couleur de remplissage"}, -{"id": "fitToContent", "textContent": "Ajuster au contenu"}, -{"id": "fit_to_all", "textContent": "Ajuster au contenu de tous les calques"}, -{"id": "fit_to_canvas", "textContent": "Ajuster au canevas"}, -{"id": "fit_to_layer_content", "textContent": "Ajuster au contenu du calque"}, -{"id": "fit_to_sel", "textContent": "Ajuster à la sélection"}, -{"id": "font_family", "title": "Changer la famille de police"}, -{"id": "icon_large", "textContent": "Grande"}, -{"id": "icon_medium", "textContent": "Moyenne"}, -{"id": "icon_small", "textContent": "Petite"}, -{"id": "icon_xlarge", "textContent": "Super-Grande"}, -{"id": "idLabel", "title": "Identifier l'élément"}, -{"id": "image_height", "title": "Changer la hauteur de l'image"}, -{"id": "image_opt_embed", "textContent": "Incorporer les images en tant que données (fichiers locaux)"}, -{"id": "image_opt_ref", "textContent": "Utiliser la référence des images "}, -{"id": "image_url", "title": "Modifier l'URL"}, -{"id": "image_width", "title": "Changer la largeur de l'image"}, -{"id": "includedImages", "textContent": "Images incorporées"}, -{"id": "largest_object", "textContent": "Plus gros objet"}, -{"id": "layer_delete", "title": "Supprimer le calque"}, -{"id": "layer_down", "title": "Descendre le calque"}, -{"id": "layer_new", "title": "Nouveau calque"}, -{"id": "layer_rename", "title": "Renommer le calque"}, -{"id": "layer_up", "title": "Monter le calque"}, -{"id": "layersLabel", "textContent": "Calques :"}, -{"id": "line_x1", "title": "Changer la position horizontale x de début de la ligne"}, -{"id": "line_x2", "title": "Changer la position horizontale x de fin de la ligne"}, -{"id": "line_y1", "title": "Changer la position verticale y de début de la ligne"}, -{"id": "line_y2", "title": "Changer la position verticale y de fin de la ligne"}, -{"id": "linecap_butt", "title": "Terminaison : Sur le nœud"}, -{"id": "linecap_round", "title": "Terminaison : Arrondie"}, -{"id": "linecap_square", "title": "Terminaison : Carrée"}, -{"id": "linejoin_bevel", "title": "Raccord : Biseauté"}, -{"id": "linejoin_miter", "title": "Raccord : Droit"}, -{"id": "linejoin_round", "title": "Raccord : Arrondi"}, -{"id": "main_icon", "title": "Menu principal"}, -{"id": "mode_connect", "title": "Connecter deux objets"}, -{"id": "page", "textContent": "Page"}, -{"id": "palette", "title": "Cliquer pour changer la couleur de remplissage, Shift-Clic pour changer la couleur de contour"}, -{"id": "path_node_x", "title": "Changer la positon horizontale x du nœud"}, -{"id": "path_node_y", "title": "Changer la position verticale y du nœud"}, -{"id": "rect_height_tool", "title": "Changer la hauteur du rectangle"}, -{"id": "rect_width_tool", "title": "Changer la largeur du rectangle"}, -{"id": "relativeToLabel", "textContent": "Relativement à:"}, -{"id": "seg_type", "title": "Changer le type du Segment"}, -{"id": "selLayerLabel", "textContent": "Déplacer éléments vers:"}, -{"id": "selLayerNames", "title": "Déplacer les éléments sélectionnés vers un autre calque"}, -{"id": "selectedPredefined", "textContent": "Sélectionner prédéfinis:"}, -{"id": "selected_objects", "textContent": "Objets sélectionnés"}, -{"id": "selected_x", "title": "Changer la position horizontale X"}, -{"id": "selected_y", "title": "Changer la position verticale Y"}, -{"id": "smallest_object", "textContent": "Plus petit objet"}, -{"id": "straight_segments", "textContent": "Droit"}, -{"id": "stroke_color", "title": "Changer la couleur du contour"}, -{"id": "stroke_style", "title": "Changer le style du contour"}, -{"id": "stroke_width", "title": "Changer la largeur du contour de 1, Shift-Click pour changer la largeur de 0.1"}, -{"id": "svginfo_bg_note", "textContent": "Note: La toile de fond n'est pas sauvegardée avec l'image."}, -{"id": "svginfo_change_background", "textContent": "Toile de fond de l'Éditeur"}, -{"id": "svginfo_dim", "textContent": "Dimensions du canevas"}, -{"id": "svginfo_editor_prefs", "textContent": "Préférences de l'Éditeur"}, -{"id": "svginfo_height", "textContent": "Hauteur:"}, -{"id": "svginfo_icons", "textContent": "Taille des icônes"}, -{"id": "svginfo_image_props", "textContent": "Propriétés de l'Image"}, -{"id": "svginfo_lang", "textContent": "Langue"}, -{"id": "svginfo_title", "textContent": "Titre"}, -{"id": "svginfo_width", "textContent": "Largeur:"}, -{"id": "text", "title": "Changer le contenu du texte"}, -{"id": "toggle_stroke_tools", "title": "Montrer/Cacher plus d'outils de Contour"}, -{"id": "tool_add_subpath", "title": "Ajouter un sous-chemin"}, -{"id": "tool_alignbottom", "title": "Aligner le bas des objets"}, -{"id": "tool_aligncenter", "title": "Centrer verticalement"}, -{"id": "tool_alignleft", "title": "Aligner les côtés gauches"}, -{"id": "tool_alignmiddle", "title": "Centrer horizontalement"}, -{"id": "tool_alignright", "title": "Aligner les côtés droits"}, -{"id": "tool_aligntop", "title": "Aligner le haut des objets"}, -{"id": "tool_angle", "title": "Changer l'angle de rotation"}, -{"id": "tool_blur", "title": "Changer la valeur du flou gaussien"}, -{"id": "tool_bold", "title": "Texte en gras"}, -{"id": "tool_circle", "title": "Cercle"}, -{"id": "tool_clear", "textContent": "Nouvelle image"}, -{"id": "tool_clone", "title": "Cloner l'élément"}, -{"id": "tool_clone_multi", "title": "Cloner les éléments"}, -{"id": "tool_delete", "title": "Supprimer l'élément"}, -{"id": "tool_delete_multi", "title": "Supprimer les éléments sélectionnés"}, -{"id": "tool_docprops", "textContent": "Propriétés du document"}, -{"id": "tool_docprops_cancel", "textContent": "Annuler"}, -{"id": "tool_docprops_save", "textContent": "OK"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Exporter au format PNG"}, -{"id": "tool_eyedropper", "title": "Outil Pipette"}, -{"id": "tool_fhellipse", "title": "Ellipse main levée"}, -{"id": "tool_fhpath", "title": "Crayon à main levée"}, -{"id": "tool_fhrect", "title": "Rectangle main levée"}, -{"id": "tool_font_size", "title": "Changer la taille de la police"}, -{"id": "tool_group", "title": "Grouper les éléments"}, -{"id": "tool_image", "title": "Outil Image"}, -{"id": "tool_import", "textContent": "Importer un objet SVG"}, -{"id": "tool_italic", "title": "Texte en italique"}, -{"id": "tool_line", "title": "Tracer des lignes"}, -{"id": "tool_move_bottom", "title": "Déplacer vers le bas"}, -{"id": "tool_move_top", "title": "Déplacer vers le haut"}, -{"id": "tool_node_clone", "title": "Cloner le nœud"}, -{"id": "tool_node_delete", "title": "Supprimer le nœud"}, -{"id": "tool_node_link", "title": "Rendre les points de contrôle solidaires"}, -{"id": "tool_opacity", "title": "Changer l'opacité de l'élément sélectionné"}, -{"id": "tool_open", "textContent": "Ouvrir une image"}, -{"id": "tool_openclose_path", "title": "Ouvrir/Fermer sous-chemin"}, -{"id": "tool_path", "title": "Outil Chemin"}, -{"id": "tool_position", "title": "Aligner l'élément relativement à la Page"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Refaire l'action"}, -{"id": "tool_reorient", "title": "Réorienter le chemin"}, -{"id": "tool_save", "textContent": "Enregistrer l'image"}, -{"id": "tool_select", "title": "Outil de sélection"}, -{"id": "tool_source", "title": "Modifier la source"}, -{"id": "tool_source_cancel", "textContent": "Annuler"}, -{"id": "tool_source_save", "textContent": "Appliquer Modifications"}, -{"id": "tool_square", "title": "Carré"}, -{"id": "tool_text", "title": "Outil Texte"}, -{"id": "tool_topath", "title": "Convertir en chemin"}, -{"id": "tool_undo", "title": "Annuler l'action"}, -{"id": "tool_ungroup", "title": "Dégrouper les éléments"}, -{"id": "tool_wireframe", "title": "Mode Fil de Fer"}, -{"id": "tool_zoom", "title": "Zoom"}, -{"id": "url_notice", "title": "NOTE: Cette image ne peut être incorporée en tant que données. Le contenu affiché sera celui de l'image située à cette adresse"}, -{"id": "zoom_panel", "title": "Changer le niveau de zoom"}, -{"id": "sidepanel_handle", "textContent": "C A L Q U E S", "title": "Tirer vers la gauche/droite pour redimensionner le panneau"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Il y a des erreurs d'analyse syntaxique dans votre code-source SVG.\nRevenir au code-source SVG avant modifications ?", - "QignoreSourceChanges": "Ignorer les modifications faites à la source SVG ?", - "QmoveElemsToLayer": "Déplacer les éléments sélectionnés vers le calque '%s' ?", - "QwantToClear": "Voulez-vous effacer le dessin ?\nL'historique de vos actions sera également effacé !", - "cancel": "Annuler", - "defsFailOnSave": "NOTE : À cause d'un bug de votre navigateur, cette image peut être affichée de façon incorrecte (dégradés ou éléments manquants). Cependant, une fois enregistrée, elle sera correcte.", - "dupeLayerName": "Il existe déjà un calque de ce nom !", - "enterNewImgURL": "Entrer la nouvelle URL de l'image", - "enterNewLayerName": "Veuillez entrer le nouveau nom du calque", - "enterUniqueLayerName": "Veuillez entrer un nom (unique) pour le calque", - "exportNoBlur": "Les éléments ayant du flou gaussien seront affichés sans flou", - "exportNoDashArray": "Les contours seront affichés remplis", - "exportNoImage": "Les éléments Image ne seront pas affichés", - "exportNoText": "Le texte peut être affiché de façon incorrecte", - "exportNoforeignObject": "Les éléments foreignObject se seront pas affichés", - "featNotSupported": "Fonction non supportée", - "invalidAttrValGiven": "Valeur fournie invalide", - "key_backspace": "Suppr.", - "key_del": "Retour Arr.", - "key_down": "Bas", - "key_up": "Haut", - "layer": "Calque", - "layerHasThatName": "Le calque porte déjà ce nom", - "loadingImage": "Chargement de l'image, veuillez patienter...", - "noContentToFitTo": "Il n'y a pas de contenu auquel ajuster", - "noteTheseIssues": "Notez également les problèmes suivants : ", - "ok": "OK", - "pathCtrlPtTooltip": "Glisser-déposer le point de contrôle pour ajuster les propriétés de la courbe", - "pathNodeTooltip": "Glisser-déposer le nœud pour le déplacer. Double-cliquer le nœud pour changer de type de segment", - "saveFromBrowser": "Selectionner \"Enregistrer sous...\" dans votre navigateur pour sauvegarder l'image en tant que fichier %s." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.fy.js b/files_svgedit/js/locale/lang.fy.js deleted file mode 100644 index dd615a324..000000000 --- a/files_svgedit/js/locale/lang.fy.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Útlijne relatyf oan..."}, -{"id": "bkgnd_color", "title": "Eftergrûnkleur/trochsichtigens oanpasse"}, -{"id": "circle_cx", "title": "Feroarje it X-koördinaat fan it middelpunt fan'e sirkel."}, -{"id": "circle_cy", "title": "Feroarje it Y-koördinaat fan it middelpunt fan'e sirkel."}, -{"id": "circle_r", "title": "Feroarje sirkelradius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Hoekeradius oanpasse"}, -{"id": "curve_segments", "textContent": "Bûcht"}, -{"id": "ellipse_cx", "title": "Feroarje it X-koördinaat fan it middelpunt fan'e ellips."}, -{"id": "ellipse_cy", "title": "Feroarje it Y-koördinaat fan it middelpunt fan'e ellips."}, -{"id": "ellipse_rx", "title": "Feroarje ellips X radius"}, -{"id": "ellipse_ry", "title": "Feroarje ellips Y radius"}, -{"id": "fill_color", "title": "Folkleur oanpasse"}, -{"id": "fitToContent", "textContent": "Passe op ynhâld"}, -{"id": "fit_to_all", "textContent": "Op alle ynhâld passe"}, -{"id": "fit_to_canvas", "textContent": "Op kanvas passe"}, -{"id": "fit_to_layer_content", "textContent": "Op laachynhâld passe"}, -{"id": "fit_to_sel", "textContent": "Op seleksje passe"}, -{"id": "font_family", "title": "Lettertype oanpasse"}, -{"id": "icon_large", "textContent": "Grut"}, -{"id": "icon_medium", "textContent": "Middel"}, -{"id": "icon_small", "textContent": "Lyts"}, -{"id": "icon_xlarge", "textContent": "Ekstra grut"}, -{"id": "image_height", "title": "Hichte ôfbielding oanpasse"}, -{"id": "image_opt_embed", "textContent": "Ynformaasje tafoege (lokale triemen)"}, -{"id": "image_opt_ref", "textContent": "Triemreferensje brûke"}, -{"id": "image_url", "title": "URL oanpasse"}, -{"id": "image_width", "title": "Breedte ôfbielding oanpasse"}, -{"id": "includedImages", "textContent": "Ynslúten ôfbieldingen"}, -{"id": "largest_object", "textContent": "Grutste ûnderdiel"}, -{"id": "layer_delete", "title": "Laach fuortsmite"}, -{"id": "layer_down", "title": "Laach omleech bringe"}, -{"id": "layer_new", "title": "Nije laach"}, -{"id": "layer_rename", "title": "Laach omneame"}, -{"id": "layer_up", "title": "Laach omheech bringe"}, -{"id": "layersLabel", "textContent": "Lagen:"}, -{"id": "line_x1", "title": "Feroarje start X koördinaat fan'e line"}, -{"id": "line_x2", "title": "Feroarje ein X koördinaat fan'e line"}, -{"id": "line_y1", "title": "Feroarje start Y koördinaat fan'e line"}, -{"id": "line_y2", "title": "Feroarje ein Y koördinaat fan'e line"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Side"}, -{"id": "palette", "title": "Klik om de folkleur te feroarjen, shift-klik om de linekleur te feroarjen."}, -{"id": "path_node_x", "title": "X-koördinaat knooppunt oanpasse"}, -{"id": "path_node_y", "title": "Y-koördinaat knooppunt oanpasse"}, -{"id": "rect_height_tool", "title": "Hichte rjochthoeke oanpasse"}, -{"id": "rect_width_tool", "title": "Breedte rjochthoeke oanpasse"}, -{"id": "relativeToLabel", "textContent": "Relatief tsjinoer:"}, -{"id": "seg_type", "title": "Segmenttype oanpasse"}, -{"id": "selLayerLabel", "textContent": "Ûnderdielen ferplaate nei:"}, -{"id": "selLayerNames", "title": "Selektearre ûnderdielen ferplaatse nei in oare laach"}, -{"id": "selectedPredefined", "textContent": "Selektearje:"}, -{"id": "selected_objects", "textContent": "Selektearre ûnderdielen"}, -{"id": "selected_x", "title": "X-koördinaat oanpasse"}, -{"id": "selected_y", "title": "Y-koördinaat oanpasse"}, -{"id": "smallest_object", "textContent": "Lytste ûnderdiel"}, -{"id": "straight_segments", "textContent": "Rjocht"}, -{"id": "stroke_color", "title": "Linekleur oanpasse"}, -{"id": "stroke_style", "title": "Linestijl oanpasse"}, -{"id": "stroke_width", "title": "Linebreedte oanpasse"}, -{"id": "svginfo_bg_note", "textContent": "Let op: de eftergrûn wurd net mei de ôfbielding bewarre."}, -{"id": "svginfo_change_background", "textContent": "Eftergrûn bewurker"}, -{"id": "svginfo_dim", "textContent": "Kanvasgrutte"}, -{"id": "svginfo_editor_prefs", "textContent": "Eigenskippen bewurker"}, -{"id": "svginfo_height", "textContent": "Hichte:"}, -{"id": "svginfo_icons", "textContent": "Ikoangrutte"}, -{"id": "svginfo_image_props", "textContent": "Ôfbieldingseigenskippen"}, -{"id": "svginfo_lang", "textContent": "Taal"}, -{"id": "svginfo_title", "textContent": "Titel"}, -{"id": "svginfo_width", "textContent": "Breedte:"}, -{"id": "text", "title": "Tekst oanpasse"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Ûnder útlijne"}, -{"id": "tool_aligncenter", "title": "Midden útlijne"}, -{"id": "tool_alignleft", "title": "Lofts útlijne"}, -{"id": "tool_alignmiddle", "title": "Midden útlijne"}, -{"id": "tool_alignright", "title": "Rjochts útlijne"}, -{"id": "tool_aligntop", "title": "Boppe útlijne"}, -{"id": "tool_angle", "title": "Draaie"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Fet"}, -{"id": "tool_circle", "title": "Sirkel"}, -{"id": "tool_clear", "textContent": "Nije ôfbielding"}, -{"id": "tool_clone", "title": "Ûnderdiel duplisearje"}, -{"id": "tool_clone_multi", "title": "Ûnderdielen duplisearje"}, -{"id": "tool_delete", "title": "Ûnderdiel fuortsmite"}, -{"id": "tool_delete_multi", "title": "Ûnderdielen fuortsmite"}, -{"id": "tool_docprops", "textContent": "Dokuminteigenskippen"}, -{"id": "tool_docprops_cancel", "textContent": "Ôfbrekke"}, -{"id": "tool_docprops_save", "textContent": "Ok"}, -{"id": "tool_ellipse", "title": "Ellips"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Frije ellips"}, -{"id": "tool_fhpath", "title": "Potlead"}, -{"id": "tool_fhrect", "title": "Frije rjochthoeke"}, -{"id": "tool_font_size", "title": "Lettergrutte oanpasse"}, -{"id": "tool_group", "title": "Ûnderdielen groepearje"}, -{"id": "tool_image", "title": "Ôfbielding"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Skean"}, -{"id": "tool_line", "title": "Line"}, -{"id": "tool_move_bottom", "title": "Nei eftergrûn"}, -{"id": "tool_move_top", "title": "Nei foargrûn"}, -{"id": "tool_node_clone", "title": "Knooppunt duplisearje"}, -{"id": "tool_node_delete", "title": "Knooppunt fuortsmite"}, -{"id": "tool_node_link", "title": "Knooppunten keppelje"}, -{"id": "tool_opacity", "title": "Trochsichtigens oanpasse"}, -{"id": "tool_open", "textContent": "Ôfbielding iepenje"}, -{"id": "tool_path", "title": "Paad"}, -{"id": "tool_rect", "title": "Rjochthoeke"}, -{"id": "tool_redo", "title": "Op 'e nij"}, -{"id": "tool_reorient", "title": "Paad opnij orientearje"}, -{"id": "tool_save", "textContent": "Ôfbielding bewarje"}, -{"id": "tool_select", "title": "Selektearje"}, -{"id": "tool_source", "title": "Boarne oanpasse"}, -{"id": "tool_source_cancel", "textContent": "Ôfbrekke"}, -{"id": "tool_source_save", "textContent": "Feroarings tapasse"}, -{"id": "tool_square", "title": "Fjouwerkant"}, -{"id": "tool_text", "title": "Tekst"}, -{"id": "tool_topath", "title": "Omsette nei paad"}, -{"id": "tool_undo", "title": "Ungedien meitjse"}, -{"id": "tool_ungroup", "title": "Groepering opheffe"}, -{"id": "tool_wireframe", "title": "Triemodel"}, -{"id": "tool_zoom", "title": "Zoom"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Yn-/útzoome"}, -{"id": "sidepanel_handle", "textContent": "L a g e n", "title": "Sleep nei links/rjochts om it sidepaniel grutter as lytser te meitjen"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Der wiene flaters yn de SVG-boarne.\nWeromgean nei foarige SVG-boarne?", - "QignoreSourceChanges": "Feroarings yn SVG-boarne negeare?", - "QmoveElemsToLayer": "Selektearre ûnderdielen ferplaatse nei '%s'?", - "QwantToClear": "Ôfbielding leechmeitsje? Dit sil ek de skiednis fuortsmite!", - "cancel": "Ôfbrekke", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "Der is al in laach mei dy namme!", - "enterNewImgURL": "Jou de nije URL", - "enterNewLayerName": "Type in nije laachnamme", - "enterUniqueLayerName": "Type in unyke laachnamme", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Funksje wurdt net ûndersteund", - "invalidAttrValGiven": "Ferkearde waarde jûn", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "omleech", - "key_up": "omheech", - "layer": "Laach", - "layerHasThatName": "Laach hat dy namme al", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "Gjin ynhâld om te passen", - "noteTheseIssues": "Also note the following issues: ", - "ok": "Ok", - "pathCtrlPtTooltip": "Fersleepje dit knooppunt om de boocheigenskippen oan te passen.", - "pathNodeTooltip": "Fersleepje dit knooppunt as dûbelklik om it segmenttype oan te passen.", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ga.js b/files_svgedit/js/locale/lang.ga.js deleted file mode 100644 index 68659a252..000000000 --- a/files_svgedit/js/locale/lang.ga.js +++ /dev/null @@ -1,156 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Ailínigh i gcomparáid leis ..."}, -{"id": "angleLabel", "textContent": "uillinn:"}, -{"id": "bkgnd_color", "title": "Dath cúlra Athraigh / teimhneacht"}, -{"id": "circle_cx", "title": "Athraigh an ciorcal a chomhordú CX"}, -{"id": "circle_cy", "title": "Athraigh an ciorcal a chomhordú ga"}, -{"id": "circle_r", "title": "Athraigh an ciorcal's ga"}, -{"id": "cornerRadiusLabel", "textContent": "Ga Cúinne:"}, -{"id": "cornerRadiusLabel", "title": "Athraigh Dronuilleog Cúinne na Ga"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Athraigh Éilips's CX a chomhordú"}, -{"id": "ellipse_cy", "title": "Athraigh an Éilips a chomhordú ga"}, -{"id": "ellipse_rx", "title": "Éilips Athraigh an gha x"}, -{"id": "ellipse_ry", "title": "Éilips Athraigh an gha y"}, -{"id": "fill_color", "title": "Athraigh an dath a líonadh"}, -{"id": "fill_tool_bottom", "textContent": "líon:"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Laghdaigh do gach ábhar"}, -{"id": "fit_to_canvas", "textContent": "Laghdaigh ar chanbhás"}, -{"id": "fit_to_layer_content", "textContent": "Laghdaigh shraith ábhar a"}, -{"id": "fit_to_sel", "textContent": "Laghdaigh a roghnú"}, -{"id": "font_family", "title": "Athraigh an Cló Teaghlaigh"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "iheightLabel", "textContent": "airde:"}, -{"id": "image_height", "title": "Airde íomhá Athrú"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Athraigh an URL"}, -{"id": "image_width", "title": "Leithead íomhá Athrú"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "iwidthLabel", "textContent": "leithne:"}, -{"id": "largest_object", "textContent": "réad is mó"}, -{"id": "layer_delete", "title": "Scrios Sraith"}, -{"id": "layer_down", "title": "Bog Sraith Síos"}, -{"id": "layer_new", "title": "Sraith Nua"}, -{"id": "layer_rename", "title": "Athainmnigh Sraith"}, -{"id": "layer_up", "title": "Bog Sraith Suas"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Athraigh an líne tosaigh a chomhordú x"}, -{"id": "line_x2", "title": "Athraigh an líne deireadh x chomhordú"}, -{"id": "line_y1", "title": "Athraigh an líne tosaigh a chomhordú y"}, -{"id": "line_y2", "title": "Athrú ar líne deireadh y chomhordú"}, -{"id": "page", "textContent": "leathanach"}, -{"id": "palette", "title": "Cliceáil chun athrú a líonadh dath, aistriú-cliceáil chun dath a athrú stróc"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Airde dronuilleog Athrú"}, -{"id": "rect_width_tool", "title": "Leithead dronuilleog Athrú"}, -{"id": "relativeToLabel", "textContent": "i gcomparáid leis:"}, -{"id": "rheightLabel", "textContent": "Airde:"}, -{"id": "rwidthLabel", "textContent": "leithead:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Roghnaigh réamhshainithe:"}, -{"id": "selected_objects", "textContent": "réada tofa"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "lú réad"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Dath stróc Athrú"}, -{"id": "stroke_style", "title": "Athraigh an stíl Fleasc stróc"}, -{"id": "stroke_tool_bottom", "textContent": "buille:"}, -{"id": "stroke_width", "title": "Leithead stróc Athrú"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Airde:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Leithne:"}, -{"id": "text", "title": "Inneachar Athraigh téacs"}, -{"id": "tool_alignbottom", "title": "Cineál Bun"}, -{"id": "tool_aligncenter", "title": "Ailínigh sa Lár"}, -{"id": "tool_alignleft", "title": "Ailínigh ar Chlé"}, -{"id": "tool_alignmiddle", "title": "Cineál Middle"}, -{"id": "tool_alignright", "title": "Ailínigh ar Dheis"}, -{"id": "tool_aligntop", "title": "Cineál Barr"}, -{"id": "tool_angle", "title": "Uillinn rothlaithe Athrú"}, -{"id": "tool_bold", "title": "Trom Téacs"}, -{"id": "tool_circle", "title": "Ciorcal"}, -{"id": "tool_clear", "textContent": "Íomhá Nua"}, -{"id": "tool_clone", "title": "Eilimint Chlónála"}, -{"id": "tool_clone_multi", "title": "Eilimintí Chlónála"}, -{"id": "tool_delete", "title": "Scrios Eilimint"}, -{"id": "tool_delete_multi", "title": "Eilimintí Roghnaithe Scrios [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Doiciméad Airíonna"}, -{"id": "tool_docprops_cancel", "textContent": "Cealaigh"}, -{"id": "tool_docprops_save", "textContent": "Sábháil"}, -{"id": "tool_ellipse", "title": "Éilips"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Phionsail Uirlis"}, -{"id": "tool_fhrect", "title": "Saor Hand Dronuilleog"}, -{"id": "tool_font_size", "title": "Athraigh Clómhéid"}, -{"id": "tool_group", "title": "Eilimintí Grúpa"}, -{"id": "tool_image", "title": "Íomhá Uirlis"}, -{"id": "tool_italic", "title": "Iodálach Téacs"}, -{"id": "tool_line", "title": "Uirlis Líne"}, -{"id": "tool_move_bottom", "title": "Téigh go Bun"}, -{"id": "tool_move_top", "title": "Téigh go Barr"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Athraigh roghnaithe teimhneacht mír"}, -{"id": "tool_open", "textContent": "Íomhá Oscailte"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Dronuilleog"}, -{"id": "tool_redo", "title": "Athdhéan"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Sábháil Íomhá"}, -{"id": "tool_select", "title": "Roghnaigh Uirlis"}, -{"id": "tool_source", "title": "Cuir Foinse"}, -{"id": "tool_source_cancel", "textContent": "Cealaigh"}, -{"id": "tool_source_save", "textContent": "Sábháil"}, -{"id": "tool_square", "title": "Cearnóg"}, -{"id": "tool_text", "title": "Téacs Uirlis"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Cealaigh"}, -{"id": "tool_ungroup", "title": "Eilimintí Díghrúpáil"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zúmáil Uirlis"}, -{"id": "zoomLabel", "textContent": "súmáil isteach:"}, -{"id": "zoom_panel", "title": "Athraigh súmáil leibhéal"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "noContentToFitTo": "No content to fit to", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type" - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.gl.js b/files_svgedit/js/locale/lang.gl.js deleted file mode 100644 index 0d7fe2a19..000000000 --- a/files_svgedit/js/locale/lang.gl.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Aliñar en relación a ..."}, -{"id": "bkgnd_color", "title": "Mudar a cor de fondo / Opacidade"}, -{"id": "circle_cx", "title": "Cx Cambiar círculo de coordenadas"}, -{"id": "circle_cy", "title": "Círculo Cambio cy coordinar"}, -{"id": "circle_r", "title": "Cambiar círculo de raio"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Cambiar Corner Rectangle Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Cambiar elipse cx coordinar"}, -{"id": "ellipse_cy", "title": "Elipse Cambio cy coordinar"}, -{"id": "ellipse_rx", "title": "Raios X Change elipse"}, -{"id": "ellipse_ry", "title": "Radio y Change elipse"}, -{"id": "fill_color", "title": "Cambia-la cor de recheo"}, -{"id": "fitToContent", "textContent": "Axustar ó contido"}, -{"id": "fit_to_all", "textContent": "Axustar a todo o contido"}, -{"id": "fit_to_canvas", "textContent": "Axustar a pantalla"}, -{"id": "fit_to_layer_content", "textContent": "Axustar o contido da capa de"}, -{"id": "fit_to_sel", "textContent": "Axustar a selección"}, -{"id": "font_family", "title": "Cambiar fonte Familia"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Cambiar altura da imaxe"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Cambiar URL"}, -{"id": "image_width", "title": "Cambiar o ancho da imaxe"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "maior obxecto"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move capa inferior"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Capas:"}, -{"id": "line_x1", "title": "Cambie a liña de partida coordenada x"}, -{"id": "line_x2", "title": "Cambie a liña acaba coordenada x"}, -{"id": "line_y1", "title": "Cambio na liña do recurso coordinada y"}, -{"id": "line_y2", "title": "Salto de liña acaba coordinada y"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Portada"}, -{"id": "palette", "title": "Preme aquí para cambiar a cor de recheo, Shift-clic para cambiar a cor do curso"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Cambiar altura do rectángulo"}, -{"id": "rect_width_tool", "title": "Cambiar a largo rectángulo"}, -{"id": "relativeToLabel", "textContent": "en relación ao:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Seleccione por defecto:"}, -{"id": "selected_objects", "textContent": "obxectos elixidos"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "menor obxecto"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Cambiar a cor do curso"}, -{"id": "stroke_style", "title": "Modifica o estilo do trazo do curso"}, -{"id": "stroke_width", "title": "Cambiar o ancho do curso"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Altura:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Ancho:"}, -{"id": "text", "title": "Cambiar o contido de texto"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align bottom"}, -{"id": "tool_aligncenter", "title": "Centrar"}, -{"id": "tool_alignleft", "title": "Aliñar á Esquerda"}, -{"id": "tool_alignmiddle", "title": "Aliñar Medio"}, -{"id": "tool_alignright", "title": "Aliñar á Dereita"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Cambiar o ángulo de xiro"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Nova Imaxe"}, -{"id": "tool_clone", "title": "Clon Element"}, -{"id": "tool_clone_multi", "title": "Elementos Clon"}, -{"id": "tool_delete", "title": "Eliminar Elemento"}, -{"id": "tool_delete_multi", "title": "Eliminar elementos seleccionados"}, -{"id": "tool_docprops", "textContent": "Propriedades do Documento"}, -{"id": "tool_docprops_cancel", "textContent": "Cancelar"}, -{"id": "tool_docprops_save", "textContent": "Gardar"}, -{"id": "tool_ellipse", "title": "Elipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Ferramenta Lapis"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Mudar tamaño de letra"}, -{"id": "tool_group", "title": "Elementos do grupo"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Texto en cursiva"}, -{"id": "tool_line", "title": "Ferramenta Liña"}, -{"id": "tool_move_bottom", "title": "Move a Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Cambia a opacidade elemento seleccionado"}, -{"id": "tool_open", "textContent": "Abrir Imaxe"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rectángulo"}, -{"id": "tool_redo", "title": "Volver"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Gardar Imaxe"}, -{"id": "tool_select", "title": "Seleccionar a ferramenta"}, -{"id": "tool_source", "title": "Fonte Editar"}, -{"id": "tool_source_cancel", "textContent": "Cancelar"}, -{"id": "tool_source_save", "textContent": "Gardar"}, -{"id": "tool_square", "title": "Cadrado"}, -{"id": "tool_text", "title": "Ferramenta de Texto"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Desfacer"}, -{"id": "tool_ungroup", "title": "Elementos Desagrupadas"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Cambiar o nivel de zoom"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.he.js b/files_svgedit/js/locale/lang.he.js deleted file mode 100755 index 42f1a8186..000000000 --- a/files_svgedit/js/locale/lang.he.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "יישור ביחס ..."}, -{"id": "bkgnd_color", "title": "שנה את צבע הרקע / אטימות"}, -{"id": "circle_cx", "title": "CX מעגל של שנה לתאם"}, -{"id": "circle_cy", "title": "מעגל שנה של cy לתאם"}, -{"id": "circle_r", "title": "מעגל שנה של רדיוס"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "לשנות מלבן פינת רדיוס"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "שינוי של אליפסה CX לתאם"}, -{"id": "ellipse_cy", "title": "אליפסה שינוי של cy לתאם"}, -{"id": "ellipse_rx", "title": "אליפסה שינוי של רדיוס x"}, -{"id": "ellipse_ry", "title": "אליפסה שינוי של Y רדיוס"}, -{"id": "fill_color", "title": "שינוי צבע מילוי"}, -{"id": "fitToContent", "textContent": "התאם תוכן"}, -{"id": "fit_to_all", "textContent": "התאם התכנים"}, -{"id": "fit_to_canvas", "textContent": "התאם בד"}, -{"id": "fit_to_layer_content", "textContent": "מתאים לתוכן שכבת"}, -{"id": "fit_to_sel", "textContent": "התאם הבחירה"}, -{"id": "font_family", "title": "שינוי גופן משפחה"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "שינוי גובה התמונה"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "שינוי כתובת"}, -{"id": "image_width", "title": "שינוי רוחב התמונה"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "האובייקט הגדול"}, -{"id": "layer_delete", "title": "מחיקת שכבה"}, -{"id": "layer_down", "title": "הזז למטה שכבה"}, -{"id": "layer_new", "title": "שכבהחדשה"}, -{"id": "layer_rename", "title": "שינוי שם שכבה"}, -{"id": "layer_up", "title": "העבר שכבה Up"}, -{"id": "layersLabel", "textContent": "שכבות:"}, -{"id": "line_x1", "title": "שינוי קו ההתחלה של x לתאם"}, -{"id": "line_x2", "title": "שינוי קו הסיום של x לתאם"}, -{"id": "line_y1", "title": "שינוי קו ההתחלה של Y לתאם"}, -{"id": "line_y2", "title": "שינוי קו הסיום של Y לתאם"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "דף"}, -{"id": "palette", "title": "לחץ כדי לשנות צבע מילוי, לחץ על Shift-לשנות צבע שבץ"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "שינוי גובה המלבן"}, -{"id": "rect_width_tool", "title": "שינוי רוחב המלבן"}, -{"id": "relativeToLabel", "textContent": "יחסית:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "בחר מוגדרים מראש:"}, -{"id": "selected_objects", "textContent": "elected objects"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "הקטן אובייקט"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "שינוי צבע שבץ"}, -{"id": "stroke_style", "title": "דש שבץ שינוי סגנון"}, -{"id": "stroke_width", "title": "שינוי רוחב שבץ"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "גובה:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "רוחב:"}, -{"id": "text", "title": "שינוי תוכן טקסט"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "יישור תחתון"}, -{"id": "tool_aligncenter", "title": "ישור לאמצע"}, -{"id": "tool_alignleft", "title": "יישור לשמאל"}, -{"id": "tool_alignmiddle", "title": "יישור התיכון"}, -{"id": "tool_alignright", "title": "יישור לימין"}, -{"id": "tool_aligntop", "title": "יישור למעלה"}, -{"id": "tool_angle", "title": "שינוי זווית הסיבוב"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "טקסט מודגש"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "תמונה חדשה"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "אלמנטים המשובטים"}, -{"id": "tool_delete", "title": "מחיקת אלמנט"}, -{"id": "tool_delete_multi", "title": "אלמנטים נבחרים מחק"}, -{"id": "tool_docprops", "textContent": "מאפייני מסמך"}, -{"id": "tool_docprops_cancel", "textContent": "ביטול"}, -{"id": "tool_docprops_save", "textContent": "לשמור"}, -{"id": "tool_ellipse", "title": "אליפסה"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand אליפסה"}, -{"id": "tool_fhpath", "title": "כלי העיפרון"}, -{"id": "tool_fhrect", "title": "Free-Hand מלבן"}, -{"id": "tool_font_size", "title": "שנה גודל גופן"}, -{"id": "tool_group", "title": "אלמנטים הקבוצה"}, -{"id": "tool_image", "title": "כלי תמונה"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "טקסט נטוי"}, -{"id": "tool_line", "title": "כלי הקו"}, -{"id": "tool_move_bottom", "title": "הזז למטה"}, -{"id": "tool_move_top", "title": "עבור לראש הדף"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "שינוי הפריט הנבחר אטימות"}, -{"id": "tool_open", "textContent": "פתח תמונה"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "מלבן"}, -{"id": "tool_redo", "title": "בצע שוב"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "שמור תמונה"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "מקור ערוך"}, -{"id": "tool_source_cancel", "textContent": "ביטול"}, -{"id": "tool_source_save", "textContent": "לשמור"}, -{"id": "tool_square", "title": "מרובע"}, -{"id": "tool_text", "title": "כלי טקסט"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "בטל"}, -{"id": "tool_ungroup", "title": "אלמנטים פרק קבוצה"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "זום כלי"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "שינוי גודל תצוגה"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.hi.js b/files_svgedit/js/locale/lang.hi.js deleted file mode 100644 index 754028013..000000000 --- a/files_svgedit/js/locale/lang.hi.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "संरेखित करें रिश्तेदार को ..."}, -{"id": "bkgnd_color", "title": "पृष्ठभूमि का रंग बदल / अस्पष्टता"}, -{"id": "circle_cx", "title": "बदल रहा है चक्र cx समन्वय"}, -{"id": "circle_cy", "title": "परिवर्तन चक्र cy समन्वय है"}, -{"id": "circle_r", "title": "बदल रहा है चक्र त्रिज्या"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "कोने का रेडियस"}, -{"id": "cornerRadiusLabel", "title": "बदलें आयत कॉर्नर त्रिज्या"}, -{"id": "curve_segments", "textContent": "घुमाव"}, -{"id": "ellipse_cx", "title": "बदलें दीर्घवृत्त है cx समन्वय"}, -{"id": "ellipse_cy", "title": "बदलें दीर्घवृत्त cy समन्वय है"}, -{"id": "ellipse_rx", "title": "बदल रहा है दीर्घवृत्त x त्रिज्या"}, -{"id": "ellipse_ry", "title": "बदल रहा है दीर्घवृत्त y त्रिज्या"}, -{"id": "fill_color", "title": "बदलें का रंग भरना"}, -{"id": "fitToContent", "textContent": "सामग्री के लिए फिट"}, -{"id": "fit_to_all", "textContent": "सभी सामग्री के लिए फिट"}, -{"id": "fit_to_canvas", "textContent": "फिट कैनवास को"}, -{"id": "fit_to_layer_content", "textContent": "फिट परत सामग्री के लिए"}, -{"id": "fit_to_sel", "textContent": "चयन के लिए फिट"}, -{"id": "font_family", "title": "बदलें फ़ॉन्ट परिवार"}, -{"id": "icon_large", "textContent": "बड़ा"}, -{"id": "icon_medium", "textContent": "मध्यम"}, -{"id": "icon_small", "textContent": "छोटा"}, -{"id": "icon_xlarge", "textContent": "बहुत बड़ा"}, -{"id": "image_height", "title": "बदलें छवि ऊँचाई"}, -{"id": "image_opt_embed", "textContent": "एम्बेड डेटा (स्थानीय फ़ाइलें)"}, -{"id": "image_opt_ref", "textContent": "फाइल के संदर्भ का प्रयोग"}, -{"id": "image_url", "title": "बदलें यूआरएल"}, -{"id": "image_width", "title": "बदलें छवि चौड़ाई"}, -{"id": "includedImages", "textContent": "शामिल छवियाँ"}, -{"id": "largest_object", "textContent": "सबसे बड़ी वस्तु"}, -{"id": "layer_delete", "title": "परत हटाएँ"}, -{"id": "layer_down", "title": "परत नीचे ले जाएँ"}, -{"id": "layer_new", "title": "नई परत"}, -{"id": "layer_rename", "title": "परत का नाम बदलें"}, -{"id": "layer_up", "title": "परत ऊपर ले जाएँ"}, -{"id": "layersLabel", "textContent": "परतें:"}, -{"id": "line_x1", "title": "बदल रहा है लाइन x समन्वय शुरू"}, -{"id": "line_x2", "title": "बदल रहा है लाइन x समन्वय समाप्त"}, -{"id": "line_y1", "title": "बदलें रेखा y शुरू हो रहा है समन्वय"}, -{"id": "line_y2", "title": "बदलें रेखा y अंत है समन्वय"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "पृष्ठ"}, -{"id": "palette", "title": "रंग बदलने पर क्लिक करें, बदलाव भरने के क्लिक करने के लिए स्ट्रोक का रंग बदलने के लिए"}, -{"id": "path_node_x", "title": "नोड का x समकक्ष बदलें"}, -{"id": "path_node_y", "title": "नोड का y समकक्ष बदलें"}, -{"id": "rect_height_tool", "title": "बदलें आयत ऊंचाई"}, -{"id": "rect_width_tool", "title": "बदलें आयत चौड़ाई"}, -{"id": "relativeToLabel", "textContent": "रिश्तेदार को:"}, -{"id": "seg_type", "title": "वर्ग प्रकार बदलें"}, -{"id": "selLayerLabel", "textContent": "अंश को ले जाएँ:"}, -{"id": "selLayerNames", "title": "चयनित अंश को दूसरी परत पर ले जाएँ"}, -{"id": "selectedPredefined", "textContent": "चुनें पूर्वनिर्धारित:"}, -{"id": "selected_objects", "textContent": "निर्वाचित वस्तुओं"}, -{"id": "selected_x", "title": "X समकक्ष बदलें "}, -{"id": "selected_y", "title": "Y समकक्ष बदलें"}, -{"id": "smallest_object", "textContent": "छोटी से छोटी वस्तु"}, -{"id": "straight_segments", "textContent": "सीधे वर्ग"}, -{"id": "stroke_color", "title": "बदलें स्ट्रोक रंग"}, -{"id": "stroke_style", "title": "बदलें स्ट्रोक डेश शैली"}, -{"id": "stroke_width", "title": "बदलें स्ट्रोक चौड़ाई"}, -{"id": "svginfo_bg_note", "textContent": "नोट: पृष्ठभूमि छवि के साथ नहीं बचायी जाएगी"}, -{"id": "svginfo_change_background", "textContent": "संपादक पृष्ठभूमि"}, -{"id": "svginfo_dim", "textContent": "कैनवास आयाम"}, -{"id": "svginfo_editor_prefs", "textContent": "संपादक वरीयताएँ"}, -{"id": "svginfo_height", "textContent": "ऊँचाई:"}, -{"id": "svginfo_icons", "textContent": "चिह्न का आकार"}, -{"id": "svginfo_image_props", "textContent": "छवि के गुण"}, -{"id": "svginfo_lang", "textContent": "भाषा"}, -{"id": "svginfo_title", "textContent": "शीर्षक"}, -{"id": "svginfo_width", "textContent": "चौड़ाई:"}, -{"id": "text", "title": "बदलें पाठ सामग्री"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "तलमेंपंक्तिबद्धकरें"}, -{"id": "tool_aligncenter", "title": "मध्य में समंजित करें"}, -{"id": "tool_alignleft", "title": " पंक्तिबद्ध करें"}, -{"id": "tool_alignmiddle", "title": "मध्य संरेखित करें"}, -{"id": "tool_alignright", "title": "दायाँपंक्तिबद्धकरें"}, -{"id": "tool_aligntop", "title": "शीर्षमेंपंक्तिबद्धकरें"}, -{"id": "tool_angle", "title": "बदलें रोटेशन कोण"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "मोटा पाठ"}, -{"id": "tool_circle", "title": "वृत्त"}, -{"id": "tool_clear", "textContent": "नई छवि"}, -{"id": "tool_clone", "title": "क्लोन अंश"}, -{"id": "tool_clone_multi", "title": "क्लोन अंश को"}, -{"id": "tool_delete", "title": "हटाएँ "}, -{"id": "tool_delete_multi", "title": "हटाएँ चयनित अंश"}, -{"id": "tool_docprops", "textContent": "दस्तावेज़ गुण"}, -{"id": "tool_docprops_cancel", "textContent": "रद्द करें"}, -{"id": "tool_docprops_save", "textContent": "बचाना"}, -{"id": "tool_ellipse", "title": "दीर्घवृत्त"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "नि: शुल्क हाथ दीर्घवृत्त"}, -{"id": "tool_fhpath", "title": "पेंसिल उपकरण"}, -{"id": "tool_fhrect", "title": "नि: शुल्क हाथ आयत"}, -{"id": "tool_font_size", "title": "फ़ॉन्ट का आकार बदलें"}, -{"id": "tool_group", "title": "समूह तत्वों"}, -{"id": "tool_image", "title": "छवि उपकरण"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "इटैलिक पाठ"}, -{"id": "tool_line", "title": "लाइन उपकरण"}, -{"id": "tool_move_bottom", "title": "नीचे ले जाएँ"}, -{"id": "tool_move_top", "title": "ऊपर ले जाएँ"}, -{"id": "tool_node_clone", "title": "नोड क्लोन"}, -{"id": "tool_node_delete", "title": "नोड हटायें"}, -{"id": "tool_node_link", "title": "कड़ी नियंत्रण बिंदु"}, -{"id": "tool_opacity", "title": "पारदर्शिता बदलें"}, -{"id": "tool_open", "textContent": "छवि खोलें"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "आयत"}, -{"id": "tool_redo", "title": "फिर से करें"}, -{"id": "tool_reorient", "title": "पथ को नई दिशा दें"}, -{"id": "tool_save", "textContent": "सहेजें छवि"}, -{"id": "tool_select", "title": "उपकरण चुनें"}, -{"id": "tool_source", "title": "स्रोत में बदलाव करें"}, -{"id": "tool_source_cancel", "textContent": "रद्द करें"}, -{"id": "tool_source_save", "textContent": "बचाना"}, -{"id": "tool_square", "title": "वर्ग"}, -{"id": "tool_text", "title": "पाठ उपकरण"}, -{"id": "tool_topath", "title": "पथ में बदलें"}, -{"id": "tool_undo", "title": "पूर्ववत करें"}, -{"id": "tool_ungroup", "title": "अंश को समूह से अलग करें"}, -{"id": "tool_wireframe", "title": "रूपरेखा मोड"}, -{"id": "tool_zoom", "title": "ज़ूम उपकरण"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "बदलें स्तर ज़ूम"}, -{"id": "sidepanel_handle", "textContent": "प र तें", "title": "दायें/बाएं घसीट कर आकार बदलें"}, -{ - "js_strings": { - "QerrorsRevertToSource": "आपके एस.वी.जी. स्रोत में त्रुटियों थी.\nक्या आप मूल एस.वी.जी स्रोत पर वापिस जाना चाहते हैं?", - "QignoreSourceChanges": "एसवीजी स्रोत से लाये बदलावों को ध्यान न दें?", - "QmoveElemsToLayer": "चयनित अंश को परत '%s' पर ले जाएँ ?", - "QwantToClear": "क्या आप छवि साफ़ करना चाहते हैं?\nयह आपके उन्डू इतिहास को भी मिटा देगा!", - "cancel": "रद्द करें", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "इस नाम कि परत पहले से मौजूद है !", - "enterNewImgURL": "नई छवि URL दर्ज करें", - "enterNewLayerName": "कृपया परत का एक नया नाम डालें", - "enterUniqueLayerName": "कृपया परत का एक अद्वितीय नाम डालें", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "सुविधा असमर्थित है", - "invalidAttrValGiven": "अमान्य मूल्य", - "key_backspace": "बैकस्पेस", - "key_del": "हटायें", - "key_down": "नीचे", - "key_up": "ऊपर", - "layer": "परत", - "layerHasThatName": "परत का पहले से ही यही नाम है", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "कोई सामग्री फिट करने के लिए उपलब्ध नहीं", - "noteTheseIssues": "Also note the following issues: ", - "ok": "ठीक", - "pathCtrlPtTooltip": "नियंत्रण बिंदु को खींचें, घुमाव के गुणो समायोजित करने के लिए", - "pathNodeTooltip": "नोड खींचें उसे हिलाने के लिए. डबल-क्लिक कीजिये वर्ग के प्रकार को बदलने के लिए", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.hr.js b/files_svgedit/js/locale/lang.hr.js deleted file mode 100644 index 59e0c90ac..000000000 --- a/files_svgedit/js/locale/lang.hr.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Poravnaj u odnosu na ..."}, -{"id": "bkgnd_color", "title": "Promijeni boju pozadine / neprozirnost"}, -{"id": "circle_cx", "title": "Promjena krug's CX koordinirati"}, -{"id": "circle_cy", "title": "Cy Promijeni krug je koordinirati"}, -{"id": "circle_r", "title": "Promjena krug je radijusa"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Promijeni Pravokutnik Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Promjena elipsa's CX koordinirati"}, -{"id": "ellipse_cy", "title": "Cy Promijeni elipsa je koordinirati"}, -{"id": "ellipse_rx", "title": "Promijeniti elipsa's x polumjer"}, -{"id": "ellipse_ry", "title": "Promjena elipsa's y polumjer"}, -{"id": "fill_color", "title": "Promjena boje ispune"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Prilagodi na sve sadržaje"}, -{"id": "fit_to_canvas", "textContent": "Prilagodi na platnu"}, -{"id": "fit_to_layer_content", "textContent": "Prilagodi sloj sadržaj"}, -{"id": "fit_to_sel", "textContent": "Prilagodi odabir"}, -{"id": "font_family", "title": "Promjena fontova"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Promijeni sliku visina"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Promijeni URL"}, -{"id": "image_width", "title": "Promijeni sliku širine"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "najveći objekt"}, -{"id": "layer_delete", "title": "Brisanje sloja"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Preimenuj Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Promijeni linija je početak x koordinatu"}, -{"id": "line_x2", "title": "Promjena linije završetak x koordinatu"}, -{"id": "line_y1", "title": "Promijeni linija je početak y koordinatu"}, -{"id": "line_y2", "title": "Promjena linije završetak y koordinatu"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "stranica"}, -{"id": "palette", "title": "Kliknite promijeniti boju ispune, shift-click to promijeniti boju moždanog udara"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Promijeni pravokutnik visine"}, -{"id": "rect_width_tool", "title": "Promijeni pravokutnik širine"}, -{"id": "relativeToLabel", "textContent": "u odnosu na:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select predefinirane:"}, -{"id": "selected_objects", "textContent": "izabrani objekti"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "najmanji objekt"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Promjena boje moždani udar"}, -{"id": "stroke_style", "title": "Promijeni stroke crtica stil"}, -{"id": "stroke_width", "title": "Promjena širine moždani udar"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Visina:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Širina:"}, -{"id": "text", "title": "Promjena sadržaja teksta"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Poravnaj dolje"}, -{"id": "tool_aligncenter", "title": "Centriraj"}, -{"id": "tool_alignleft", "title": "Poravnaj lijevo"}, -{"id": "tool_alignmiddle", "title": "Poravnaj Srednji"}, -{"id": "tool_alignright", "title": "Poravnaj desno"}, -{"id": "tool_aligntop", "title": "Poravnaj Top"}, -{"id": "tool_angle", "title": "Promijeni rotation angle"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Podebljani tekst"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Nove slike"}, -{"id": "tool_clone", "title": "Klon Element"}, -{"id": "tool_clone_multi", "title": "Klon Elementi"}, -{"id": "tool_delete", "title": "Brisanje elemenata"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Svojstva dokumenta"}, -{"id": "tool_docprops_cancel", "textContent": "Odustani"}, -{"id": "tool_docprops_save", "textContent": "Spremiti"}, -{"id": "tool_ellipse", "title": "Elipsa"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Pravokutnik"}, -{"id": "tool_font_size", "title": "Change font size"}, -{"id": "tool_group", "title": "Grupa Elementi"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Pomakni na vrh"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Promjena odabrane stavke neprozirnost"}, -{"id": "tool_open", "textContent": "Otvori sliku"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Pravokutnik"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Spremanje slike"}, -{"id": "tool_select", "title": "Odaberite alat"}, -{"id": "tool_source", "title": "Uredi Source"}, -{"id": "tool_source_cancel", "textContent": "Odustani"}, -{"id": "tool_source_save", "textContent": "Spremiti"}, -{"id": "tool_square", "title": "Kvadrat"}, -{"id": "tool_text", "title": "Tekst Alat"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Poništi"}, -{"id": "tool_ungroup", "title": "Razgrupiranje Elementi"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Alat za zumiranje"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Promjena razine zumiranja"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.hu.js b/files_svgedit/js/locale/lang.hu.js deleted file mode 100644 index 9f5d35a44..000000000 --- a/files_svgedit/js/locale/lang.hu.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Képest Igazítás ..."}, -{"id": "bkgnd_color", "title": "Change background color / homályosság"}, -{"id": "circle_cx", "title": "Change kör CX koordináta"}, -{"id": "circle_cy", "title": "Change kör cy koordináta"}, -{"id": "circle_r", "title": "Change kör sugara"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Change téglalap sarok sugara"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Change ellipszis's CX koordináta"}, -{"id": "ellipse_cy", "title": "Change ellipszis's cy koordináta"}, -{"id": "ellipse_rx", "title": "Change ellipszis's x sugarú"}, -{"id": "ellipse_ry", "title": "Change ellipszis's y sugara"}, -{"id": "fill_color", "title": "Change töltse color"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Illeszkednek az összes tartalom"}, -{"id": "fit_to_canvas", "textContent": "Igazítás a vászonra"}, -{"id": "fit_to_layer_content", "textContent": "Igazítás a réteg tartalma"}, -{"id": "fit_to_sel", "textContent": "Igazítás a kiválasztási"}, -{"id": "font_family", "title": "Change Betűcsalád"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Kép módosítása height"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Change kép szélessége"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "legnagyobb objektum"}, -{"id": "layer_delete", "title": "Réteg törlése"}, -{"id": "layer_down", "title": "Mozgatása lefelé"}, -{"id": "layer_new", "title": "Új réteg"}, -{"id": "layer_rename", "title": "Réteg átnevezése"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Rétegből:"}, -{"id": "line_x1", "title": "A sor kezd x koordináta"}, -{"id": "line_x2", "title": "A sor vége az x koordináta"}, -{"id": "line_y1", "title": "A sor kezd y koordináta"}, -{"id": "line_y2", "title": "A sor vége az y koordináta"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Page"}, -{"id": "palette", "title": "Kattints ide a változások töltse szín, shift-click változtatni stroke color"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Change téglalap magassága"}, -{"id": "rect_width_tool", "title": "Change téglalap szélessége"}, -{"id": "relativeToLabel", "textContent": "relatív hogy:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Válassza ki előre definiált:"}, -{"id": "selected_objects", "textContent": "választott tárgyak"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "legkisebb objektum"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change stroke color"}, -{"id": "stroke_style", "title": "Change stroke kötőjel style"}, -{"id": "stroke_width", "title": "Change stroke width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Magasság:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Szélesség:"}, -{"id": "text", "title": "A szöveg tartalma"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Alulra igazítás"}, -{"id": "tool_aligncenter", "title": "Középre igazítás"}, -{"id": "tool_alignleft", "title": "Balra igazítás"}, -{"id": "tool_alignmiddle", "title": "Közép-align"}, -{"id": "tool_alignright", "title": "Jobbra igazítás"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Váltás forgás szög"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Félkövér szöveg"}, -{"id": "tool_circle", "title": "Körbe"}, -{"id": "tool_clear", "textContent": "Új kép"}, -{"id": "tool_clone", "title": "Klónok Element"}, -{"id": "tool_clone_multi", "title": "Klón Elements"}, -{"id": "tool_delete", "title": "Delete Element"}, -{"id": "tool_delete_multi", "title": "A kijelölt elemek"}, -{"id": "tool_docprops", "textContent": "Dokumentum tulajdonságai"}, -{"id": "tool_docprops_cancel", "textContent": "Szakítani"}, -{"id": "tool_docprops_save", "textContent": "Ment"}, -{"id": "tool_ellipse", "title": "Ellipszisszelet"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Ceruza eszköz"}, -{"id": "tool_fhrect", "title": "Free-Hand téglalap"}, -{"id": "tool_font_size", "title": "Change font size"}, -{"id": "tool_group", "title": "Csoport elemei"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Dőlt szöveg"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Mozgatás lefelé"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "A kijelölt elem opacity"}, -{"id": "tool_open", "textContent": "Kép megnyitása"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Téglalapban"}, -{"id": "tool_redo", "title": "Megismétléséhez"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Kép mentése más"}, -{"id": "tool_select", "title": "Válassza ki az eszközt"}, -{"id": "tool_source", "title": "Szerkesztés Forrás"}, -{"id": "tool_source_cancel", "textContent": "Szakítani"}, -{"id": "tool_source_save", "textContent": "Ment"}, -{"id": "tool_square", "title": "Négyzetes"}, -{"id": "tool_text", "title": "Szöveg eszköz"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Visszavon"}, -{"id": "tool_ungroup", "title": "Szétbont elemei"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Change nagyítási"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.hy.js b/files_svgedit/js/locale/lang.hy.js deleted file mode 100644 index 08cffbee7..000000000 --- a/files_svgedit/js/locale/lang.hy.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Align relative to ..."}, -{"id": "bkgnd_color", "title": "Change background color/opacity"}, -{"id": "circle_cx", "title": "Change circle's cx coordinate"}, -{"id": "circle_cy", "title": "Change circle's cy coordinate"}, -{"id": "circle_r", "title": "Change circle's radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Change Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Change ellipse's cx coordinate"}, -{"id": "ellipse_cy", "title": "Change ellipse's cy coordinate"}, -{"id": "ellipse_rx", "title": "Change ellipse's x radius"}, -{"id": "ellipse_ry", "title": "Change ellipse's y radius"}, -{"id": "fill_color", "title": "Change fill color"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit to all content"}, -{"id": "fit_to_canvas", "textContent": "Fit to canvas"}, -{"id": "fit_to_layer_content", "textContent": "Fit to layer content"}, -{"id": "fit_to_sel", "textContent": "Fit to selection"}, -{"id": "font_family", "title": "Change Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Change image height"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Change image width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "largest object"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Change line's starting x coordinate"}, -{"id": "line_x2", "title": "Change line's ending x coordinate"}, -{"id": "line_y1", "title": "Change line's starting y coordinate"}, -{"id": "line_y2", "title": "Change line's ending y coordinate"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "page"}, -{"id": "palette", "title": "Click to change fill color, shift-click to change stroke color"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Change rectangle height"}, -{"id": "rect_width_tool", "title": "Change rectangle width"}, -{"id": "relativeToLabel", "textContent": "relative to:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select predefined:"}, -{"id": "selected_objects", "textContent": "elected objects"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "smallest object"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change stroke color"}, -{"id": "stroke_style", "title": "Change stroke dash style"}, -{"id": "stroke_width", "title": "Change stroke width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Height:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Width:"}, -{"id": "text", "title": "Change text contents"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Align Center"}, -{"id": "tool_alignleft", "title": "Align Left"}, -{"id": "tool_alignmiddle", "title": "Align Middle"}, -{"id": "tool_alignright", "title": "Align Right"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Change rotation angle"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Delete Element"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Cancel"}, -{"id": "tool_docprops_save", "textContent": "Save"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Change Font Size"}, -{"id": "tool_group", "title": "Group Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Change selected item opacity"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Cancel"}, -{"id": "tool_source_save", "textContent": "Save"}, -{"id": "tool_square", "title": "Square"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Change zoom level"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.id.js b/files_svgedit/js/locale/lang.id.js deleted file mode 100644 index 03ef774fe..000000000 --- a/files_svgedit/js/locale/lang.id.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Rata relatif ..."}, -{"id": "bkgnd_color", "title": "Mengubah warna latar belakang / keburaman"}, -{"id": "circle_cx", "title": "Mengubah koordinat lingkaran cx"}, -{"id": "circle_cy", "title": "Mengubah koordinat cy lingkaran"}, -{"id": "circle_r", "title": "Ubah jari-jari lingkaran"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Ubah Corner Rectangle Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Ubah elips's cx koordinat"}, -{"id": "ellipse_cy", "title": "Ubah elips's cy koordinat"}, -{"id": "ellipse_rx", "title": "Ubah elips's x jari-jari"}, -{"id": "ellipse_ry", "title": "Ubah elips's y jari-jari"}, -{"id": "fill_color", "title": "Ubah warna mengisi"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Cocok untuk semua konten"}, -{"id": "fit_to_canvas", "textContent": "Muat kanvas"}, -{"id": "fit_to_layer_content", "textContent": "Muat konten lapisan"}, -{"id": "fit_to_sel", "textContent": "Fit seleksi"}, -{"id": "font_family", "title": "Ubah Font Keluarga"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Tinggi gambar Perubahan"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Ubah URL"}, -{"id": "image_width", "title": "Ubah Lebar gambar"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "objek terbesar"}, -{"id": "layer_delete", "title": "Hapus Layer"}, -{"id": "layer_down", "title": "Pindahkan Layer Bawah"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Pindahkan Layer Up"}, -{"id": "layersLabel", "textContent": "Lapisan:"}, -{"id": "line_x1", "title": "Ubah baris mulai x koordinat"}, -{"id": "line_x2", "title": "Ubah baris's Berakhir x koordinat"}, -{"id": "line_y1", "title": "Ubah baris mulai y koordinat"}, -{"id": "line_y2", "title": "Ubah baris di tiap akhir y koordinat"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Halaman"}, -{"id": "palette", "title": "Klik untuk mengubah warna mengisi, shift-klik untuk mengubah warna stroke"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Perubahan tinggi persegi panjang"}, -{"id": "rect_width_tool", "title": "Ubah persegi panjang lebar"}, -{"id": "relativeToLabel", "textContent": "relatif:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Pilih standar:"}, -{"id": "selected_objects", "textContent": "objek terpilih"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "objek terkecil"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Ubah warna stroke"}, -{"id": "stroke_style", "title": "Ubah gaya dash stroke"}, -{"id": "stroke_width", "title": "Ubah stroke width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Ketinggian:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Lebar:"}, -{"id": "text", "title": "Ubah isi teks"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Rata Bottom"}, -{"id": "tool_aligncenter", "title": "Rata Tengah"}, -{"id": "tool_alignleft", "title": "Rata Kiri"}, -{"id": "tool_alignmiddle", "title": "Rata Tengah"}, -{"id": "tool_alignright", "title": "Rata Kanan"}, -{"id": "tool_aligntop", "title": "Rata Top"}, -{"id": "tool_angle", "title": "Ubah sudut rotasi"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Teks"}, -{"id": "tool_circle", "title": "Lingkaran"}, -{"id": "tool_clear", "textContent": "Gambar Baru"}, -{"id": "tool_clone", "title": "Clone Elemen"}, -{"id": "tool_clone_multi", "title": "Clone Elemen"}, -{"id": "tool_delete", "title": "Hapus Elemen"}, -{"id": "tool_delete_multi", "title": "Hapus Elemen"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Batal"}, -{"id": "tool_docprops_save", "textContent": "Simpan"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Persegi Panjang"}, -{"id": "tool_font_size", "title": "Ubah Ukuran Font"}, -{"id": "tool_group", "title": "Kelompok Elemen"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Teks"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Pindah ke Bawah"}, -{"id": "tool_move_top", "title": "Pindahkan ke Atas"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Mengubah item yang dipilih keburaman"}, -{"id": "tool_open", "textContent": "Membuka Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Pilih Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Batal"}, -{"id": "tool_source_save", "textContent": "Simpan"}, -{"id": "tool_square", "title": "Kotak"}, -{"id": "tool_text", "title": "Teks Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Ungroup Elemen"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Mengubah tingkat pembesaran"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.is.js b/files_svgedit/js/locale/lang.is.js deleted file mode 100644 index 9ad606a0b..000000000 --- a/files_svgedit/js/locale/lang.is.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Jafna miðað við ..."}, -{"id": "bkgnd_color", "title": "Breyta bakgrunnslit / opacity"}, -{"id": "circle_cx", "title": "Cx Breyta hring er að samræma"}, -{"id": "circle_cy", "title": "Breyta hring's cy samræma"}, -{"id": "circle_r", "title": "Radíus Breyta hringsins er"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Breyta rétthyrningur Corner Radíus"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Breyta sporbaug's cx samræma"}, -{"id": "ellipse_cy", "title": "Breyta sporbaug's cy samræma"}, -{"id": "ellipse_rx", "title": "X radíus Breyta sporbaug's"}, -{"id": "ellipse_ry", "title": "Y radíus Breyta sporbaug's"}, -{"id": "fill_color", "title": "Breyta fylla color"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Laga til efni"}, -{"id": "fit_to_canvas", "textContent": "Fit á striga"}, -{"id": "fit_to_layer_content", "textContent": "Laga til lag efni"}, -{"id": "fit_to_sel", "textContent": "Fit til val"}, -{"id": "font_family", "title": "Change Leturfjölskylda"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Breyta mynd hæð"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Breyta URL"}, -{"id": "image_width", "title": "Breyta mynd width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "stærsti hlutinn"}, -{"id": "layer_delete", "title": "Eyða Lag"}, -{"id": "layer_down", "title": "Færa Layer Down"}, -{"id": "layer_new", "title": "Lag"}, -{"id": "layer_rename", "title": "Endurnefna Lag"}, -{"id": "layer_up", "title": "Færa Lag Up"}, -{"id": "layersLabel", "textContent": "Lag:"}, -{"id": "line_x1", "title": "Breyta lína í byrjun x samræma"}, -{"id": "line_x2", "title": "Breyta lína's Ending x samræma"}, -{"id": "line_y1", "title": "Breyta lína í byrjun y samræma"}, -{"id": "line_y2", "title": "Breyta lína er endir y samræma"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "síðu"}, -{"id": "palette", "title": "Smelltu hér til að breyta fylla lit, Shift-smelltu til að breyta högg lit"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Breyta rétthyrningur hæð"}, -{"id": "rect_width_tool", "title": "Skipta rétthyrningur width"}, -{"id": "relativeToLabel", "textContent": "hlutfallslegt til:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Veldu predefined:"}, -{"id": "selected_objects", "textContent": "kjörinn hlutir"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "lítill hluti"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Breyta heilablķđfall color"}, -{"id": "stroke_style", "title": "Breyta heilablķđfall þjóta stíl"}, -{"id": "stroke_width", "title": "Breyta heilablķđfall width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Hæð:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Breidd:"}, -{"id": "text", "title": "Breyta texta innihald"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Jafna Bottom"}, -{"id": "tool_aligncenter", "title": "Jafna Center"}, -{"id": "tool_alignleft", "title": "Vinstri jöfnun"}, -{"id": "tool_alignmiddle", "title": "Jafna Mið"}, -{"id": "tool_alignright", "title": "Hægri jöfnun"}, -{"id": "tool_aligntop", "title": "Jöfnun Top"}, -{"id": "tool_angle", "title": "Breyting snúningur horn"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Eyða Element"}, -{"id": "tool_delete_multi", "title": "Eyða Elements"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Hætta"}, -{"id": "tool_docprops_save", "textContent": "Vista"}, -{"id": "tool_ellipse", "title": "Sporbaugur"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Sporbaugur"}, -{"id": "tool_fhpath", "title": "Blýantur Tól"}, -{"id": "tool_fhrect", "title": "Free-Hand rétthyrningur"}, -{"id": "tool_font_size", "title": "Breyta leturstærð"}, -{"id": "tool_group", "title": "Group Elements"}, -{"id": "tool_image", "title": "Mynd Tól"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Færa Bottom"}, -{"id": "tool_move_top", "title": "Fara efst á síðu"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Breyta valin atriði opacity"}, -{"id": "tool_open", "textContent": "Opna mynd"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rétthyrningur"}, -{"id": "tool_redo", "title": "Endurtaka"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Spara Image"}, -{"id": "tool_select", "title": "Veldu Tól"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Hætta"}, -{"id": "tool_source_save", "textContent": "Vista"}, -{"id": "tool_square", "title": "Ferningur"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Hætta"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Breyta Stækkunarstig"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.it.js b/files_svgedit/js/locale/lang.it.js deleted file mode 100644 index e5a7759ef..000000000 --- a/files_svgedit/js/locale/lang.it.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Allineati alla ..."}, -{"id": "bkgnd_color", "title": "Cambia il colore di sfondo / opacità"}, -{"id": "circle_cx", "title": "Cx cerchio Modifica di coordinate"}, -{"id": "circle_cy", "title": "Cambia's circle CY coordinare"}, -{"id": "circle_r", "title": "Cambia il raggio del cerchio"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Cambia Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Cambia dell'ellisse cx coordinare"}, -{"id": "ellipse_cy", "title": "Ellisse Cambia's CY coordinare"}, -{"id": "ellipse_rx", "title": "Raggio x ellisse Cambia's"}, -{"id": "ellipse_ry", "title": "Raggio y ellisse Cambia's"}, -{"id": "fill_color", "title": "Cambia il colore di riempimento"}, -{"id": "fitToContent", "textContent": "Adatta al contenuto"}, -{"id": "fit_to_all", "textContent": "Adatta a tutti i contenuti"}, -{"id": "fit_to_canvas", "textContent": "Adatta alla tela"}, -{"id": "fit_to_layer_content", "textContent": "Adatta a livello di contenuti"}, -{"id": "fit_to_sel", "textContent": "Adatta alla selezione"}, -{"id": "font_family", "title": "Change Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Cambia l'altezza dell'immagine"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Cambia URL"}, -{"id": "image_width", "title": "Cambia la larghezza dell'immagine"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "il più grande oggetto"}, -{"id": "layer_delete", "title": "Elimina livello"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "Nuovo livello"}, -{"id": "layer_rename", "title": "Rinominare il livello"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Livelli:"}, -{"id": "line_x1", "title": "Modifica la linea di partenza coordinata x"}, -{"id": "line_x2", "title": "Modifica la linea di fine coordinata x"}, -{"id": "line_y1", "title": "Modifica la linea di partenza coordinata y"}, -{"id": "line_y2", "title": "Modifica la linea di fine coordinata y"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Pagina"}, -{"id": "palette", "title": "Fare clic per cambiare il colore di riempimento, shift-click per cambiare colore del tratto"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Cambia l'altezza rettangolo"}, -{"id": "rect_width_tool", "title": "Cambia la larghezza rettangolo"}, -{"id": "relativeToLabel", "textContent": "rispetto al:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Seleziona predefinite:"}, -{"id": "selected_objects", "textContent": "eletto oggetti"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "più piccolo oggetto"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Cambia colore ictus"}, -{"id": "stroke_style", "title": "Cambia lo stile dash ictus"}, -{"id": "stroke_width", "title": "Cambia la larghezza ictus"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Altezza:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Ampiezza:"}, -{"id": "text", "title": "Cambia il contenuto del testo"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Allinea in basso"}, -{"id": "tool_aligncenter", "title": "Allinea al centro"}, -{"id": "tool_alignleft", "title": "Allinea a sinistra"}, -{"id": "tool_alignmiddle", "title": "Allinea al centro"}, -{"id": "tool_alignright", "title": "Allinea a destra"}, -{"id": "tool_aligntop", "title": "Allinea in alto"}, -{"id": "tool_angle", "title": "Cambia l'angolo di rotazione"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Grassetto"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Cancellare l'elemento"}, -{"id": "tool_delete_multi", "title": "Elimina elementi selezionati"}, -{"id": "tool_docprops", "textContent": "Proprietà del documento"}, -{"id": "tool_docprops_cancel", "textContent": "Annulla"}, -{"id": "tool_docprops_save", "textContent": "Salvare"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Lo strumento matita"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Modifica dimensione carattere"}, -{"id": "tool_group", "title": "Group Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Corsivo"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Cambia l'opacità dell'oggetto selezionato"}, -{"id": "tool_open", "textContent": "Apri immagine"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rettangolo"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Salvare l'immagine"}, -{"id": "tool_select", "title": "Selezionare Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Annulla"}, -{"id": "tool_source_save", "textContent": "Salvare"}, -{"id": "tool_square", "title": "Piazza"}, -{"id": "tool_text", "title": "Strumento Testo"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Annulla"}, -{"id": "tool_ungroup", "title": "Separa Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Cambia il livello di zoom"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ja.js b/files_svgedit/js/locale/lang.ja.js deleted file mode 100644 index e0bde6791..000000000 --- a/files_svgedit/js/locale/lang.ja.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "揃える"}, -{"id": "bkgnd_color", "title": "背景色/不透明度の変更"}, -{"id": "circle_cx", "title": "円の中心を変更(X座標)"}, -{"id": "circle_cy", "title": "円の中心を変更(Y座標)"}, -{"id": "circle_r", "title": "変更円の半径"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "角の半径:"}, -{"id": "cornerRadiusLabel", "title": "長方形の角の半径を変更"}, -{"id": "curve_segments", "textContent": "カーブ"}, -{"id": "ellipse_cx", "title": "楕円の中心を変更(X座標)"}, -{"id": "ellipse_cy", "title": "楕円の中心を変更(Y座標)"}, -{"id": "ellipse_rx", "title": "楕円の半径を変更(X座標)"}, -{"id": "ellipse_ry", "title": "楕円の半径を変更(Y座標)"}, -{"id": "fill_color", "title": "塗りの色を変更"}, -{"id": "fitToContent", "textContent": "コンテンツに合わせる"}, -{"id": "fit_to_all", "textContent": "すべてのコンテンツに合わせる"}, -{"id": "fit_to_canvas", "textContent": "キャンバスに合わせる"}, -{"id": "fit_to_layer_content", "textContent": "レイヤー上のコンテンツに合わせる"}, -{"id": "fit_to_sel", "textContent": "選択対象に合わせる"}, -{"id": "font_family", "title": "フォントファミリーの変更"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "画像の高さを変更"}, -{"id": "image_opt_embed", "textContent": "SVGファイルに埋め込む"}, -{"id": "image_opt_ref", "textContent": "画像を参照する"}, -{"id": "image_url", "title": "URLを変更"}, -{"id": "image_width", "title": "画像の幅を変更"}, -{"id": "includedImages", "textContent": "挿入された画像の扱い"}, -{"id": "largest_object", "textContent": "最大のオブジェクト"}, -{"id": "layer_delete", "title": "レイヤの削除"}, -{"id": "layer_down", "title": "レイヤを下へ移動"}, -{"id": "layer_new", "title": "新規レイヤ"}, -{"id": "layer_rename", "title": "レイヤの名前を変更"}, -{"id": "layer_up", "title": "レイヤを上へ移動"}, -{"id": "layersLabel", "textContent": "レイヤ:"}, -{"id": "line_x1", "title": "開始X座標"}, -{"id": "line_x2", "title": "終了X座標"}, -{"id": "line_y1", "title": "開始Y座標"}, -{"id": "line_y2", "title": "終了Y座標"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "ページ"}, -{"id": "palette", "title": "クリックで塗りの色を選択、Shift+クリックで線の色を選択"}, -{"id": "path_node_x", "title": "ノードのX座標を変更"}, -{"id": "path_node_y", "title": "ノードのY座標を変更"}, -{"id": "rect_height_tool", "title": "長方形の高さを変更"}, -{"id": "rect_width_tool", "title": "長方形の幅を変更"}, -{"id": "relativeToLabel", "textContent": "相対:"}, -{"id": "seg_type", "title": "線分の種類を変更"}, -{"id": "selLayerLabel", "textContent": "移動先レイヤ:"}, -{"id": "selLayerNames", "title": "選択対象を別のレイヤに移動"}, -{"id": "selectedPredefined", "textContent": "デフォルト"}, -{"id": "selected_objects", "textContent": "選択オブジェクト"}, -{"id": "selected_x", "title": "X座標を変更"}, -{"id": "selected_y", "title": "Y座標を変更"}, -{"id": "smallest_object", "textContent": "最小のオブジェクト"}, -{"id": "straight_segments", "textContent": "直線"}, -{"id": "stroke_color", "title": "線の色を変更"}, -{"id": "stroke_style", "title": "線種の変更"}, -{"id": "stroke_width", "title": "線幅の変更"}, -{"id": "svginfo_bg_note", "textContent": "※背景色はファイルに保存されません。"}, -{"id": "svginfo_change_background", "textContent": "エディタの背景色"}, -{"id": "svginfo_dim", "textContent": "キャンバスの大きさ"}, -{"id": "svginfo_editor_prefs", "textContent": "エディタの設定"}, -{"id": "svginfo_height", "textContent": "高さ:"}, -{"id": "svginfo_icons", "textContent": "アイコンの大きさ"}, -{"id": "svginfo_image_props", "textContent": "イメージの設定"}, -{"id": "svginfo_lang", "textContent": "言語"}, -{"id": "svginfo_title", "textContent": "タイトル"}, -{"id": "svginfo_width", "textContent": "幅:"}, -{"id": "text", "title": "テキストの内容の変更"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "下揃え"}, -{"id": "tool_aligncenter", "title": "中央揃え"}, -{"id": "tool_alignleft", "title": "左揃え"}, -{"id": "tool_alignmiddle", "title": "中央揃え"}, -{"id": "tool_alignright", "title": "右揃え"}, -{"id": "tool_aligntop", "title": "上揃え"}, -{"id": "tool_angle", "title": "回転角の変更"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "太字"}, -{"id": "tool_circle", "title": "円"}, -{"id": "tool_clear", "textContent": "新規イメージ"}, -{"id": "tool_clone", "title": "複製"}, -{"id": "tool_clone_multi", "title": "選択対象を複製"}, -{"id": "tool_delete", "title": "削除"}, -{"id": "tool_delete_multi", "title": "選択対象を削除"}, -{"id": "tool_docprops", "textContent": "文書のプロパティ"}, -{"id": "tool_docprops_cancel", "textContent": "キャンセル"}, -{"id": "tool_docprops_save", "textContent": "OK"}, -{"id": "tool_ellipse", "title": "楕円"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "フリーハンド楕円"}, -{"id": "tool_fhpath", "title": "鉛筆ツール"}, -{"id": "tool_fhrect", "title": "フリーハンド長方形"}, -{"id": "tool_font_size", "title": "文字サイズの変更"}, -{"id": "tool_group", "title": "グループ化"}, -{"id": "tool_image", "title": "イメージツール"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "イタリック体"}, -{"id": "tool_line", "title": "直線ツール"}, -{"id": "tool_move_bottom", "title": "奥に移動"}, -{"id": "tool_move_top", "title": "手前に移動"}, -{"id": "tool_node_clone", "title": "ノードを複製"}, -{"id": "tool_node_delete", "title": "ノードを削除"}, -{"id": "tool_node_link", "title": "制御点の接続"}, -{"id": "tool_opacity", "title": "不透明度"}, -{"id": "tool_open", "textContent": "イメージを開く"}, -{"id": "tool_path", "title": "パスツール"}, -{"id": "tool_rect", "title": "長方形"}, -{"id": "tool_redo", "title": "やり直し"}, -{"id": "tool_reorient", "title": "現在の角度を0度とする"}, -{"id": "tool_save", "textContent": "画像を保存"}, -{"id": "tool_select", "title": "選択ツール"}, -{"id": "tool_source", "title": "ソースの編集"}, -{"id": "tool_source_cancel", "textContent": "キャンセル"}, -{"id": "tool_source_save", "textContent": "適用"}, -{"id": "tool_square", "title": "正方形"}, -{"id": "tool_text", "title": "テキストツール"}, -{"id": "tool_topath", "title": "パスに変換"}, -{"id": "tool_undo", "title": "元に戻す"}, -{"id": "tool_ungroup", "title": "グループ化を解除"}, -{"id": "tool_wireframe", "title": "ワイヤーフレームで表示 [F]"}, -{"id": "tool_zoom", "title": "ズームツール"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "ズーム倍率の変更"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "ドラッグで幅の調整"}, -{ - "js_strings": { - "QerrorsRevertToSource": "ソースにエラーがあります。\n元のソースに戻しますか?", - "QignoreSourceChanges": "ソースの変更を無視しますか?", - "QmoveElemsToLayer": "選択した要素をレイヤー '%s' に移動しますか?", - "QwantToClear": "キャンバスをクリアしますか?\nアンドゥ履歴も消去されます。", - "cancel": "キャンセル", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "同名のレイヤーが既に存在します。", - "enterNewImgURL": "画像のURLを入力してください。", - "enterNewLayerName": "レイヤの新しい名前を入力してください。", - "enterUniqueLayerName": "新規レイヤの一意な名前を入力してください。", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "機能はサポートされていません。", - "invalidAttrValGiven": "無効な値が指定されています。", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "レイヤ", - "layerHasThatName": "既に同名が付いています。", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "合わせる対象のコンテンツがありません。", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "カーブの形状を調整するには、制御点をドラッグしてください。", - "pathNodeTooltip": "移動するには、ノードをドラッグしてください。ノードをダブルクリックすると線分の種類を変更できます。", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ko.js b/files_svgedit/js/locale/lang.ko.js deleted file mode 100644 index 9c4f322b0..000000000 --- a/files_svgedit/js/locale/lang.ko.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "정렬 상대적으로 ..."}, -{"id": "bkgnd_color", "title": "배경 색상 변경 / 투명도"}, -{"id": "circle_cx", "title": "변경 동그라미 CX는 좌표"}, -{"id": "circle_cy", "title": "동그라미 싸이 변경 조정할 수있어"}, -{"id": "circle_r", "title": "변경 원의 반지름"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "변경 직사각형 코너 반경"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "CX는 타원의 좌표 변경"}, -{"id": "ellipse_cy", "title": "싸이 타원 변경 조정할 수있어"}, -{"id": "ellipse_rx", "title": "변경 타원의 x 반지름"}, -{"id": "ellipse_ry", "title": "변경 타원의 y를 반경"}, -{"id": "fill_color", "title": "채우기 색상 변경"}, -{"id": "fitToContent", "textContent": "맞춤 콘텐츠"}, -{"id": "fit_to_all", "textContent": "맞춤 모든 콘텐츠에"}, -{"id": "fit_to_canvas", "textContent": "맞춤 캔버스"}, -{"id": "fit_to_layer_content", "textContent": "레이어에 맞게 콘텐츠"}, -{"id": "fit_to_sel", "textContent": "맞춤 선택"}, -{"id": "font_family", "title": "글꼴 변경 패밀리"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "이미지 높이 변경"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "URL 변경"}, -{"id": "image_width", "title": "이미지 변경 폭"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "큰 개체"}, -{"id": "layer_delete", "title": "레이어 삭제"}, -{"id": "layer_down", "title": "레이어 아래로 이동"}, -{"id": "layer_new", "title": "새 레이어"}, -{"id": "layer_rename", "title": "레이어 이름 바꾸기"}, -{"id": "layer_up", "title": "레이어 위로 이동"}, -{"id": "layersLabel", "textContent": "레이어:"}, -{"id": "line_x1", "title": "변경 라인의 X 좌표 시작"}, -{"id": "line_x2", "title": "변경 라인의 X 좌표 결말"}, -{"id": "line_y1", "title": "라인 변경 y를 시작 좌표"}, -{"id": "line_y2", "title": "라인 변경 y를 결말의 좌표"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "페이지"}, -{"id": "palette", "title": "색상을 클릭, 근무 시간 채우기 스트로크 색상을 변경하려면 변경하려면"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "사각형의 높이를 변경"}, -{"id": "rect_width_tool", "title": "사각형의 너비 변경"}, -{"id": "relativeToLabel", "textContent": "상대:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "미리 정의된 선택:"}, -{"id": "selected_objects", "textContent": "당선 개체"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "작은 개체"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "뇌졸중으로 색상 변경"}, -{"id": "stroke_style", "title": "뇌졸중 변경 대시 스타일"}, -{"id": "stroke_width", "title": "뇌졸중 너비 변경"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "높이:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "너비:"}, -{"id": "text", "title": "텍스트 변경 내용"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "히프 정렬"}, -{"id": "tool_aligncenter", "title": "정렬 센터"}, -{"id": "tool_alignleft", "title": "왼쪽 정렬"}, -{"id": "tool_alignmiddle", "title": "중간 정렬"}, -{"id": "tool_alignright", "title": "오른쪽 맞춤"}, -{"id": "tool_aligntop", "title": "정렬 탑"}, -{"id": "tool_angle", "title": "회전 각도를 변경"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "굵은 텍스트"}, -{"id": "tool_circle", "title": "동그라미"}, -{"id": "tool_clear", "textContent": "새 이미지"}, -{"id": "tool_clone", "title": "클론 요소"}, -{"id": "tool_clone_multi", "title": "클론 요소"}, -{"id": "tool_delete", "title": "요소 삭제"}, -{"id": "tool_delete_multi", "title": "선택한 요소를 삭제"}, -{"id": "tool_docprops", "textContent": "문서 속성"}, -{"id": "tool_docprops_cancel", "textContent": "취소"}, -{"id": "tool_docprops_save", "textContent": "저장"}, -{"id": "tool_ellipse", "title": "타원"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "자유 핸드 타원"}, -{"id": "tool_fhpath", "title": "연필 도구"}, -{"id": "tool_fhrect", "title": "자유 핸드 직사각형"}, -{"id": "tool_font_size", "title": "글꼴 크기 변경"}, -{"id": "tool_group", "title": "그룹 요소"}, -{"id": "tool_image", "title": "이미지 도구"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "기울임꼴 텍스트"}, -{"id": "tool_line", "title": "선 도구"}, -{"id": "tool_move_bottom", "title": "아래로 이동"}, -{"id": "tool_move_top", "title": "상단으로 이동"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "변경 항목을 선택 불투명도"}, -{"id": "tool_open", "textContent": "오픈 이미지"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "직사각형"}, -{"id": "tool_redo", "title": "재실행"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "이미지 저장"}, -{"id": "tool_select", "title": "선택 도구"}, -{"id": "tool_source", "title": "수정 소스"}, -{"id": "tool_source_cancel", "textContent": "취소"}, -{"id": "tool_source_save", "textContent": "저장"}, -{"id": "tool_square", "title": "정사각형"}, -{"id": "tool_text", "title": "텍스트 도구"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "취소"}, -{"id": "tool_ungroup", "title": "그룹 해제 요소"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "줌 도구"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "변경 수준으로 확대"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.lt.js b/files_svgedit/js/locale/lang.lt.js deleted file mode 100644 index 629bdd5f1..000000000 --- a/files_svgedit/js/locale/lang.lt.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Derinti palyginti ..."}, -{"id": "bkgnd_color", "title": "Pakeisti fono spalvą / drumstumas"}, -{"id": "circle_cx", "title": "Keisti ratas's CX koordinuoti"}, -{"id": "circle_cy", "title": "Keisti ratas's CY koordinuoti"}, -{"id": "circle_r", "title": "Keisti savo apskritimo spindulys"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Keisti stačiakampis skyrelį Spindulys"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Keisti elipse's CX koordinuoti"}, -{"id": "ellipse_cy", "title": "Keisti elipse's CY koordinuoti"}, -{"id": "ellipse_rx", "title": "Keisti elipsė "X spindulys"}, -{"id": "ellipse_ry", "title": "Keisti elipse Y spindulys"}, -{"id": "fill_color", "title": "Keisti užpildyti spalvos"}, -{"id": "fitToContent", "textContent": "Talpinti turinys"}, -{"id": "fit_to_all", "textContent": "Talpinti All content"}, -{"id": "fit_to_canvas", "textContent": "Talpinti drobė"}, -{"id": "fit_to_layer_content", "textContent": "Talpinti sluoksnis turinio"}, -{"id": "fit_to_sel", "textContent": "Talpinti atrankos"}, -{"id": "font_family", "title": "Pakeistišriftą Šeima"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Keisti vaizdo aukštis"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Pakeisti URL"}, -{"id": "image_width", "title": "Keisti paveikslėlio plotis"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "didžiausias objektas"}, -{"id": "layer_delete", "title": "Ištrinti Layer"}, -{"id": "layer_down", "title": "Perkelti sluoksnį Žemyn"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Pervadinti sluoksnį"}, -{"id": "layer_up", "title": "Perkelti sluoksnį Up"}, -{"id": "layersLabel", "textContent": "Sluoksniai:"}, -{"id": "line_x1", "title": "Keisti linijos nuo koordinačių x"}, -{"id": "line_x2", "title": "Keisti linijos baigėsi x koordinuoti"}, -{"id": "line_y1", "title": "Keisti linijos pradžios y koordinačių"}, -{"id": "line_y2", "title": "Keisti linijos baigėsi y koordinačių"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "puslapis"}, -{"id": "palette", "title": "Spustelėkite norėdami keisti užpildo spalvą, perėjimo spustelėkite pakeisti insultas spalva"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Keisti stačiakampio aukščio"}, -{"id": "rect_width_tool", "title": "Pakeisti stačiakampio plotis"}, -{"id": "relativeToLabel", "textContent": "palyginti:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Pasirinkite iš anksto:"}, -{"id": "selected_objects", "textContent": "išrinktas objektai"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "mažiausias objektą"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Keisti insultas spalva"}, -{"id": "stroke_style", "title": "Keisti insultas brūkšnys stilius"}, -{"id": "stroke_width", "title": "Keisti insultas plotis"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Aukštis:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Plotis:"}, -{"id": "text", "title": "Keisti teksto turinys"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Lygiuoti apačioje"}, -{"id": "tool_aligncenter", "title": "Lygiuoti"}, -{"id": "tool_alignleft", "title": "Lygiuoti kairėje"}, -{"id": "tool_alignmiddle", "title": "Suderinti Vidurio"}, -{"id": "tool_alignright", "title": "Lygiuoti dešinėje"}, -{"id": "tool_aligntop", "title": "Lygiuoti viršų"}, -{"id": "tool_angle", "title": "Keisti sukimosi kampas"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Pusjuodis"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Klonas Element"}, -{"id": "tool_clone_multi", "title": "Klonas elementai"}, -{"id": "tool_delete", "title": "Naikinti elementą"}, -{"id": "tool_delete_multi", "title": "Pašalinti pasirinktus elementus"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Atšaukti"}, -{"id": "tool_docprops_save", "textContent": "Saugoti"}, -{"id": "tool_ellipse", "title": "Elipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free Hand Elipsė"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free Hand stačiakampis"}, -{"id": "tool_font_size", "title": "Change font size"}, -{"id": "tool_group", "title": "Elementų grupės"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursyvas"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Perkelti į apačią"}, -{"id": "tool_move_top", "title": "Perkelti į viršų"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Pakeisti pasirinkto elemento neskaidrumo"}, -{"id": "tool_open", "textContent": "Atidaryti atvaizdą"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Stačiakampis"}, -{"id": "tool_redo", "title": "Atstatyti"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Išsaugoti nuotrauką"}, -{"id": "tool_select", "title": "Įrankis"}, -{"id": "tool_source", "title": "Taisyti Šaltinis"}, -{"id": "tool_source_cancel", "textContent": "Atšaukti"}, -{"id": "tool_source_save", "textContent": "Saugoti"}, -{"id": "tool_square", "title": "Aikštė"}, -{"id": "tool_text", "title": "Tekstas Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Atšaukti"}, -{"id": "tool_ungroup", "title": "Išgrupuoti elementai"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Įrankį"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Keisti mastelį"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.lv.js b/files_svgedit/js/locale/lang.lv.js deleted file mode 100644 index 0445a6ef5..000000000 --- a/files_svgedit/js/locale/lang.lv.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Līdzināt, salīdzinot ar ..."}, -{"id": "bkgnd_color", "title": "Change background color / necaurredzamība"}, -{"id": "circle_cx", "title": "Maina aplis's CX koordinēt"}, -{"id": "circle_cy", "title": "Pārmaiņu loks ir cy koordinēt"}, -{"id": "circle_r", "title": "Pārmaiņu loks ir rādiuss"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Maina Taisnstūris Corner Rādiuss"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Mainīt elipses's CX koordinēt"}, -{"id": "ellipse_cy", "title": "Mainīt elipses's cy koordinēt"}, -{"id": "ellipse_rx", "title": "Mainīt elipses's x rādiuss"}, -{"id": "ellipse_ry", "title": "Mainīt elipses's y rādiuss"}, -{"id": "fill_color", "title": "Change aizpildījuma krāsu"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit uz visu saturu"}, -{"id": "fit_to_canvas", "textContent": "Ievietot audekls"}, -{"id": "fit_to_layer_content", "textContent": "Ievietot slānis saturs"}, -{"id": "fit_to_sel", "textContent": "Fit atlases"}, -{"id": "font_family", "title": "Mainīt fonta Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Mainīt attēla augstums"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Mainīt attēla platumu"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "lielākais objekts"}, -{"id": "layer_delete", "title": "Dzēst Layer"}, -{"id": "layer_down", "title": "Pārvietot slāni uz leju"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Pārdēvēt Layer"}, -{"id": "layer_up", "title": "Pārvietot slāni uz augšu"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Mainīt līnijas sākas x koordinēt"}, -{"id": "line_x2", "title": "Mainīt līnijas beigu x koordinēt"}, -{"id": "line_y1", "title": "Mainīt līnijas sākas y koordinātu"}, -{"id": "line_y2", "title": "Mainīt līnijas beigu y koordinātu"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "lapa"}, -{"id": "palette", "title": "Noklikšķiniet, lai mainītu aizpildījuma krāsu, shift-click to mainīt stroke krāsa"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Change Taisnstūra augstums"}, -{"id": "rect_width_tool", "title": "Change taisnstūra platums"}, -{"id": "relativeToLabel", "textContent": "salīdzinājumā ar:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Izvēlieties iepriekš:"}, -{"id": "selected_objects", "textContent": "ievēlēts objekti"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "mazākais objekts"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change stroke krāsa"}, -{"id": "stroke_style", "title": "Maina stroke domuzīme stils"}, -{"id": "stroke_width", "title": "Change stroke platums"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Augstums:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Platums:"}, -{"id": "text", "title": "Mainītu teksta saturs"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Līdzināt Bottom"}, -{"id": "tool_aligncenter", "title": "Līdzināt uz centru"}, -{"id": "tool_alignleft", "title": "Līdzināt pa kreisi"}, -{"id": "tool_alignmiddle", "title": "Līdzināt Middle"}, -{"id": "tool_alignright", "title": "Līdzināt pa labi"}, -{"id": "tool_aligntop", "title": "Līdzināt Top"}, -{"id": "tool_angle", "title": "Mainīt griešanās leņķis"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Klons Element"}, -{"id": "tool_clone_multi", "title": "Klons Elements"}, -{"id": "tool_delete", "title": "Dzēst Element"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Atcelt"}, -{"id": "tool_docprops_save", "textContent": "Glābt"}, -{"id": "tool_ellipse", "title": "Elipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Taisnstūris"}, -{"id": "tool_font_size", "title": "Mainīt fonta izmēru"}, -{"id": "tool_group", "title": "Grupa Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursīvs"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Pārvietot uz leju"}, -{"id": "tool_move_top", "title": "Pārvietot uz augšu"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Mainīt izvēlēto objektu necaurredzamība"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path"}, -{"id": "tool_rect", "title": "Taisnstūris"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Rediģēt Source"}, -{"id": "tool_source_cancel", "textContent": "Atcelt"}, -{"id": "tool_source_save", "textContent": "Glābt"}, -{"id": "tool_square", "title": "Kvadrāts"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Atpogāt"}, -{"id": "tool_ungroup", "title": "Atgrupēt Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Pārmaiņu mērogu"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.mk.js b/files_svgedit/js/locale/lang.mk.js deleted file mode 100644 index 3a8d66658..000000000 --- a/files_svgedit/js/locale/lang.mk.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Порамни во поглед на ..."}, -{"id": "bkgnd_color", "title": "Смени позадина / непроѕирноста"}, -{"id": "circle_cx", "title": "Промена круг на cx координира"}, -{"id": "circle_cy", "title": "Промена круг's cy координираат"}, -{"id": "circle_r", "title": "Промена на круг со радиус"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Промена правоаголник Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Промена елипса's cx координираат"}, -{"id": "ellipse_cy", "title": "Промена на елипса cy координира"}, -{"id": "ellipse_rx", "title": "Промена на елипса x радиус"}, -{"id": "ellipse_ry", "title": "Промена на елипса у радиус"}, -{"id": "fill_color", "title": "Измени пополнете боја"}, -{"id": "fitToContent", "textContent": "Способен да Содржина"}, -{"id": "fit_to_all", "textContent": "Способен да сите содржина"}, -{"id": "fit_to_canvas", "textContent": "Побиране да платно"}, -{"id": "fit_to_layer_content", "textContent": "Способен да слој содржина"}, -{"id": "fit_to_sel", "textContent": "Способен да селекција"}, -{"id": "font_family", "title": "Смени фонт Фамилија"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Промена на слика височина"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Промена URL"}, -{"id": "image_width", "title": "Промена Ширина на сликата"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "најголемиот објект"}, -{"id": "layer_delete", "title": "Избриши Слој"}, -{"id": "layer_down", "title": "Премести слој долу"}, -{"id": "layer_new", "title": "Нов слој"}, -{"id": "layer_rename", "title": "Преименувај слој"}, -{"id": "layer_up", "title": "Премести слој горе"}, -{"id": "layersLabel", "textContent": "Кори:"}, -{"id": "line_x1", "title": "Промена линија почетна x координира"}, -{"id": "line_x2", "title": "Промена линија завршува x координира"}, -{"id": "line_y1", "title": "Промена линија координираат почетна y"}, -{"id": "line_y2", "title": "Промена линија завршува y координира"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "страница"}, -{"id": "palette", "title": "Кликни за да внесете промени бојата, промена клик да се промени бојата удар"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Промена правоаголник височина"}, -{"id": "rect_width_tool", "title": "Промена правоаголник Ширина"}, -{"id": "relativeToLabel", "textContent": "во поглед на:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Изберете предефинирани:"}, -{"id": "selected_objects", "textContent": "избран објекти"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "најмалата објект"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Промена боја на мозочен удар"}, -{"id": "stroke_style", "title": "Промена удар цртичка стил"}, -{"id": "stroke_width", "title": "Промена удар Ширина"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Висина:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Ширина:"}, -{"id": "text", "title": "Промена текст содржина"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Центрирано"}, -{"id": "tool_alignleft", "title": "Порамни лево Порамни"}, -{"id": "tool_alignmiddle", "title": "Израмни Среден"}, -{"id": "tool_alignright", "title": "Порамни десно"}, -{"id": "tool_aligntop", "title": "Израмни почетокот"}, -{"id": "tool_angle", "title": "Change ротација агол"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Задебелен текст"}, -{"id": "tool_circle", "title": "Круг"}, -{"id": "tool_clear", "textContent": "Нови слики"}, -{"id": "tool_clone", "title": "Клон на Element"}, -{"id": "tool_clone_multi", "title": "Клон Елементи"}, -{"id": "tool_delete", "title": "Бришење на елемент"}, -{"id": "tool_delete_multi", "title": "Избриши Избрани Елементи"}, -{"id": "tool_docprops", "textContent": "Својства на документот"}, -{"id": "tool_docprops_cancel", "textContent": "Откажи"}, -{"id": "tool_docprops_save", "textContent": "Зачувува"}, -{"id": "tool_ellipse", "title": "Елипса"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Елипса"}, -{"id": "tool_fhpath", "title": "Алатка за молив"}, -{"id": "tool_fhrect", "title": "Правоаголник слободна рака"}, -{"id": "tool_font_size", "title": "Изменифонт Големина"}, -{"id": "tool_group", "title": "Група на елементи"}, -{"id": "tool_image", "title": "Алатка за сликата"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic текст"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to bottom"}, -{"id": "tool_move_top", "title": "Поместување на почетокот"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Промена избрани ставка непроѕирноста"}, -{"id": "tool_open", "textContent": "Отвори слика"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Правоаголник"}, -{"id": "tool_redo", "title": "Повтори"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Зачувај слика"}, -{"id": "tool_select", "title": "Изберете ја алатката"}, -{"id": "tool_source", "title": "Уреди Извор"}, -{"id": "tool_source_cancel", "textContent": "Откажи"}, -{"id": "tool_source_save", "textContent": "Зачувува"}, -{"id": "tool_square", "title": "Квадрат"}, -{"id": "tool_text", "title": "Алатка за текст"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Врати"}, -{"id": "tool_ungroup", "title": "Ungroup Елементи"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Алатка за зумирање"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Промена зум ниво"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ms.js b/files_svgedit/js/locale/lang.ms.js deleted file mode 100644 index 2df3218f1..000000000 --- a/files_svgedit/js/locale/lang.ms.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Rata relatif ..."}, -{"id": "bkgnd_color", "title": "Mengubah warna latar belakang / keburaman"}, -{"id": "circle_cx", "title": "Mengubah koordinat bulatan cx"}, -{"id": "circle_cy", "title": "Mengubah koordinat cy bulatan"}, -{"id": "circle_r", "title": "Tukar jari-jari lingkaran"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Tukar Corner Rectangle Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Tukar elips's cx koordinat"}, -{"id": "ellipse_cy", "title": "Tukar elips's cy koordinat"}, -{"id": "ellipse_rx", "title": "Tukar elips's x jari-jari"}, -{"id": "ellipse_ry", "title": "Tukar elips's y jari-jari"}, -{"id": "fill_color", "title": "Tukar Warna mengisi"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Cocok untuk semua kandungan"}, -{"id": "fit_to_canvas", "textContent": "Muat kanvas"}, -{"id": "fit_to_layer_content", "textContent": "Muat kandungan lapisan"}, -{"id": "fit_to_sel", "textContent": "Fit seleksi"}, -{"id": "font_family", "title": "Tukar Font Keluarga"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Tinggi gambar Kaca"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Tukar URL"}, -{"id": "image_width", "title": "Tukar Lebar imej"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "objek terbesar"}, -{"id": "layer_delete", "title": "Padam Layer"}, -{"id": "layer_down", "title": "Pindah Layer Bawah"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Pindah Layer Up"}, -{"id": "layersLabel", "textContent": "Lapisan:"}, -{"id": "line_x1", "title": "Ubah baris mulai x koordinat"}, -{"id": "line_x2", "title": "Ubah baris's Berakhir x koordinat"}, -{"id": "line_y1", "title": "Ubah baris mulai y koordinat"}, -{"id": "line_y2", "title": "Ubah baris di tiap akhir y koordinat"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Laman"}, -{"id": "palette", "title": "Klik untuk menukar warna mengisi, shift-klik untuk menukar warna stroke"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Perubahan quality persegi panjang"}, -{"id": "rect_width_tool", "title": "Tukar persegi panjang lebar"}, -{"id": "relativeToLabel", "textContent": "relatif:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Pilih standard:"}, -{"id": "selected_objects", "textContent": "objek terpilih"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "objek terkecil"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Tukar Warna stroke"}, -{"id": "stroke_style", "title": "Tukar gaya dash stroke"}, -{"id": "stroke_width", "title": "Tukar stroke width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Ketinggian:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Lebar:"}, -{"id": "text", "title": "Tukar isi teks"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Rata Bottom"}, -{"id": "tool_aligncenter", "title": "Rata Tengah"}, -{"id": "tool_alignleft", "title": "Rata Kiri"}, -{"id": "tool_alignmiddle", "title": "Rata Tengah"}, -{"id": "tool_alignright", "title": "Rata Kanan"}, -{"id": "tool_aligntop", "title": "Rata Popular"}, -{"id": "tool_angle", "title": "Namakan sudut putaran"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Teks"}, -{"id": "tool_circle", "title": "Lingkaran"}, -{"id": "tool_clear", "textContent": "Imej Baru"}, -{"id": "tool_clone", "title": "Clone Elemen"}, -{"id": "tool_clone_multi", "title": "Clone Elemen"}, -{"id": "tool_delete", "title": "Padam Elemen"}, -{"id": "tool_delete_multi", "title": "Padam Elemen"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Batal"}, -{"id": "tool_docprops_save", "textContent": "Simpan"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Persegi Panjang"}, -{"id": "tool_font_size", "title": "Ubah Saiz Font"}, -{"id": "tool_group", "title": "Kelompok Elemen"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Teks"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Pindah ke Bawah"}, -{"id": "tool_move_top", "title": "Pindah ke Atas"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Mengubah item yang dipilih keburaman"}, -{"id": "tool_open", "textContent": "Membuka Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rectangle"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Pilih Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Batal"}, -{"id": "tool_source_save", "textContent": "Simpan"}, -{"id": "tool_square", "title": "Peti"}, -{"id": "tool_text", "title": "Teks Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Ungroup Elemen"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Mengubah peringkat pembesaran"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.mt.js b/files_svgedit/js/locale/lang.mt.js deleted file mode 100644 index 29f0ed51f..000000000 --- a/files_svgedit/js/locale/lang.mt.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Jallinjaw relattiv għall - ..."}, -{"id": "bkgnd_color", "title": "Bidla fil-kulur fl-isfond / opaċità"}, -{"id": "circle_cx", "title": "CX ċirku Tibdil jikkoordinaw"}, -{"id": "circle_cy", "title": "Ċirku Tibdil cy jikkoordinaw"}, -{"id": "circle_r", "title": "Raġġ ta 'ċirku tal-Bidla"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Bidla Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Bidla ellissi's CX jikkoordinaw"}, -{"id": "ellipse_cy", "title": "Ellissi Tibdil cy jikkoordinaw"}, -{"id": "ellipse_rx", "title": "Raġġ x ellissi Tibdil"}, -{"id": "ellipse_ry", "title": "Raġġ y ellissi Tibdil"}, -{"id": "fill_color", "title": "Bidla imla color"}, -{"id": "fitToContent", "textContent": "Fit għall-kontenut"}, -{"id": "fit_to_all", "textContent": "Tajbin għall-kontenut"}, -{"id": "fit_to_canvas", "textContent": "Xieraq li kanvas"}, -{"id": "fit_to_layer_content", "textContent": "Fit-kontenut ta 'saff għal"}, -{"id": "fit_to_sel", "textContent": "Fit-għażla"}, -{"id": "font_family", "title": "Bidla Font Familja"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Għoli image Bidla"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Bidla URL"}, -{"id": "image_width", "title": "Wisa image Bidla"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "akbar oġġett"}, -{"id": "layer_delete", "title": "Ħassar Layer"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Semmi mill-ġdid Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Saffi:"}, -{"id": "line_x1", "title": "Bidla fil-linja tal-bidu tikkoordina x"}, -{"id": "line_x2", "title": "Linja tal-Bidla li jispiċċa x jikkoordinaw"}, -{"id": "line_y1", "title": "Bidla fil-linja tal-bidu y jikkoordinaw"}, -{"id": "line_y2", "title": "Linja Tibdil jispiċċa y jikkoordinaw"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "paġna"}, -{"id": "palette", "title": "Ikklikkja biex timla l-bidla fil-kulur, ikklikkja-bidla għall-bidla color stroke"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Għoli rettangolu Bidla"}, -{"id": "rect_width_tool", "title": "Wisa 'rettangolu Bidla"}, -{"id": "relativeToLabel", "textContent": "relattiv għall -:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select predefiniti:"}, -{"id": "selected_objects", "textContent": "oġġetti elett"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "iżgħar oġġett"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Color stroke Bidla"}, -{"id": "stroke_style", "title": "Bidla stroke dash stil"}, -{"id": "stroke_width", "title": "Wisa 'puplesija Bidla"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Għoli:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Wisa ':"}, -{"id": "text", "title": "Test kontenut Bidla"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Tallinja Bottom"}, -{"id": "tool_aligncenter", "title": "Tallinja Center"}, -{"id": "tool_alignleft", "title": "Tallinja Left"}, -{"id": "tool_alignmiddle", "title": "Tallinja Nofsani"}, -{"id": "tool_alignright", "title": "Tallinja Dritt"}, -{"id": "tool_aligntop", "title": "Tallinja Top"}, -{"id": "tool_angle", "title": "Angolu ta 'rotazzjoni Bidla"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Test"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Image New"}, -{"id": "tool_clone", "title": "Klonu Element"}, -{"id": "tool_clone_multi", "title": "Klonu Elements"}, -{"id": "tool_delete", "title": "Ħassar Element"}, -{"id": "tool_delete_multi", "title": "Elementi Selected Ħassar"}, -{"id": "tool_docprops", "textContent": "Dokument Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Ikkanċella"}, -{"id": "tool_docprops_save", "textContent": "Save"}, -{"id": "tool_ellipse", "title": "Ellissi"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free Hand-ellissi"}, -{"id": "tool_fhpath", "title": "Lapes Tool"}, -{"id": "tool_fhrect", "title": "Free Hand-Rectangle"}, -{"id": "tool_font_size", "title": "Change font size"}, -{"id": "tool_group", "title": "Grupp Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Test korsiv"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Bidla magħżula opaċità partita"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rettangolu"}, -{"id": "tool_redo", "title": "Jerġa 'jagħmel"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Image Save"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Source Edit"}, -{"id": "tool_source_cancel", "textContent": "Ikkanċella"}, -{"id": "tool_source_save", "textContent": "Save"}, -{"id": "tool_square", "title": "Kwadru"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Jneħħu"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Bidla zoom livell"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.nl.js b/files_svgedit/js/locale/lang.nl.js deleted file mode 100644 index 8c7cd41c2..000000000 --- a/files_svgedit/js/locale/lang.nl.js +++ /dev/null @@ -1,176 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Uitlijnen relatief ten opzichte van ..."}, -{"id": "bkgnd_color", "title": "Verander achtergrond kleur/doorzichtigheid"}, -{"id": "circle_cx", "title": "Verander het X coordinaat van het cirkel middelpunt"}, -{"id": "circle_cy", "title": "Verander het Y coordinaat van het cirkel middelpunt"}, -{"id": "circle_r", "title": "Verander de cirkel radius"}, -{"id": "connector_no_arrow", "textContent": "Geen pijl"}, -{"id": "copyrightLabel", "textContent": "Mogelijk gemaakt door"}, -{"id": "cornerRadiusLabel", "title": "Verander hoekradius rechthoek"}, -{"id": "curve_segments", "textContent": "Gebogen"}, -{"id": "ellipse_cx", "title": "Verander het X coordinaat van het ellips middelpunt"}, -{"id": "ellipse_cy", "title": "Verander het Y coordinaat van het ellips middelpunt"}, -{"id": "ellipse_rx", "title": "Verander ellips X radius"}, -{"id": "ellipse_ry", "title": "Verander ellips Y radius"}, -{"id": "fill_color", "title": "Verander vul kleur"}, -{"id": "fitToContent", "textContent": "Pas om inhoud"}, -{"id": "fit_to_all", "textContent": "Pas om alle inhoud"}, -{"id": "fit_to_canvas", "textContent": "Pas om canvas"}, -{"id": "fit_to_layer_content", "textContent": "Pas om laag inhoud"}, -{"id": "fit_to_sel", "textContent": "Pas om selectie"}, -{"id": "font_family", "title": "Verander lettertype"}, -{"id": "icon_large", "textContent": "Groot"}, -{"id": "icon_medium", "textContent": "Gemiddeld"}, -{"id": "icon_small", "textContent": "Klein"}, -{"id": "icon_xlarge", "textContent": "Extra groot"}, -{"id": "idLabel", "title": "Identificeer het element"}, -{"id": "image_height", "title": "Verander hoogte afbeelding"}, -{"id": "image_opt_embed", "textContent": "Toevoegen data (lokale bestanden)"}, -{"id": "image_opt_ref", "textContent": "Gebruik bestand referentie"}, -{"id": "image_url", "title": "Verander URL"}, -{"id": "image_width", "title": "Verander breedte afbeelding"}, -{"id": "includedImages", "textContent": "Ingesloten afbeeldingen"}, -{"id": "largest_object", "textContent": "Grootste object"}, -{"id": "layer_delete", "title": "Delete laag"}, -{"id": "layer_down", "title": "Beweeg laag omlaag"}, -{"id": "layer_new", "title": "Nieuwe laag"}, -{"id": "layer_rename", "title": "Hernoem laag"}, -{"id": "layer_up", "title": "Beweeg laag omhoog"}, -{"id": "layersLabel", "textContent": "Lagen:"}, -{"id": "line_x1", "title": "Verander start X coordinaat van de lijn"}, -{"id": "line_x2", "title": "Verander eind X coordinaat van de lijn"}, -{"id": "line_y1", "title": "Verander start Y coordinaat van de lijn"}, -{"id": "line_y2", "title": "Verander eind Y coordinaat van de lijn"}, -{"id": "linecap_butt", "title": "Lijneinde: Geen"}, -{"id": "linecap_round", "title": "Lijneinde: Rond"}, -{"id": "linecap_square", "title": "Lijneinde: Vierkant"}, -{"id": "linejoin_bevel", "title": "Lijnverbinding: Afgestompt"}, -{"id": "linejoin_miter", "title": "Lijnverbinding: Hoek"}, -{"id": "linejoin_round", "title": "Lijnverbinding: Rond"}, -{"id": "main_icon", "title": "Hoofdmenu"}, -{"id": "mode_connect", "title": "Verbind twee objecten"}, -{"id": "page", "textContent": "Pagina"}, -{"id": "palette", "title": "Klik om de vul kleur te veranderen, shift-klik om de lijn kleur te veranderen"}, -{"id": "path_node_x", "title": "Verander X coordinaat knooppunt"}, -{"id": "path_node_y", "title": "Verander Y coordinaat knooppunt"}, -{"id": "rect_height_tool", "title": "Verander hoogte rechthoek"}, -{"id": "rect_width_tool", "title": "Verander breedte rechthoek"}, -{"id": "relativeToLabel", "textContent": "Relatief ten opzichte van:"}, -{"id": "seg_type", "title": "Verander segment type"}, -{"id": "selLayerLabel", "textContent": "Verplaats elementen naar:"}, -{"id": "selLayerNames", "title": "Verplaats geselecteerde elementen naar andere laag"}, -{"id": "selectedPredefined", "textContent": "Kies voorgedefinieerd:"}, -{"id": "selected_objects", "textContent": "Geselecteerde objecten"}, -{"id": "selected_x", "title": "Verander X coordinaat"}, -{"id": "selected_y", "title": "Verander Y coordinaat"}, -{"id": "smallest_object", "textContent": "Kleinste object"}, -{"id": "straight_segments", "textContent": "Recht"}, -{"id": "stroke_color", "title": "Verander lijn kleur"}, -{"id": "stroke_style", "title": "Verander lijn stijl"}, -{"id": "stroke_width", "title": "Verander lijn breedte"}, -{"id": "svginfo_bg_note", "textContent": "Let op: De achtergrond wordt niet opgeslagen met de afbeelding."}, -{"id": "svginfo_change_background", "textContent": "Editor achtergrond"}, -{"id": "svginfo_dim", "textContent": "Canvas afmetingen"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor eigenschappen"}, -{"id": "svginfo_height", "textContent": "Hoogte:"}, -{"id": "svginfo_icons", "textContent": "Icoon grootte"}, -{"id": "svginfo_image_props", "textContent": "Afbeeldingeigenschappen"}, -{"id": "svginfo_lang", "textContent": "Taal"}, -{"id": "svginfo_title", "textContent": "Titel"}, -{"id": "svginfo_width", "textContent": "Breedte:"}, -{"id": "text", "title": "Wijzig tekst"}, -{"id": "toggle_stroke_tools", "title": "Toon/verberg meer lijn gereedschap"}, -{"id": "tool_add_subpath", "title": "Subpad toevoegen"}, -{"id": "tool_alignbottom", "title": "Onder uitlijnen"}, -{"id": "tool_aligncenter", "title": "Centreren"}, -{"id": "tool_alignleft", "title": "Links uitlijnen"}, -{"id": "tool_alignmiddle", "title": "Midden uitlijnen"}, -{"id": "tool_alignright", "title": "Rechts uitlijnen"}, -{"id": "tool_aligntop", "title": "Boven uitlijnen"}, -{"id": "tool_angle", "title": "Draai"}, -{"id": "tool_blur", "title": "Verander Gaussische vervaging waarde"}, -{"id": "tool_bold", "title": "Vet"}, -{"id": "tool_circle", "title": "Cirkel"}, -{"id": "tool_clear", "textContent": "Nieuwe afbeelding"}, -{"id": "tool_clone", "title": "Kloon element"}, -{"id": "tool_clone_multi", "title": "Kloon elementen"}, -{"id": "tool_delete", "title": "Delete element"}, -{"id": "tool_delete_multi", "title": "Delete geselecteerde elementen"}, -{"id": "tool_docprops", "textContent": "Documenteigenschappen"}, -{"id": "tool_docprops_cancel", "textContent": "Annuleren"}, -{"id": "tool_docprops_save", "textContent": "Ok"}, -{"id": "tool_ellipse", "title": "Ellips"}, -{"id": "tool_export", "textContent": "Exporteer als PNG"}, -{"id": "tool_eyedropper", "title": "Kleuren kopieer gereedschap"}, -{"id": "tool_fhellipse", "title": "Vrije stijl ellips"}, -{"id": "tool_fhpath", "title": "Potlood"}, -{"id": "tool_fhrect", "title": "Vrije stijl rechthoek"}, -{"id": "tool_font_size", "title": "Verander lettertype grootte"}, -{"id": "tool_group", "title": "Groepeer elementen"}, -{"id": "tool_image", "title": "Afbeelding"}, -{"id": "tool_import", "textContent": "Importeer SVG"}, -{"id": "tool_italic", "title": "Cursief"}, -{"id": "tool_line", "title": "Lijn"}, -{"id": "tool_move_bottom", "title": "Naar achtergrond"}, -{"id": "tool_move_top", "title": "Naar voorgrond"}, -{"id": "tool_node_clone", "title": "Kloon knooppunt"}, -{"id": "tool_node_delete", "title": "Delete knooppunt"}, -{"id": "tool_node_link", "title": "Koppel controle punten"}, -{"id": "tool_opacity", "title": "Verander opaciteit geselecteerde item"}, -{"id": "tool_open", "textContent": "Open afbeelding"}, -{"id": "tool_openclose_path", "title": "Open/sluit subpad"}, -{"id": "tool_path", "title": "Pad"}, -{"id": "tool_position", "title": "Lijn element uit relatief ten opzichte van de pagina"}, -{"id": "tool_rect", "title": "Rechthoek"}, -{"id": "tool_redo", "title": "Opnieuw doen"}, -{"id": "tool_reorient", "title": "Herorienteer pad"}, -{"id": "tool_save", "textContent": "Afbeelding opslaan"}, -{"id": "tool_select", "title": "Selecteer"}, -{"id": "tool_source", "title": "Bewerk bron"}, -{"id": "tool_source_cancel", "textContent": "Annuleren"}, -{"id": "tool_source_save", "textContent": "Veranderingen toepassen"}, -{"id": "tool_square", "title": "Vierkant"}, -{"id": "tool_text", "title": "Tekst"}, -{"id": "tool_topath", "title": "Zet om naar pad"}, -{"id": "tool_undo", "title": "Ongedaan maken"}, -{"id": "tool_ungroup", "title": "Groepering opheffen"}, -{"id": "tool_wireframe", "title": "Draadmodel"}, -{"id": "tool_zoom", "title": "Zoom"}, -{"id": "url_notice", "title": "Let op: Dit plaatje kan niet worden geintegreerd (embeded). Het hangt af van dit pad om te worden afgebeeld."}, -{"id": "zoom_panel", "title": "In-/uitzoomen"}, -{"id": "sidepanel_handle", "textContent": "L a g e n", "title": "Sleep naar links/rechts om het zijpaneel te vergroten/verkleinen"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Er waren analyse fouten in je SVG bron.\nTeruggaan naar de originele SVG bron?", - "QignoreSourceChanges": "Veranderingen in de SVG bron negeren?", - "QmoveElemsToLayer": "Verplaats geselecteerde elementen naar laag '%s'?", - "QwantToClear": "Wil je de afbeelding leeg maken?\nDit zal ook de ongedaan maak geschiedenis wissen!", - "cancel": "Annuleren", - "defsFailOnSave": "Let op: Vanwege een fout in je browser, kan dit plaatje verkeerd verschijnen (missende hoeken en/of elementen). Het zal goed verschijnen zodra het plaatje echt wordt opgeslagen.", - "dupeLayerName": "Er is al een laag met die naam!", - "enterNewImgURL": "Geef de nieuwe afbeelding URL", - "enterNewLayerName": "Geef een nieuwe laag naam", - "enterUniqueLayerName": "Geef een unieke laag naam", - "exportNoBlur": "Vervaagde elementen zullen niet vervaagd worden geexporteerd.", - "exportNoDashArray": "Lijnstijlen zullen gevuld worden geexporteerd..", - "exportNoImage": "Plaatjes elementen zullen niet worden geexporteerd.", - "exportNoText": "Tekst kan mogelijk niet zo worden geexporteerd zoals verwacht.", - "exportNoforeignObject": "Vreemde objecten zullen niet worden geexporteerd.", - "featNotSupported": "Functie wordt niet ondersteund", - "invalidAttrValGiven": "Verkeerde waarde gegeven", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "omlaag", - "key_up": "omhoog", - "layer": "Laag", - "layerHasThatName": "Laag heeft al die naam", - "loadingImage": "Laden van het plaatje, even geduld aub...", - "noContentToFitTo": "Geen inhoud om omheen te passen", - "noteTheseIssues": "Let op de volgende problemen: ", - "ok": "Ok", - "pathCtrlPtTooltip": "Versleep het controle punt om de boog eigenschappen te veranderen", - "pathNodeTooltip": "Versleep knooppunt om hem te verslepen. Dubbel klik knooppunt om het segment type te veranderen", - "saveFromBrowser": "Kies \"Save As...\" in je browser om dit plaatje op te slaan als een %s bestand." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.no.js b/files_svgedit/js/locale/lang.no.js deleted file mode 100644 index 3aed595d2..000000000 --- a/files_svgedit/js/locale/lang.no.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Juster i forhold til ..."}, -{"id": "bkgnd_color", "title": "Endre bakgrunnsfarge / opacity"}, -{"id": "circle_cx", "title": "Endre sirkelens CX koordinatsystem"}, -{"id": "circle_cy", "title": "Endre sirkelens koordinere cy"}, -{"id": "circle_r", "title": "Endre sirkelens radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Endre rektangel Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Endre ellipse's CX koordinatsystem"}, -{"id": "ellipse_cy", "title": "Endre ellipse's koordinere cy"}, -{"id": "ellipse_rx", "title": "Endre ellipse's x radius"}, -{"id": "ellipse_ry", "title": "Endre ellipse's y radius"}, -{"id": "fill_color", "title": "Endre fyllfarge"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Passer til alt innhold"}, -{"id": "fit_to_canvas", "textContent": "Tilpass til lerret"}, -{"id": "fit_to_layer_content", "textContent": "Fit to lag innhold"}, -{"id": "fit_to_sel", "textContent": "Tilpass til valg"}, -{"id": "font_family", "title": "Change Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Endre bilde høyde"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Endre URL"}, -{"id": "image_width", "title": "Endre bilde bredde"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "største objekt"}, -{"id": "layer_delete", "title": "Slett laget"}, -{"id": "layer_down", "title": "Flytt laget ned"}, -{"id": "layer_new", "title": "Nytt lag"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Flytt Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Endre linje begynner x koordinat"}, -{"id": "line_x2", "title": "Endre linje's ending x koordinat"}, -{"id": "line_y1", "title": "Endre linje begynner y koordinat"}, -{"id": "line_y2", "title": "Endre linje's ending y koordinat"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "side"}, -{"id": "palette", "title": "Click å endre fyllfarge, shift-klikke for å endre slag farge"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Endre rektangel høyde"}, -{"id": "rect_width_tool", "title": "Endre rektangel bredde"}, -{"id": "relativeToLabel", "textContent": "i forhold til:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Velg forhåndsdefinerte:"}, -{"id": "selected_objects", "textContent": "velges objekter"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "minste objekt"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Endre stroke color"}, -{"id": "stroke_style", "title": "Endre stroke dash stil"}, -{"id": "stroke_width", "title": "Endre stroke width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Høyde:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Bredde:"}, -{"id": "text", "title": "Endre tekst innholdet"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Midtstill"}, -{"id": "tool_alignleft", "title": "Venstrejuster"}, -{"id": "tool_alignmiddle", "title": "Rett Middle"}, -{"id": "tool_alignright", "title": "Høyrejuster"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Endre rotasjonsvinkelen"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Fet tekst"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Slett element"}, -{"id": "tool_delete_multi", "title": "Slett valgte elementer [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Avbryt"}, -{"id": "tool_docprops_save", "textContent": "Lagre"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand rektangel"}, -{"id": "tool_font_size", "title": "Endre skriftstørrelse"}, -{"id": "tool_group", "title": "Gruppe Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursiv tekst"}, -{"id": "tool_line", "title": "Linjeverktøy"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Flytt til toppen"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Endre valgte elementet opasitet"}, -{"id": "tool_open", "textContent": "Åpne Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rektangel"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Lagre bilde"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Source"}, -{"id": "tool_source_cancel", "textContent": "Avbryt"}, -{"id": "tool_source_save", "textContent": "Lagre"}, -{"id": "tool_square", "title": "Torg"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Angre"}, -{"id": "tool_ungroup", "title": "Dele opp Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Endre zoomnivå"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.pl.js b/files_svgedit/js/locale/lang.pl.js deleted file mode 100644 index 88a19ce78..000000000 --- a/files_svgedit/js/locale/lang.pl.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Dostosowanie w stosunku do ..."}, -{"id": "bkgnd_color", "title": "Zmień kolor tła / opacity"}, -{"id": "circle_cx", "title": "Zmiana koła CX koordynacji"}, -{"id": "circle_cy", "title": "Koła Zmian cy koordynacji"}, -{"id": "circle_r", "title": "Zmiana koła promienia"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Zmiana prostokąt Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Zmiana elipsy CX koordynacji"}, -{"id": "ellipse_cy", "title": "Elipsy Zmian cy koordynacji"}, -{"id": "ellipse_rx", "title": "Elipsy Zmian x promieniu"}, -{"id": "ellipse_ry", "title": "Elipsy Zmian y promieniu"}, -{"id": "fill_color", "title": "Zmiana koloru wypełnienia"}, -{"id": "fitToContent", "textContent": "Dopasuj do treści"}, -{"id": "fit_to_all", "textContent": "Dopasuj do wszystkich treści"}, -{"id": "fit_to_canvas", "textContent": "Dopasuj do płótnie"}, -{"id": "fit_to_layer_content", "textContent": "Dopasuj do zawartości warstwy"}, -{"id": "fit_to_sel", "textContent": "Dopasuj do wyboru"}, -{"id": "font_family", "title": "Zmiana czcionki Rodzina"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Wysokość obrazu zmian"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Zmień adres URL"}, -{"id": "image_width", "title": "Zmiana image width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "największego obiektu"}, -{"id": "layer_delete", "title": "Usuwanie warstwy"}, -{"id": "layer_down", "title": "Przesuń warstwę w dół"}, -{"id": "layer_new", "title": "Nowa warstwa"}, -{"id": "layer_rename", "title": "Zmiana nazwy warstwy"}, -{"id": "layer_up", "title": "Move Up Layer"}, -{"id": "layersLabel", "textContent": "Warstwy:"}, -{"id": "line_x1", "title": "Zmian od linii współrzędna x"}, -{"id": "line_x2", "title": "Zgodnie Zmian kończące współrzędna x"}, -{"id": "line_y1", "title": "Line y Zmian od współrzędnych"}, -{"id": "line_y2", "title": "Zgodnie Zmian kończące y koordynowanie"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "strona"}, -{"id": "palette", "title": "Kliknij, aby zmienić kolor wypełnienia, shift kliknij, aby zmienić kolor skok"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Zmiana wysokości prostokąta"}, -{"id": "rect_width_tool", "title": "Szerokość prostokąta Zmień"}, -{"id": "relativeToLabel", "textContent": "w stosunku do:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Wybierz predefiniowanych:"}, -{"id": "selected_objects", "textContent": "wybranych obiektów"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "Najmniejszy obiekt"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Zmień kolor skok"}, -{"id": "stroke_style", "title": "Zmień styl skoku kreska"}, -{"id": "stroke_width", "title": "Szerokość skoku Zmień"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Wysokość:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Szerokość:"}, -{"id": "text", "title": "Zmiana treści tekstu"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Wyrównaj do dołu"}, -{"id": "tool_aligncenter", "title": "Wyśrodkuj"}, -{"id": "tool_alignleft", "title": "Wyrównaj do lewej"}, -{"id": "tool_alignmiddle", "title": "Align Middle"}, -{"id": "tool_alignright", "title": "Wyrównaj do prawej"}, -{"id": "tool_aligntop", "title": "Wyrównaj do góry"}, -{"id": "tool_angle", "title": "Zmiana kąta obrotu"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Koło"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Elementy Clone"}, -{"id": "tool_delete", "title": "Usuń element"}, -{"id": "tool_delete_multi", "title": "Usun Wybrane elementy"}, -{"id": "tool_docprops", "textContent": "Właściwości dokumentu"}, -{"id": "tool_docprops_cancel", "textContent": "Anuluj"}, -{"id": "tool_docprops_save", "textContent": "Zapisać"}, -{"id": "tool_ellipse", "title": "Elipsa"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Wolny-Hand Elipsa"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Wolnej ręki prostokąt"}, -{"id": "tool_font_size", "title": "Zmień rozmiar czcionki"}, -{"id": "tool_group", "title": "Elementy Grupa"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursywa"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Przenieś do dołu"}, -{"id": "tool_move_top", "title": "Przenieś do góry"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Zmiana stron przezroczystość elementu"}, -{"id": "tool_open", "textContent": "Otwórz obraz"}, -{"id": "tool_path", "title": "Poli Tool"}, -{"id": "tool_rect", "title": "Prostokąt"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Zapisz obraz"}, -{"id": "tool_select", "title": "Wybierz narzędzie"}, -{"id": "tool_source", "title": "Edycja źródła"}, -{"id": "tool_source_cancel", "textContent": "Anuluj"}, -{"id": "tool_source_save", "textContent": "Zapisać"}, -{"id": "tool_square", "title": "Kwadrat"}, -{"id": "tool_text", "title": "Tekst Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Cofnij"}, -{"id": "tool_ungroup", "title": "Elementy Rozgrupuj"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Zmiana poziomu powiększenia"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.pt-BR.js b/files_svgedit/js/locale/lang.pt-BR.js deleted file mode 100644 index 6ae824a89..000000000 --- a/files_svgedit/js/locale/lang.pt-BR.js +++ /dev/null @@ -1,157 +0,0 @@ -[ -{"id":"layer_new","title":"Nova Camada"}, -{"id":"layer_delete","title":"Deletar Camada"}, -{"id":"layer_rename","title":"Renomear Camada"}, -{"id":"layer_up","title":"Camada para Cima"}, -{"id":"layer_down","title":"Camada para baixo"}, -{"id":"tool_clear","title":"Nova Imagem"}, -{"id":"tool_open","title":"Abrir Imagem"}, -{"id":"tool_save","title":"Salvar Imagem"}, -{"id":"tool_docprops","title":"Propriedades"}, -{"id":"tool_source","title":"Código"}, -{"id":"tool_undo","title":"Desfazer"}, -{"id":"tool_redo","title":"Refazer"}, -{"id":"tool_clone","title":"Duplicar Elemento"}, -{"id":"tool_delete","title":"Excluir Elemento"}, -{"id":"tool_move_top","title":"Mover para Cima"}, -{"id":"tool_move_bottom","title":"Mover para Baixo"}, -{"id":"group_opacity","title":"Mudar a opacidade"}, -{"id":"angle","title":"Ângulo de rotação"}, -{"id":"tool_clone_multi","title":"Duplicar Elementos"}, -{"id":"tool_delete_multi","title":"Eliminar Elementos"}, -{"id":"tool_alignleft","title":"Alinhar à Esquerda"}, -{"id":"tool_aligncenter","title":"Alinhar ao centro"}, -{"id":"tool_alignright","title":"Alinhar à Direita"}, -{"id":"tool_aligntop","title":"Alinhar Acima"}, -{"id":"tool_alignmiddle","title":"Alinhar no Méio"}, -{"id":"tool_alignbottom","title":"Alinhar Abaixo"}, -{"id":"align_relative_to","title":"Alinhar em relação a ..."}, -{"id":"tool_group","title":"Agrupar"}, -{"id":"tool_ungroup","title":"Desagrupar"}, -{"id":"rect_width","title":"Alterar a largura retângulo"}, -{"id":"rect_height","title":"Alterar altura do retângulo"}, -{"id":"rect_rx","title":"Radio do chanfro"}, -{"id":"image_width","title":"Alterar a largura da imagem"}, -{"id":"image_height","title":"Alterar altura da imagem"}, -{"id":"image_url","title":"Alterar caminho URL"}, -{"id":"circle_cx","title":"Ponto horizontal do centro cx"}, -{"id":"circle_cy","title":"Ponto Vertical do centro cy"}, -{"id":"circle_r","title":"Alterar raio"}, -{"id":"ellipse_cx","title":"Ponto horizontal do centro cx"}, -{"id":"ellipse_cy","title":"Ponto Vertical do centro cy"}, -{"id":"ellipse_rx","title":"Alterar raio horizontal"}, -{"id":"ellipse_ry","title":"Alterar raio vertical"}, -{"id":"line_x1","title":"Ponto horizontal do início da linha x1"}, -{"id":"line_y1","title":"Ponto vertical do início da linha y1"}, -{"id":"line_x2","title":"Ponto horizontal do fim da linha x2"}, -{"id":"line_y2","title":"Ponto vertical do fim da linha y2"}, -{"id":"tool_bold","title":"Negrito"}, -{"id":"tool_italic","title":"Itálico"}, -{"id":"font_family","title":"Fonte"}, -{"id":"font_size","title":"Alterar tamanho da fonte"}, -{"id":"text","title":"Alterar o conteúdo do texto"}, -{"id":"tool_select","title":"Seleção"}, -{"id":"tool_fhpath","title":"Lápis"}, -{"id":"tool_line","title":"Linha"}, -{"id":"tools_rect_show","title":"Quadrado / Retângulo"}, -{"id":"tools_ellipse_show","title":"Elipse / Círculo"}, -{"id":"tool_text","title":"Texto"}, -{"id":"tool_path","title":"Área"}, -{"id":"tool_image","title":"Imagem"}, -{"id":"tool_zoom","title":"Zoom"}, -{"id":"zoom","title":"Alterar o zoom"}, -{"id":"fill_color","title":"Cor do preenchimento"}, -{"id":"stroke_color","title":"Cor do contorno"}, -{"id":"stroke_width","title":"Alterar a largura do contorno"}, -{"id":"stroke_style","title":"Alterar o estilo do contorno"}, -{"id":"palette","title":"Clique para mudar a cor do preenchimento, Shift + Clique para mudar a cor do contorno"}, -{"id":"tool_square","title":"Quadrado"}, -{"id":"tool_rect","title":"Retângulo"}, -{"id":"tool_fhrect","title":"Retangulo à mão-livre"}, -{"id":"tool_circle","title":"Circle"}, -{"id":"tool_ellipse","title":"Elipse"}, -{"id":"tool_fhellipse","title":"Elipse à mão-livre"}, -{"id":"bkgnd_color","title":"Mudar a cor de fundo / opacidade"}, -{"id":"rwidthLabel","textContent":"largura:"}, -{"id":"rheightLabel","textContent":"altura:"}, -{"id":"cornerRadiusLabel","textContent":"Raio:"}, -{"id":"iwidthLabel","textContent":"largura:"}, -{"id":"iheightLabel","textContent":"altura:"}, -{"id":"svginfo_width","textContent":"Largura:"}, -{"id":"svginfo_height","textContent":"Altura:"}, -{"id":"angleLabel","textContent":"ângulo:"}, -{"id":"relativeToLabel","textContent":"em relação ao:"}, -{"id":"zoomLabel","textContent":"zoom:"}, -{"id":"layersLabel","textContent":"Camadas:"}, -{"id":"selectedPredefined","textContent":"Selecionar predefinidos:"}, -{"id":"fitToContent","textContent":"Ajustar ao conteúdo"}, -{"id":"tool_source_save","textContent":"Salvar"}, -{"id":"tool_docprops_save","textContent":"Salvar"}, -{"id":"tool_docprops_cancel","textContent":"Cancelar"}, -{"id":"tool_source_cancel","textContent":"Cancelar"}, -{"id":"fit_to_all","textContent":"Ajustar a todo o conteúdo"}, -{"id":"fit_to_layer_content","textContent":"Ajustar ao conteúdo da camada"}, -{"id":"fit_to_sel","textContent":"Ajustar à seleção"}, -{"id":"fit_to_canvas","textContent":"Ajustar à tela"}, -{"id":"selected_objects","textContent":"objetos selecionados"}, -{"id":"largest_object","textContent":"maior objeto"}, -{"id":"smallest_object","textContent":"menor objeto"}, -{"id":"page","textContent":"Página"}, -{"id":"fill_tool_bottom","textContent":"Preenchimento:"}, -{"id":"stroke_tool_bottom","textContent":"Contorno:"}, -{"id":"path_node_x","title":"Coordenada do ponto x"}, -{"id":"path_node_y","title":"Coordenada do ponto y"}, -{"id":"seg_type","title":"Mudar Tipo de segmento"}, -{"id":"straight_segments","textContent":"Reta"}, -{"id":"curve_segments","textContent":"Curva"}, -{"id":"tool_node_clone","title":"Duplicar ponto"}, -{"id":"tool_node_delete","title":"Deletar ponto"}, -{"id":"selLayerLabel","textContent":"Mover elementos para:"}, -{"id":"selLayerNames","title":"Mover elementos selecionados para outra camada"}, -{"id":"sidepanel_handle","title":"Arraste para os lados para alterar a largura","textContent":"C a m a d a s"}, -{"id":"tool_wireframe","title":"Modo Somente Contornos"}, -{"id":"svginfo_image_props","textContent":"Propriedades da Imagem"}, -{"id":"svginfo_title","textContent":"Título"}, -{"id":"svginfo_dim","textContent":"Dimensões"}, -{"id":"includedImages","textContent":"Imagens incluídas"}, -{"id":"image_opt_embed","textContent":"Embutir dados (arquivos locais)"}, -{"id":"image_opt_ref","textContent":"Usar referência a arquivo"}, -{"id":"svginfo_editor_prefs","textContent":"Preferências"}, -{"id":"svginfo_lang","textContent":"Idioma"}, -{"id":"svginfo_change_background","textContent":"Mudar fundo"}, -{"id":"svginfo_bg_note","textContent":"Aviso: Fundo não será salvo com a imagem."}, -{"id":"svginfo_icons","textContent":"Tamanho do ícone"}, -{"id":"icon_small","textContent":"Pequeno"}, -{"id":"icon_medium","textContent":"Medio"}, -{"id":"icon_large","textContent":"Grande"}, -{"id":"icon_xlarge","textContent":"Extra"}, -{"id":"selected_x","title":"Mudar coodenada x"}, -{"id":"selected_y","title":"Mudar coodenada y"}, -{"id":"tool_topath","title":"Mudar para Área"}, -{"id":"tool_reorient","title":"Reorientar Área"}, -{"id":"tool_node_link","title":"Alinhar ponto de controle da curva"}, -{"js_strings": { - "invalidAttrValGiven":"Valor inválido", - "noContentToFitTo":"Sem conteúdo", - 'layer':"Camada", - "dupeLayerName":"Já existe uma camada com esse nome", - "enterUniqueLayerName":"Por favor, insira um nome único", - "enterNewLayerName":"Por favor, insira o nome da nova camada", - "layerHasThatName":"A camada já possui este nome", - "QmoveElemsToLayer":"Mover os elementos selecionados para a camada: '%s'?", - "QwantToClear":"Deseja apagar o desenho?\nIsso também vai limpar o histórico!", - "QerrorsRevertToSource":"Foram encontrados erros no seu código SVG.\nVoltar para o código SVG original?", - "QignoreSourceChanges":"Ignorar mudanças no código SVG?", - "featNotSupported":"Recurso não suportado", - "enterNewImgURL":"Insirao caminho URL da imagem", - "ok":"Ok", - "cancel":"Cancelar", - "pathNodeTooltip":"Arraste o ponto para move-lo. \nDuplo-click para mudar o tipo de segmento (Reta / Curva)", - "pathCtrlPtTooltip":"Arraste ponto de controle da curva para alterar suas propriedades", - "key_up":"seta pra cima", - "key_down":"seta pra baixo", - "key_backspace":"backspace", - "key_del":"delete" - } -} -] diff --git a/files_svgedit/js/locale/lang.pt-PT.js b/files_svgedit/js/locale/lang.pt-PT.js deleted file mode 100644 index 7ac35fd4c..000000000 --- a/files_svgedit/js/locale/lang.pt-PT.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Alinhar em relação a ..."}, -{"id": "bkgnd_color", "title": "Mudar a cor de fundo / opacidade"}, -{"id": "circle_cx", "title": "Cx Mudar círculo de coordenadas"}, -{"id": "circle_cy", "title": "Círculo Mudança cy coordenar"}, -{"id": "circle_r", "title": "Alterar círculo de raio"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Alterar Corner Rectangle Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Alterar elipse cx coordenar"}, -{"id": "ellipse_cy", "title": "Elipse Mudança cy coordenar"}, -{"id": "ellipse_rx", "title": "Raio X Change elipse"}, -{"id": "ellipse_ry", "title": "Raio y Change elipse"}, -{"id": "fill_color", "title": "Alterar a cor de preenchimento"}, -{"id": "fitToContent", "textContent": "Ajustar ao conteúdo"}, -{"id": "fit_to_all", "textContent": "Ajustar a todo o conteúdo"}, -{"id": "fit_to_canvas", "textContent": "Ajustar à tela"}, -{"id": "fit_to_layer_content", "textContent": "Ajustar o conteúdo da camada de"}, -{"id": "fit_to_sel", "textContent": "Ajustar à selecção"}, -{"id": "font_family", "title": "Alterar fonte Família"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Alterar altura da imagem"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Alterar URL"}, -{"id": "image_width", "title": "Alterar a largura da imagem"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "maior objeto"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move camada para baixo"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Camadas:"}, -{"id": "line_x1", "title": "Altere a linha de partida coordenada x"}, -{"id": "line_x2", "title": "Altere a linha está terminando coordenada x"}, -{"id": "line_y1", "title": "Mudança na linha de partida coordenada y"}, -{"id": "line_y2", "title": "Mudança de linha está terminando coordenada y"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Página"}, -{"id": "palette", "title": "Clique para mudar a cor de preenchimento, shift-clique para mudar a cor do curso"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Alterar altura do retângulo"}, -{"id": "rect_width_tool", "title": "Alterar a largura retângulo"}, -{"id": "relativeToLabel", "textContent": "em relação ao:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Selecione predefinidos:"}, -{"id": "selected_objects", "textContent": "objetos eleitos"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "menor objeto"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Mudar a cor do curso"}, -{"id": "stroke_style", "title": "Alterar o estilo do traço do curso"}, -{"id": "stroke_width", "title": "Alterar a largura do curso"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Altura:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Largura:"}, -{"id": "text", "title": "Alterar o conteúdo de texto"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Alinhar ao centro"}, -{"id": "tool_alignleft", "title": "Alinhar à Esquerda"}, -{"id": "tool_alignmiddle", "title": "Alinhar Médio"}, -{"id": "tool_alignright", "title": "Alinhar à Direita"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Alterar o ângulo de rotação"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Nova Imagem"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Elementos Clone"}, -{"id": "tool_delete", "title": "Excluir Elemento"}, -{"id": "tool_delete_multi", "title": "Eliminar elementos selecionados"}, -{"id": "tool_docprops", "textContent": "Propriedades do Documento"}, -{"id": "tool_docprops_cancel", "textContent": "Cancelar"}, -{"id": "tool_docprops_save", "textContent": "Salvar"}, -{"id": "tool_ellipse", "title": "Elipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Ferramenta Lápis"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Alterar tamanho de letra"}, -{"id": "tool_group", "title": "Elementos do Grupo"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Texto em itálico"}, -{"id": "tool_line", "title": "Ferramenta Linha"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Mude a opacidade item selecionado"}, -{"id": "tool_open", "textContent": "Abrir Imagem"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Retângulo"}, -{"id": "tool_redo", "title": "Refazer"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Salvar Imagem"}, -{"id": "tool_select", "title": "Selecione a ferramenta"}, -{"id": "tool_source", "title": "Fonte Editar"}, -{"id": "tool_source_cancel", "textContent": "Cancelar"}, -{"id": "tool_source_save", "textContent": "Salvar"}, -{"id": "tool_square", "title": "Quadrado"}, -{"id": "tool_text", "title": "Ferramenta de Texto"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Desfazer"}, -{"id": "tool_ungroup", "title": "Elementos Desagrupar"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Alterar o nível de zoom"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ro.js b/files_svgedit/js/locale/lang.ro.js deleted file mode 100644 index fedffce74..000000000 --- a/files_svgedit/js/locale/lang.ro.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Alinierea în raport cu ..."}, -{"id": "bkgnd_color", "title": "Schimbare culoare de fundal / opacitate"}, -{"id": "circle_cx", "title": "Schimbarea coordonatei CX a cercului"}, -{"id": "circle_cy", "title": "Schimbarea coordonatei CY a cercului"}, -{"id": "circle_r", "title": "Schimbarea razei cercului"}, -{"id": "connector_no_arrow", "textContent": "Fără Săgeată"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Schimbarea Razei Colţului Dreptunghiului"}, -{"id": "curve_segments", "textContent": "Curv"}, -{"id": "ellipse_cx", "title": "Schimbarea coordonatei CX a elipsei"}, -{"id": "ellipse_cy", "title": "Schimbarea coordonatei CY a elipsei"}, -{"id": "ellipse_rx", "title": "Schimbarea razei elipsei X"}, -{"id": "ellipse_ry", "title": "Schimbarea razei elipsei Y"}, -{"id": "fill_color", "title": "Schimbarea culorii de umplere"}, -{"id": "fitToContent", "textContent": "Dimensionare la Conţinut"}, -{"id": "fit_to_all", "textContent": "Potrivire la tot conţinutul"}, -{"id": "fit_to_canvas", "textContent": "Potrivire la Şevalet"}, -{"id": "fit_to_layer_content", "textContent": "Potrivire la conţinutul stratului"}, -{"id": "fit_to_sel", "textContent": "Potrivire la selecţie"}, -{"id": "font_family", "title": "Modificare familie de Fonturi"}, -{"id": "icon_large", "textContent": "Mari"}, -{"id": "icon_medium", "textContent": "Medii"}, -{"id": "icon_small", "textContent": "Mici"}, -{"id": "icon_xlarge", "textContent": "Foarte Mari"}, -{"id": "image_height", "title": "Schimbarea Înălţimii imaginii"}, -{"id": "image_opt_embed", "textContent": "Includeţi Datele (fisiere locale)"}, -{"id": "image_opt_ref", "textContent": "Foloseste referinte la fisiere"}, -{"id": "image_url", "title": "Schimbaţi URL-ul"}, -{"id": "image_width", "title": "Schimbarea Lăţimii imaginii"}, -{"id": "includedImages", "textContent": "Imaginile Incluse"}, -{"id": "largest_object", "textContent": "cel mai mare obiect"}, -{"id": "layer_delete", "title": "Ştergeţi Strat"}, -{"id": "layer_down", "title": "Mutare Strat în Jos"}, -{"id": "layer_new", "title": "Strat Nou"}, -{"id": "layer_rename", "title": "Redenumiţi Strat"}, -{"id": "layer_up", "title": "Mutare Strat în Sus"}, -{"id": "layersLabel", "textContent": "Straturi:"}, -{"id": "line_x1", "title": "Schimbare coordonatei x a punctului de start"}, -{"id": "line_x2", "title": "Schimbare coordonatei x a punctului final"}, -{"id": "line_y1", "title": "Schimbare coordonatei y a punctului de start"}, -{"id": "line_y2", "title": "Schimbare coordonatei y a punctului final"}, -{"id": "linecap_butt", "title": "Capat de linie: Butuc"}, -{"id": "linecap_round", "title": "Capat de linie: Rotund"}, -{"id": "linecap_square", "title": "Capat de linie: Patrat"}, -{"id": "linejoin_bevel", "title": "Articulatia liniei: Tesita"}, -{"id": "linejoin_miter", "title": "Articulatia liniei: Unghi ascutit"}, -{"id": "linejoin_round", "title": "Articulatia liniei: Rotunda"}, -{"id": "main_icon", "title": "Menu Principal"}, -{"id": "mode_connect", "title": "Conectati doua obiecte"}, -{"id": "page", "textContent": "de start"}, -{"id": "palette", "title": "Faceţi clic a schimba culoare de umplere, Shift-click pentru a schimba culoarea de contur"}, -{"id": "path_node_x", "title": "Schimba coordonata x a punctului"}, -{"id": "path_node_y", "title": "Schimba coordonata x a punctului"}, -{"id": "rect_height_tool", "title": "Schimbarea înălţimii dreptunghiului"}, -{"id": "rect_width_tool", "title": "Schimbarea lăţimii dreptunghiului"}, -{"id": "relativeToLabel", "textContent": "în raport cu:"}, -{"id": "seg_type", "title": "Schimba tipul de segment"}, -{"id": "selLayerLabel", "textContent": "Muta elemente la:"}, -{"id": "selLayerNames", "title": "Muta elementele selectate pe un alt strat"}, -{"id": "selectedPredefined", "textContent": "Selecţii predefinite:"}, -{"id": "selected_objects", "textContent": "obiectele alese"}, -{"id": "selected_x", "title": "Schimba coordonata X"}, -{"id": "selected_y", "title": "Schimba coordonata Y"}, -{"id": "smallest_object", "textContent": "cel mai mic obiect"}, -{"id": "straight_segments", "textContent": "Drept"}, -{"id": "stroke_color", "title": "Schimbarea culorii de contur"}, -{"id": "stroke_style", "title": "Schimbarea stilului de contur"}, -{"id": "stroke_width", "title": "Schimbarea lăţime de contur"}, -{"id": "svginfo_bg_note", "textContent": "Nota: Fondul nu va fi salvat cu imaginea."}, -{"id": "svginfo_change_background", "textContent": "Fondul Editorului"}, -{"id": "svginfo_dim", "textContent": "Dimensiunile Sevaletuui"}, -{"id": "svginfo_editor_prefs", "textContent": "Preferintele Editorului"}, -{"id": "svginfo_height", "textContent": "Înălţime:"}, -{"id": "svginfo_icons", "textContent": "Dimensiunile Butoanelor"}, -{"id": "svginfo_image_props", "textContent": "Proprietaţile Imaginii"}, -{"id": "svginfo_lang", "textContent": "Limba"}, -{"id": "svginfo_title", "textContent": "Titlul"}, -{"id": "svginfo_width", "textContent": "Lăţime:"}, -{"id": "text", "title": "Schimbarea Conţinutului textului"}, -{"id": "toggle_stroke_tools", "title": "Aratati/ascundeti mai multe unelte de contur"}, -{"id": "tool_add_subpath", "title": "Adaugati sub-traiectorie"}, -{"id": "tool_alignbottom", "title": "Alinierea jos"}, -{"id": "tool_aligncenter", "title": "Aliniere la centru"}, -{"id": "tool_alignleft", "title": "Aliniere la stânga"}, -{"id": "tool_alignmiddle", "title": "Aliniere la mijloc"}, -{"id": "tool_alignright", "title": "Aliniere la dreapta"}, -{"id": "tool_aligntop", "title": "Alinierea sus"}, -{"id": "tool_angle", "title": "Schimbarea unghiul de rotatie"}, -{"id": "tool_blur", "title": "Schimbarea valorii estomparii gaussiene"}, -{"id": "tool_bold", "title": "Text Îngroşat"}, -{"id": "tool_circle", "title": "Cerc"}, -{"id": "tool_clear", "textContent": "Imagine nouă"}, -{"id": "tool_clone", "title": "Clonare Element"}, -{"id": "tool_clone_multi", "title": "Clonare Elemente"}, -{"id": "tool_delete", "title": "Şterge Element"}, -{"id": "tool_delete_multi", "title": "Ştergeţi Elementele selectate"}, -{"id": "tool_docprops", "textContent": "Propertile Documentului"}, -{"id": "tool_docprops_cancel", "textContent": "Anulaţi"}, -{"id": "tool_docprops_save", "textContent": "Ok"}, -{"id": "tool_ellipse", "title": "Elipsă"}, -{"id": "tool_export", "textContent": "Exportare ca şi PNG"}, -{"id": "tool_eyedropper", "title": "Unealta de Eye Dropper"}, -{"id": "tool_fhellipse", "title": "Elipsă cu mana-libera"}, -{"id": "tool_fhpath", "title": "Unealta de Traiectorie"}, -{"id": "tool_fhrect", "title": "Dreptunghi cu mana-libera"}, -{"id": "tool_font_size", "title": "Schimbă dimensiunea fontului"}, -{"id": "tool_group", "title": "Grupare Elemente"}, -{"id": "tool_image", "title": "Unealta de Imagine"}, -{"id": "tool_import", "textContent": "Importare SVG"}, -{"id": "tool_italic", "title": "Text Înclinat"}, -{"id": "tool_line", "title": "Unealta de Linie"}, -{"id": "tool_move_bottom", "title": "Mutare în jos"}, -{"id": "tool_move_top", "title": "Mutare în sus"}, -{"id": "tool_node_clone", "title": "Cloneaza Punct"}, -{"id": "tool_node_delete", "title": "Sterge Punct"}, -{"id": "tool_node_link", "title": "Uneste Punctele de Control"}, -{"id": "tool_opacity", "title": "Schimbarea selectat opacitate element"}, -{"id": "tool_open", "textContent": "Imagine deschisă"}, -{"id": "tool_path", "title": "Unealta de Path"}, -{"id": "tool_rect", "title": "Dreptunghi"}, -{"id": "tool_redo", "title": "Refacere"}, -{"id": "tool_reorient", "title": "Reorienteaza Traiectoria"}, -{"id": "tool_save", "textContent": "Salvare Imagine"}, -{"id": "tool_select", "title": "Unealta de Selectare"}, -{"id": "tool_source", "title": "Editare Cod Sursa"}, -{"id": "tool_source_cancel", "textContent": "Anulaţi"}, -{"id": "tool_source_save", "textContent": "Folositi Schimbarile"}, -{"id": "tool_square", "title": "Pătrat"}, -{"id": "tool_text", "title": "Unealta de Text"}, -{"id": "tool_topath", "title": "Converteste in Traiectorie"}, -{"id": "tool_undo", "title": "Anulare"}, -{"id": "tool_ungroup", "title": "Anulare Grupare Elemente"}, -{"id": "tool_wireframe", "title": "Mod Schelet"}, -{"id": "tool_zoom", "title": "Unealta de Zoom"}, -{"id": "url_notice", "title": "NOTE: Aceasta imagine nu poate fi inglobata. Va depinde de aceasta traiectorie pentru a fi prezentata."}, -{"id": "zoom_panel", "title": "Schimbarea nivelului de zoom"}, -{"id": "sidepanel_handle", "textContent": "S t r a t u r i", "title": "Trage stanga/dreapta pentru redimensionare panou lateral"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Sunt erori de parsing in sursa SVG.\nRevenire la sursa SVG orginala?", - "QignoreSourceChanges": "Ignorati schimbarile la sursa SVG?", - "QmoveElemsToLayer": "Mutati elementele selectate pe stratul '%s'?", - "QwantToClear": "Doriti sa stergeti desenul?\nAceasta va sterge si posibilitatea de anulare!", - "cancel": "Revocare", - "defsFailOnSave": "NOTE: Din cauza unei erori in browserul dv., aceasta imagine poate apare gresit (fara gradiente sau elemente). Insa va apare corect dupa salvare.", - "dupeLayerName": "Deja exista un strat numis asa!", - "enterNewImgURL": "Introduceti noul URL pentru Imagine", - "enterNewLayerName": "Rog introduceti un nume pentru strat", - "enterUniqueLayerName": "Rog introduceti un nume unic", - "exportNoBlur": "Elementele estompate vor apare ne-estompate", - "exportNoDashArray": "Contururile vor apare pline", - "exportNoImage": "Elementele de imagine nu vor apare", - "exportNoText": "Posibil ca textul sa nu apara conform asteptarilor", - "exportNoforeignObject": "Elementele foreignObject nu vor apare", - "featNotSupported": "Functie neimplementata", - "invalidAttrValGiven": "Valoarea data nu este valida", - "key_backspace": "backspace", - "key_del": "stergere", - "key_down": "jos", - "key_up": "sus", - "layer": "Strat", - "layerHasThatName": "Statul deja are acest nume", - "loadingImage": "Imaginea se incarca, va rugam asteptati...", - "noContentToFitTo": "Fara continut de referinta", - "noteTheseIssues": "De asemeni remarcati urmatoarele probleme: ", - "ok": "OK", - "pathCtrlPtTooltip": "Trage de punctul de control pt. a-i schimba proprietatile", - "pathNodeTooltip": "Trage de punct pentru a-l muta. Dublu-clic pentru schimbarea tipului de segment", - "saveFromBrowser": "Selecteaza \"Salvea ca si...\" in browserul dv. pt. a salva aceasta imafine ca si fisier %s." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.ru.js b/files_svgedit/js/locale/lang.ru.js deleted file mode 100644 index f5c9f2146..000000000 --- a/files_svgedit/js/locale/lang.ru.js +++ /dev/null @@ -1,176 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Выровнять по отношению к ..."}, -{"id": "bkgnd_color", "title": "Изменить цвет фона или прозрачность"}, -{"id": "circle_cx", "title": "Изменить горизонтальный координат (CX) окружности"}, -{"id": "circle_cy", "title": "Изменить вертикальный координат (CY) окружности"}, -{"id": "circle_r", "title": "Изменить радиус окружности"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Изменить радиус скругления углов прямоугольника"}, -{"id": "cornerRadiusLabel", "title": "Радиус закругленности угла"}, -{"id": "curve_segments", "textContent": "Сплайн"}, -{"id": "ellipse_cx", "title": "Изменить горизонтальный координат (CX) эллипса"}, -{"id": "ellipse_cy", "title": "Изменить вертикальный координат (CY) эллипса"}, -{"id": "ellipse_rx", "title": "Изменить горизонтальный радиус эллипса"}, -{"id": "ellipse_ry", "title": "Изменить вертикальный радиус эллипса"}, -{"id": "fill_color", "title": "Изменить цвет заливки"}, -{"id": "fitToContent", "textContent": "Под размер содержимого"}, -{"id": "fit_to_all", "textContent": "Под размер всех слоев"}, -{"id": "fit_to_canvas", "textContent": "Под размер холста"}, -{"id": "fit_to_layer_content", "textContent": "Под размер содержания слоя"}, -{"id": "fit_to_sel", "textContent": "Под размер выделенного"}, -{"id": "font_family", "title": "Изменить семейство шрифтов"}, -{"id": "icon_large", "textContent": "Большие"}, -{"id": "icon_medium", "textContent": "Средние"}, -{"id": "icon_small", "textContent": "Малые"}, -{"id": "icon_xlarge", "textContent": "Огромные"}, -{"id": "image_height", "title": "Изменить высоту изображения"}, -{"id": "image_opt_embed", "textContent": "Локальные файлы"}, -{"id": "image_opt_ref", "textContent": "По ссылкам"}, -{"id": "image_url", "title": "Изменить URL"}, -{"id": "image_width", "title": "Изменить ширину изображения"}, -{"id": "includedImages", "textContent": "Встроенные изображения"}, -{"id": "largest_object", "textContent": "Наибольший объект"}, -{"id": "layer_delete", "title": "Удалить слой"}, -{"id": "layer_down", "title": "Опустить слой"}, -{"id": "layer_new", "title": "Создать слой"}, -{"id": "layer_rename", "title": "Переименовать Слой"}, -{"id": "layer_up", "title": "Поднять слой"}, -{"id": "layersLabel", "textContent": "Слои:"}, -{"id": "line_x1", "title": "Изменить горизонтальный координат X начальной точки линии"}, -{"id": "line_x2", "title": "Изменить горизонтальный координат X конечной точки линии"}, -{"id": "line_y1", "title": "Изменить вертикальный координат Y начальной точки линии"}, -{"id": "line_y2", "title": "Изменить вертикальный координат Y конечной точки линии"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "страница"}, -{"id": "palette", "title": "Нажмите для изменения цвета заливки, Shift-Click изменить цвета обводки"}, -{"id": "path_node_x", "title": "Изменить горизонтальную координату узла"}, -{"id": "path_node_y", "title": "Изменить вертикальную координату узла"}, -{"id": "rect_height_tool", "title": "Изменениe высоту прямоугольника"}, -{"id": "rect_width_tool", "title": "Измененить ширину прямоугольника"}, -{"id": "relativeToLabel", "textContent": "По отношению к "}, -{"id": "seg_type", "title": "Изменить вид"}, -{"id": "selLayerLabel", "textContent": "Переместить выделенные элементы:"}, -{"id": "selLayerNames", "title": "Переместить выделенные элементы на другой слой"}, -{"id": "selectedPredefined", "textContent": "Выбирать предопределенный размер"}, -{"id": "selected_objects", "textContent": "Выделенные объекты"}, -{"id": "selected_x", "title": "Изменить горизонтальный координат"}, -{"id": "selected_y", "title": "Изменить вертикальный координат"}, -{"id": "smallest_object", "textContent": "Самый маленький объект"}, -{"id": "straight_segments", "textContent": "Отрезок"}, -{"id": "stroke_color", "title": "Изменить цвет обводки"}, -{"id": "stroke_style", "title": "Изменить стиль обводки"}, -{"id": "stroke_width", "title": "Изменить толщину обводки"}, -{"id": "svginfo_bg_note", "textContent": "(Фон не сохранится вместе с изображением.)"}, -{"id": "svginfo_change_background", "textContent": "Фон"}, -{"id": "svginfo_dim", "textContent": "Размеры холста"}, -{"id": "svginfo_editor_prefs", "textContent": "Параметры"}, -{"id": "svginfo_height", "textContent": "Высота:"}, -{"id": "svginfo_icons", "textContent": "Размер значков"}, -{"id": "svginfo_image_props", "textContent": "Свойства изображения"}, -{"id": "svginfo_lang", "textContent": "Язык"}, -{"id": "svginfo_title", "textContent": "Название"}, -{"id": "svginfo_width", "textContent": "Ширина:"}, -{"id": "text", "title": "Изменить содержание текста"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Выровнять по нижнему краю"}, -{"id": "tool_aligncenter", "title": "Центрировать по вертикальной оси"}, -{"id": "tool_alignleft", "title": "По левому краю"}, -{"id": "tool_alignmiddle", "title": "Центрировать по горизонтальной оси"}, -{"id": "tool_alignright", "title": "По правому краю"}, -{"id": "tool_aligntop", "title": "Выровнять по верхнему краю"}, -{"id": "tool_angle", "title": "Изменить угол поворота"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Жирный"}, -{"id": "tool_circle", "title": "Окружность"}, -{"id": "tool_clear", "textContent": "Создать изображение"}, -{"id": "tool_clone", "title": "Создать копию элемента"}, -{"id": "tool_clone_multi", "title": "Создать копию элементов"}, -{"id": "tool_delete", "title": "Удалить элемент"}, -{"id": "tool_delete_multi", "title": "Удалить выбранные элементы"}, -{"id": "tool_docprops", "textContent": "Свойства документа"}, -{"id": "tool_docprops_cancel", "textContent": "Отменить"}, -{"id": "tool_docprops_save", "textContent": "Сохранить"}, -{"id": "tool_ellipse", "title": "Эллипс"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Эллипс от руки"}, -{"id": "tool_fhpath", "title": "Карандаш"}, -{"id": "tool_fhrect", "title": "Прямоугольник от руки"}, -{"id": "tool_font_size", "title": "Изменить размер шрифта"}, -{"id": "tool_group", "title": "Создать группу элементов"}, -{"id": "tool_image", "title": "Изображение"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Курсив"}, -{"id": "tool_line", "title": "Линия"}, -{"id": "tool_move_bottom", "title": "Опустить"}, -{"id": "tool_move_top", "title": "Поднять"}, -{"id": "tool_node_clone", "title": "Создать копию узла"}, -{"id": "tool_node_delete", "title": "Удалить узел"}, -{"id": "tool_node_link", "title": "Связать узлы"}, -{"id": "tool_opacity", "title": "Изменить непрозрачность элемента"}, -{"id": "tool_open", "textContent": "Открыть изображение"}, -{"id": "tool_path", "title": "Контуры"}, -{"id": "tool_rect", "title": "Прямоугольник"}, -{"id": "tool_redo", "title": "Вернуть"}, -{"id": "tool_reorient", "title": "Изменить ориентацию контура"}, -{"id": "tool_save", "textContent": "Сохранить изображение"}, -{"id": "tool_select", "title": "Выделить"}, -{"id": "tool_source", "title": "Редактировать исходный код"}, -{"id": "tool_source_cancel", "textContent": "Отменить"}, -{"id": "tool_source_save", "textContent": "Сохранить"}, -{"id": "tool_square", "title": "Квадрат"}, -{"id": "tool_text", "title": "Текст"}, -{"id": "tool_topath", "title": "В контур"}, -{"id": "tool_undo", "title": "Отменить"}, -{"id": "tool_ungroup", "title": "Разгруппировать элементы"}, -{"id": "tool_wireframe", "title": "Каркас"}, -{"id": "tool_zoom", "title": "Лупа"}, -{"id": "tools_ellipse_show", "title": "Эллипс / окружность"}, -{"id": "tools_rect_show", "title": "Прямоугольник / квадрат"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Изменить масштаб"}, -{"id": "sidepanel_handle", "textContent": "С л о и", "title": "Перетащить налево или направо"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Была проблема при парсинге вашего SVG исходного кода.\nЗаменить его предыдущим SVG кодом?", - "QignoreSourceChanges": "Забыть без сохранения?", - "QmoveElemsToLayer": "Переместить выделенные элементы на слой '%s'?", - "QwantToClear": "Вы хотите очистить?\nИстория действий будет забыта!", - "cancel": "Отменить", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "Слой с этим именем уже существует.", - "enterNewImgURL": "Введите новый URL изображения", - "enterNewLayerName": "Пожалуйста, введите новое имя.", - "enterUniqueLayerName": "Пожалуйста, введите имя для слоя.", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Возможность не реализована", - "invalidAttrValGiven": "Некорректное значение аргумента", - "key_backspace": "Backspace", - "key_del": "Delete", - "key_down": "Вниз", - "key_up": "Вверх", - "layer": "Слой", - "layerHasThatName": "Слой уже называется этим именем.", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "Нет содержания, по которому выровнять.", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Перетащите для изменения свойвст кривой", - "pathNodeTooltip": "Потащите узел. Чтобы изменить вид отрезка, сделайте двойной щелчок.", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.sk.js b/files_svgedit/js/locale/lang.sk.js deleted file mode 100644 index e15b65c2e..000000000 --- a/files_svgedit/js/locale/lang.sk.js +++ /dev/null @@ -1,176 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Zarovnať relatívne k ..."}, -{"id": "bkgnd_color", "title": "Zmeniť farbu a priehľadnosť pozadia"}, -{"id": "circle_cx", "title": "Zmeniť súradnicu X stredu kružnice"}, -{"id": "circle_cy", "title": "Zmeniť súradnicu Y stredu kružnice"}, -{"id": "circle_r", "title": "Zmeniť polomer kružnice"}, -{"id": "connector_no_arrow", "textContent": "Bez šípok"}, -{"id": "copyrightLabel", "textContent": "Beží na"}, -{"id": "cornerRadiusLabel", "title": "Zmeniť zaoblenie rohov obdĺžnika"}, -{"id": "curve_segments", "textContent": "Krivka"}, -{"id": "ellipse_cx", "title": "Zmeniť súradnicu X stredu elipsy"}, -{"id": "ellipse_cy", "title": "Zmeniť súradnicu Y stredu elipsy"}, -{"id": "ellipse_rx", "title": "Zmeniť polomer X elipsy"}, -{"id": "ellipse_ry", "title": "Zmeniť polomer Y elipsy"}, -{"id": "fill_color", "title": "Zmeniť farbu výplne"}, -{"id": "fitToContent", "textContent": "Prispôsobiť obsahu"}, -{"id": "fit_to_all", "textContent": "Prisposobiť celému obsahu"}, -{"id": "fit_to_canvas", "textContent": "Prispôsobiť stránke"}, -{"id": "fit_to_layer_content", "textContent": "Prispôsobiť obsahu vrstvy"}, -{"id": "fit_to_sel", "textContent": "Prispôsobiť výberu"}, -{"id": "font_family", "title": "Zmeniť font"}, -{"id": "icon_large", "textContent": "Veľká"}, -{"id": "icon_medium", "textContent": "Stredná"}, -{"id": "icon_small", "textContent": "Malá"}, -{"id": "icon_xlarge", "textContent": "Extra veľká"}, -{"id": "idLabel", "title": "Zmeniť ID elementu"}, -{"id": "image_height", "title": "Zmeniť výšku obrázka"}, -{"id": "image_opt_embed", "textContent": "Vložiť data (lokálne súbory)"}, -{"id": "image_opt_ref", "textContent": "Použiť referenciu na súbor"}, -{"id": "image_url", "title": "Zmeniť URL"}, -{"id": "image_width", "title": "Zmeniť šírku obrázka"}, -{"id": "includedImages", "textContent": "Vložené obrázky"}, -{"id": "largest_object", "textContent": "najväčšiemu objektu"}, -{"id": "layer_delete", "title": "Odstrániť vrstvu"}, -{"id": "layer_down", "title": "Presunúť vrstvu dole"}, -{"id": "layer_new", "title": "Nová vrstva"}, -{"id": "layer_rename", "title": "Premenovať vrstvu"}, -{"id": "layer_up", "title": "Presunúť vrstvu hore"}, -{"id": "layersLabel", "textContent": "Vrstvy:"}, -{"id": "line_x1", "title": "Zmeniť počiatočnú súradnicu X čiary"}, -{"id": "line_x2", "title": "Zmeniť koncovú súradnicu X čiary"}, -{"id": "line_y1", "title": "Zmeniť počiatočnú súradnicu Y čiary"}, -{"id": "line_y2", "title": "Zmeniť koncovú súradnicu Y čiary"}, -{"id": "linecap_butt", "title": "Koniec čiary: presný"}, -{"id": "linecap_round", "title": "Koniec čiary: zaoblený"}, -{"id": "linecap_square", "title": "Koniec čiary: so štvorcovým presahom"}, -{"id": "linejoin_bevel", "title": "Napojenie čiar: skosené"}, -{"id": "linejoin_miter", "title": "Napojenie čiar: ostré"}, -{"id": "linejoin_round", "title": "Napojenie čiar: oblé"}, -{"id": "main_icon", "title": "Hlavné menu"}, -{"id": "mode_connect", "title": "Spojiť dva objekty"}, -{"id": "page", "textContent": "stránke"}, -{"id": "palette", "title": "Kliknutím zmeníte farbu výplne, so Shiftom zmeníte farbu obrysu"}, -{"id": "path_node_x", "title": "Zmeniť uzlu súradnicu X"}, -{"id": "path_node_y", "title": "Zmeniť uzlu súradnicu Y"}, -{"id": "rect_height_tool", "title": "Zmena výšku obdĺžnika"}, -{"id": "rect_width_tool", "title": "Zmeniť šírku obdĺžnika"}, -{"id": "relativeToLabel", "textContent": "vzhľadom k:"}, -{"id": "seg_type", "title": "Zmeniť typ segmentu"}, -{"id": "selLayerLabel", "textContent": "Presunút elementy do:"}, -{"id": "selLayerNames", "title": "Presunúť vybrané elementy do inej vrstvy"}, -{"id": "selectedPredefined", "textContent": "Vybrať preddefinovaný:"}, -{"id": "selected_objects", "textContent": "zvoleným objektom"}, -{"id": "selected_x", "title": "Zmeniť súradnicu X"}, -{"id": "selected_y", "title": "Zmeniť súradnicu Y"}, -{"id": "smallest_object", "textContent": "najmenšiemu objektu"}, -{"id": "straight_segments", "textContent": "Rovný"}, -{"id": "stroke_color", "title": "Zmena farby obrysu"}, -{"id": "stroke_style", "title": "Zmeniť štýl obrysu"}, -{"id": "stroke_width", "title": "Zmeniť šírku obrysu"}, -{"id": "svginfo_bg_note", "textContent": "Poznámka: Pozadie nebude uložené spolu s obrázkom."}, -{"id": "svginfo_change_background", "textContent": "Zmeniť pozadie"}, -{"id": "svginfo_dim", "textContent": "Rozmery plátna"}, -{"id": "svginfo_editor_prefs", "textContent": "Vlastnosti editora"}, -{"id": "svginfo_height", "textContent": "Výška:"}, -{"id": "svginfo_icons", "textContent": "Veľkosť ikon"}, -{"id": "svginfo_image_props", "textContent": "Vlastnosti obrázka"}, -{"id": "svginfo_lang", "textContent": "Jazyk"}, -{"id": "svginfo_title", "textContent": "Titulok"}, -{"id": "svginfo_width", "textContent": "Šírka:"}, -{"id": "text", "title": "Změnit text"}, -{"id": "toggle_stroke_tools", "title": "Skryť/ukázať viac nástrojov pre krivku"}, -{"id": "tool_add_subpath", "title": "Pridať daľšiu súčasť krivky"}, -{"id": "tool_alignbottom", "title": "Zarovnať dole"}, -{"id": "tool_aligncenter", "title": "Zarovnať na stred"}, -{"id": "tool_alignleft", "title": "Zarovnať doľava"}, -{"id": "tool_alignmiddle", "title": "Zarovnať na stred"}, -{"id": "tool_alignright", "title": "Zarovnať doprava"}, -{"id": "tool_aligntop", "title": "Zarovnať hore"}, -{"id": "tool_angle", "title": "Zmeniť uhol natočenia"}, -{"id": "tool_blur", "title": "Zmeniť intenzitu rozmazania"}, -{"id": "tool_bold", "title": "Tučne"}, -{"id": "tool_circle", "title": "Kružnica"}, -{"id": "tool_clear", "textContent": "Nový obrázok"}, -{"id": "tool_clone", "title": "Klonovať element"}, -{"id": "tool_clone_multi", "title": "Klonovať elementy"}, -{"id": "tool_delete", "title": "Zmazať element"}, -{"id": "tool_delete_multi", "title": "Vymazať vybrané prvky [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Vlastnosti dokumentu"}, -{"id": "tool_docprops_cancel", "textContent": "Zrušiť"}, -{"id": "tool_docprops_save", "textContent": "Uložiť"}, -{"id": "tool_ellipse", "title": "Elipsa"}, -{"id": "tool_export", "textContent": "Exportovať ako PNG"}, -{"id": "tool_eyedropper", "title": "Pipeta"}, -{"id": "tool_fhellipse", "title": "Elipsa voľnou rukou"}, -{"id": "tool_fhpath", "title": "Ceruzka"}, -{"id": "tool_fhrect", "title": "Obdĺžnik voľnou rukou"}, -{"id": "tool_font_size", "title": "Zmeniť veľkosť písma"}, -{"id": "tool_group", "title": "Zoskupiť elementy"}, -{"id": "tool_image", "title": "Obrázok"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kurzíva"}, -{"id": "tool_line", "title": "Čiara"}, -{"id": "tool_move_bottom", "title": "Presunúť spodok"}, -{"id": "tool_move_top", "title": "Presunúť na vrch"}, -{"id": "tool_node_clone", "title": "Klonovať uzol"}, -{"id": "tool_node_delete", "title": "Zmazať uzol"}, -{"id": "tool_node_link", "title": "Prepojiť kontrolné body"}, -{"id": "tool_opacity", "title": "Zmeniť prehľadnosť vybraných položiek"}, -{"id": "tool_open", "textContent": "Otvoriť obrázok"}, -{"id": "tool_openclose_path", "title": "Otvoriť/uzatvoriť súčasť krivky"}, -{"id": "tool_path", "title": "Krivka"}, -{"id": "tool_position", "title": "Zarovnať element na stránku"}, -{"id": "tool_rect", "title": "Obdĺžnik"}, -{"id": "tool_redo", "title": "Opakovať"}, -{"id": "tool_reorient", "title": "Zmeniť orientáciu krivky"}, -{"id": "tool_save", "textContent": "Uložiť obrázok"}, -{"id": "tool_select", "title": "Výber"}, -{"id": "tool_source", "title": "Upraviť SVG kód"}, -{"id": "tool_source_cancel", "textContent": "Zrušiť"}, -{"id": "tool_source_save", "textContent": "Uložiť"}, -{"id": "tool_square", "title": "Štvorec"}, -{"id": "tool_text", "title": "Text"}, -{"id": "tool_topath", "title": "Previesť na krivku"}, -{"id": "tool_undo", "title": "Späť"}, -{"id": "tool_ungroup", "title": "Zrušiť skupinu"}, -{"id": "tool_wireframe", "title": "Drôtový model"}, -{"id": "tool_zoom", "title": "Priblíženie"}, -{"id": "url_notice", "title": "POZNÁMKA: Tento obrázok nemôže byť vložený. Jeho zobrazenie bude závisieť na jeho ceste"}, -{"id": "zoom_panel", "title": "Zmena priblíženia"}, -{"id": "sidepanel_handle", "textContent": "V r s t v y", "title": "Ťahajte vľavo/vpravo na zmenu veľkosti"}, -{ - "js_strings": { - "QerrorsRevertToSource": "Chyba pri načítaní SVG dokumentu.\nVrátiť povodný SVG dokument?", - "QignoreSourceChanges": "Ignorovať zmeny v SVG dokumente?", - "QmoveElemsToLayer": "Presunúť elementy do vrstvy '%s'?", - "QwantToClear": "Naozaj chcete vymazať kresbu?\n(História bude taktiež vymazaná!)!", - "cancel": "Zrušiť", - "defsFailOnSave": "POZNÁMKA: Kvôli chybe v prehliadači sa tento obrázok môže zobraziť nesprávne (napr. chýbajúce prechody či elementy). Po uložení sa zobrazí správne.", - "dupeLayerName": "Vrstva s daným názvom už existuje!", - "enterNewImgURL": "Zadajte nové URL obrázka", - "enterNewLayerName": "Zadajte názov vrstvy", - "enterUniqueLayerName": "Zadajte jedinečný názov vrstvy", - "exportNoBlur": "bez rozostrenia elementov", - "exportNoDashArray": "plné krivky", - "exportNoImage": "bez vložených obrázkov", - "exportNoText": "vložený text môže vyzerať inak", - "exportNoforeignObject": "bez foreignObject objektov", - "featNotSupported": "Vlastnosť nie je podporovaná", - "invalidAttrValGiven": "Neplatná hodnota", - "key_backspace": "Backspace", - "key_del": "Delete", - "key_down": "šípka dole", - "key_up": "šípka hore", - "layer": "Vrstva", - "layerHasThatName": "Vrstva už má zadaný názov", - "loadingImage": "Nahrávam obrázok, prosím čakajte ...", - "noContentToFitTo": "Vyberte oblasť na prispôsobenie", - "noteTheseIssues": "Môžu sa vyskytnúť nasledujúce problémy: ", - "ok": "OK", - "pathCtrlPtTooltip": "Ťahajte kontrolné body pre upravnie vlastnosti krivky", - "pathNodeTooltip": "Ťahajte bod na presunutie. Dvojklik na zmenu typu segmentu", - "saveFromBrowser": "Vyberte \"Uložiť ako ...\" vo vašom prehliadači na uloženie tohoto obrázka do súboru %s." - } -} -] diff --git a/files_svgedit/js/locale/lang.sl.js b/files_svgedit/js/locale/lang.sl.js deleted file mode 100644 index 8711df285..000000000 --- a/files_svgedit/js/locale/lang.sl.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Poravnaj glede na ..."}, -{"id": "bkgnd_color", "title": "Spreminjanje barve ozadja / motnosti"}, -{"id": "circle_cx", "title": "Spremeni krog's CX usklajujejo"}, -{"id": "circle_cy", "title": "Spremeni krog's cy usklajujejo"}, -{"id": "circle_r", "title": "Spremeni krogu polmera"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Spremeni Pravokotnik Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Spremeni elipse's CX usklajujejo"}, -{"id": "ellipse_cy", "title": "Spremeni elipse's cy usklajujejo"}, -{"id": "ellipse_rx", "title": "Spremeni elipse's x polmer"}, -{"id": "ellipse_ry", "title": "Spremeni elipse's y polmer"}, -{"id": "fill_color", "title": "Spremeni barvo polnila"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit na vse vsebine"}, -{"id": "fit_to_canvas", "textContent": "Fit na platno"}, -{"id": "fit_to_layer_content", "textContent": "Fit na plast vsebine"}, -{"id": "fit_to_sel", "textContent": "Fit za izbor"}, -{"id": "font_family", "title": "Change Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Spremeni Višina slike"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Spremeni URL"}, -{"id": "image_width", "title": "Spremeni Širina slike"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "Največji objekt"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move Down Layer"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Up Layer"}, -{"id": "layersLabel", "textContent": "Plasti:"}, -{"id": "line_x1", "title": "Spremeni skladu z začetkom x usklajujejo"}, -{"id": "line_x2", "title": "Change line je končalo x usklajujejo"}, -{"id": "line_y1", "title": "Change line's začetkom y usklajujejo"}, -{"id": "line_y2", "title": "Change line je končalo y usklajujejo"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "page"}, -{"id": "palette", "title": "Kliknite, če želite spremeniti barvo polnila, premik miške kliknite spremeniti barvo kap"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Spremeni pravokotniku višine"}, -{"id": "rect_width_tool", "title": "Spremeni pravokotnik širine"}, -{"id": "relativeToLabel", "textContent": "glede na:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select vnaprej:"}, -{"id": "selected_objects", "textContent": "izvoljeni predmeti"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "najmanjša objekt"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Spremeni barvo kap"}, -{"id": "stroke_style", "title": "Spremeni kap dash slog"}, -{"id": "stroke_width", "title": "Spreminjanje širine kap"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Višina:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Širina:"}, -{"id": "text", "title": "Spremeni besedilo vsebino"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Sredino"}, -{"id": "tool_alignleft", "title": "Poravnaj levo"}, -{"id": "tool_alignmiddle", "title": "Poravnava Middle"}, -{"id": "tool_alignright", "title": "Poravnaj desno"}, -{"id": "tool_aligntop", "title": "Poravnava Top"}, -{"id": "tool_angle", "title": "Sprememba kota rotacije"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Izbriši element"}, -{"id": "tool_delete_multi", "title": "Brisanje izbranih elementov"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Prekliči"}, -{"id": "tool_docprops_save", "textContent": "Shraniti"}, -{"id": "tool_ellipse", "title": "Elipsa"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Elipsa"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand pravokotnik"}, -{"id": "tool_font_size", "title": "Spremeni velikost pisave"}, -{"id": "tool_group", "title": "Skupina Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Premakni v Bottom"}, -{"id": "tool_move_top", "title": "Premakni na vrh"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Spremeni izbran predmet motnosti"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Pravokotnik"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Shrani slike"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Vir"}, -{"id": "tool_source_cancel", "textContent": "Prekliči"}, -{"id": "tool_source_save", "textContent": "Shraniti"}, -{"id": "tool_square", "title": "Kvadrat"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Razdruži Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Spreminjanje povečave"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.sq.js b/files_svgedit/js/locale/lang.sq.js deleted file mode 100644 index 0e1ba6594..000000000 --- a/files_svgedit/js/locale/lang.sq.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Vendose në lidhje me ..."}, -{"id": "bkgnd_color", "title": "Change color background / patejdukshmëri"}, -{"id": "circle_cx", "title": "Cx rrethi Ndryshimi i bashkërenduar"}, -{"id": "circle_cy", "title": "Ndryshimi i rrethit cy koordinuar"}, -{"id": "circle_r", "title": "Rreze rreth Ndryshimi i"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Ndryshimi Rectangle Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Ndryshimi elips e cx koordinuar"}, -{"id": "ellipse_cy", "title": "Elips cy Ndryshimi i bashkërenduar"}, -{"id": "ellipse_rx", "title": "Rreze x elips Ndryshimi i"}, -{"id": "ellipse_ry", "title": "Radiusi y elips ndërroj"}, -{"id": "fill_color", "title": "Ndryshimi mbush color"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit për të gjithë përmbajtjen"}, -{"id": "fit_to_canvas", "textContent": "Fit në kanavacë"}, -{"id": "fit_to_layer_content", "textContent": "Shtresë Fit to content"}, -{"id": "fit_to_sel", "textContent": "Fit to Selection"}, -{"id": "font_family", "title": "Ndryshimi Font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Height të ndryshuar imazhin"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Ndrysho URL"}, -{"id": "image_width", "title": "Ndryshimi image width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "madh objekt"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move Down Layer"}, -{"id": "layer_new", "title": "Re Shtresa"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Up Layer"}, -{"id": "layersLabel", "textContent": "Shtresa:"}, -{"id": "line_x1", "title": "Shkarko Ndryshimi që fillon x koordinuar"}, -{"id": "line_x2", "title": "Linjë Ndryshimi i fund x koordinuar"}, -{"id": "line_y1", "title": "Shkarko Ndryshimi që fillon y koordinuar"}, -{"id": "line_y2", "title": "Shkarko Ndryshimi i dhënë fund y koordinuar"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "faqe"}, -{"id": "palette", "title": "Klikoni për të ndryshuar mbushur me ngjyra, shift-klikoni për të ndryshuar ngjyrën pash"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Height Ndryshimi drejtkëndësh"}, -{"id": "rect_width_tool", "title": "Width Ndryshimi drejtkëndësh"}, -{"id": "relativeToLabel", "textContent": "lidhje me:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Zgjidhni paracaktuara:"}, -{"id": "selected_objects", "textContent": "objektet e zgjedhur"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "objektit më të vogël"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change color pash"}, -{"id": "stroke_style", "title": "Ndryshimi dash goditje stil"}, -{"id": "stroke_width", "title": "Ndryshimi goditje width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Lartësia:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Gjerësia:"}, -{"id": "text", "title": "Text contents Ndryshimi"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Align Center"}, -{"id": "tool_alignleft", "title": "Align Left"}, -{"id": "tool_alignmiddle", "title": "Align Mesme"}, -{"id": "tool_alignright", "title": "Align Right"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Kënd Ndryshimi rrotullim"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Rrethi"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Klon Element"}, -{"id": "tool_clone_multi", "title": "Elemente Clone"}, -{"id": "tool_delete", "title": "Fshije Element"}, -{"id": "tool_delete_multi", "title": "Elementet e zgjedhur është dhënë Delete [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Dokumenti Prona"}, -{"id": "tool_docprops_cancel", "textContent": "Anulo"}, -{"id": "tool_docprops_save", "textContent": "Ruaj"}, -{"id": "tool_ellipse", "title": "Elips"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Lëndë Hand Rectangle"}, -{"id": "tool_font_size", "title": "Ndryshimi Font Size"}, -{"id": "tool_group", "title": "Elementet e Grupit"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Ndryshimi zgjedhur errësirë item"}, -{"id": "tool_open", "textContent": "Image Hapur"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Drejtkëndësh"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Image Ruaj"}, -{"id": "tool_select", "title": "Zgjidhni Tool"}, -{"id": "tool_source", "title": "Burimi Edit"}, -{"id": "tool_source_cancel", "textContent": "Anulo"}, -{"id": "tool_source_save", "textContent": "Ruaj"}, -{"id": "tool_square", "title": "Sheshi"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Undo"}, -{"id": "tool_ungroup", "title": "Elemente Ungroup"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Ndryshimi zoom nivel"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.sr.js b/files_svgedit/js/locale/lang.sr.js deleted file mode 100644 index ebfc6b135..000000000 --- a/files_svgedit/js/locale/lang.sr.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Алигн у односу на ..."}, -{"id": "bkgnd_color", "title": "Промена боје позадине / непрозирност"}, -{"id": "circle_cx", "title": "Промена круг'с ЦКС координатни"}, -{"id": "circle_cy", "title": "Промена круг'с ср координатни"}, -{"id": "circle_r", "title": "Промена круга је полупречник"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Промена правоугаоник Кутак радијуса"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Промена елипса ЦКС'с координатни"}, -{"id": "ellipse_cy", "title": "Промена елипса'с ср координатни"}, -{"id": "ellipse_rx", "title": "Промена елипса'с Кс радијуса"}, -{"id": "ellipse_ry", "title": "Промена елипса је радијус Ы"}, -{"id": "fill_color", "title": "Промена боје попуне"}, -{"id": "fitToContent", "textContent": "Стане на садржај"}, -{"id": "fit_to_all", "textContent": "Уклопи у сав садржај"}, -{"id": "fit_to_canvas", "textContent": "Стане на платну"}, -{"id": "fit_to_layer_content", "textContent": "Уклопи у слоју садржај"}, -{"id": "fit_to_sel", "textContent": "Уклопи у избор"}, -{"id": "font_family", "title": "Цханге фонт породицу"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Промени слику висине"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Промените УРЛ адресу"}, -{"id": "image_width", "title": "Промени слику ширине"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "Највећи објекат"}, -{"id": "layer_delete", "title": "Избриши слој"}, -{"id": "layer_down", "title": "Помери слој доле"}, -{"id": "layer_new", "title": "Нови слој"}, -{"id": "layer_rename", "title": "Преименуј слој"}, -{"id": "layer_up", "title": "Помери слој Горе"}, -{"id": "layersLabel", "textContent": "Слојева:"}, -{"id": "line_x1", "title": "Промена линија Стартни кс координата"}, -{"id": "line_x2", "title": "Промена линија је завршетак кс координата"}, -{"id": "line_y1", "title": "Промена линија у координатни почетак Ы"}, -{"id": "line_y2", "title": "Промена линија је Ы координата се завршава"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "страна"}, -{"id": "palette", "title": "Кликните да бисте променили боју попуне, Схифт-кликните да промените боју удар"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Промени правоугаоник висина"}, -{"id": "rect_width_tool", "title": "Промени правоугаоник ширине"}, -{"id": "relativeToLabel", "textContent": "у односу на:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Изаберите унапред дефинисани:"}, -{"id": "selected_objects", "textContent": "изабраних објеката"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "Најмањи објекат"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Промена боје удар"}, -{"id": "stroke_style", "title": "Промена ход Дасх стил"}, -{"id": "stroke_width", "title": "Промена удара ширина"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Висина:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Ширина:"}, -{"id": "text", "title": "Промена садржаја текстуалне"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Поравнај доле"}, -{"id": "tool_aligncenter", "title": "Поравнај по центру"}, -{"id": "tool_alignleft", "title": "Поравнај лево"}, -{"id": "tool_alignmiddle", "title": "Алигн Средњи"}, -{"id": "tool_alignright", "title": "Поравнај десно"}, -{"id": "tool_aligntop", "title": "Поравнајте врх"}, -{"id": "tool_angle", "title": "Промени ротације Угао"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Подебљан текст"}, -{"id": "tool_circle", "title": "Круг"}, -{"id": "tool_clear", "textContent": "Нова слика"}, -{"id": "tool_clone", "title": "Клон Елеменат"}, -{"id": "tool_clone_multi", "title": "Елементи клон"}, -{"id": "tool_delete", "title": "Избриши елемент"}, -{"id": "tool_delete_multi", "title": "Избриши изабране Елементи [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Особине документа"}, -{"id": "tool_docprops_cancel", "textContent": "Откажи"}, -{"id": "tool_docprops_save", "textContent": "Сачувати"}, -{"id": "tool_ellipse", "title": "Елипса"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Фрее-Ручни Елипса"}, -{"id": "tool_fhpath", "title": "Алатка оловка"}, -{"id": "tool_fhrect", "title": "Фрее-Ручни правоугаоник"}, -{"id": "tool_font_size", "title": "Цханге фонт сизе"}, -{"id": "tool_group", "title": "Група Елементи"}, -{"id": "tool_image", "title": "Алатка за слике"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Италиц текст"}, -{"id": "tool_line", "title": "Линија Алат"}, -{"id": "tool_move_bottom", "title": "Премести на доле"}, -{"id": "tool_move_top", "title": "Премести на врх"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Промена изабране ставке непрозирност"}, -{"id": "tool_open", "textContent": "Отвори слике"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Правоугаоник"}, -{"id": "tool_redo", "title": "Редо"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Сачувај слика"}, -{"id": "tool_select", "title": "Изаберите алатку"}, -{"id": "tool_source", "title": "Уреди Извор"}, -{"id": "tool_source_cancel", "textContent": "Откажи"}, -{"id": "tool_source_save", "textContent": "Сачувати"}, -{"id": "tool_square", "title": "Трг"}, -{"id": "tool_text", "title": "Текст Алат"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Поништи"}, -{"id": "tool_ungroup", "title": "Разгрупирање Елементи"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Алатка за зумирање"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Промените ниво зумирања"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.sv.js b/files_svgedit/js/locale/lang.sv.js deleted file mode 100644 index 6c08c1743..000000000 --- a/files_svgedit/js/locale/lang.sv.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Justera förhållande till ..."}, -{"id": "bkgnd_color", "title": "Ändra bakgrundsfärg / opacitet"}, -{"id": "circle_cx", "title": "Ändra cirkeln cx samordna"}, -{"id": "circle_cy", "title": "Ändra cirkeln samordna cy"}, -{"id": "circle_r", "title": "Ändra cirkelns radie"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Ändra rektangel hörnradie"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Ändra ellips's cx samordna"}, -{"id": "ellipse_cy", "title": "Ändra ellips's samordna cy"}, -{"id": "ellipse_rx", "title": "Ändra ellips's x radie"}, -{"id": "ellipse_ry", "title": "Ändra ellips's y radie"}, -{"id": "fill_color", "title": "Ändra fyllningsfärg"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Passar till allt innehåll"}, -{"id": "fit_to_canvas", "textContent": "Anpassa till duk"}, -{"id": "fit_to_layer_content", "textContent": "Anpassa till lager innehåll"}, -{"id": "fit_to_sel", "textContent": "Anpassa till val"}, -{"id": "font_family", "title": "Ändra Typsnitt"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Ändra bildhöjd"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Ändra URL"}, -{"id": "image_width", "title": "Ändra bild bredd"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "största objekt"}, -{"id": "layer_delete", "title": "Radera Layer"}, -{"id": "layer_down", "title": "Flytta Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Byt namn på Layer"}, -{"id": "layer_up", "title": "Flytta Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Ändra Lines startar x samordna"}, -{"id": "line_x2", "title": "Ändra Lines slutar x samordna"}, -{"id": "line_y1", "title": "Ändra Lines startar Y-koordinat"}, -{"id": "line_y2", "title": "Ändra Lines slutar Y-koordinat"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "sida"}, -{"id": "palette", "title": "Klicka för att ändra fyllningsfärg, shift-klicka för att ändra färgar"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Ändra rektangel höjd"}, -{"id": "rect_width_tool", "title": "Ändra rektangel bredd"}, -{"id": "relativeToLabel", "textContent": "jämfört:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Välj fördefinierad:"}, -{"id": "selected_objects", "textContent": "valda objekt"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "minsta objektet"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Ändra färgar"}, -{"id": "stroke_style", "title": "Ändra stroke Dash stil"}, -{"id": "stroke_width", "title": "Ändra stroke bredd"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Höjd:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Bredd:"}, -{"id": "text", "title": "Ändra textinnehållet"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Centrera"}, -{"id": "tool_alignleft", "title": "Vänsterjustera"}, -{"id": "tool_alignmiddle", "title": "Justera Middle"}, -{"id": "tool_alignright", "title": "Högerjustera"}, -{"id": "tool_aligntop", "title": "Justera Top"}, -{"id": "tool_angle", "title": "Ändra rotationsvinkel"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Fet text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Radera Element"}, -{"id": "tool_delete_multi", "title": "Radera markerade element [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Dokumentegenskaper"}, -{"id": "tool_docprops_cancel", "textContent": "Avbryt"}, -{"id": "tool_docprops_save", "textContent": "Spara"}, -{"id": "tool_ellipse", "title": "Ellips"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Fri hand Ellipse"}, -{"id": "tool_fhpath", "title": "Pennverktyget"}, -{"id": "tool_fhrect", "title": "Fri hand rektangel"}, -{"id": "tool_font_size", "title": "Ändra textstorlek"}, -{"id": "tool_group", "title": "Group Elements"}, -{"id": "tool_image", "title": "Bildverktyg"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Kursiv text"}, -{"id": "tool_line", "title": "Linjeverktyg"}, -{"id": "tool_move_bottom", "title": "Move to Bottom"}, -{"id": "tool_move_top", "title": "Flytta till början"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Ändra markerat objekt opacitet"}, -{"id": "tool_open", "textContent": "Öppna bild"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Rektangel"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Markeringsverktyget"}, -{"id": "tool_source", "title": "Redigera källa"}, -{"id": "tool_source_cancel", "textContent": "Avbryt"}, -{"id": "tool_source_save", "textContent": "Spara"}, -{"id": "tool_square", "title": "Fyrkant"}, -{"id": "tool_text", "title": "Textverktyg"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Ångra"}, -{"id": "tool_ungroup", "title": "Dela Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoomverktyget"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Ändra zoomnivå"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.sw.js b/files_svgedit/js/locale/lang.sw.js deleted file mode 100644 index d2f65a98d..000000000 --- a/files_svgedit/js/locale/lang.sw.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Align jamaa na ..."}, -{"id": "bkgnd_color", "title": "Change background color / opacity"}, -{"id": "circle_cx", "title": "Change mduara's CX kuratibu"}, -{"id": "circle_cy", "title": "Change mduara's cy kuratibu"}, -{"id": "circle_r", "title": "Change mduara's Radius"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Change Mstatili Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Change ellipse s CX kuratibu"}, -{"id": "ellipse_cy", "title": "Change ellipse s cy kuratibu"}, -{"id": "ellipse_rx", "title": "Change ellipse s x Radius"}, -{"id": "ellipse_ry", "title": "Change ellipse's y Radius"}, -{"id": "fill_color", "title": "Change kujaza Michezo"}, -{"id": "fitToContent", "textContent": "Waliopo Content"}, -{"id": "fit_to_all", "textContent": "Waliopo all content"}, -{"id": "fit_to_canvas", "textContent": "Wanaofaa Canvas"}, -{"id": "fit_to_layer_content", "textContent": "Waliopo safu content"}, -{"id": "fit_to_sel", "textContent": "Waliopo uteuzi"}, -{"id": "font_family", "title": "Change font Family"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Change image urefu"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Change URL"}, -{"id": "image_width", "title": "Change image width"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "ukubwa object"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "Mpya Layer"}, -{"id": "layer_rename", "title": "Rename Layer"}, -{"id": "layer_up", "title": "Move Layer Up"}, -{"id": "layersLabel", "textContent": "Tabaka:"}, -{"id": "line_x1", "title": "Change Mpya's mapya x kuratibu"}, -{"id": "line_x2", "title": "Change Mpya's kuishia x kuratibu"}, -{"id": "line_y1", "title": "Change Mpya's mapya y kuratibu"}, -{"id": "line_y2", "title": "Change Mpya's kuishia y kuratibu"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "umebadilisha"}, -{"id": "palette", "title": "Click kubadili kujaza color, skiftarbete-click kubadili kiharusi color"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Change Mstatili height"}, -{"id": "rect_width_tool", "title": "Change Mstatili width"}, -{"id": "relativeToLabel", "textContent": "relativa att:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Select predefined:"}, -{"id": "selected_objects", "textContent": "waliochaguliwa vitu"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "minsta object"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Change kiharusi Michezo"}, -{"id": "stroke_style", "title": "Change kiharusi dash style"}, -{"id": "stroke_width", "title": "Change kiharusi width"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Urefu:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Upana:"}, -{"id": "text", "title": "Change Nakala contents"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Align Center"}, -{"id": "tool_alignleft", "title": "Align Left"}, -{"id": "tool_alignmiddle", "title": "Kati align"}, -{"id": "tool_alignright", "title": "Align Right"}, -{"id": "tool_aligntop", "title": "Align Juu"}, -{"id": "tool_angle", "title": "Change mzunguko vinkel"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Nakala"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "New Image"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Delete Element"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Cancel"}, -{"id": "tool_docprops_save", "textContent": "Okoa"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Penseli Tool"}, -{"id": "tool_fhrect", "title": "Free-Hand Rectangle"}, -{"id": "tool_font_size", "title": "Change font Size"}, -{"id": "tool_group", "title": "Kikundi Elements"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italiki Nakala"}, -{"id": "tool_line", "title": "Mpya Tool"}, -{"id": "tool_move_bottom", "title": "Kuhama Bottom"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Change selected opacity punkt"}, -{"id": "tool_open", "textContent": "Open Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Mstatili"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Select Tool"}, -{"id": "tool_source", "title": "Edit Lugha"}, -{"id": "tool_source_cancel", "textContent": "Cancel"}, -{"id": "tool_source_save", "textContent": "Save"}, -{"id": "tool_square", "title": "Mraba"}, -{"id": "tool_text", "title": "Nakala Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Tengua"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Change zoom ngazi"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.th.js b/files_svgedit/js/locale/lang.th.js deleted file mode 100644 index 2a01c1885..000000000 --- a/files_svgedit/js/locale/lang.th.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "จัดชิดเทียบกับ ..."}, -{"id": "bkgnd_color", "title": "สีพื้นหลังเปลี่ยน / ความทึบ"}, -{"id": "circle_cx", "title": "Cx วงกลมเปลี่ยนของพิกัด"}, -{"id": "circle_cy", "title": "วงกลมเปลี่ยนเป็น cy ประสานงาน"}, -{"id": "circle_r", "title": "รัศมีวงกลมเปลี่ยนเป็น"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "รัศมีเปลี่ยนสี่เหลี่ยมผืนผ้า Corner"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "เปลี่ยน ellipse ของ cx ประสานงาน"}, -{"id": "ellipse_cy", "title": "Ellipse เปลี่ยนของ cy ประสานงาน"}, -{"id": "ellipse_rx", "title": "Ellipse เปลี่ยนของรัศมี x"}, -{"id": "ellipse_ry", "title": "Ellipse เปลี่ยนของรัศมี y"}, -{"id": "fill_color", "title": "เปลี่ยนใส่สี"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "พอดีกับเนื้อหาทั้งหมด"}, -{"id": "fit_to_canvas", "textContent": "เหมาะสมในการผ้าใบ"}, -{"id": "fit_to_layer_content", "textContent": "พอดีเนื้อหาชั้นที่"}, -{"id": "fit_to_sel", "textContent": "เหมาะสมในการเลือก"}, -{"id": "font_family", "title": "ครอบครัว Change Font"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "ความสูงเปลี่ยนรูปภาพ"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "URL เปลี่ยน"}, -{"id": "image_width", "title": "ความกว้างเปลี่ยนรูปภาพ"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "ที่ใหญ่ที่สุดในวัตถุ"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "ย้าย Layer ลง"}, -{"id": "layer_new", "title": "Layer ใหม่"}, -{"id": "layer_rename", "title": "Layer เปลี่ยนชื่อ"}, -{"id": "layer_up", "title": "ย้าย Layer Up"}, -{"id": "layersLabel", "textContent": "ชั้น:"}, -{"id": "line_x1", "title": "สายเปลี่ยนเป็นเริ่มต้น x พิกัด"}, -{"id": "line_x2", "title": "สายเปลี่ยนเป็นสิ้นสุด x พิกัด"}, -{"id": "line_y1", "title": "สายเปลี่ยนเป็นเริ่มต้น y พิกัด"}, -{"id": "line_y2", "title": "สายเปลี่ยนเป็นสิ้นสุด y พิกัด"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "หน้า"}, -{"id": "palette", "title": "คลิกเพื่อเปลี่ยนใส่สีกะคลิกเปลี่ยนสีจังหวะ"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "ความสูงสี่เหลี่ยมผืนผ้าเปลี่ยน"}, -{"id": "rect_width_tool", "title": "ความกว้างสี่เหลี่ยมผืนผ้าเปลี่ยน"}, -{"id": "relativeToLabel", "textContent": "เทียบกับ:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "เลือกที่กำหนดไว้ล่วงหน้า:"}, -{"id": "selected_objects", "textContent": "วัตถุเลือกตั้ง"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "วัตถุที่เล็กที่สุด"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "สีจังหวะเปลี่ยน"}, -{"id": "stroke_style", "title": "รีบเปลี่ยนสไตล์จังหวะ"}, -{"id": "stroke_width", "title": "ความกว้างจังหวะเปลี่ยน"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "ความสูง:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "ความกว้าง:"}, -{"id": "text", "title": "เปลี่ยนเนื้อหาข้อความ"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "ด้านล่างชิด"}, -{"id": "tool_aligncenter", "title": "จัดแนวกึ่งกลาง"}, -{"id": "tool_alignleft", "title": "จัดชิดซ้าย"}, -{"id": "tool_alignmiddle", "title": "กลางชิด"}, -{"id": "tool_alignright", "title": "จัดชิดขวา"}, -{"id": "tool_aligntop", "title": "ด้านบนชิด"}, -{"id": "tool_angle", "title": "มุมหมุนเปลี่ยน"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "ข้อความตัวหนา"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "รูปภาพใหม่"}, -{"id": "tool_clone", "title": "องค์ประกอบโคลน"}, -{"id": "tool_clone_multi", "title": "องค์ประกอบโคลน"}, -{"id": "tool_delete", "title": "องค์ประกอบลบ"}, -{"id": "tool_delete_multi", "title": "องค์ประกอบที่เลือกลบ"}, -{"id": "tool_docprops", "textContent": "คุณสมบัติของเอกสาร"}, -{"id": "tool_docprops_cancel", "textContent": "ยกเลิก"}, -{"id": "tool_docprops_save", "textContent": "บันทึก"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Ellipse Free-Hand"}, -{"id": "tool_fhpath", "title": "เครื่องมือดินสอ"}, -{"id": "tool_fhrect", "title": "สี่เหลี่ยมผืนผ้า Free-Hand"}, -{"id": "tool_font_size", "title": "เปลี่ยนขนาดตัวอักษร"}, -{"id": "tool_group", "title": "องค์ประกอบของกลุ่ม"}, -{"id": "tool_image", "title": "เครื่องมือ Image"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "ข้อความตัวเอียง"}, -{"id": "tool_line", "title": "เครื่องมือ Line"}, -{"id": "tool_move_bottom", "title": "ย้ายไปด้านล่าง"}, -{"id": "tool_move_top", "title": "ย้ายไปด้านบน"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "เปลี่ยนความทึบเลือกรายการ"}, -{"id": "tool_open", "textContent": "ภาพเปิด"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "สี่เหลี่ยมผืนผ้า"}, -{"id": "tool_redo", "title": "ทำซ้ำ"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "บันทึกรูปภาพ"}, -{"id": "tool_select", "title": "เครื่องมือเลือก"}, -{"id": "tool_source", "title": "แหล่งที่มาแก้ไข"}, -{"id": "tool_source_cancel", "textContent": "ยกเลิก"}, -{"id": "tool_source_save", "textContent": "บันทึก"}, -{"id": "tool_square", "title": "สี่เหลี่ยม"}, -{"id": "tool_text", "title": "เครื่องมือ Text"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "เลิก"}, -{"id": "tool_ungroup", "title": "องค์ประกอบ Ungroup"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "เครื่องมือซูม"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "เปลี่ยนระดับการซูม"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.tl.js b/files_svgedit/js/locale/lang.tl.js deleted file mode 100644 index d81762d0b..000000000 --- a/files_svgedit/js/locale/lang.tl.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Pantayin sa kamag-anak sa ..."}, -{"id": "bkgnd_color", "title": "Baguhin ang kulay ng background / kalabuan"}, -{"id": "circle_cx", "title": "Cx Baguhin ang bilog's coordinate"}, -{"id": "circle_cy", "title": "Baguhin ang bilog's cy coordinate"}, -{"id": "circle_r", "title": "Baguhin ang radius ng bilog"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Baguhin ang Parihaba Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Baguhin ang tambilugan's cx-ugma"}, -{"id": "ellipse_cy", "title": "Baguhin ang tambilugan's cy coordinate"}, -{"id": "ellipse_rx", "title": "X radius Baguhin ang tambilugan's"}, -{"id": "ellipse_ry", "title": "Y radius Baguhin ang tambilugan's"}, -{"id": "fill_color", "title": "Baguhin ang punuin ng kulay"}, -{"id": "fitToContent", "textContent": "Pagkasyahin sa Nilalaman"}, -{"id": "fit_to_all", "textContent": "Pagkasyahin sa lahat ng mga nilalaman"}, -{"id": "fit_to_canvas", "textContent": "Pagkasyahin sa tolda"}, -{"id": "fit_to_layer_content", "textContent": "Pagkasyahin sa layer nilalaman"}, -{"id": "fit_to_sel", "textContent": "Pagkasyahin sa pagpili"}, -{"id": "font_family", "title": "Baguhin ang Pamilya ng Font"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Baguhin ang taas ng imahe"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Baguhin ang URL"}, -{"id": "image_width", "title": "Baguhin ang lapad ng imahe"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "pinakamalaking bagay"}, -{"id": "layer_delete", "title": "Tanggalin Layer"}, -{"id": "layer_down", "title": "Ilipat Layer Down"}, -{"id": "layer_new", "title": "Bagong Layer"}, -{"id": "layer_rename", "title": "Palitan ang pangalan ng Layer"}, -{"id": "layer_up", "title": "Ilipat Layer Up"}, -{"id": "layersLabel", "textContent": "Layers:"}, -{"id": "line_x1", "title": "Baguhin ang linya ng simula x coordinate"}, -{"id": "line_x2", "title": "Baguhin ang linya ay nagtatapos x coordinate"}, -{"id": "line_y1", "title": "Baguhin ang linya ng simula y coordinate"}, -{"id": "line_y2", "title": "Baguhin ang linya ay nagtatapos y coordinate"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "pahina"}, -{"id": "palette", "title": "I-click upang baguhin ang punan ang kulay, paglilipat-click upang baguhin ang paghampas ng kulay"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Baguhin ang rektanggulo taas"}, -{"id": "rect_width_tool", "title": "Baguhin ang rektanggulo lapad"}, -{"id": "relativeToLabel", "textContent": "kamag-anak sa:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Piliin ang paunang-natukoy na:"}, -{"id": "selected_objects", "textContent": "inihalal na mga bagay"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "pinakamaliit na bagay"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Baguhin ang kulay ng paghampas"}, -{"id": "stroke_style", "title": "Baguhin ang stroke pagsugod estilo"}, -{"id": "stroke_width", "title": "Baguhin ang stroke lapad"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Tangkad:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Lapad:"}, -{"id": "text", "title": "Baguhin ang mga nilalaman ng teksto"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Pantayin sa Ibaba"}, -{"id": "tool_aligncenter", "title": "Pantayin sa Gitna"}, -{"id": "tool_alignleft", "title": "Pantayin ang Kaliwa"}, -{"id": "tool_alignmiddle", "title": "Pantayin sa Gitnang"}, -{"id": "tool_alignright", "title": "Pantayin sa Kanan"}, -{"id": "tool_aligntop", "title": "Pantayin Top"}, -{"id": "tool_angle", "title": "Baguhin ang pag-ikot anggulo"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Bagong Imahe"}, -{"id": "tool_clone", "title": "I-clone ang Sangkap"}, -{"id": "tool_clone_multi", "title": "I-clone ang mga Sangkap"}, -{"id": "tool_delete", "title": "Burahin ang Sangkap"}, -{"id": "tool_delete_multi", "title": "Tanggalin Napiling Mga Sangkap [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Document Katangian"}, -{"id": "tool_docprops_cancel", "textContent": "I-cancel"}, -{"id": "tool_docprops_save", "textContent": "I-save"}, -{"id": "tool_ellipse", "title": "Tambilugan"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Libreng-kamay tambilugan"}, -{"id": "tool_fhpath", "title": "Kasangkapan ng lapis"}, -{"id": "tool_fhrect", "title": "Libreng-kamay Parihaba"}, -{"id": "tool_font_size", "title": "Baguhin ang Laki ng Font"}, -{"id": "tool_group", "title": "Group Sangkap"}, -{"id": "tool_image", "title": "Image Kasangkapan"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Kasangkapan"}, -{"id": "tool_move_bottom", "title": "Ilipat sa Ibaba"}, -{"id": "tool_move_top", "title": "Ilipat sa Tuktok"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Palitan ang mga napiling bagay kalabuan"}, -{"id": "tool_open", "textContent": "Buksan ang Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Parihaba"}, -{"id": "tool_redo", "title": "Gawin muli"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "I-save ang Image"}, -{"id": "tool_select", "title": "Piliin ang Tool"}, -{"id": "tool_source", "title": "I-edit ang Source"}, -{"id": "tool_source_cancel", "textContent": "I-cancel"}, -{"id": "tool_source_save", "textContent": "I-save"}, -{"id": "tool_square", "title": "Parisukat"}, -{"id": "tool_text", "title": "Text Kasangkapan"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Bawiin"}, -{"id": "tool_ungroup", "title": "Ungroup Sangkap"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Mag-zoom Kasangkapan"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Baguhin ang antas ng zoom"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.tr.js b/files_svgedit/js/locale/lang.tr.js deleted file mode 100644 index ce6ab6bc0..000000000 --- a/files_svgedit/js/locale/lang.tr.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Align göre ..."}, -{"id": "bkgnd_color", "title": "Arka plan rengini değiştirmek / opacity"}, -{"id": "circle_cx", "title": "Değiştirmek daire's cx koordine"}, -{"id": "circle_cy", "title": "Değiştirmek daire cy koordine's"}, -{"id": "circle_r", "title": "Değiştirmek daire yarıçapı"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Değiştirmek Dikdörtgen Köşe Yarıçap"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "'s Koordine cx elips Girişi"}, -{"id": "ellipse_cy", "title": "Değiştirmek elips cy koordine's"}, -{"id": "ellipse_rx", "title": "Değiştirmek elips's x yarıçapı"}, -{"id": "ellipse_ry", "title": "Değiştirmek elips Y yarıçapı"}, -{"id": "fill_color", "title": "Renk değiştirmek doldurmak"}, -{"id": "fitToContent", "textContent": "Fit to Content"}, -{"id": "fit_to_all", "textContent": "Fit tüm içerik için"}, -{"id": "fit_to_canvas", "textContent": "Fit tuvaline"}, -{"id": "fit_to_layer_content", "textContent": "Sığacak şekilde katman içerik"}, -{"id": "fit_to_sel", "textContent": "Fit seçimine"}, -{"id": "font_family", "title": "Font değiştir Aile"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Değiştirmek görüntü yüksekliği"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Değiştirmek URL"}, -{"id": "image_width", "title": "Değiştirmek görüntü genişliği"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "en büyük nesne"}, -{"id": "layer_delete", "title": "Delete Layer"}, -{"id": "layer_down", "title": "Katman Aşağı Taşı"}, -{"id": "layer_new", "title": "Yeni Katman"}, -{"id": "layer_rename", "title": "Rename Katman"}, -{"id": "layer_up", "title": "Up Katman Taşı"}, -{"id": "layersLabel", "textContent": "Katmanlar:"}, -{"id": "line_x1", "title": "Değiştirmek hattı's koordine x başlangıç"}, -{"id": "line_x2", "title": "Değiştirmek hattı's koordine x biten"}, -{"id": "line_y1", "title": "Değiştirmek hattı y başlangıç's koordine"}, -{"id": "line_y2", "title": "Değiştirmek hattı y biten's koordine"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "sayfa"}, -{"id": "palette", "title": "Tıklatın renk, vardiya dolgu zamanlı rengini değiştirmek için tıklayın değiştirmek için"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Değiştirmek dikdörtgen yüksekliği"}, -{"id": "rect_width_tool", "title": "Değiştirmek dikdörtgen genişliği"}, -{"id": "relativeToLabel", "textContent": "göreli:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Seçin önceden tanımlanmış:"}, -{"id": "selected_objects", "textContent": "seçilen nesneleri"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "küçük nesne"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Değiştirmek inme renk"}, -{"id": "stroke_style", "title": "Değiştirmek inme çizgi stili"}, -{"id": "stroke_width", "title": "Değiştirmek vuruş genişliği"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Yükseklik:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "En:"}, -{"id": "text", "title": "Değiştirmek metin içeriği"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Ortala"}, -{"id": "tool_alignleft", "title": "Sola"}, -{"id": "tool_alignmiddle", "title": "Align Orta"}, -{"id": "tool_alignright", "title": "Sağa Hizala"}, -{"id": "tool_aligntop", "title": "Align Top"}, -{"id": "tool_angle", "title": "Değiştirmek dönme açısı"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Kalın Yazı"}, -{"id": "tool_circle", "title": "Daire"}, -{"id": "tool_clear", "textContent": "Yeni Resim"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elemanları"}, -{"id": "tool_delete", "title": "Sil Element"}, -{"id": "tool_delete_multi", "title": "Seçilen Elemanları"}, -{"id": "tool_docprops", "textContent": "Belge Özellikleri"}, -{"id": "tool_docprops_cancel", "textContent": "Iptal"}, -{"id": "tool_docprops_save", "textContent": "Kaydetmek"}, -{"id": "tool_ellipse", "title": "Elips"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-El Elips"}, -{"id": "tool_fhpath", "title": "Kalem Aracı"}, -{"id": "tool_fhrect", "title": "Free-El Dikdörtgen"}, -{"id": "tool_font_size", "title": "Change font size"}, -{"id": "tool_group", "title": "Grup Elemanları"}, -{"id": "tool_image", "title": "Resim Aracı"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italik yazı"}, -{"id": "tool_line", "title": "Line Aracı"}, -{"id": "tool_move_bottom", "title": "Altına gider"}, -{"id": "tool_move_top", "title": "Üste taşı"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Değiştirmek öğe opacity seçilmiş"}, -{"id": "tool_open", "textContent": "Aç Resim"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Dikdörtgen"}, -{"id": "tool_redo", "title": "Redo"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Görüntüyü Kaydet"}, -{"id": "tool_select", "title": "Seçim aracı"}, -{"id": "tool_source", "title": "Değiştir Kaynak"}, -{"id": "tool_source_cancel", "textContent": "Iptal"}, -{"id": "tool_source_save", "textContent": "Kaydetmek"}, -{"id": "tool_square", "title": "Kare"}, -{"id": "tool_text", "title": "Metin Aracı"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Geri"}, -{"id": "tool_ungroup", "title": "Çöz Elemanları"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Yakınlaştırma düzeyini değiştirebilirsiniz"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.uk.js b/files_svgedit/js/locale/lang.uk.js deleted file mode 100644 index 92fb598cf..000000000 --- a/files_svgedit/js/locale/lang.uk.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Вирівняти по відношенню до ..."}, -{"id": "bkgnd_color", "title": "Зміна кольору тла / непрозорість"}, -{"id": "circle_cx", "title": "CX зміну кола координата"}, -{"id": "circle_cy", "title": "Зміни гуртка CY координати"}, -{"id": "circle_r", "title": "Зміна кола's радіус"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Зміни прямокутник Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Зміни еліпса CX координати"}, -{"id": "ellipse_cy", "title": "Зміни еліпса CY координати"}, -{"id": "ellipse_rx", "title": "Х Зміни еліпса радіусом"}, -{"id": "ellipse_ry", "title": "Зміни у еліпса радіусом"}, -{"id": "fill_color", "title": "Зміна кольору заливки"}, -{"id": "fitToContent", "textContent": "За розміром змісту"}, -{"id": "fit_to_all", "textContent": "За розміром весь вміст"}, -{"id": "fit_to_canvas", "textContent": "Розмір полотна"}, -{"id": "fit_to_layer_content", "textContent": "За розміром шар змісту"}, -{"id": "fit_to_sel", "textContent": "Вибір розміру"}, -{"id": "font_family", "title": "Зміни Сімейство шрифтів"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Зміна висоти зображення"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Змінити URL"}, -{"id": "image_width", "title": "Зміни ширина зображення"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "найбільший об'єкт"}, -{"id": "layer_delete", "title": "Видалити шар"}, -{"id": "layer_down", "title": "Перемістити шар на"}, -{"id": "layer_new", "title": "Новий шар"}, -{"id": "layer_rename", "title": "Перейменувати Шар"}, -{"id": "layer_up", "title": "Переміщення шару до"}, -{"id": "layersLabel", "textContent": "Шари:"}, -{"id": "line_x1", "title": "Зміни починає координати лінія х"}, -{"id": "line_x2", "title": "Зміни за період, що закінчився лінія координати х"}, -{"id": "line_y1", "title": "Зміни лінія починає Y координата"}, -{"id": "line_y2", "title": "Зміна за період, що закінчився лінія Y координата"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "сторінка"}, -{"id": "palette", "title": "Натисніть для зміни кольору заливки, Shift-Click змінити обвід"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Зміни прямокутник висотою"}, -{"id": "rect_width_tool", "title": "Зміна ширини прямокутника"}, -{"id": "relativeToLabel", "textContent": "в порівнянні з:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Виберіть зумовлений:"}, -{"id": "selected_objects", "textContent": "обраними об'єктами"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "маленький об'єкт"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Зміна кольору інсульт"}, -{"id": "stroke_style", "title": "Зміна стилю інсульт тире"}, -{"id": "stroke_width", "title": "Зміни ширина штриха"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Висота:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Ширина:"}, -{"id": "text", "title": "Зміна змісту тексту"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Вирівняти по нижньому краю"}, -{"id": "tool_aligncenter", "title": "Вирівняти по центру"}, -{"id": "tool_alignleft", "title": "По лівому краю"}, -{"id": "tool_alignmiddle", "title": "Вирівняти Близького"}, -{"id": "tool_alignright", "title": "По правому краю"}, -{"id": "tool_aligntop", "title": "Вирівняти по верхньому краю"}, -{"id": "tool_angle", "title": "Зміна кута повороту"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Товстий текст"}, -{"id": "tool_circle", "title": "Коло"}, -{"id": "tool_clear", "textContent": "Нове зображення"}, -{"id": "tool_clone", "title": "Клон Елементу"}, -{"id": "tool_clone_multi", "title": "Клон Елементи"}, -{"id": "tool_delete", "title": "Видалити елемент"}, -{"id": "tool_delete_multi", "title": "Видалити вибрані елементи [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "Властивості документа"}, -{"id": "tool_docprops_cancel", "textContent": "Скасування"}, -{"id": "tool_docprops_save", "textContent": "Зберегти"}, -{"id": "tool_ellipse", "title": "Еліпс"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Вільної руки Еліпс"}, -{"id": "tool_fhpath", "title": "Pencil Tool"}, -{"id": "tool_fhrect", "title": "Вільної руки Прямокутник"}, -{"id": "tool_font_size", "title": "Змінити розмір шрифту"}, -{"id": "tool_group", "title": "Група елементів"}, -{"id": "tool_image", "title": "Image Tool"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Похилий текст"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Перемістити вниз"}, -{"id": "tool_move_top", "title": "Перемістити догори"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Зміна вибраного пункту непрозорості"}, -{"id": "tool_open", "textContent": "Відкрити зображення"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Прямокутник"}, -{"id": "tool_redo", "title": "Повтор"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Зберегти малюнок"}, -{"id": "tool_select", "title": "Виберіть інструмент"}, -{"id": "tool_source", "title": "Змінити вихідний"}, -{"id": "tool_source_cancel", "textContent": "Скасування"}, -{"id": "tool_source_save", "textContent": "Зберегти"}, -{"id": "tool_square", "title": "Площа"}, -{"id": "tool_text", "title": "Текст Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Скасувати"}, -{"id": "tool_ungroup", "title": "Елементи розгрупувати"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Зміна масштабу"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.vi.js b/files_svgedit/js/locale/lang.vi.js deleted file mode 100644 index 5db7d0002..000000000 --- a/files_svgedit/js/locale/lang.vi.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "Căn liên quan đến ..."}, -{"id": "bkgnd_color", "title": "Thay đổi màu nền / opacity"}, -{"id": "circle_cx", "title": "Thay đổi hình tròn của cx phối hợp"}, -{"id": "circle_cy", "title": "Thay đổi hình tròn của vi phối hợp"}, -{"id": "circle_r", "title": "Thay đổi bán kính của hình tròn"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "Thay đổi chữ nhật Corner Radius"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "Thay đổi hình elip của cx phối hợp"}, -{"id": "ellipse_cy", "title": "Thay đổi hình elip của vi phối hợp"}, -{"id": "ellipse_rx", "title": "Thay đổi hình elip của x bán kính"}, -{"id": "ellipse_ry", "title": "Y Thay đổi bán kính của hình ellipse"}, -{"id": "fill_color", "title": "Thay đổi đầy màu sắc"}, -{"id": "fitToContent", "textContent": "Phù hợp với nội dung"}, -{"id": "fit_to_all", "textContent": "Phù hợp với tất cả nội dung"}, -{"id": "fit_to_canvas", "textContent": "Phù hợp với vải"}, -{"id": "fit_to_layer_content", "textContent": "Vào lớp phù hợp với nội dung"}, -{"id": "fit_to_sel", "textContent": "Phù hợp để lựa chọn"}, -{"id": "font_family", "title": "Thay đổi Font Gia đình"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "Thay đổi hình ảnh chiều cao"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "Thay đổi URL"}, -{"id": "image_width", "title": "Thay đổi hình ảnh rộng"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "lớn nhất đối tượng"}, -{"id": "layer_delete", "title": "Xoá Layer"}, -{"id": "layer_down", "title": "Move Layer Down"}, -{"id": "layer_new", "title": "New Layer"}, -{"id": "layer_rename", "title": "Đổi tên Layer"}, -{"id": "layer_up", "title": "Di chuyển Layer Up"}, -{"id": "layersLabel", "textContent": "Lớp:"}, -{"id": "line_x1", "title": "Thay đổi dòng của bắt đầu từ x phối hợp"}, -{"id": "line_x2", "title": "Thay đổi dòng của x kết thúc sớm nhất phối hợp"}, -{"id": "line_y1", "title": "Thay đổi dòng của bắt đầu từ y phối hợp"}, -{"id": "line_y2", "title": "Thay đổi dòng của kết thúc y phối hợp"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "Sửa"}, -{"id": "palette", "title": "Nhấn vào đây để thay đổi đầy màu sắc, thay đổi nhấp chuột để thay đổi màu sắc đột quỵ"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "Thay đổi hình chữ nhật chiều cao"}, -{"id": "rect_width_tool", "title": "Thay đổi hình chữ nhật chiều rộng"}, -{"id": "relativeToLabel", "textContent": "liên quan đến:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "Chọn định sẵn:"}, -{"id": "selected_objects", "textContent": "bầu các đối tượng"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "nhỏ đối tượng"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "Thay đổi màu sắc đột quỵ"}, -{"id": "stroke_style", "title": "Thay đổi phong cách đột quỵ dash"}, -{"id": "stroke_width", "title": "Thay đổi chiều rộng đột quỵ"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "Chiều cao:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "Chiều rộng:"}, -{"id": "text", "title": "Thay đổi nội dung văn bản"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "Align Bottom"}, -{"id": "tool_aligncenter", "title": "Căn giữa"}, -{"id": "tool_alignleft", "title": "Căn còn lại"}, -{"id": "tool_alignmiddle", "title": "Căn Trung"}, -{"id": "tool_alignright", "title": "Căn phải"}, -{"id": "tool_aligntop", "title": "Căn Top"}, -{"id": "tool_angle", "title": "Thay đổi góc xoay"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "Bold Text"}, -{"id": "tool_circle", "title": "Circle"}, -{"id": "tool_clear", "textContent": "Hình mới"}, -{"id": "tool_clone", "title": "Clone Element"}, -{"id": "tool_clone_multi", "title": "Clone Elements"}, -{"id": "tool_delete", "title": "Xóa Element"}, -{"id": "tool_delete_multi", "title": "Delete Selected Elements"}, -{"id": "tool_docprops", "textContent": "Document Properties"}, -{"id": "tool_docprops_cancel", "textContent": "Hủy"}, -{"id": "tool_docprops_save", "textContent": "Lưu"}, -{"id": "tool_ellipse", "title": "Ellipse"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Việt-Hand Ellipse"}, -{"id": "tool_fhpath", "title": "Bút chì Công cụ"}, -{"id": "tool_fhrect", "title": "Việt-Hand Hình chữ nhật"}, -{"id": "tool_font_size", "title": "Thay đổi cỡ chữ"}, -{"id": "tool_group", "title": "Nhóm Elements"}, -{"id": "tool_image", "title": "Hình Công cụ"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "Italic Text"}, -{"id": "tool_line", "title": "Line Tool"}, -{"id": "tool_move_bottom", "title": "Chuyển đến đáy"}, -{"id": "tool_move_top", "title": "Move to Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "Thay đổi lựa chọn opacity mục"}, -{"id": "tool_open", "textContent": "Mở Image"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "Hình chữ nhật"}, -{"id": "tool_redo", "title": "Làm lại"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "Save Image"}, -{"id": "tool_select", "title": "Chọn Công cụ"}, -{"id": "tool_source", "title": "Sửa Nguồn"}, -{"id": "tool_source_cancel", "textContent": "Hủy"}, -{"id": "tool_source_save", "textContent": "Lưu"}, -{"id": "tool_square", "title": "Hình vuông"}, -{"id": "tool_text", "title": "Text Tool"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "Hoàn tác"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "Zoom Tool"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "Thay đổi mức độ phóng"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.yi.js b/files_svgedit/js/locale/lang.yi.js deleted file mode 100644 index 3a7e63e24..000000000 --- a/files_svgedit/js/locale/lang.yi.js +++ /dev/null @@ -1,173 +0,0 @@ -[ -{"id": "align_relative_to", "title": "יינרייען קאָרעוו צו ..."}, -{"id": "bkgnd_color", "title": "ענדערן הינטערגרונט פאַרב / אָופּאַסאַטי"}, -{"id": "circle_cx", "title": "ענדערן קרייז ס קקס קאָואָרדאַנאַט"}, -{"id": "circle_cy", "title": "ענדערן קרייז ס סי קאָואָרדאַנאַט"}, -{"id": "circle_r", "title": "ענדערן קרייז ס ראַדיוס"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "ענדערן רעקטאַנגלע קאָרנער ראַדיוס"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "ענדערן יליפּס ס קקס קאָואָרדאַנאַט"}, -{"id": "ellipse_cy", "title": "ענדערן יליפּס ס סי קאָואָרדאַנאַט"}, -{"id": "ellipse_rx", "title": "ענדערן יליפּס ס 'קס ראַדיוס"}, -{"id": "ellipse_ry", "title": "ענדערן יליפּס ס 'י ראַדיוס"}, -{"id": "fill_color", "title": "ענדערן אָנעסן קאָליר"}, -{"id": "fitToContent", "textContent": "פּאַסיק צו אינהאַלט"}, -{"id": "fit_to_all", "textContent": "פּאַסיק צו אַלע אינהאַלט"}, -{"id": "fit_to_canvas", "textContent": "פּאַסיק צו לייוונט"}, -{"id": "fit_to_layer_content", "textContent": "פּאַסיק צו שיכטע אינהאַלט"}, -{"id": "fit_to_sel", "textContent": "פּאַסיק צו אָפּקלייב"}, -{"id": "font_family", "title": "ענדערן פאָנט פאַמילי"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "טוישן בילד הייך"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "ענדערן URL"}, -{"id": "image_width", "title": "טוישן בילד ברייט"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "לאַרדזשאַסט קעגן"}, -{"id": "layer_delete", "title": "ויסמעקן לייַער"}, -{"id": "layer_down", "title": "קער לייַער דאָוון"}, -{"id": "layer_new", "title": "ניו לייַער"}, -{"id": "layer_rename", "title": "רענאַמע לייַער"}, -{"id": "layer_up", "title": "באַוועגן לייַער אַרויף"}, -{"id": "layersLabel", "textContent": "לייַערס:"}, -{"id": "line_x1", "title": "טוישן ליניע ס 'סטאַרטינג קס קאָואָרדאַנאַט"}, -{"id": "line_x2", "title": "טוישן ליניע ס 'סאָף קס קאָואָרדאַנאַט"}, -{"id": "line_y1", "title": "טוישן ליניע ס 'סטאַרטינג י קאָואָרדאַנאַט"}, -{"id": "line_y2", "title": "טוישן ליניע ס 'סאָף י קאָואָרדאַנאַט"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "בלאַט"}, -{"id": "palette", "title": "גיט צו ענדערן אָנעסן קאָליר, יבעררוק-גיט צו טוישן מאַך קאָליר"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "ענדערן גראָדעק הייך"}, -{"id": "rect_width_tool", "title": "ענדערן גראָדעק ברייט"}, -{"id": "relativeToLabel", "textContent": "קאָרעוו צו:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "סעלעקטירן פּרעדעפינעד:"}, -{"id": "selected_objects", "textContent": "עלעקטעד אַבדזשעקץ"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "סמאָלאַסט קעגן"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "טוישן מאַך קאָליר"}, -{"id": "stroke_style", "title": "טוישן מאַך לאָך מאָדע"}, -{"id": "stroke_width", "title": "טוישן מאַך ברייט"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "הויך:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "ברייט:"}, -{"id": "text", "title": "ענדערן טעקסט אינהאַלט"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "יינרייען באָטטאָם"}, -{"id": "tool_aligncenter", "title": "יינרייען צענטער"}, -{"id": "tool_alignleft", "title": "יינרייען לעפט"}, -{"id": "tool_alignmiddle", "title": "יינרייען מיטל"}, -{"id": "tool_alignright", "title": "יינרייען רעכט"}, -{"id": "tool_aligntop", "title": "יינרייען Top"}, -{"id": "tool_angle", "title": "ענדערן ראָוטיישאַן ווינקל"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "דרייסט טעקסט"}, -{"id": "tool_circle", "title": "קאַראַהאָד"}, -{"id": "tool_clear", "textContent": "ניו בילד"}, -{"id": "tool_clone", "title": "קלאָנע עלעמענט"}, -{"id": "tool_clone_multi", "title": "קלאָנע עלעמענץ"}, -{"id": "tool_delete", "title": "ויסמעקן עלעמענט"}, -{"id": "tool_delete_multi", "title": "ויסמעקן סעלעקטעד עלעמענץ [Delete/Backspace]"}, -{"id": "tool_docprops", "textContent": "דאָקומענט פּראָפּערטיעס"}, -{"id": "tool_docprops_cancel", "textContent": "באָטל מאַכן"}, -{"id": "tool_docprops_save", "textContent": "היט"}, -{"id": "tool_ellipse", "title": "עלליפּסע"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "Free-הענט עלליפּסע"}, -{"id": "tool_fhpath", "title": "בלייער טול"}, -{"id": "tool_fhrect", "title": "Free-הענט רעקטאַנגלע"}, -{"id": "tool_font_size", "title": "בייטן פאָנט גרייס"}, -{"id": "tool_group", "title": "גרופּע עלעמענץ"}, -{"id": "tool_image", "title": "בילד טול"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "יטאַליק טעקסט"}, -{"id": "tool_line", "title": "שורה טול"}, -{"id": "tool_move_bottom", "title": "מאַך צו באָטטאָם"}, -{"id": "tool_move_top", "title": "באַוועגן צו Top"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "ענדערן סעלעקטעד נומער אָופּאַסאַטי"}, -{"id": "tool_open", "textContent": "Open בילד"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "גראָדעק"}, -{"id": "tool_redo", "title": "רעדאָ"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "היט בילד"}, -{"id": "tool_select", "title": "סעלעקטירן טול"}, -{"id": "tool_source", "title": "רעדאַקטירן סאָרס"}, -{"id": "tool_source_cancel", "textContent": "באָטל מאַכן"}, -{"id": "tool_source_save", "textContent": "היט"}, -{"id": "tool_square", "title": "קוואדראט"}, -{"id": "tool_text", "title": "טעקסט טול"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "ופמאַכן"}, -{"id": "tool_ungroup", "title": "ונגראָופּ עלעמענץ"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "פארגרעסער טול"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "ענדערן פארגרעסער הייך"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.zh-CN.js b/files_svgedit/js/locale/lang.zh-CN.js deleted file mode 100644 index 86ae15fd8..000000000 --- a/files_svgedit/js/locale/lang.zh-CN.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "相对对齐 ..."}, -{"id": "bkgnd_color", "title": "更改背景颜色/不透明"}, -{"id": "circle_cx", "title": "改变循环的CX坐标"}, -{"id": "circle_cy", "title": "改变循环的赛扬坐标"}, -{"id": "circle_r", "title": "改变圆的半径"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "矩形角半径的变化"}, -{"id": "cornerRadiusLabel", "title": "角半径:"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "改变椭圆的CX坐标"}, -{"id": "ellipse_cy", "title": "改变椭圆的赛扬坐标"}, -{"id": "ellipse_rx", "title": "改变椭圆的x半径"}, -{"id": "ellipse_ry", "title": "改变椭圆的y半径"}, -{"id": "fill_color", "title": "更改填充颜色"}, -{"id": "fitToContent", "textContent": "适合内容"}, -{"id": "fit_to_all", "textContent": "适合于所有的内容"}, -{"id": "fit_to_canvas", "textContent": "适合画布"}, -{"id": "fit_to_layer_content", "textContent": "适合层内容"}, -{"id": "fit_to_sel", "textContent": "适合选择"}, -{"id": "font_family", "title": "更改字体家族"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "更改图像高度"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "更改网址"}, -{"id": "image_width", "title": "更改图像的宽度"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "最大对象"}, -{"id": "layer_delete", "title": "删除层"}, -{"id": "layer_down", "title": "层向下移动"}, -{"id": "layer_new", "title": "新层"}, -{"id": "layer_rename", "title": "重命名层"}, -{"id": "layer_up", "title": "移动层最多"}, -{"id": "layersLabel", "textContent": "层:"}, -{"id": "line_x1", "title": "更改行的起点的x坐标"}, -{"id": "line_x2", "title": "更改行的结束x坐标"}, -{"id": "line_y1", "title": "更改行的起点的y坐标"}, -{"id": "line_y2", "title": "更改行的结束y坐标"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "网页"}, -{"id": "palette", "title": "点击更改填充颜色,按住Shift键单击更改颜色中风"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "更改矩形的高度"}, -{"id": "rect_width_tool", "title": "更改矩形的宽度"}, -{"id": "relativeToLabel", "textContent": "相对于:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "选择预定义:"}, -{"id": "selected_objects", "textContent": "选对象"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "最小的对象"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "中风的颜色变化"}, -{"id": "stroke_style", "title": "更改行程冲刺风格"}, -{"id": "stroke_width", "title": "笔划宽度的变化"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "高度:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "宽度:"}, -{"id": "text", "title": "更改文字内容"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "底部对齐"}, -{"id": "tool_aligncenter", "title": "居中对齐"}, -{"id": "tool_alignleft", "title": "左对齐"}, -{"id": "tool_alignmiddle", "title": "中间对齐"}, -{"id": "tool_alignright", "title": "右对齐"}, -{"id": "tool_aligntop", "title": "顶端对齐"}, -{"id": "tool_angle", "title": "旋转角度的变化"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "粗体"}, -{"id": "tool_circle", "title": "圈"}, -{"id": "tool_clear", "textContent": "新形象"}, -{"id": "tool_clone", "title": "克隆元素"}, -{"id": "tool_clone_multi", "title": "克隆元素"}, -{"id": "tool_delete", "title": "删除元素"}, -{"id": "tool_delete_multi", "title": "删除所选元素"}, -{"id": "tool_docprops", "textContent": "文档属性"}, -{"id": "tool_docprops_cancel", "textContent": "取消"}, -{"id": "tool_docprops_save", "textContent": "保存"}, -{"id": "tool_ellipse", "title": "椭圆"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "免费手椭圆"}, -{"id": "tool_fhpath", "title": "铅笔工具"}, -{"id": "tool_fhrect", "title": "免费手矩形"}, -{"id": "tool_font_size", "title": "更改字体大小"}, -{"id": "tool_group", "title": "族元素"}, -{"id": "tool_image", "title": "图像工具"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "斜体文本"}, -{"id": "tool_line", "title": "线工具"}, -{"id": "tool_move_bottom", "title": "移至底部"}, -{"id": "tool_move_top", "title": "移动到顶部"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "更改所选项目不透明"}, -{"id": "tool_open", "textContent": "打开图像"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "矩形"}, -{"id": "tool_redo", "title": "重做"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "保存图像"}, -{"id": "tool_select", "title": "选择工具"}, -{"id": "tool_source", "title": "编辑源"}, -{"id": "tool_source_cancel", "textContent": "取消"}, -{"id": "tool_source_save", "textContent": "保存"}, -{"id": "tool_square", "title": "广场"}, -{"id": "tool_text", "title": "文字工具"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "撤消"}, -{"id": "tool_ungroup", "title": "取消组合元素"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "缩放工具"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "更改缩放级别"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.zh-HK.js b/files_svgedit/js/locale/lang.zh-HK.js deleted file mode 100644 index bb595afba..000000000 --- a/files_svgedit/js/locale/lang.zh-HK.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "相对对齐 ..."}, -{"id": "bkgnd_color", "title": "更改背景颜色/不透明"}, -{"id": "circle_cx", "title": "改变循环的CX坐标"}, -{"id": "circle_cy", "title": "改变循环的赛扬坐标"}, -{"id": "circle_r", "title": "改变圆的半径"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "矩形角半径的变化"}, -{"id": "cornerRadiusLabel", "title": "角半径:"}, -{"id": "curve_segments", "textContent": "Curve"}, -{"id": "ellipse_cx", "title": "改变椭圆的CX坐标"}, -{"id": "ellipse_cy", "title": "改变椭圆的赛扬坐标"}, -{"id": "ellipse_rx", "title": "改变椭圆的x半径"}, -{"id": "ellipse_ry", "title": "改变椭圆的y半径"}, -{"id": "fill_color", "title": "更改填充颜色"}, -{"id": "fitToContent", "textContent": "适合内容"}, -{"id": "fit_to_all", "textContent": "适合于所有的内容"}, -{"id": "fit_to_canvas", "textContent": "适合画布"}, -{"id": "fit_to_layer_content", "textContent": "适合层内容"}, -{"id": "fit_to_sel", "textContent": "适合选择"}, -{"id": "font_family", "title": "更改字体家族"}, -{"id": "icon_large", "textContent": "Large"}, -{"id": "icon_medium", "textContent": "Medium"}, -{"id": "icon_small", "textContent": "Small"}, -{"id": "icon_xlarge", "textContent": "Extra Large"}, -{"id": "image_height", "title": "更改图像高度"}, -{"id": "image_opt_embed", "textContent": "Embed data (local files)"}, -{"id": "image_opt_ref", "textContent": "Use file reference"}, -{"id": "image_url", "title": "更改网址"}, -{"id": "image_width", "title": "更改图像的宽度"}, -{"id": "includedImages", "textContent": "Included Images"}, -{"id": "largest_object", "textContent": "最大对象"}, -{"id": "layer_delete", "title": "删除层"}, -{"id": "layer_down", "title": "层向下移动"}, -{"id": "layer_new", "title": "新层"}, -{"id": "layer_rename", "title": "重命名层"}, -{"id": "layer_up", "title": "移动层最多"}, -{"id": "layersLabel", "textContent": "层:"}, -{"id": "line_x1", "title": "更改行的起点的x坐标"}, -{"id": "line_x2", "title": "更改行的结束x坐标"}, -{"id": "line_y1", "title": "更改行的起点的y坐标"}, -{"id": "line_y2", "title": "更改行的结束y坐标"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "网页"}, -{"id": "palette", "title": "点击更改填充颜色,按住Shift键单击更改颜色中风"}, -{"id": "path_node_x", "title": "Change node's x coordinate"}, -{"id": "path_node_y", "title": "Change node's y coordinate"}, -{"id": "rect_height_tool", "title": "更改矩形的高度"}, -{"id": "rect_width_tool", "title": "更改矩形的宽度"}, -{"id": "relativeToLabel", "textContent": "相对于:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "Move elements to:"}, -{"id": "selLayerNames", "title": "Move selected elements to a different layer"}, -{"id": "selectedPredefined", "textContent": "选择预定义:"}, -{"id": "selected_objects", "textContent": "选对象"}, -{"id": "selected_x", "title": "Change X coordinate"}, -{"id": "selected_y", "title": "Change Y coordinate"}, -{"id": "smallest_object", "textContent": "最小的对象"}, -{"id": "straight_segments", "textContent": "Straight"}, -{"id": "stroke_color", "title": "中风的颜色变化"}, -{"id": "stroke_style", "title": "更改行程冲刺风格"}, -{"id": "stroke_width", "title": "笔划宽度的变化"}, -{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."}, -{"id": "svginfo_change_background", "textContent": "Editor Background"}, -{"id": "svginfo_dim", "textContent": "Canvas Dimensions"}, -{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"}, -{"id": "svginfo_height", "textContent": "高度:"}, -{"id": "svginfo_icons", "textContent": "Icon size"}, -{"id": "svginfo_image_props", "textContent": "Image Properties"}, -{"id": "svginfo_lang", "textContent": "Language"}, -{"id": "svginfo_title", "textContent": "Title"}, -{"id": "svginfo_width", "textContent": "宽度:"}, -{"id": "text", "title": "更改文字内容"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "底部对齐"}, -{"id": "tool_aligncenter", "title": "居中对齐"}, -{"id": "tool_alignleft", "title": "左对齐"}, -{"id": "tool_alignmiddle", "title": "中间对齐"}, -{"id": "tool_alignright", "title": "右对齐"}, -{"id": "tool_aligntop", "title": "顶端对齐"}, -{"id": "tool_angle", "title": "旋转角度的变化"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "粗体"}, -{"id": "tool_circle", "title": "圈"}, -{"id": "tool_clear", "textContent": "新形象"}, -{"id": "tool_clone", "title": "克隆元素"}, -{"id": "tool_clone_multi", "title": "克隆元素"}, -{"id": "tool_delete", "title": "删除元素"}, -{"id": "tool_delete_multi", "title": "删除所选元素"}, -{"id": "tool_docprops", "textContent": "文档属性"}, -{"id": "tool_docprops_cancel", "textContent": "取消"}, -{"id": "tool_docprops_save", "textContent": "保存"}, -{"id": "tool_ellipse", "title": "椭圆"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "免费手椭圆"}, -{"id": "tool_fhpath", "title": "铅笔工具"}, -{"id": "tool_fhrect", "title": "免费手矩形"}, -{"id": "tool_font_size", "title": "更改字体大小"}, -{"id": "tool_group", "title": "族元素"}, -{"id": "tool_image", "title": "图像工具"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "斜体文本"}, -{"id": "tool_line", "title": "线工具"}, -{"id": "tool_move_bottom", "title": "移至底部"}, -{"id": "tool_move_top", "title": "移动到顶部"}, -{"id": "tool_node_clone", "title": "Clone Node"}, -{"id": "tool_node_delete", "title": "Delete Node"}, -{"id": "tool_node_link", "title": "Link Control Points"}, -{"id": "tool_opacity", "title": "更改所选项目不透明"}, -{"id": "tool_open", "textContent": "打开图像"}, -{"id": "tool_path", "title": "Path Tool"}, -{"id": "tool_rect", "title": "矩形"}, -{"id": "tool_redo", "title": "重做"}, -{"id": "tool_reorient", "title": "Reorient path"}, -{"id": "tool_save", "textContent": "保存图像"}, -{"id": "tool_select", "title": "选择工具"}, -{"id": "tool_source", "title": "编辑源"}, -{"id": "tool_source_cancel", "textContent": "取消"}, -{"id": "tool_source_save", "textContent": "保存"}, -{"id": "tool_square", "title": "广场"}, -{"id": "tool_text", "title": "文字工具"}, -{"id": "tool_topath", "title": "Convert to Path"}, -{"id": "tool_undo", "title": "撤消"}, -{"id": "tool_ungroup", "title": "Ungroup Elements"}, -{"id": "tool_wireframe", "title": "Wireframe Mode"}, -{"id": "tool_zoom", "title": "缩放工具"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "更改缩放级别"}, -{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"}, -{ - "js_strings": { - "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges": "Ignore changes made to SVG source?", - "QmoveElemsToLayer": "Move selected elements to layer '%s'?", - "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!", - "cancel": "Cancel", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "There is already a layer named that!", - "enterNewImgURL": "Enter the new image URL", - "enterNewLayerName": "Please enter the new layer name", - "enterUniqueLayerName": "Please enter a unique layer name", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "Feature not supported", - "invalidAttrValGiven": "Invalid value given", - "key_backspace": "backspace", - "key_del": "delete", - "key_down": "down", - "key_up": "up", - "layer": "Layer", - "layerHasThatName": "Layer already has that name", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "No content to fit to", - "noteTheseIssues": "Also note the following issues: ", - "ok": "OK", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/lang.zh-TW.js b/files_svgedit/js/locale/lang.zh-TW.js deleted file mode 100644 index 31303f6be..000000000 --- a/files_svgedit/js/locale/lang.zh-TW.js +++ /dev/null @@ -1,174 +0,0 @@ -[ -{"id": "align_relative_to", "title": "相對對齊 ..."}, -{"id": "bkgnd_color", "title": "更改背景顏色/不透明"}, -{"id": "circle_cx", "title": "改變圓的CX坐標"}, -{"id": "circle_cy", "title": "改變圓的CY坐標"}, -{"id": "circle_r", "title": "改變圓的半徑"}, -{"id": "connector_no_arrow", "textContent": "No arrow"}, -{"id": "copyrightLabel", "textContent": "Powered by"}, -{"id": "cornerRadiusLabel", "title": "矩形角半徑的變化"}, -{"id": "cornerRadiusLabel", "title": "角半徑:"}, -{"id": "curve_segments", "textContent": "曲線"}, -{"id": "ellipse_cx", "title": "改變橢圓的圓心x軸座標"}, -{"id": "ellipse_cy", "title": "改變橢圓的圓心y軸座標"}, -{"id": "ellipse_rx", "title": "改變橢圓的x軸長"}, -{"id": "ellipse_ry", "title": "改變橢圓的y軸長"}, -{"id": "fill_color", "title": "更改填充顏色"}, -{"id": "fitToContent", "textContent": "適合內容"}, -{"id": "fit_to_all", "textContent": "適合所有的內容"}, -{"id": "fit_to_canvas", "textContent": "適合畫布"}, -{"id": "fit_to_layer_content", "textContent": "適合圖層內容"}, -{"id": "fit_to_sel", "textContent": "適合選取的物件"}, -{"id": "font_family", "title": "更改字體"}, -{"id": "icon_large", "textContent": "大"}, -{"id": "icon_medium", "textContent": "中"}, -{"id": "icon_small", "textContent": "小"}, -{"id": "icon_xlarge", "textContent": "特大"}, -{"id": "image_height", "title": "更改圖像高度"}, -{"id": "image_opt_embed", "textContent": "內嵌資料 (本地端檔案)"}, -{"id": "image_opt_ref", "textContent": "使用檔案參照"}, -{"id": "image_url", "title": "更改網址"}, -{"id": "image_width", "title": "更改圖像的寬度"}, -{"id": "includedImages", "textContent": "包含圖像"}, -{"id": "largest_object", "textContent": "最大的物件"}, -{"id": "layer_delete", "title": "刪除圖層"}, -{"id": "layer_down", "title": "向下移動圖層"}, -{"id": "layer_new", "title": "新增圖層"}, -{"id": "layer_rename", "title": "重新命名圖層"}, -{"id": "layer_up", "title": "向上移動圖層"}, -{"id": "layersLabel", "textContent": "圖層:"}, -{"id": "line_x1", "title": "更改行的起點的x坐標"}, -{"id": "line_x2", "title": "更改行的終點x坐標"}, -{"id": "line_y1", "title": "更改行的起點的y坐標"}, -{"id": "line_y2", "title": "更改行的終點y坐標"}, -{"id": "linecap_butt", "title": "Linecap: Butt"}, -{"id": "linecap_round", "title": "Linecap: Round"}, -{"id": "linecap_square", "title": "Linecap: Square"}, -{"id": "linejoin_bevel", "title": "Linejoin: Bevel"}, -{"id": "linejoin_miter", "title": "Linejoin: Miter"}, -{"id": "linejoin_round", "title": "Linejoin: Round"}, -{"id": "main_icon", "title": "Main Menu"}, -{"id": "mode_connect", "title": "Connect two objects"}, -{"id": "page", "textContent": "網頁"}, -{"id": "palette", "title": "點擊更改填充顏色,按住Shift鍵單擊更改線條顏色"}, -{"id": "path_node_x", "title": "改變節點的x軸座標"}, -{"id": "path_node_y", "title": "改變節點的y軸座標"}, -{"id": "rect_height_tool", "title": "更改矩形的高度"}, -{"id": "rect_width_tool", "title": "更改矩形的寬度"}, -{"id": "relativeToLabel", "textContent": "相對於:"}, -{"id": "seg_type", "title": "Change Segment type"}, -{"id": "selLayerLabel", "textContent": "移動物件到:"}, -{"id": "selLayerNames", "title": "移動被點選的物件其他圖層"}, -{"id": "selectedPredefined", "textContent": "使用預設值:"}, -{"id": "selected_objects", "textContent": "選取物件"}, -{"id": "selected_x", "title": "調整 X 軸"}, -{"id": "selected_y", "title": "調整 Y 軸"}, -{"id": "smallest_object", "textContent": "最小的物件"}, -{"id": "straight_segments", "textContent": "直線"}, -{"id": "stroke_color", "title": "線條顏色"}, -{"id": "stroke_style", "title": "更改線條(虛線)風格"}, -{"id": "stroke_width", "title": "線條寬度"}, -{"id": "svginfo_bg_note", "textContent": "注意: 編輯器背景不會和圖像一起儲存"}, -{"id": "svginfo_change_background", "textContent": "編輯器背景"}, -{"id": "svginfo_dim", "textContent": "畫布大小"}, -{"id": "svginfo_editor_prefs", "textContent": "編輯器屬性"}, -{"id": "svginfo_height", "textContent": "高度:"}, -{"id": "svginfo_icons", "textContent": "圖示大小"}, -{"id": "svginfo_image_props", "textContent": "圖片屬性"}, -{"id": "svginfo_lang", "textContent": "語言"}, -{"id": "svginfo_title", "textContent": "標題"}, -{"id": "svginfo_width", "textContent": "寬度:"}, -{"id": "text", "title": "更改文字內容"}, -{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"}, -{"id": "tool_add_subpath", "title": "Add sub-path"}, -{"id": "tool_alignbottom", "title": "底部對齊"}, -{"id": "tool_aligncenter", "title": "居中對齊"}, -{"id": "tool_alignleft", "title": "向左對齊"}, -{"id": "tool_alignmiddle", "title": "中間對齊"}, -{"id": "tool_alignright", "title": "向右對齊"}, -{"id": "tool_aligntop", "title": "頂端對齊"}, -{"id": "tool_angle", "title": "旋轉角度"}, -{"id": "tool_blur", "title": "Change gaussian blur value"}, -{"id": "tool_bold", "title": "粗體"}, -{"id": "tool_circle", "title": "圓"}, -{"id": "tool_clear", "textContent": "清空圖像"}, -{"id": "tool_clone", "title": "複製"}, -{"id": "tool_clone_multi", "title": "複製所選元素"}, -{"id": "tool_delete", "title": "刪除"}, -{"id": "tool_delete_multi", "title": "刪除所選元素"}, -{"id": "tool_docprops", "textContent": "文件屬性"}, -{"id": "tool_docprops_cancel", "textContent": "取消"}, -{"id": "tool_docprops_save", "textContent": "保存"}, -{"id": "tool_ellipse", "title": "橢圓"}, -{"id": "tool_export", "textContent": "Export as PNG"}, -{"id": "tool_eyedropper", "title": "Eye Dropper Tool"}, -{"id": "tool_fhellipse", "title": "徒手畫橢圓"}, -{"id": "tool_fhpath", "title": "鉛筆工具"}, -{"id": "tool_fhrect", "title": "徒手畫矩形"}, -{"id": "tool_font_size", "title": "更改字體大小"}, -{"id": "tool_group", "title": "群組"}, -{"id": "tool_image", "title": "圖像工具"}, -{"id": "tool_import", "textContent": "Import SVG"}, -{"id": "tool_italic", "title": "斜體"}, -{"id": "tool_line", "title": "線工具"}, -{"id": "tool_move_bottom", "title": "移至底部"}, -{"id": "tool_move_top", "title": "移動到頂部"}, -{"id": "tool_node_clone", "title": "增加節點"}, -{"id": "tool_node_delete", "title": "刪除節點"}, -{"id": "tool_node_link", "title": "將控制點連起來"}, -{"id": "tool_opacity", "title": "更改所選項目不透明度"}, -{"id": "tool_open", "textContent": "打開圖像"}, -{"id": "tool_path", "title": "路徑工具"}, -{"id": "tool_rect", "title": "矩形"}, -{"id": "tool_redo", "title": "復原"}, -{"id": "tool_reorient", "title": "調整路徑"}, -{"id": "tool_save", "textContent": "保存圖像"}, -{"id": "tool_select", "title": "選擇工具"}, -{"id": "tool_source", "title": "編輯SVG原始碼"}, -{"id": "tool_source_cancel", "textContent": "取消"}, -{"id": "tool_source_save", "textContent": "保存"}, -{"id": "tool_square", "title": "方形"}, -{"id": "tool_text", "title": "文字工具"}, -{"id": "tool_topath", "title": "轉換成路徑"}, -{"id": "tool_undo", "title": "取消復原"}, -{"id": "tool_ungroup", "title": "取消群組"}, -{"id": "tool_wireframe", "title": "框線模式(只瀏覽線條)"}, -{"id": "tool_zoom", "title": "縮放工具"}, -{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"}, -{"id": "zoom_panel", "title": "更改縮放級別"}, -{"id": "sidepanel_handle", "textContent": "圖層", "title": "拖拉以改變側邊面板的大小"}, -{ - "js_strings": { - "QerrorsRevertToSource": "SVG原始碼解析錯誤\n要回復到原本的SVG原始碼嗎?", - "QignoreSourceChanges": "要忽略對SVG原始碼的更動嗎?", - "QmoveElemsToLayer": "要搬移所選取的物件到'%s'層嗎?", - "QwantToClear": "要清空圖像嗎?\n這會順便清空你的回復紀錄!", - "cancel": "取消", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "dupeLayerName": "喔不!已經有另一個同樣名稱的圖層了!", - "enterNewImgURL": "輸入新的圖片網址", - "enterNewLayerName": "請輸入新圖層的名稱", - "enterUniqueLayerName": "請輸入一個名稱不重複的", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoDashArray": "Strokes will appear filled", - "exportNoImage": "Image elements will not appear", - "exportNoText": "Text may not appear as expected", - "exportNoforeignObject": "foreignObject elements will not appear", - "featNotSupported": "未提供此功能", - "invalidAttrValGiven": "數值給定錯誤", - "key_backspace": "空白", - "key_del": "刪除", - "key_down": "下", - "key_up": "上", - "layer": "圖層", - "layerHasThatName": "圖層本來就是這個名稱(抱怨)", - "loadingImage": "Loading image, please wait...", - "noContentToFitTo": "找不到符合的內容", - "noteTheseIssues": "Also note the following issues: ", - "ok": "確定", - "pathCtrlPtTooltip": "拖拉控制點以改變曲線性質", - "pathNodeTooltip": "拖拉節點以移動, 連擊節點以改變線段型態(直線/曲線)", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file." - } -} -]
\ No newline at end of file diff --git a/files_svgedit/js/locale/locale.js b/files_svgedit/js/locale/locale.js deleted file mode 100644 index ce73288ff..000000000 --- a/files_svgedit/js/locale/locale.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Localizing script for SVG-edit UI - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Narendra Sisodya - * Copyright(c) 2010 Alexis Deveria - * - */ - -var svgEditor = (function($, Editor) { - Editor.putLocale = function(given_param, good_langs){ - var lang_param; - - if(given_param) { - lang_param = given_param; - } else { - lang_param = $.pref('lang'); - if(!lang_param) { - if (navigator.userLanguage) // Explorer - lang_param = navigator.userLanguage; - else if (navigator.language) // FF, Opera, ... - lang_param = navigator.language; - if (lang_param == "") - return; - } - - // Set to English if language is not in list of good langs - if($.inArray(lang_param, good_langs) == -1) { - lang_param = "en"; - } - - // don't bother on first run if language is English - if(lang_param.indexOf("en") == 0) return; - } - - var conf = Editor.curConfig; - - var url = conf.langPath + "lang." + lang_param + ".js"; - - var processFile = function(data){ - var LangData = eval(data), js_strings; - var more = Editor.canvas.runExtensions("addLangData", lang_param, true); - $.each(more, function(i, m) { - if(m.data) { - LangData = $.merge(LangData, m.data); - } - }); - $.each(LangData, function(i, data) { - if(data.id) { - var elem = $('#svg_editor').parent().find('#'+data.id)[0]; - if(elem) { - if(data.title) - elem.title = data.title; - if(data.textContent) { - // Only replace non-empty text nodes, not elements - $.each(elem.childNodes, function(j, node) { - if(node.nodeType == 3 && $.trim(node.textContent)) { - node.textContent = data.textContent; - } - }); - } - } - } else if(data.js_strings) { - js_strings = data.js_strings; - } - }); - Editor.setLang(lang_param, js_strings); - } - - $.ajax({ - 'url': url, - 'dataType': "text", - success: processFile, - error: function(xhr) { - if(xhr.responseText) { - processFile(xhr.responseText); - } - } - }); - }; - - return Editor; -}(jQuery, svgEditor)); diff --git a/files_svgedit/js/locale/locale.min.js b/files_svgedit/js/locale/locale.min.js deleted file mode 100644 index 0a4285053..000000000 --- a/files_svgedit/js/locale/locale.min.js +++ /dev/null @@ -1 +0,0 @@ -var svgEditor=(function($,Editor){Editor.putLocale=function(given_param,good_langs){var lang_param;if(given_param){lang_param=given_param}else{lang_param=$.pref("lang");if(!lang_param){if(navigator.userLanguage){lang_param=navigator.userLanguage}else{if(navigator.language){lang_param=navigator.language}}if(lang_param==""){return}}if($.inArray(lang_param,good_langs)==-1){lang_param="en"}if(lang_param.indexOf("en")==0){return}}var conf=Editor.curConfig;var url=conf.langPath+"lang."+lang_param+".js";var processFile=function(data){var LangData=eval(data),js_strings;var more=Editor.canvas.runExtensions("addLangData",lang_param,true);$.each(more,function(i,m){if(m.data){LangData=$.merge(LangData,m.data)}});$.each(LangData,function(i,data){if(data.id){var elem=$("#svg_editor").parent().find("#"+data.id)[0];if(elem){if(data.title){elem.title=data.title}if(data.textContent){$.each(elem.childNodes,function(j,node){if(node.nodeType==3&&$.trim(node.textContent)){node.textContent=data.textContent}})}}}else{if(data.js_strings){js_strings=data.js_strings}}});Editor.setLang(lang_param,js_strings)};$.ajax({url:url,dataType:"text",success:processFile,error:function(xhr){if(xhr.responseText){processFile(xhr.responseText)}}})};return Editor}(jQuery,svgEditor));
\ No newline at end of file diff --git a/files_svgedit/js/spinbtn/JQuerySpinBtn.min.js b/files_svgedit/js/spinbtn/JQuerySpinBtn.min.js deleted file mode 100644 index 81469ec09..000000000 --- a/files_svgedit/js/spinbtn/JQuerySpinBtn.min.js +++ /dev/null @@ -1 +0,0 @@ -;$.fn.SpinButton=function(a){return this.each(function(){this.repeating=false;this.spinCfg={min:a&&!isNaN(parseFloat(a.min))?Number(a.min):null,max:a&&!isNaN(parseFloat(a.max))?Number(a.max):null,step:a&&a.step?Number(a.step):1,stepfunc:a&&a.stepfunc?a.stepfunc:false,page:a&&a.page?Number(a.page):10,upClass:a&&a.upClass?a.upClass:"up",downClass:a&&a.downClass?a.downClass:"down",reset:a&&a.reset?a.reset:this.value,delay:a&&a.delay?Number(a.delay):500,interval:a&&a.interval?Number(a.interval):100,_btn_width:20,_direction:null,_delay:null,_repeat:null,callback:a&&a.callback?a.callback:null};this.spinCfg.smallStep=a&&a.smallStep?a.smallStep:this.spinCfg.step/2;this.adjustValue=function(d){var c;if(isNaN(this.value)){c=this.spinCfg.reset}else{if($.isFunction(this.spinCfg.stepfunc)){c=this.spinCfg.stepfunc(this,d)}else{c=Number((Number(this.value)+Number(d)).toFixed(5))}}if(this.spinCfg.min!==null){c=Math.max(c,this.spinCfg.min)}if(this.spinCfg.max!==null){c=Math.min(c,this.spinCfg.max)}this.value=c;if($.isFunction(this.spinCfg.callback)){this.spinCfg.callback(this)}};$(this).addClass(a&&a.spinClass?a.spinClass:"spin-button").mousemove(function(h){var d=h.pageX||h.x;var i=h.pageY||h.y;var f=h.target||h.srcElement;var c=$(f).outerHeight()/2;var g=(d>b(f,"offsetLeft")+f.offsetWidth-this.spinCfg._btn_width)?((i<b(f,"offsetTop")+c)?1:-1):0;if(g!==this.spinCfg._direction){switch(g){case 1:$(this).removeClass(this.spinCfg.downClass).addClass(this.spinCfg.upClass);break;case -1:$(this).removeClass(this.spinCfg.upClass).addClass(this.spinCfg.downClass);break;default:$(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass)}this.spinCfg._direction=g}}).mouseout(function(){$(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);this.spinCfg._direction=null;window.clearInterval(this.spinCfg._repeat);window.clearTimeout(this.spinCfg._delay)}).mousedown(function(g){if(g.button===0&&this.spinCfg._direction!=0){var d=this;var c=g.shiftKey?d.spinCfg.smallStep:d.spinCfg.step;var f=function(){d.adjustValue(d.spinCfg._direction*c)};f();d.spinCfg._delay=window.setTimeout(function(){f();d.spinCfg._repeat=window.setInterval(f,d.spinCfg.interval)},d.spinCfg.delay)}}).mouseup(function(c){window.clearInterval(this.spinCfg._repeat);window.clearTimeout(this.spinCfg._delay)}).dblclick(function(c){if($.browser.msie){this.adjustValue(this.spinCfg._direction*this.spinCfg.step)}}).keydown(function(c){switch(c.keyCode){case 38:this.adjustValue(this.spinCfg.step);break;case 40:this.adjustValue(-this.spinCfg.step);break;case 33:this.adjustValue(this.spinCfg.page);break;case 34:this.adjustValue(-this.spinCfg.page);break}}).keypress(function(c){if(this.repeating){switch(c.keyCode){case 38:this.adjustValue(this.spinCfg.step);break;case 40:this.adjustValue(-this.spinCfg.step);break;case 33:this.adjustValue(this.spinCfg.page);break;case 34:this.adjustValue(-this.spinCfg.page);break}}else{this.repeating=true}}).keyup(function(c){this.repeating=false;switch(c.keyCode){case 38:case 40:case 33:case 34:case 13:this.adjustValue(0);break}}).bind("mousewheel",function(c){if(c.wheelDelta>=120){this.adjustValue(this.spinCfg.step)}else{if(c.wheelDelta<=-120){this.adjustValue(-this.spinCfg.step)}}c.preventDefault()}).change(function(c){this.adjustValue(0)});if(this.addEventListener){this.addEventListener("DOMMouseScroll",function(c){if(c.detail>0){this.adjustValue(-this.spinCfg.step)}else{if(c.detail<0){this.adjustValue(this.spinCfg.step)}}c.preventDefault()},false)}});function b(e,g){var f=e[g],d=document.body;while((e=e.offsetParent)&&(e!=d)){if(!$.browser.msie||(e.currentStyle.position!="relative")){f+=e[g]}}return f}};
\ No newline at end of file diff --git a/files_svgedit/js/svg-editor.js b/files_svgedit/js/svg-editor.js deleted file mode 100644 index 1e9405fa8..000000000 --- a/files_svgedit/js/svg-editor.js +++ /dev/null @@ -1,3734 +0,0 @@ -/* - * svg-editor.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Alexis Deveria - * Copyright(c) 2010 Pavol Rusnak - * Copyright(c) 2010 Jeff Schiller - * Copyright(c) 2010 Narendra Sisodiya - * - */ - -(function() { - - if(!window.svgEditor) window.svgEditor = function($) { - var svgCanvas; - var Editor = {}; - var is_ready = false; - - var defaultPrefs = { - lang:'en', - iconsize:'m', - bkgd_color:'#FFF', - bkgd_url:'', - img_save:'embed' - }, - curPrefs = {}, - - // Note: Difference between Prefs and Config is that Prefs can be - // changed in the UI and are stored in the browser, config can not - - curConfig = { - canvas_expansion: 3, - dimensions: [640,480], - initFill: { - color: 'FF0000', // solid red - opacity: 1 - }, - initStroke: { - width: 5, - color: '000000', // solid black - opacity: 1 - }, - initOpacity: 1, - imgPath: 'images/', - langPath: 'locale/', - extPath: 'extensions/', - extensions: ['ext-markers.js','ext-connector.js', 'ext-eyedropper.js'], - initTool: 'select', - wireframe: false - }, - uiStrings = { - "invalidAttrValGiven":"Invalid value given", - "noContentToFitTo":"No content to fit to", - "layer":"Layer", - "dupeLayerName":"There is already a layer named that!", - "enterUniqueLayerName":"Please enter a unique layer name", - "enterNewLayerName":"Please enter the new layer name", - "layerHasThatName":"Layer already has that name", - "QmoveElemsToLayer":"Move selected elements to layer \"%s\"?", - "QwantToClear":"Do you want to clear the drawing?\nThis will also erase your undo history!", - "QwantToOpen":"Do you want to open a new file?\nThis will also erase your undo history!", - "QerrorsRevertToSource":"There were parsing errors in your SVG source.\nRevert back to original SVG source?", - "QignoreSourceChanges":"Ignore changes made to SVG source?", - "featNotSupported":"Feature not supported", - "enterNewImgURL":"Enter the new image URL", - "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.", - "loadingImage":"Loading image, please wait...", - "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file.", - "noteTheseIssues": "Also note the following issues: ", - "ok":"OK", - "cancel":"Cancel", - "key_up":"Up", - "key_down":"Down", - "key_backspace":"Backspace", - "key_del":"Del" - }; - - var curPrefs = {}; //$.extend({}, defaultPrefs); - var customHandlers = {}; - - Editor.curConfig = curConfig; - - // Store and retrieve preferences - $.pref = function(key, val) { - if(val) curPrefs[key] = val; - key = 'svg-edit-'+key; - var host = location.hostname, - onweb = host && host.indexOf('.') != -1, - store = (val != undefined), - storage = false; - // Some FF versions throw security errors here - try { - if(window.localStorage) { // && onweb removed so Webkit works locally - storage = localStorage; - } - } catch(e) {} - try { - if(window.globalStorage && onweb) { - storage = globalStorage[host]; - } - } catch(e) {} - - if(storage) { - if(store) storage.setItem(key, val); - else if (storage.getItem(key)) return storage.getItem(key) + ''; // Convert to string for FF (.value fails in Webkit) - } else if(window.widget) { - if(store) widget.setPreferenceForKey(val, key); - else return widget.preferenceForKey(key); - } else { - if(store) { - var d = new Date(); - d.setTime(d.getTime() + 31536000000); - val = encodeURIComponent(val); - document.cookie = key+'='+val+'; expires='+d.toUTCString(); - } else { - var result = document.cookie.match(new RegExp(key + "=([^;]+)")); - return result?decodeURIComponent(result[1]):''; - } - } - } - - Editor.setConfig = function(opts) { - $.each(opts, function(key, val) { - // Only allow prefs defined in defaultPrefs - if(key in defaultPrefs) { - $.pref(key, val); - } - }); - $.extend(true, curConfig, opts); - if(opts.extensions) { - curConfig.extensions = opts.extensions; - } - - } - - // Extension mechanisms must call setCustomHandlers with two functions: opts.open and opts.save - // opts.open's responsibilities are: - // - invoke a file chooser dialog in 'open' mode - // - let user pick a SVG file - // - calls setCanvas.setSvgString() with the string contents of that file - // opts.save's responsibilities are: - // - accept the string contents of the current document - // - invoke a file chooser dialog in 'save' mode - // - save the file to location chosen by the user - Editor.setCustomHandlers = function(opts) { - if(opts.open) { - $('#tool_open > input[type="file"]').remove(); - $('#tool_open').show(); - svgCanvas.open = opts.open; - } - if(opts.save) { - show_save_warning = false; - svgCanvas.bind("saved", opts.save); - } - if(opts.pngsave) { - svgCanvas.bind("exported", opts.pngsave); - } - customHandlers = opts; - - } - - Editor.randomizeIds = function() { - svgCanvas.randomizeIds(arguments) - } - - Editor.init = function() { - (function() { - // Load config/data from URL if given - var urldata = $.deparam.querystring(true); - if(!$.isEmptyObject(urldata)) { - if(urldata.dimensions) { - urldata.dimensions = urldata.dimensions.split(','); - } - - if(urldata.extensions) { - urldata.extensions = urldata.extensions.split(','); - } - - if(urldata.bkgd_color) { - urldata.bkgd_color = '#' + urldata.bkgd_color; - } - - svgEditor.setConfig(urldata); - - var src = urldata.source; - var qstr = $.param.querystring(); - - if(src) { - if(src.indexOf("data:") === 0) { - // plusses get replaced by spaces, so re-insert - src = src.replace(/ /g, "+"); - Editor.loadFromDataURI(src); - } else { - Editor.loadFromString(src); - } - } else if(qstr.indexOf('paramurl=') !== -1) { - // Get paramater URL (use full length of remaining location.href) - svgEditor.loadFromURL(qstr.substr(9)); - } else if(urldata.url) { - svgEditor.loadFromURL(urldata.url); - } - } - })(); - - var extFunc = function() { - $.each(curConfig.extensions, function() { - $.getScript(curConfig.extPath + this); - }); - } - - // Load extensions - // Bit of a hack to run extensions in local Opera - if(window.opera && document.location.protocol === 'file:') { - setTimeout(extFunc, 1000); - } else { - extFunc(); - } - - $.svgIcons(curConfig.imgPath + 'svg_edit_icons.svg', { - w:24, h:24, - id_match: false, - no_img: true, - fallback_path: curConfig.imgPath, - fallback:{ - 'new_image':'clear.png', - 'save':'save.png', - 'open':'open.png', - 'source':'source.png', - 'docprops':'document-properties.png', - 'wireframe':'wireframe.png', - - 'undo':'undo.png', - 'redo':'redo.png', - - 'select':'select.png', - 'select_node':'select_node.png', - 'pencil':'fhpath.png', - 'pen':'line.png', - 'square':'square.png', - 'rect':'rect.png', - 'fh_rect':'freehand-square.png', - 'circle':'circle.png', - 'ellipse':'ellipse.png', - 'fh_ellipse':'freehand-circle.png', - 'path':'path.png', - 'text':'text.png', - 'image':'image.png', - 'zoom':'zoom.png', - - 'clone':'clone.png', - 'node_clone':'node_clone.png', - 'delete':'delete.png', - 'node_delete':'node_delete.png', - 'group':'shape_group.png', - 'ungroup':'shape_ungroup.png', - 'move_top':'move_top.png', - 'move_bottom':'move_bottom.png', - 'to_path':'to_path.png', - 'link_controls':'link_controls.png', - 'reorient':'reorient.png', - - 'align_left':'align-left.png', - 'align_center':'align-center', - 'align_right':'align-right', - 'align_top':'align-top', - 'align_middle':'align-middle', - 'align_bottom':'align-bottom', - - 'go_up':'go-up.png', - 'go_down':'go-down.png', - - 'ok':'save.png', - 'cancel':'cancel.png', - - 'arrow_right':'flyouth.png', - 'arrow_down':'dropdown.gif' - }, - placement: { - '#logo':'logo', - - '#tool_clear div,#layer_new':'new_image', - '#tool_save div':'save', - '#tool_export div':'export', - '#tool_open div div':'open', - '#tool_import div div':'import', - '#tool_source':'source', - '#tool_docprops > div':'docprops', - '#tool_wireframe':'wireframe', - - '#tool_undo':'undo', - '#tool_redo':'redo', - - '#tool_select':'select', - '#tool_fhpath':'pencil', - '#tool_line':'pen', - '#tool_rect,#tools_rect_show':'rect', - '#tool_square':'square', - '#tool_fhrect':'fh_rect', - '#tool_ellipse,#tools_ellipse_show':'ellipse', - '#tool_circle':'circle', - '#tool_fhellipse':'fh_ellipse', - '#tool_path':'path', - '#tool_text,#layer_rename':'text', - '#tool_image':'image', - '#tool_zoom':'zoom', - - '#tool_clone,#tool_clone_multi':'clone', - '#tool_node_clone':'node_clone', - '#layer_delete,#tool_delete,#tool_delete_multi':'delete', - '#tool_node_delete':'node_delete', - '#tool_add_subpath':'add_subpath', - '#tool_openclose_path':'open_path', - '#tool_move_top':'move_top', - '#tool_move_bottom':'move_bottom', - '#tool_topath':'to_path', - '#tool_node_link':'link_controls', - '#tool_reorient':'reorient', - '#tool_group':'group', - '#tool_ungroup':'ungroup', - - '#tool_alignleft, #tool_posleft':'align_left', - '#tool_aligncenter, #tool_poscenter':'align_center', - '#tool_alignright, #tool_posright':'align_right', - '#tool_aligntop, #tool_postop':'align_top', - '#tool_alignmiddle, #tool_posmiddle':'align_middle', - '#tool_alignbottom, #tool_posbottom':'align_bottom', - '#cur_position':'align', - - '#linecap_butt,#cur_linecap':'linecap_butt', - '#linecap_round':'linecap_round', - '#linecap_square':'linecap_square', - - '#linejoin_miter,#cur_linejoin':'linejoin_miter', - '#linejoin_round':'linejoin_round', - '#linejoin_bevel':'linejoin_bevel', - - '#url_notice':'warning', - - '#layer_up':'go_up', - '#layer_down':'go_down', - '#layerlist td.layervis':'eye', - - '#tool_source_save,#tool_docprops_save':'ok', - '#tool_source_cancel,#tool_docprops_cancel':'cancel', - - '#rwidthLabel, #iwidthLabel':'width', - '#rheightLabel, #iheightLabel':'height', - '#cornerRadiusLabel span':'c_radius', - '#angleLabel':'angle', - '#zoomLabel':'zoom', - '#tool_fill label': 'fill', - '#tool_stroke .icon_label': 'stroke', - '#group_opacityLabel': 'opacity', - '#blurLabel': 'blur', - '#font_sizeLabel': 'fontsize', - - '.flyout_arrow_horiz':'arrow_right', - '.dropdown button, #main_button .dropdown':'arrow_down', - '#palette .palette_item:first, #fill_bg, #stroke_bg':'no_color' - }, - resize: { - '#logo .svg_icon': 32, - '.flyout_arrow_horiz .svg_icon': 5, - '.layer_button .svg_icon, #layerlist td.layervis .svg_icon': 14, - '.dropdown button .svg_icon': 7, - '#main_button .dropdown .svg_icon': 9, - '.palette_item:first .svg_icon, #fill_bg .svg_icon, #stroke_bg .svg_icon': 16, - '.toolbar_button button .svg_icon':16, - '.stroke_tool div div .svg_icon': 20, - '#tools_bottom label .svg_icon': 18 - }, - callback: function(icons) { - $('.toolbar_button button > svg, .toolbar_button button > img').each(function() { - $(this).parent().prepend(this); - }); - - // Use small icons by default if not all left tools are visible - var tleft = $('#tools_left'); - var min_height = tleft.offset().top + tleft.outerHeight(); - var size = $.pref('iconsize'); - if(size && size != 'm') { - svgEditor.setIconSize(size); - } else if($(window).height() < min_height) { - // Make smaller - svgEditor.setIconSize('s'); - } - - // Look for any missing flyout icons from plugins - $('.tools_flyout').each(function() { - var shower = $('#' + this.id + '_show'); - var sel = shower.attr('data-curopt'); - // Check if there's an icon here - if(!shower.children('svg, img').length) { - var clone = $(sel).children().clone(); - shower.append(clone); - } - if(window.opera) shower.children().removeAttr('style'); - }); - - svgEditor.runCallbacks(); - } - }); - - Editor.canvas = svgCanvas = new $.SvgCanvas(document.getElementById("svgcanvas"), curConfig); - - var palette = ["#000000", "#3f3f3f", "#7f7f7f", "#bfbfbf", "#ffffff", - "#ff0000", "#ff7f00", "#ffff00", "#7fff00", - "#00ff00", "#00ff7f", "#00ffff", "#007fff", - "#0000ff", "#7f00ff", "#ff00ff", "#ff007f", - "#7f0000", "#7f3f00", "#7f7f00", "#3f7f00", - "#007f00", "#007f3f", "#007f7f", "#003f7f", - "#00007f", "#3f007f", "#7f007f", "#7f003f", - "#ffaaaa", "#ffd4aa", "#ffffaa", "#d4ffaa", - "#aaffaa", "#aaffd4", "#aaffff", "#aad4ff", - "#aaaaff", "#d4aaff", "#ffaaff", "#ffaad4", - ]; - - isMac = false, //(navigator.platform.indexOf("Mac") != -1); - modKey = "", //(isMac ? "meta+" : "ctrl+"); - path = svgCanvas.pathActions, - undoMgr = svgCanvas.undoMgr, - Utils = svgCanvas.Utils, - default_img_url = curConfig.imgPath + "logo.png", - workarea = $("#workarea"), - show_save_warning = false, - exportWindow = null; - - // This sets up alternative dialog boxes. They mostly work the same way as - // their UI counterparts, expect instead of returning the result, a callback - // needs to be included that returns the result as its first parameter. - // In the future we may want to add additional types of dialog boxes, since - // they should be easy to handle this way. - (function() { - $('#dialog_container').draggable({cancel:'#dialog_content, #dialog_buttons *'}); - var box = $('#dialog_box'), btn_holder = $('#dialog_buttons'); - - var dbox = function(type, msg, callback, defText) { - $('#dialog_content').html('<p>'+msg.replace(/\n/g,'</p><p>')+'</p>') - .toggleClass('prompt',(type=='prompt')); - btn_holder.empty(); - - var ok = $('<input type="button" value="' + uiStrings.ok + '">').appendTo(btn_holder); - - if(type != 'alert') { - $('<input type="button" value="' + uiStrings.cancel + '">') - .appendTo(btn_holder) - .click(function() { box.hide();callback(false)}); - } - - if(type == 'prompt') { - var input = $('<input type="text">').prependTo(btn_holder); - input.val(defText || ''); - input.bind('keydown', 'return', function() {ok.click();}); - } - - if(type == 'process') { - ok.hide(); - } - - box.show(); - - ok.click(function() { - box.hide(); - var resp = (type == 'prompt')?input.val():true; - if(callback) callback(resp); - }).focus(); - - if(type == 'prompt') input.focus(); - } - - $.alert = function(msg, cb) { dbox('alert', msg, cb);}; - $.confirm = function(msg, cb) { dbox('confirm', msg, cb);}; - $.process_cancel = function(msg, cb) { dbox('process', msg, cb);}; - $.prompt = function(msg, txt, cb) { dbox('prompt', msg, cb, txt);}; - }()); - - var setSelectMode = function() { - $('.tool_button_current').removeClass('tool_button_current').addClass('tool_button'); - $('#tool_select').addClass('tool_button_current').removeClass('tool_button'); - $('#styleoverrides').text('#svgcanvas svg *{cursor:move;pointer-events:all} #svgcanvas svg{cursor:default}'); - svgCanvas.setMode('select'); - }; - - var togglePathEditMode = function(editmode, elems) { - $('#path_node_panel').toggle(editmode); - $('#tools_bottom_2,#tools_bottom_3').toggle(!editmode); - if(editmode) { - // Change select icon - $('.tool_button_current').removeClass('tool_button_current').addClass('tool_button'); - $('#tool_select').addClass('tool_button_current').removeClass('tool_button'); - setIcon('#tool_select', 'select_node'); - multiselected = false; - if(elems.length) { - selectedElement = elems[0]; - } - } else { - setIcon('#tool_select', 'select'); - } - } - - // used to make the flyouts stay on the screen longer the very first time - var flyoutspeed = 1250; - var textBeingEntered = false; - var selectedElement = null; - var multiselected = false; - var editingsource = false; - var docprops = false; - - var fillPaint = new $.jGraduate.Paint({solidColor: curConfig.initFill.color}); - var strokePaint = new $.jGraduate.Paint({solidColor: curConfig.initStroke.color}); - - var saveHandler = function(window,svg) { - show_save_warning = false; - - // by default, we add the XML prolog back, systems integrating SVG-edit (wikis, CMSs) - // can just provide their own custom save handler and might not want the XML prolog - svg = '<?xml version="1.0"?>\n' + svg; - - // Opens the SVG in new window, with warning about Mozilla bug #308590 when applicable - - var win = window.open("data:image/svg+xml;base64," + Utils.encode64(svg)); - - // Alert will only appear the first time saved OR the first time the bug is encountered - var done = $.pref('save_notice_done'); - if(done !== "all") { - - var note = uiStrings.saveFromBrowser.replace('%s', 'SVG'); - - // Check if FF and has <defs/> - if(navigator.userAgent.indexOf('Gecko/') !== -1) { - if(svg.indexOf('<defs') !== -1) { - note += "\n\n" + uiStrings.defsFailOnSave; - $.pref('save_notice_done', 'all'); - done = "all"; - } else { - $.pref('save_notice_done', 'part'); - } - } else { - $.pref('save_notice_done', 'all'); - } - - if(done !== 'part') { - win.alert(note); - } - } - }; - - var exportHandler = function(window, data) { - var issues = data.issues; - - if(!$('#export_canvas').length) { - $('<canvas>', {id: 'export_canvas'}).hide().appendTo('body'); - } - var c = $('#export_canvas')[0]; - - c.width = svgCanvas.contentW; - c.height = svgCanvas.contentH; - canvg(c, data.svg); - var datauri = c.toDataURL('image/png'); - exportWindow.location.href = datauri; - - var done = $.pref('export_notice_done'); - if(done !== "all") { - var note = uiStrings.saveFromBrowser.replace('%s', 'PNG'); - - // Check if there's issues - if(issues.length) { - var pre = "\n \u2022 "; - note += ("\n\n" + uiStrings.noteTheseIssues + pre + issues.join(pre)); - } - - // Note that this will also prevent the notice even though new issues may appear later. - // May want to find a way to deal with that without annoying the user - $.pref('export_notice_done', 'all'); - exportWindow.alert(note); - } - }; - - // called when we've selected a different element - var selectedChanged = function(window,elems) { - var mode = svgCanvas.getMode(); - var is_node = (mode == "pathedit"); - // if elems[1] is present, then we have more than one element - selectedElement = (elems.length == 1 || elems[1] == null ? elems[0] : null); - multiselected = (elems.length >= 2 && elems[1] != null); - if (selectedElement != null) { - // unless we're already in always set the mode of the editor to select because - // upon creation of a text element the editor is switched into - // select mode and this event fires - we need our UI to be in sync - - if (mode != "multiselect" && !is_node) { - setSelectMode(); - updateToolbar(); - } - - } // if (elem != null) - - // Deal with pathedit mode - togglePathEditMode(is_node, elems); - updateContextPanel(); - svgCanvas.runExtensions("selectedChanged", { - elems: elems, - selectedElement: selectedElement, - multiselected: multiselected - }); - }; - - // called when any element has changed - var elementChanged = function(window,elems) { - for (var i = 0; i < elems.length; ++i) { - var elem = elems[i]; - - // if the element changed was the svg, then it could be a resolution change - if (elem && elem.tagName == "svg") { - populateLayers(); - updateCanvas(); - } - // Update selectedElement if element is no longer part of the image. - // This occurs for the text elements in Firefox - else if(elem && selectedElement && selectedElement.parentNode == null) { -// || elem && elem.tagName == "path" && !multiselected) { // This was added in r1430, but not sure why - selectedElement = elem; - } - } - - show_save_warning = true; - - // we update the contextual panel with potentially new - // positional/sizing information (we DON'T want to update the - // toolbar here as that creates an infinite loop) - // also this updates the history buttons - - // we tell it to skip focusing the text control if the - // text element was previously in focus - updateContextPanel(); - - svgCanvas.runExtensions("elementChanged", { - elems: elems - }); - }; - - var zoomChanged = function(window, bbox, autoCenter) { - var scrbar = 15, - res = svgCanvas.getResolution(), - w_area = workarea, - canvas_pos = $('#svgcanvas').position(); - w_area.css('cursor','auto'); - var z_info = svgCanvas.setBBoxZoom(bbox, w_area.width()-scrbar, w_area.height()-scrbar); - if(!z_info) return; - var zoomlevel = z_info.zoom, - bb = z_info.bbox; - $('#zoom').val(Math.round(zoomlevel*100)); - - if(autoCenter) { - updateCanvas(); - } else { - updateCanvas(false, {x: bb.x * zoomlevel + (bb.width * zoomlevel)/2, y: bb.y * zoomlevel + (bb.height * zoomlevel)/2}); - } - - if(svgCanvas.getMode() == 'zoom' && bb.width) { - // Go to select if a zoom box was drawn - setSelectMode(); - } - zoomDone(); - } - - var flyout_funcs = {}; - - var setupFlyouts = function(holders) { - $.each(holders, function(hold_sel, btn_opts) { - var buttons = $(hold_sel).children(); - var show_sel = hold_sel + '_show'; - var def = false; - buttons.addClass('tool_button') - .unbind('click mousedown mouseup') // may not be necessary - .each(function(i) { - // Get this buttons options - var opts = btn_opts[i]; - - // Remember the function that goes with this ID - flyout_funcs[opts.sel] = opts.fn; - - if(opts.isDefault) def = i; - - // Clicking the icon in flyout should set this set's icon - - var func = function() { - if($(this).hasClass('disabled')) return false; - if (toolButtonClick(show_sel)) { - opts.fn(); - } - if(opts.icon) { - var icon = $.getSvgIcon(opts.icon).clone(); - } else { - // - var icon = $(opts.sel).children().eq(0).clone(); - } - - var shower = $(show_sel); - icon[0].setAttribute('width',shower.width()); - icon[0].setAttribute('height',shower.height()); - shower.children(':not(.flyout_arrow_horiz)').remove(); - shower.append(icon).attr('data-curopt', opts.sel); // This sets the current mode - } - - $(this).mouseup(func); - - if(opts.key) { - $(document).bind('keydown', opts.key+'', func); - } - }); - - if(def) { - $(show_sel).attr('data-curopt', btn_opts[def].sel); - } else if(!$(show_sel).attr('data-curopt')) { - // Set first as default - $(show_sel).attr('data-curopt', btn_opts[0].sel); - } - - var timer; - - // Clicking the "show" icon should set the current mode - $(show_sel).mousedown(function(evt) { - if($(show_sel).hasClass('disabled')) return false; - var holder = $(show_sel.replace('_show','')); - var l = holder.css('left'); - var w = holder.width()*-1; - var time = holder.data('shown_popop')?200:0; - timer = setTimeout(function() { - // Show corresponding menu - holder.css('left', w).show().animate({ - left: l - },150); - holder.data('shown_popop',true); - },time); - evt.preventDefault(); - }).mouseup(function() { - clearTimeout(timer); - var opt = $(this).attr('data-curopt'); - if (toolButtonClick(show_sel)) { - flyout_funcs[opt](); - } - }); - - // $('#tools_rect').mouseleave(function(){$('#tools_rect').fadeOut();}); - - var pos = $(show_sel).position(); - $(hold_sel).css({'left': pos.left+34, 'top': pos.top+77}); - }); - - setFlyoutTitles(); - } - - var makeFlyoutHolder = function(id, child) { - var div = $('<div>',{ - 'class': 'tools_flyout', - id: id - }).appendTo('#svg_editor').append(child); - - return div; - } - - var setFlyoutPositions = function() { - $('.tools_flyout').each(function() { - var shower = $('#' + this.id + '_show'); - var pos = shower.offset(); - var w = shower.outerWidth(); - $(this).css({left: pos.left + w, top: pos.top}); - }); - } - - var setFlyoutTitles = function() { - $('.tools_flyout').each(function() { - var shower = $('#' + this.id + '_show'); - var tooltips = []; - $(this).children().each(function() { - tooltips.push(this.title); - }); - shower[0].title = tooltips.join(' / '); - }); - } - - var extAdded = function(window, ext) { - - var cb_called = false; - - var runCallback = function() { - if(ext.callback && !cb_called) { - cb_called = true; - ext.callback(); - } - } - - var btn_selects = []; - - if(ext.context_tools) { - $.each(ext.context_tools, function(i, tool) { - // Add select tool - var cont_id = tool.container_id?(' id="' + tool.container_id + '"'):""; - - var panel = $('#' + tool.panel); - - // create the panel if it doesn't exist - if(!panel.length) - panel = $('<div>', {id: tool.panel}).appendTo("#tools_top"); - - // TODO: Allow support for other types, or adding to existing tool - switch (tool.type) { - case 'tool_button': - var html = '<div class="tool_button">' + tool.id + '</div>'; - var div = $(html).appendTo(panel); - if (tool.events) { - $.each(tool.events, function(evt, func) { - $(div).bind(evt, func); - }); - } - break; - case 'select': - var html = '<label' + cont_id + '>' - + '<select id="' + tool.id + '">'; - $.each(tool.options, function(val, text) { - var sel = (val == tool.defval) ? " selected":""; - html += '<option value="'+val+'"' + sel + '>' + text + '</option>'; - }); - html += "</select></label>"; - // Creates the tool, hides & adds it, returns the select element - var sel = $(html).appendTo(panel).find('select'); - - $.each(tool.events, function(evt, func) { - $(sel).bind(evt, func); - }); - break; - case 'button-select': - var html = '<div id="' + tool.id + '" class="dropdown toolset" title="' + tool.title + '">' - + '<div id="cur_' + tool.id + '" class="icon_label"></div><button></button></div>'; - - var list = $('<ul id="' + tool.id + '_opts"></ul>').appendTo('#option_lists'); - - if(tool.colnum) { - list.addClass('optcols' + tool.colnum); - } - - // Creates the tool, hides & adds it, returns the select element - var dropdown = $(html).appendTo(panel).children(); - - btn_selects.push({ - elem: ('#' + tool.id), - list: ('#' + tool.id + '_opts'), - title: tool.title, - callback: tool.events.change, - cur: ('#cur_' + tool.id) - }); - - break; - case 'input': - var html = '<label' + cont_id + '>' - + '<span id="' + tool.id + '_label">' - + tool.label + ':</span>' - + '<input id="' + tool.id + '" title="' + tool.title - + '" size="' + (tool.size || "4") + '" value="' + (tool.defval || "") + '" type="text"/></label>' - - // Creates the tool, hides & adds it, returns the select element - - // Add to given tool.panel - var inp = $(html).appendTo(panel).find('input'); - - if(tool.spindata) { - inp.SpinButton(tool.spindata); - } - - if(tool.events) { - $.each(tool.events, function(evt, func) { - inp.bind(evt, func); - }); - } - break; - - default: - break; - } - }); - } - - if(ext.buttons) { - var fallback_obj = {}, - placement_obj = {}, - svgicons = ext.svgicons; - var holders = {}; - - - // Add buttons given by extension - $.each(ext.buttons, function(i, btn) { - var icon; - var id = btn.id; - var num = i; - - // Give button a unique ID - while($('#'+id).length) { - id = btn.id + '_' + (++num); - } - - if(!svgicons) { - icon = $('<img src="' + btn.icon + '">'); - } else { - fallback_obj[id] = btn.icon; - var svgicon = btn.svgicon?btn.svgicon:btn.id; - placement_obj['#' + id] = svgicon; - } - - var cls, parent; - - // Set button up according to its type - switch ( btn.type ) { - case 'mode': - cls = 'tool_button'; - parent = "#tools_left"; - break; - case 'context': - cls = 'tool_button'; - parent = "#" + btn.panel; - // create the panel if it doesn't exist - if(!$(parent).length) - $('<div>', {id: btn.panel}).appendTo("#tools_top"); - break; - } - - var button = $(btn.list?'<li/>':'<div/>') - .attr("id", id) - .attr("title", btn.title) - .addClass(cls); - if(!btn.includeWith && !btn.list) { - button.appendTo(parent); - } else if(btn.list) { - // Add button to list - button.addClass('push_button'); - $('#' + btn.list + '_opts').append(button); - if(btn.isDefault) { - $('#cur_' + btn.list).append(button.children().clone()); - var svgicon = btn.svgicon?btn.svgicon:btn.id; - placement_obj['#cur_' + btn.list] = svgicon; - } - } else if(btn.includeWith) { - // Add to flyout menu / make flyout menu - var opts = btn.includeWith; - // opts.button, default, position - var ref_btn = $(opts.button); - - var flyout_holder = ref_btn.parent(); - // Create a flyout menu if there isn't one already - if(!ref_btn.parent().hasClass('tools_flyout')) { - // Create flyout placeholder - var arr_div = $('<div>',{id:'flyout_arrow_horiz'}) - - var tls_id = ref_btn[0].id.replace('tool_','tools_') - var show_btn = ref_btn.clone() - .attr('id',tls_id + '_show') - .append($('<div>',{'class':'flyout_arrow_horiz'})); - - ref_btn.before(show_btn); - - // Create a flyout div - flyout_holder = makeFlyoutHolder(tls_id, ref_btn); - } - - var ref_data = Actions.getButtonData(opts.button); - - if(opts.isDefault) { - placement_obj['#' + tls_id + '_show'] = btn.id; - } - // TODO: Find way to set the current icon using the iconloader if this is not default - - // Include data for extension button as well as ref button - var cur_h = holders['#'+flyout_holder[0].id] = [{ - sel: '#'+id, - fn: btn.events.click, - icon: btn.id, - key: btn.key, - isDefault: btn.includeWith?btn.includeWith.isDefault:0 - }, ref_data]; - - // {sel:'#tool_rect', fn: clickRect, evt: 'mouseup', key: 4, parent: '#tools_rect', icon: 'rect'} - - var pos = ("position" in opts)?opts.position:'last'; - var len = flyout_holder.children().length; - - // Add at given position or end - if(!isNaN(pos) && pos >= 0 && pos < len) { - flyout_holder.children().eq(pos).before(button); - } else { - flyout_holder.append(button); - cur_h.reverse(); - } - } - - if(!svgicons) { - button.append(icon); - } - - if(!btn.list) { - // Add given events to button - $.each(btn.events, function(name, func) { - if(name == "click") { - if(btn.type == 'mode') { - if(btn.includeWith) { - button.bind(name, func); - } else { - button.bind(name, function() { - if(toolButtonClick(button)) { - func(); - } - }); - } - if(btn.key) { - $(document).bind('keydown', btn.key, func); - if(btn.title) button.attr("title", btn.title + ' ['+btn.key+']'); - } - } else { - button.bind(name, func); - } - } else { - button.bind(name, func); - } - }); - } - - setupFlyouts(holders); - }); - - $.each(btn_selects, function() { - addAltDropDown(this.elem, this.list, this.callback, {seticon: true}); - }); - - - $.svgIcons(svgicons, { - w:24, h:24, - id_match: false, - no_img: true, - fallback: fallback_obj, - placement: placement_obj, - callback: function(icons) { - // Non-ideal hack to make the icon match the current size - if(curPrefs.iconsize && curPrefs.iconsize != 'm') { - setIconSize(curPrefs.iconsize, true); - } - runCallback(); - } - - }); - } - - runCallback(); - }; - - var getPaint = function(color, opac) { - // update the editor's fill paint - var opts = null; - if (color.substr(0,5) == "url(#") { - var grad = document.getElementById(color.substr(5,color.length-6)); - opts = { alpha: opac }; - opts[grad.tagName] = grad; - } - else if (color.substr(0,1) == "#") { - opts = { - alpha: opac, - solidColor: color.substr(1) - }; - } - else { - opts = { - alpha: opac, - solidColor: 'none' - }; - } - return new $.jGraduate.Paint(opts); - }; - - // updates the toolbar (colors, opacity, etc) based on the selected element - // This function also updates the opacity and id elements that are in the context panel - var updateToolbar = function() { - if (selectedElement != null && $.inArray(selectedElement.tagName, ['image', 'foreignObject', 'g', 'a']) === -1) { - // get opacity values - var fillOpacity = parseFloat(selectedElement.getAttribute("fill-opacity")); - if (isNaN(fillOpacity)) { - fillOpacity = 1.0; - } - - var strokeOpacity = parseFloat(selectedElement.getAttribute("stroke-opacity")); - if (isNaN(strokeOpacity)) { - strokeOpacity = 1.0; - } - - // update fill color and opacity - var fillColor = selectedElement.getAttribute("fill")||"black"; - // prevent undo on these canvas changes - svgCanvas.setColor('fill', fillColor, true); - svgCanvas.setPaintOpacity('fill', fillOpacity, true); - - // update stroke color and opacity - var strokeColor = selectedElement.getAttribute("stroke")||"none"; - // prevent undo on these canvas changes - svgCanvas.setColor('stroke', strokeColor, true); - svgCanvas.setPaintOpacity('stroke', strokeOpacity, true); - - // update the rect inside #fill_color - $("#stroke_color rect").attr({ - fill: strokeColor, - opacity: strokeOpacity - }); - - // update the rect inside #fill_color - $("#fill_color rect").attr({ - fill: fillColor, - opacity: fillOpacity - }); - - fillOpacity *= 100; - strokeOpacity *= 100; - - fillPaint = getPaint(fillColor, fillOpacity); - strokePaint = getPaint(strokeColor, strokeOpacity); - - fillOpacity = fillOpacity + " %"; - strokeOpacity = strokeOpacity + " %"; - - // update fill color - if (fillColor == "none") { - fillOpacity = "N/A"; - } - if (strokeColor == null || strokeColor == "" || strokeColor == "none") { - strokeColor = "none"; - strokeOpacity = "N/A"; - } - - $('#stroke_width').val(selectedElement.getAttribute("stroke-width")||1); - $('#stroke_style').val(selectedElement.getAttribute("stroke-dasharray")||"none"); - - var attr = selectedElement.getAttribute("stroke-linejoin") || 'miter'; - - setStrokeOpt($('#linejoin_' + attr)[0]); - - attr = selectedElement.getAttribute("stroke-linecap") || 'butt'; - - setStrokeOpt($('#linecap_' + attr)[0]); - - } - - // All elements including image and group have opacity - if(selectedElement != null) { - var opac_perc = ((selectedElement.getAttribute("opacity")||1.0)*100); - $('#group_opacity').val(opac_perc); - $('#opac_slider').slider('option', 'value', opac_perc); - $('#elem_id').val(selectedElement.id); - } - - updateToolButtonState(); - }; - - // updates the context panel tools based on the selected element - var updateContextPanel = function() { - var elem = selectedElement; - // If element has just been deleted, consider it null - if(elem != null && !elem.parentNode) elem = null; - var currentLayer = svgCanvas.getCurrentLayer(); - var currentMode = svgCanvas.getMode(); - // No need to update anything else in rotate mode - if (currentMode == 'rotate' && elem != null) { - var ang = svgCanvas.getRotationAngle(elem); - $('#angle').val(ang); - $('#tool_reorient').toggleClass('disabled', ang == 0); - return; - } - var is_node = currentMode == 'pathedit'; //elem ? (elem.id && elem.id.indexOf('pathpointgrip') == 0) : false; - $('#selected_panel, #multiselected_panel, #g_panel, #rect_panel, #circle_panel,\ - #ellipse_panel, #line_panel, #text_panel, #image_panel').hide(); - if (elem != null) { - var elname = elem.nodeName; - - // If this is a link with no transform and one child, pretend - // its child is selected -// console.log('go', elem) -// if(elname === 'a') { // && !$(elem).attr('transform')) { -// elem = elem.firstChild; -// } - - - var angle = svgCanvas.getRotationAngle(elem); - $('#angle').val(angle); - - var blurval = svgCanvas.getBlur(elem); - $('#blur').val(blurval); - $('#blur_slider').slider('option', 'value', blurval); - - if(svgCanvas.addedNew) { - if(elname == 'image') { - var xlinkNS = "http://www.w3.org/1999/xlink"; - var href = elem.getAttributeNS(xlinkNS, "href"); - // Prompt for URL if not a data URL - if(href.indexOf('data:') !== 0) { - promptImgURL(); - } - } else if(elname == 'text') { - // TODO: Do something here for new text - } - } - - if(!is_node && currentMode != 'pathedit') { - $('#selected_panel').show(); - // Elements in this array already have coord fields - if($.inArray(elname, ['line', 'circle', 'ellipse']) != -1) { - $('#xy_panel').hide(); - } else { - var x,y; - // Get BBox vals for g, polyline and path - if($.inArray(elname, ['g', 'polyline', 'path']) != -1) { - var bb = svgCanvas.getStrokedBBox([elem]); - if(bb) { - x = bb.x; - y = bb.y; - } - } else { - x = elem.getAttribute('x'); - y = elem.getAttribute('y'); - } - $('#selected_x').val(x || 0); - $('#selected_y').val(y || 0); - $('#xy_panel').show(); - } - - // Elements in this array cannot be converted to a path - var no_path = $.inArray(elname, ['image', 'text', 'path', 'g', 'use']) == -1; - $('#tool_topath').toggle(no_path); - $('#tool_reorient').toggle(elname == 'path'); - $('#tool_reorient').toggleClass('disabled', angle == 0); - } else { - var point = path.getNodePoint(); - $('#tool_add_subpath').removeClass('push_button_pressed').addClass('tool_button'); - $('#tool_node_delete').toggleClass('disabled', !path.canDeleteNodes); - - // Show open/close button based on selected point - setIcon('#tool_openclose_path', path.closed_subpath ? 'open_path' : 'close_path'); - - if(point) { - var seg_type = $('#seg_type'); - $('#path_node_x').val(point.x); - $('#path_node_y').val(point.y); - if(point.type) { - seg_type.val(point.type).removeAttr('disabled'); - } else { - seg_type.val(4).attr('disabled','disabled'); - } - } - return; - } - - // update contextual tools here - var panels = { - g: [], - rect: ['rx','width','height'], - image: ['width','height'], - circle: ['cx','cy','r'], - ellipse: ['cx','cy','rx','ry'], - line: ['x1','y1','x2','y2'], - text: [] - }; - - var el_name = elem.tagName; - - if(panels[el_name]) { - var cur_panel = panels[el_name]; - - - $('#' + el_name + '_panel').show(); - - $.each(cur_panel, function(i, item) { - $('#' + el_name + '_' + item).val(elem.getAttribute(item) || 0); - }); - - if(el_name == 'text') { - $('#text_panel').css("display", "inline"); - if (svgCanvas.getItalic()) { - $('#tool_italic').addClass('push_button_pressed').removeClass('tool_button'); - } - else { - $('#tool_italic').removeClass('push_button_pressed').addClass('tool_button'); - } - if (svgCanvas.getBold()) { - $('#tool_bold').addClass('push_button_pressed').removeClass('tool_button'); - } - else { - $('#tool_bold').removeClass('push_button_pressed').addClass('tool_button'); - } - $('#font_family').val(elem.getAttribute("font-family")); - $('#font_size').val(elem.getAttribute("font-size")); - $('#text').val(elem.textContent); - if (svgCanvas.addedNew) { - $('#text').focus().select(); - } - } // text - else if(el_name == 'image') { - var xlinkNS="http://www.w3.org/1999/xlink"; - var href = elem.getAttributeNS(xlinkNS, "href"); - setImageURL(href); - } // image - } - } // if (elem != null) - else if (multiselected) { - $('#multiselected_panel').show(); - } - - // update history buttons - if (undoMgr.getUndoStackSize() > 0) { - $('#tool_undo').removeClass( 'disabled'); - } - else { - $('#tool_undo').addClass( 'disabled'); - } - if (undoMgr.getRedoStackSize() > 0) { - $('#tool_redo').removeClass( 'disabled'); - } - else { - $('#tool_redo').addClass( 'disabled'); - } - - svgCanvas.addedNew = false; - - if ( (elem && !is_node) || multiselected) { - // update the selected elements' layer - $('#selLayerNames').removeAttr('disabled').val(currentLayer); - } - else { - $('#selLayerNames').attr('disabled', 'disabled'); - } - }; - - $('#text').focus( function(){ textBeingEntered = true; } ); - $('#text').blur( function(){ textBeingEntered = false; } ); - - // bind the selected event to our function that handles updates to the UI - svgCanvas.bind("selected", selectedChanged); - svgCanvas.bind("changed", elementChanged); - svgCanvas.bind("saved", saveHandler); - svgCanvas.bind("exported", exportHandler); - svgCanvas.bind("zoomed", zoomChanged); - svgCanvas.bind("extension_added", extAdded); - svgCanvas.textActions.setInputElem($("#text")[0]); - - var str = '<div class="palette_item" data-rgb="none"></div>' - $.each(palette, function(i,item){ - str += '<div class="palette_item" style="background-color: ' + item + ';" data-rgb="' + item + '"></div>'; - }); - $('#palette').append(str); - - // Set up editor background functionality - // TODO add checkerboard as "pattern" - var color_blocks = ['#FFF','#888','#000']; // ,'url(data:image/gif;base64,R0lGODlhEAAQAIAAAP%2F%2F%2F9bW1iH5BAAAAAAALAAAAAAQABAAAAIfjG%2Bgq4jM3IFLJgpswNly%2FXkcBpIiVaInlLJr9FZWAQA7)']; - var str = ''; - $.each(color_blocks, function() { - str += '<div class="color_block" style="background-color:' + this + ';"></div>'; - }); - $('#bg_blocks').append(str); - var blocks = $('#bg_blocks div'); - var cur_bg = 'cur_background'; - blocks.each(function() { - var blk = $(this); - blk.click(function() { - blocks.removeClass(cur_bg); - $(this).addClass(cur_bg); - }); - }); - - if($.pref('bkgd_color')) { - setBackground($.pref('bkgd_color'), $.pref('bkgd_url')); - } else if($.pref('bkgd_url')) { - // No color set, only URL - setBackground(defaultPrefs.bkgd_color, $.pref('bkgd_url')); - } - - if($.pref('img_save')) { - curPrefs.img_save = $.pref('img_save'); - $('#image_save_opts input').val([curPrefs.img_save]); - } - - var changeRectRadius = function(ctl) { - svgCanvas.setRectRadius(ctl.value); - } - - var changeFontSize = function(ctl) { - svgCanvas.setFontSize(ctl.value); - } - - var changeStrokeWidth = function(ctl) { - var val = ctl.value; - if(val == 0 && selectedElement && $.inArray(selectedElement.nodeName, ['line', 'polyline']) != -1) { - val = ctl.value = 1; - } - svgCanvas.setStrokeWidth(val); - } - - var changeRotationAngle = function(ctl) { - svgCanvas.setRotationAngle(ctl.value); - $('#tool_reorient').toggleClass('disabled', ctl.value == 0); - } - var changeZoom = function(ctl) { - var zoomlevel = ctl.value / 100; - var zoom = svgCanvas.getZoom(); - var w_area = workarea; - - zoomChanged(window, { - width: 0, - height: 0, - // center pt of scroll position - x: (w_area[0].scrollLeft + w_area.width()/2)/zoom, - y: (w_area[0].scrollTop + w_area.height()/2)/zoom, - zoom: zoomlevel - }, true); - } - - var changeOpacity = function(ctl, val) { - if(val == null) val = ctl.value; - $('#group_opacity').val(val); - if(!ctl || !ctl.handle) { - $('#opac_slider').slider('option', 'value', val); - } - svgCanvas.setOpacity(val/100); - } - - var changeBlur = function(ctl, val, noUndo) { - if(val == null) val = ctl.value; - $('#blur').val(val); - var complete = false; - if(!ctl || !ctl.handle) { - $('#blur_slider').slider('option', 'value', val); - complete = true; - } - if(noUndo) { - svgCanvas.setBlurNoUndo(val); - } else { - svgCanvas.setBlur(val, complete); - } - } - - var operaRepaint = function() { - // Repaints canvas in Opera. Needed for stroke-dasharray change as well as fill change - if(!window.opera) return; - $('<p/>').hide().appendTo('body').remove(); - } - - $('#stroke_style').change(function(){ - svgCanvas.setStrokeAttr('stroke-dasharray', $(this).val()); - operaRepaint(); - }); - - $('#stroke_linejoin').change(function(){ - svgCanvas.setStrokeAttr('stroke-linejoin', $(this).val()); - operaRepaint(); - }); - - - // Lose focus for select elements when changed (Allows keyboard shortcuts to work better) - $('select').change(function(){$(this).blur();}); - - // fired when user wants to move elements to another layer - var promptMoveLayerOnce = false; - $('#selLayerNames').change(function(){ - var destLayer = this.options[this.selectedIndex].value; - var confirm_str = uiStrings.QmoveElemsToLayer.replace('%s',destLayer); - var moveToLayer = function(ok) { - if(!ok) return; - promptMoveLayerOnce = true; - svgCanvas.moveSelectedToLayer(destLayer); - svgCanvas.clearSelection(); - populateLayers(); - } - if (destLayer) { - if(promptMoveLayerOnce) { - moveToLayer(true); - } else { - $.confirm(confirm_str, moveToLayer); - } - } - }); - - $('#font_family').change(function() { - svgCanvas.setFontFamily(this.value); - }); - - $('#seg_type').change(function() { - svgCanvas.setSegType($(this).val()); - }); - - $('#text').keyup(function(){ - svgCanvas.setTextContent(this.value); - }); - - $('#image_url').change(function(){ - setImageURL(this.value); - }); - - $('.attr_changer').change(function() { - var attr = this.getAttribute("data-attr"); - var val = this.value; - var valid = svgCanvas.isValidUnit(attr, val); - - if(!valid) { - $.alert(uiStrings.invalidAttrValGiven); - this.value = selectedElement.getAttribute(attr); - return false; - } - // if the user is changing the id, then de-select the element first - // change the ID, then re-select it with the new ID - if (attr == "id") { - var elem = selectedElement; - svgCanvas.clearSelection(); - elem.id = val; - svgCanvas.addToSelection([elem],true); - } - else { - svgCanvas.changeSelectedAttribute(attr, val); - } - }); - - // Prevent selection of elements when shift-clicking - $('#palette').mouseover(function() { - var inp = $('<input type="hidden">'); - $(this).append(inp); - inp.focus().remove(); - }); - - $('.palette_item').click(function(evt){ - var picker = (evt.shiftKey ? "stroke" : "fill"); - var id = (evt.shiftKey ? '#stroke_' : '#fill_'); - var color = $(this).attr('data-rgb'); - var rectbox = document.getElementById("gradbox_"+picker).parentNode.firstChild; - var paint = null; - - // Webkit-based browsers returned 'initial' here for no stroke - if (color == 'transparent' || color == 'initial') { - color = 'none'; - $(id + "opacity").html("N/A"); - paint = new $.jGraduate.Paint(); - } - else { - paint = new $.jGraduate.Paint({alpha: 100, solidColor: color.substr(1)}); - } - rectbox.setAttribute("fill", color); - rectbox.setAttribute("opacity", 1); - - if (evt.shiftKey) { - strokePaint = paint; - if (svgCanvas.getColor('stroke') != color) { - svgCanvas.setColor('stroke', color); - } - if (color != 'none' && svgCanvas.getStrokeOpacity() != 1) { - svgCanvas.setPaintOpacity('stroke', 1.0); - } - } else { - fillPaint = paint; - if (svgCanvas.getColor('fill') != color) { - svgCanvas.setColor('fill', color); - } - if (color != 'none' && svgCanvas.getFillOpacity('fill') != 1) { - svgCanvas.setPaintOpacity('fill', 1.0); - } - } - updateToolButtonState(); - }); - - $("#toggle_stroke_tools").toggle(function() { - $(".stroke_tool").css('display','table-cell'); - $(this).text('<<'); - }, function() { - $(".stroke_tool").css('display','none'); - $(this).text('>>'); - }); - - // This is a common function used when a tool has been clicked (chosen) - // It does several common things: - // - removes the tool_button_current class from whatever tool currently has it - // - hides any flyouts - // - adds the tool_button_current class to the button passed in - var toolButtonClick = function(button, fadeFlyouts) { - if ($(button).hasClass('disabled')) return false; - if($(button).parent().hasClass('tools_flyout')) return true; - var fadeFlyouts = fadeFlyouts || 'normal'; - $('.tools_flyout').fadeOut(fadeFlyouts); - $('#styleoverrides').text(''); - $('.tool_button_current').removeClass('tool_button_current').addClass('tool_button'); - $(button).addClass('tool_button_current').removeClass('tool_button'); - // when a tool is selected, we should deselect any currently selected elements - svgCanvas.clearSelection(); - return true; - }; - - (function() { - var last_x = null, last_y = null, w_area = workarea[0], - panning = false, keypan = false; - - $('#svgcanvas').bind('mousemove mouseup', function(evt) { - if(panning === false) return; - - w_area.scrollLeft -= (evt.clientX - last_x); - w_area.scrollTop -= (evt.clientY - last_y); - - last_x = evt.clientX; - last_y = evt.clientY; - - if(evt.type === 'mouseup') panning = false; - return false; - }).mousedown(function(evt) { - if(evt.button === 1 || keypan === true) { - panning = true; - last_x = evt.clientX; - last_y = evt.clientY; - return false; - } - }); - - $(window).mouseup(function() { - panning = false; - }); - - $(document).bind('keydown', 'space', function(evt) { - svgCanvas.spaceKey = keypan = true; - evt.preventDefault(); - }).bind('keyup', 'space', function(evt) { - evt.preventDefault(); - svgCanvas.spaceKey = keypan = false; - }); - }()); - - - function setStrokeOpt(opt, changeElem) { - var id = opt.id; - var bits = id.split('_'); - var pre = bits[0]; - var val = bits[1]; - - if(changeElem) { - svgCanvas.setStrokeAttr('stroke-' + pre, val); - } - operaRepaint(); - setIcon('#cur_' + pre , id, 20); - $(opt).addClass('current').siblings().removeClass('current'); - } - - (function() { - var button = $('#main_icon'); - var overlay = $('#main_icon span'); - var list = $('#main_menu'); - var on_button = false; - var height = 0; - var js_hover = true; - var set_click = false; - - var hideMenu = function() { - list.fadeOut(200); - }; - - $(window).mouseup(function(evt) { - if(!on_button) { - button.removeClass('buttondown'); - // do not hide if it was the file input as that input needs to be visible - // for its change event to fire - if (evt.target.tagName.toLowerCase() != "input") { - list.fadeOut(200); - } else if(!set_click) { - set_click = true; - $(evt.target).click(function() { - list.css('margin-left','-9999px').show(); - }); - } - } - on_button = false; - }).mousedown(function() { - $('.tools_flyout:visible').fadeOut(); - }); - - overlay.bind('mousedown',function() { - if (!button.hasClass('buttondown')) { - button.addClass('buttondown').removeClass('buttonup') - // Margin must be reset in case it was changed before; - list.css('margin-left',0).show(); - if(!height) { - height = list.height(); - } - // Using custom animation as slideDown has annoying "bounce effect" - list.css('height',0).animate({ - 'height': height - },200); - on_button = true; - return false; - } else { - button.removeClass('buttondown').addClass('buttonup'); - list.fadeOut(200); - } - }).hover(function() { - on_button = true; - }).mouseout(function() { - on_button = false; - }); - - var list_items = $('#main_menu li'); - - // Check if JS method of hovering needs to be used (Webkit bug) - list_items.mouseover(function() { - js_hover = ($(this).css('background-color') == 'rgba(0, 0, 0, 0)'); - - list_items.unbind('mouseover'); - if(js_hover) { - list_items.mouseover(function() { - this.style.backgroundColor = '#FFC'; - }).mouseout(function() { - this.style.backgroundColor = 'transparent'; - return true; - }); - } - }); - }()); - - var addDropDown = function(elem, callback, dropUp) { - var button = $(elem).find('button'); - var list = $(elem).find('ul'); - var on_button = false; - if(dropUp) { - $(elem).addClass('dropup'); - } - - $(elem).find('li').bind('mouseup', callback); - - $(window).mouseup(function(evt) { - if(!on_button) { - button.removeClass('down'); - list.hide(); - } - on_button = false; - }); - - button.bind('mousedown',function() { - if (!button.hasClass('down')) { - button.addClass('down'); - list.show(); - on_button = true; - } else { - button.removeClass('down'); - list.hide(); - } - }).hover(function() { - on_button = true; - }).mouseout(function() { - on_button = false; - }); - } - - // TODO: Combine this with addDropDown or find other way to optimize - var addAltDropDown = function(elem, list, callback, opts) { - var button = $(elem); - var list = $(list); - var on_button = false; - var dropUp = opts.dropUp; - if(dropUp) { - $(elem).addClass('dropup'); - } - list.find('li').bind('mouseup', function() { - if(opts.seticon) { - setIcon('#cur_' + button[0].id , $(this).children()); - $(this).addClass('current').siblings().removeClass('current'); - } - callback.apply(this, arguments); - - }); - - $(window).mouseup(function(evt) { - if(!on_button) { - button.removeClass('down'); - list.hide(); - list.css({top:0, left:0}); - } - on_button = false; - }); - - var height = list.height(); - $(elem).bind('mousedown',function() { - var off = $(elem).offset(); - if(dropUp) { - off.top -= list.height(); - off.left += 8; - } else { - off.top += $(elem).height(); - } - $(list).offset(off); - - if (!button.hasClass('down')) { - button.addClass('down'); - list.show(); - on_button = true; - return false; - } else { - button.removeClass('down'); - // CSS position must be reset for Webkit - list.hide(); - list.css({top:0, left:0}); - } - }).hover(function() { - on_button = true; - }).mouseout(function() { - on_button = false; - }); - - if(opts.multiclick) { - list.mousedown(function() { - on_button = true; - }); - } - } - - addDropDown('#font_family_dropdown', function() { - var fam = $(this).text(); - $('#font_family').val($(this).text()).change(); - }); - - addDropDown('#opacity_dropdown', function() { - if($(this).find('div').length) return; - var perc = parseInt($(this).text().split('%')[0]); - changeOpacity(false, perc); - }, true); - - // For slider usage, see: http://jqueryui.com/demos/slider/ - $("#opac_slider").slider({ - start: function() { - $('#opacity_dropdown li:not(.special)').hide(); - }, - stop: function() { - $('#opacity_dropdown li').show(); - $(window).mouseup(); - }, - slide: function(evt, ui){ - changeOpacity(ui); - } - }); - - addDropDown('#blur_dropdown', function() { - }); - - var slideStart = false; - - $("#blur_slider").slider({ - max: 10, - step: .1, - stop: function(evt, ui) { - slideStart = false; - changeBlur(ui); - $('#blur_dropdown li').show(); - $(window).mouseup(); - }, - start: function() { - slideStart = true; - }, - slide: function(evt, ui){ - changeBlur(ui, null, slideStart); - } - }); - - - addDropDown('#zoom_dropdown', function() { - var item = $(this); - var val = item.attr('data-val'); - if(val) { - zoomChanged(window, val); - } else { - changeZoom({value:parseInt(item.text())}); - } - }, true); - - addAltDropDown('#stroke_linecap', '#linecap_opts', function() { - setStrokeOpt(this, true); - }, {dropUp: true}); - - addAltDropDown('#stroke_linejoin', '#linejoin_opts', function() { - setStrokeOpt(this, true); - }, {dropUp: true}); - - addAltDropDown('#tool_position', '#position_opts', function() { - var letter = this.id.replace('tool_pos','').charAt(0); - svgCanvas.alignSelectedElements(letter, 'page'); - }, {multiclick: true}); - - /* - - When a flyout icon is selected - (if flyout) { - - Change the icon - - Make pressing the button run its stuff - } - - Run its stuff - - When its shortcut key is pressed - - If not current in list, do as above - , else: - - Just run its stuff - - */ - - // Unfocus text input when workarea is mousedowned. - (function() { - var inp; - - var unfocus = function() { - $(inp).blur(); - } - - // Do not include the #text input, as it needs to remain focused - // when clicking on an SVG text element. - $('#svg_editor input:text:not(#text)').focus(function() { - inp = this; - workarea.mousedown(unfocus); - }).blur(function() { - workarea.unbind('mousedown', unfocus); - }); - }()); - - var clickSelect = function() { - if (toolButtonClick('#tool_select')) { - svgCanvas.setMode('select'); - $('#styleoverrides').text('#svgcanvas svg *{cursor:move;pointer-events:all}, #svgcanvas svg{cursor:default}'); - } - }; - - var clickFHPath = function() { - if (toolButtonClick('#tool_fhpath')) { - svgCanvas.setMode('fhpath'); - } - }; - - var clickLine = function() { - if (toolButtonClick('#tool_line')) { - svgCanvas.setMode('line'); - } - }; - - var clickSquare = function(){ - svgCanvas.setMode('square'); - }; - - var clickRect = function(){ - svgCanvas.setMode('rect'); - }; - - var clickFHRect = function(){ - svgCanvas.setMode('fhrect'); - }; - - var clickCircle = function(){ - svgCanvas.setMode('circle'); - }; - - var clickEllipse = function(){ - svgCanvas.setMode('ellipse'); - }; - - var clickFHEllipse = function(){ - svgCanvas.setMode('fhellipse'); - }; - - var clickImage = function(){ - if (toolButtonClick('#tool_image')) { - svgCanvas.setMode('image'); - } - }; - - var clickZoom = function(){ - if (toolButtonClick('#tool_zoom')) { - workarea.css('cursor','crosshair'); - svgCanvas.setMode('zoom'); - } - }; - - var dblclickZoom = function(){ - if (toolButtonClick('#tool_zoom')) { - zoomImage(); - setSelectMode(); - } - }; - - var clickText = function(){ - toolButtonClick('#tool_text'); - svgCanvas.setMode('text'); - }; - - var clickPath = function(){ - toolButtonClick('#tool_path'); - svgCanvas.setMode('path'); - }; - - // Delete is a contextual tool that only appears in the ribbon if - // an element has been selected - var deleteSelected = function() { - if (selectedElement != null || multiselected) { - svgCanvas.deleteSelectedElements(); - } - }; - - var moveToTopSelected = function() { - if (selectedElement != null) { - svgCanvas.moveToTopSelectedElement(); - } - }; - - var moveToBottomSelected = function() { - if (selectedElement != null) { - svgCanvas.moveToBottomSelectedElement(); - } - }; - - var convertToPath = function() { - if (selectedElement != null) { - svgCanvas.convertToPath(); - } - } - - var reorientPath = function() { - if (selectedElement != null) { - path.reorient(); - } - } - - var moveSelected = function(dx,dy) { - if (selectedElement != null || multiselected) { - svgCanvas.moveSelectedElements(dx,dy); - } - }; - - var linkControlPoints = function() { - var linked = !$('#tool_node_link').hasClass('push_button_pressed'); - if (linked) - $('#tool_node_link').addClass('push_button_pressed').removeClass('tool_button'); - else - $('#tool_node_link').removeClass('push_button_pressed').addClass('tool_button'); - - path.linkControlPoints(linked); - } - - var clonePathNode = function() { - if (path.getNodePoint()) { - path.clonePathNode(); - } - }; - - var deletePathNode = function() { - if (path.getNodePoint()) { - path.deletePathNode(); - } - }; - - var addSubPath = function() { - var button = $('#tool_add_subpath'); - var sp = !button.hasClass('push_button_pressed'); - if (sp) { - button.addClass('push_button_pressed').removeClass('tool_button'); - } else { - button.removeClass('push_button_pressed').addClass('tool_button'); - } - - path.addSubPath(sp); - - }; - - var opencloseSubPath = function() { - path.opencloseSubPath(); - } - - var selectNext = function() { - svgCanvas.cycleElement(1); - }; - - var selectPrev = function() { - svgCanvas.cycleElement(0); - }; - - var rotateSelected = function(cw) { - if (selectedElement == null || multiselected) return; - var step = 5; - if(!cw) step *= -1; - var new_angle = $('#angle').val()*1 + step; - svgCanvas.setRotationAngle(new_angle); - updateContextPanel(); - }; - - var clickClear = function(){ - var dims = curConfig.dimensions; - $.confirm(uiStrings.QwantToClear, function(ok) { - if(!ok) return; - setSelectMode(); - svgCanvas.clear(); - svgCanvas.setResolution(dims[0], dims[1]); - updateCanvas(true); - zoomImage(); - populateLayers(); - updateContextPanel(); - }); - }; - - var clickBold = function(){ - svgCanvas.setBold( !svgCanvas.getBold() ); - updateContextPanel(); - }; - - var clickItalic = function(){ - svgCanvas.setItalic( !svgCanvas.getItalic() ); - updateContextPanel(); - }; - - var clickSave = function(){ - // In the future, more options can be provided here - var saveOpts = { - 'images': curPrefs.img_save, - 'round_digits': 6 - } - svgCanvas.save(saveOpts); - }; - - var clickExport = function() { - // Open placeholder window (prevents popup) - if(!customHandlers.pngsave) { - var str = uiStrings.loadingImage; - exportWindow = window.open("data:text/html;charset=utf-8,<title>" + str + "<\/title><h1>" + str + "<\/h1>"); - } - - if(window.canvg) { - svgCanvas.rasterExport(); - } else { - $.getScript('canvg/rgbcolor.js', function() { - $.getScript('canvg/canvg.js', function() { - svgCanvas.rasterExport(); - }); - }); - } - } - - // by default, svgCanvas.open() is a no-op. - // it is up to an extension mechanism (opera widget, etc) - // to call setCustomHandlers() which will make it do something - var clickOpen = function(){ - svgCanvas.open(); - }; - var clickImport = function(){ - }; - - var clickUndo = function(){ - if (undoMgr.getUndoStackSize() > 0) { - undoMgr.undo(); - populateLayers(); - } - }; - - var clickRedo = function(){ - if (undoMgr.getRedoStackSize() > 0) { - undoMgr.redo(); - populateLayers(); - } - }; - - var clickGroup = function(){ - // group - if (multiselected) { - svgCanvas.groupSelectedElements(); - } - // ungroup - else if(selectedElement && selectedElement.tagName == 'g'){ - svgCanvas.ungroupSelectedElement(); - } - }; - - var clickClone = function(){ - svgCanvas.cloneSelectedElements(); - }; - - var clickAlign = function() { - var letter = this.id.replace('tool_align','').charAt(0); - svgCanvas.alignSelectedElements(letter, $('#align_relative_to').val()); - }; - - var zoomImage = function(multiplier) { - var res = svgCanvas.getResolution(); - multiplier = multiplier?res.zoom * multiplier:1; - // setResolution(res.w * multiplier, res.h * multiplier, true); - $('#zoom').val(multiplier * 100); - svgCanvas.setZoom(multiplier); - zoomDone(); - updateCanvas(true); - }; - - var zoomDone = function() { - // updateBgImage(); - updateWireFrame(); - //updateCanvas(); // necessary? - } - - var clickWireframe = function() { - var wf = !$('#tool_wireframe').hasClass('push_button_pressed'); - if (wf) - $('#tool_wireframe').addClass('push_button_pressed').removeClass('tool_button'); - else - $('#tool_wireframe').removeClass('push_button_pressed').addClass('tool_button'); - workarea.toggleClass('wireframe'); - - if(supportsNonSS) return; - var wf_rules = $('#wireframe_rules'); - if(!wf_rules.length) { - wf_rules = $('<style id="wireframe_rules"><\/style>').appendTo('head'); - } else { - wf_rules.empty(); - } - - updateWireFrame(); - } - - var updateWireFrame = function() { - // Test support - if(supportsNonSS) return; - - var rule = "#workarea.wireframe #svgcontent * { stroke-width: " + 1/svgCanvas.getZoom() + "px; }"; - $('#wireframe_rules').text(workarea.hasClass('wireframe') ? rule : ""); - } - - var showSourceEditor = function(){ - if (editingsource) return; - editingsource = true; - var str = svgCanvas.getSvgString(); - $('#svg_source_textarea').val(str); - $('#svg_source_editor').fadeIn(); - properlySourceSizeTextArea(); - $('#svg_source_textarea').focus(); - }; - - $('#svg_docprops_container').draggable({cancel:'button,fieldset'}); - - var showDocProperties = function(){ - if (docprops) return; - docprops = true; - - // This selects the correct radio button by using the array notation - $('#image_save_opts input').val([curPrefs.img_save]); - - // update resolution option with actual resolution - var res = svgCanvas.getResolution(); - $('#canvas_width').val(res.w); - $('#canvas_height').val(res.h); - $('#canvas_title').val(svgCanvas.getDocumentTitle()); - - // Update background color with current one - var blocks = $('#bg_blocks div'); - var cur_bg = 'cur_background'; - var canvas_bg = $.pref('bkgd_color'); - var url = $.pref('bkgd_url'); - // if(url) url = url[1]; - blocks.each(function() { - var blk = $(this); - var is_bg = blk.css('background-color') == canvas_bg; - blk.toggleClass(cur_bg, is_bg); - if(is_bg) $('#canvas_bg_url').removeClass(cur_bg); - }); - if(!canvas_bg) blocks.eq(0).addClass(cur_bg); - if(url) { - $('#canvas_bg_url').val(url); - } - - $('#svg_docprops').fadeIn(); - }; - - var properlySourceSizeTextArea = function(){ - // TODO: remove magic numbers here and get values from CSS - var height = $('#svg_source_container').height() - 80; - $('#svg_source_textarea').css('height', height); - }; - - var saveSourceEditor = function(){ - if (!editingsource) return; - - var saveChanges = function() { - svgCanvas.clearSelection(); - hideSourceEditor(); - zoomImage(); - populateLayers(); - setTitle(svgCanvas.getDocumentTitle()); - } - - if (!svgCanvas.setSvgString($('#svg_source_textarea').val())) { - $.confirm(uiStrings.QerrorsRevertToSource, function(ok) { - if(!ok) return false; - saveChanges(); - }); - } else { - saveChanges(); - } - setSelectMode(); - }; - - var setTitle = function(title) { - var editor_title = $('title:first').text().split(':')[0]; - var new_title = editor_title + (title?': ' + title:''); - $('title:first').text(new_title); - } - - var saveDocProperties = function(){ - // set title - var new_title = $('#canvas_title').val(); - setTitle(new_title); - svgCanvas.setDocumentTitle(new_title); - - // update resolution - var width = $('#canvas_width'), w = width.val(); - var height = $('#canvas_height'), h = height.val(); - - if(w != "fit" && !svgCanvas.isValidUnit('width', w)) { - $.alert(uiStrings.invalidAttrValGiven); - width.parent().addClass('error'); - return false; - } - - width.parent().removeClass('error'); - - if(h != "fit" && !svgCanvas.isValidUnit('height', h)) { - $.alert(uiStrings.invalidAttrValGiven); - height.parent().addClass('error'); - return false; - } - - height.parent().removeClass('error'); - - if(!svgCanvas.setResolution(w, h)) { - $.alert(uiStrings.noContentToFitTo); - return false; - } - - // set image save option - curPrefs.img_save = $('#image_save_opts :checked').val(); - $.pref('img_save',curPrefs.img_save); - - // set background - var color = $('#bg_blocks div.cur_background').css('background-color') || '#FFF'; - setBackground(color, $('#canvas_bg_url').val()); - - // set language - var lang = $('#lang_select').val(); - if(lang != curPrefs.lang) { - Editor.putLocale(lang); - } - - // set icon size - setIconSize($('#iconsize').val()); - - updateCanvas(); - hideDocProperties(); - }; - - function setBackground(color, url) { -// if(color == curPrefs.bkgd_color && url == curPrefs.bkgd_url) return; - $.pref('bkgd_color', color); - $.pref('bkgd_url', url); - - // This should be done in svgcanvas.js for the borderRect fill - svgCanvas.setBackground(color, url); - } - - var setIcon = Editor.setIcon = function(elem, icon_id, forcedSize) { - var icon = (typeof icon_id == 'string') ? $.getSvgIcon(icon_id).clone() : icon_id.clone(); - $(elem).empty().append(icon); - if(forcedSize) { - var obj = {}; - obj[elem + ' .svg_icon'] = forcedSize; - $.resizeSvgIcons(obj); - } else { - var size = curPrefs.iconsize; - if(size && size !== 'm') { - var icon_sizes = { s:16, m:24, l:32, xl:48}, obj = {}; - obj[elem + ' .svg_icon'] = icon_sizes[size]; - $.resizeSvgIcons(obj); - } - } - } - - var setIconSize = Editor.setIconSize = function(size, force) { - if(size == curPrefs.size && !force) return; - $.pref('iconsize', size); - $('#iconsize').val(size); - var icon_sizes = { s:16, m:24, l:32, xl:48 }; - var size_num = icon_sizes[size]; - - // Change icon size - $('.tool_button, .push_button, .tool_button_current, .disabled, .icon_label, #url_notice, #tool_open') - .find('> svg, > img').each(function() { - this.setAttribute('width',size_num); - this.setAttribute('height',size_num); - }); - - $.resizeSvgIcons({ - '.flyout_arrow_horiz > svg, .flyout_arrow_horiz > img': size_num / 5, - '#logo > svg, #logo > img': size_num * 1.3, - '#tools_bottom .icon_label > *': (size_num === 16 ? 18 : size_num * .75) - }); - if(size != 's') { - $.resizeSvgIcons({'#layerbuttons svg, #layerbuttons img': size_num * .6}); - } - - // Note that all rules will be prefixed with '#svg_editor' when parsed - var cssResizeRules = { - ".tool_button,\ - .push_button,\ - .tool_button_current,\ - .push_button_pressed,\ - .disabled,\ - .icon_label,\ - .tools_flyout .tool_button": { - 'width': {s: '16px', l: '32px', xl: '48px'}, - 'height': {s: '16px', l: '32px', xl: '48px'}, - 'padding': {s: '1px', l: '2px', xl: '3px'} - }, - ".tool_sep": { - 'height': {s: '16px', l: '32px', xl: '48px'}, - 'margin': {s: '2px 2px', l: '2px 5px', xl: '2px 8px'} - }, - "#main_icon": { - 'width': {s: '31px', l: '53px', xl: '75px'}, - 'height': {s: '22px', l: '42px', xl: '64px'} - }, - "#tools_top": { - 'left': {s: '36px', l: '60px', xl: '80px'}, - 'height': {s: '50px', l: '88px', xl: '125px'} - }, - "#tools_left": { - 'width': {s: '22px', l: '30px', xl: '38px'}, - 'top': {s: '50px', l: '87px', xl: '125px'} - }, - "div#workarea": { - 'left': {s: '27px', l: '46px', xl: '65px'}, - 'top': {s: '50px', l: '88px', xl: '125px'}, - 'bottom': {s: '55px', l: '98px', xl: '145px'} - }, - "#tools_bottom": { - 'left': {s: '27px', l: '46px', xl: '65px'}, - 'height': {s: '58px', l: '98px', xl: '145px'} - }, - "#color_tools": { - 'border-spacing': {s: '0 1px'}, - 'margin-top': {s: '-1px'} - }, - "#color_tools .icon_label": { - 'width': {l:'43px', xl: '60px'} - }, - ".color_tool": { - 'height': {s: '20px'} - }, - "#tool_opacity": { - 'top': {s: '1px'}, - 'height': {s: 'auto', l:'auto', xl:'auto'} - }, - "#tools_top input, #tools_bottom input": { - 'margin-top': {s: '2px', l: '4px', xl: '5px'}, - 'height': {s: 'auto', l: 'auto', xl: 'auto'}, - 'border': {s: '1px solid #555', l: 'auto', xl: 'auto'}, - 'font-size': {s: '.9em', l: '1.2em', xl: '1.4em'} - }, - "#zoom_panel": { - 'margin-top': {s: '3px', l: '4px', xl: '5px'} - }, - "#copyright, #tools_bottom .label": { - 'font-size': {l: '1.5em', xl: '2em'}, - 'line-height': {s: '15px'} - }, - "#tools_bottom_2": { - 'width': {l: '295px', xl: '355px'}, - 'top': {s: '4px'} - }, - "#tools_top > div, #tools_top": { - 'line-height': {s: '17px', l: '34px', xl: '50px'} - }, - ".dropdown button": { - 'height': {s: '18px', l: '34px', xl: '40px'}, - 'line-height': {s: '18px', l: '34px', xl: '40px'}, - 'margin-top': {s: '3px'} - }, - "#tools_top label, #tools_bottom label": { - 'font-size': {s: '1em', l: '1.5em', xl: '2em'}, - 'height': {s: '25px', l: '42px', xl: '64px'} - }, - "div.toolset": { - 'height': {s: '25px', l: '42px', xl: '64px'} - }, - "#tool_bold, #tool_italic": { - 'font-size': {s: '1.5em', l: '3em', xl: '4.5em'} - }, - "#sidepanels": { - 'top': {s: '50px', l: '88px', xl: '125px'}, - 'bottom': {s: '51px', l: '68px', xl: '65px'} - }, - '#layerbuttons': { - 'width': {l: '130px', xl: '175px'}, - 'height': {l: '24px', xl: '30px'} - }, - '#layerlist': { - 'width': {l: '128px', xl: '150px'} - }, - '.layer_button': { - 'width': {l: '19px', xl: '28px'}, - 'height': {l: '19px', xl: '28px'} - }, - "input.spin-button": { - 'background-image': {l: "url('images/spinbtn_updn_big.png')", xl: "url('images/spinbtn_updn_big.png')"}, - 'background-position': {l: '100% -5px', xl: '100% -2px'}, - 'padding-right': {l: '24px', xl: '24px' } - }, - "input.spin-button.up": { - 'background-position': {l: '100% -45px', xl: '100% -42px'} - }, - "input.spin-button.down": { - 'background-position': {l: '100% -85px', xl: '100% -82px'} - }, - "#position_opts": { - 'width': {all: (size_num*4) +'px'} - } - }; - - var rule_elem = $('#tool_size_rules'); - if(!rule_elem.length) { - rule_elem = $('<style id="tool_size_rules"><\/style>').appendTo('head'); - } else { - rule_elem.empty(); - } - - if(size != 'm') { - var style_str = ''; - $.each(cssResizeRules, function(selector, rules) { - selector = '#svg_editor ' + selector.replace(/,/g,', #svg_editor'); - style_str += selector + '{'; - $.each(rules, function(prop, values) { - if(values[size] || values.all) { - style_str += (prop + ':' + (values[size] || values.all) + ';'); - } - }); - style_str += '}'; - }); - rule_elem.text(style_str); - } - - setFlyoutPositions(); - } - - var cancelOverlays = function() { - $('#dialog_box').hide(); - if (!editingsource && !docprops) return; - - if (editingsource) { - var oldString = svgCanvas.getSvgString(); - if (oldString != $('#svg_source_textarea').val()) { - $.confirm(uiStrings.QignoreSourceChanges, function(ok) { - if(ok) hideSourceEditor(); - }); - } else { - hideSourceEditor(); - } - } - else if (docprops) { - hideDocProperties(); - } - - }; - - var hideSourceEditor = function(){ - $('#svg_source_editor').hide(); - editingsource = false; - $('#svg_source_textarea').blur(); - }; - - var hideDocProperties = function(){ - $('#svg_docprops').hide(); - $('#canvas_width,#canvas_height').removeAttr('disabled'); - $('#resolution')[0].selectedIndex = 0; - $('#image_save_opts input').val([curPrefs.img_save]); - docprops = false; - }; - - var win_wh = {width:$(window).width(), height:$(window).height()}; - - $(window).resize(function(evt) { - if (editingsource) { - properlySourceSizeTextArea(); - } - - $.each(win_wh, function(type, val) { - var curval = $(window)[type](); - workarea[0]['scroll' + (type==='width'?'Left':'Top')] -= (curval - val)/2; - win_wh[type] = curval; - }); - }); - - $('#url_notice').click(function() { - $.alert(this.title); - }); - - $('#change_image_url').click(promptImgURL); - - function promptImgURL() { - $.prompt(uiStrings.enterNewImgURL, default_img_url, function(url) { - if(url) setImageURL(url); - }); - } - - function setImageURL(url) { - if(!url) url = default_img_url; - - svgCanvas.setImageURL(url); - $('#image_url').val(url); - - if(url.indexOf('data:') === 0) { - // data URI found - $('#image_url').hide(); - $('#change_image_url').show(); - } else { - // regular URL - - svgCanvas.embedImage(url, function(datauri) { - if(!datauri) { - // Couldn't embed, so show warning - $('#url_notice').show(); - } else { - $('#url_notice').hide(); - } - default_img_url = url; - }); - $('#image_url').show(); - $('#change_image_url').hide(); - } - } - - // added these event handlers for all the push buttons so they - // behave more like buttons being pressed-in and not images - (function() { - var toolnames = ['clear','open','save','source','delete','delete_multi','paste','clone','clone_multi','move_top','move_bottom']; - var all_tools = ''; - var cur_class = 'tool_button_current'; - - $.each(toolnames, function(i,item) { - all_tools += '#tool_' + item + (i==toolnames.length-1?',':''); - }); - - $(all_tools).mousedown(function() { - $(this).addClass(cur_class); - }).bind('mousedown mouseout', function() { - $(this).removeClass(cur_class); - }); - - $('#tool_undo, #tool_redo').mousedown(function(){ - if (!$(this).hasClass('disabled')) $(this).addClass(cur_class); - }).bind('mousedown mouseout',function(){ - $(this).removeClass(cur_class);} - ); - }()); - - // switch modifier key in tooltips if mac - // NOTE: This code is not used yet until I can figure out how to successfully bind ctrl/meta - // in Opera and Chrome - if (isMac) { - var shortcutButtons = ["tool_clear", "tool_save", "tool_source", "tool_undo", "tool_redo", "tool_clone"]; - var i = shortcutButtons.length; - while (i--) { - var button = document.getElementById(shortcutButtons[i]); - var title = button.title; - var index = title.indexOf("Ctrl+"); - button.title = [title.substr(0,index), "Cmd+", title.substr(index+5)].join(''); - } - } - - // TODO: go back to the color boxes having white background-color and then setting - // background-image to none.png (otherwise partially transparent gradients look weird) - var colorPicker = function(elem) { - var picker = elem.attr('id') == 'stroke_color' ? 'stroke' : 'fill'; -// var opacity = (picker == 'stroke' ? $('#stroke_opacity') : $('#fill_opacity')); - var paint = (picker == 'stroke' ? strokePaint : fillPaint); - var title = (picker == 'stroke' ? 'Pick a Stroke Paint and Opacity' : 'Pick a Fill Paint and Opacity'); - var was_none = false; - var pos = elem.position(); - $("#color_picker") - .draggable({cancel:'.jPicker_table,.jGraduate_lgPick,.jGraduate_rgPick'}) - .css({'left': pos.left, 'bottom': 50 - pos.top}) - .jGraduate( - { - paint: paint, - window: { pickerTitle: title }, - images: { clientPath: "jgraduate/images/" } - }, - function(p) { - paint = new $.jGraduate.Paint(p); - - var oldgrad = document.getElementById("gradbox_"+picker); - var svgbox = oldgrad.parentNode; - var rectbox = svgbox.firstChild; - if (paint.type == "linearGradient" || paint.type == "radialGradient") { - svgbox.removeChild(oldgrad); - var newgrad = svgbox.appendChild(document.importNode(paint[paint.type], true)); - newgrad.id = "gradbox_"+picker; - rectbox.setAttribute("fill", "url(#gradbox_" + picker + ")"); - rectbox.setAttribute("opacity", paint.alpha/100); - } - else { - rectbox.setAttribute("fill", paint.solidColor != "none" ? "#" + paint.solidColor : "none"); - rectbox.setAttribute("opacity", paint.alpha/100); - } - - if (picker == 'stroke') { - svgCanvas.setPaint('stroke', paint); - strokePaint = paint; - } - else { - svgCanvas.setPaint('fill', paint); - fillPaint = paint; - } - updateToolbar(); - $('#color_picker').hide(); - }, - function(p) { - $('#color_picker').hide(); - }); - }; - - var updateToolButtonState = function() { - var bNoFill = (svgCanvas.getColor('fill') == 'none'); - var bNoStroke = (svgCanvas.getColor('stroke') == 'none'); - var buttonsNeedingStroke = [ '#tool_fhpath', '#tool_line' ]; - var buttonsNeedingFillAndStroke = [ '#tools_rect .tool_button', '#tools_ellipse .tool_button', '#tool_text', '#tool_path']; - if (bNoStroke) { - for (index in buttonsNeedingStroke) { - var button = buttonsNeedingStroke[index]; - if ($(button).hasClass('tool_button_current')) { - clickSelect(); - } - $(button).addClass('disabled'); - } - } - else { - for (index in buttonsNeedingStroke) { - var button = buttonsNeedingStroke[index]; - $(button).removeClass('disabled'); - } - } - - if (bNoStroke && bNoFill) { - for (index in buttonsNeedingFillAndStroke) { - var button = buttonsNeedingFillAndStroke[index]; - if ($(button).hasClass('tool_button_current')) { - clickSelect(); - } - $(button).addClass('disabled'); - } - } - else { - for (index in buttonsNeedingFillAndStroke) { - var button = buttonsNeedingFillAndStroke[index]; - $(button).removeClass('disabled'); - } - } - - svgCanvas.runExtensions("toolButtonStateUpdate", { - nofill: bNoFill, - nostroke: bNoStroke - }); - - // Disable flyouts if all inside are disabled - $('.tools_flyout').each(function() { - var shower = $('#' + this.id + '_show'); - var has_enabled = false; - $(this).children().each(function() { - if(!$(this).hasClass('disabled')) { - has_enabled = true; - } - }); - shower.toggleClass('disabled', !has_enabled); - }); - - operaRepaint(); - }; - - // set up gradients to be used for the buttons - var svgdocbox = new DOMParser().parseFromString( - '<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\ - fill="#' + curConfig.initFill.color + '" opacity="' + curConfig.initFill.opacity + '"/>\ - <linearGradient id="gradbox_">\ - <stop stop-color="#000" offset="0.0"/>\ - <stop stop-color="#FF0000" offset="1.0"/>\ - </linearGradient></svg>', 'text/xml'); - - var boxgrad = svgdocbox.getElementById('gradbox_'); - boxgrad.id = 'gradbox_fill'; - svgdocbox.documentElement.setAttribute('width',16.5); - $('#fill_color').append( document.importNode(svgdocbox.documentElement,true) ); - - boxgrad.id = 'gradbox_stroke'; - svgdocbox.documentElement.setAttribute('width',16.5); - $('#stroke_color').append( document.importNode(svgdocbox.documentElement,true) ); - $('#stroke_color rect').attr({ - 'fill': '#' + curConfig.initStroke.color, - 'opacity': curConfig.initStroke.opacity - }); - - $('#stroke_width').val(curConfig.initStroke.width); - $('#group_opacity').val(curConfig.initOpacity * 100); - - // Use this SVG elem to test vectorEffect support - var test_el = svgdocbox.documentElement.firstChild; - test_el.setAttribute('style','vector-effect:non-scaling-stroke'); - var supportsNonSS = (test_el.style.vectorEffect == 'non-scaling-stroke'); - test_el.removeAttribute('style'); - - // Use this to test support for blur element. Seems to work to test support in Webkit - var blur_test = svgdocbox.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur'); - if(typeof blur_test.stdDeviationX === "undefined") { - $('#tool_blur').hide(); - } - $(blur_test).remove(); - - // Test for embedImage support (use timeout to not interfere with page load) - setTimeout(function() { - svgCanvas.embedImage('images/logo.png', function(datauri) { - if(!datauri) { - // Disable option - $('#image_save_opts [value=embed]').attr('disabled','disabled'); - $('#image_save_opts input').val(['ref']); - curPrefs.img_save = 'ref'; - $('#image_opt_embed').css('color','#666').attr('title',uiStrings.featNotSupported); - } - }); - },1000); - - $('#fill_color, #tool_fill .icon_label').click(function(){ - colorPicker($('#fill_color')); - updateToolButtonState(); - }); - - $('#stroke_color, #tool_stroke .icon_label').click(function(){ - colorPicker($('#stroke_color')); - updateToolButtonState(); - }); - - $('#group_opacityLabel').click(function() { - $('#opacity_dropdown button').mousedown(); - $(window).mouseup(); - }); - - $('#zoomLabel').click(function() { - $('#zoom_dropdown button').mousedown(); - $(window).mouseup(); - }); - - $('#tool_move_top').mousedown(function(evt){ - $('#tools_stacking').show(); - evt.preventDefault(); - }); - - $('.layer_button').mousedown(function() { - $(this).addClass('layer_buttonpressed'); - }).mouseout(function() { - $(this).removeClass('layer_buttonpressed'); - }).mouseup(function() { - $(this).removeClass('layer_buttonpressed'); - }); - - $('.push_button').mousedown(function() { - if (!$(this).hasClass('disabled')) { - $(this).addClass('push_button_pressed').removeClass('push_button'); - } - }).mouseout(function() { - $(this).removeClass('push_button_pressed').addClass('push_button'); - }).mouseup(function() { - $(this).removeClass('push_button_pressed').addClass('push_button'); - }); - - $('#layer_new').click(function() { - var curNames = new Array(svgCanvas.getNumLayers()); - for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); } - - var j = (curNames.length+1); - var uniqName = uiStrings.layer + " " + j; - while ($.inArray(uniqName, curNames) != -1) { - j++; - uniqName = uiStrings.layer + " " + j; - } - $.prompt(uiStrings.enterUniqueLayerName,uniqName, function(newName) { - if (!newName) return; - if ($.inArray(newName, curNames) != -1) { - $.alert(uiStrings.dupeLayerName); - return; - } - svgCanvas.createLayer(newName); - updateContextPanel(); - populateLayers(); - $('#layerlist tr.layer').removeClass("layersel"); - $('#layerlist tr.layer:first').addClass("layersel"); - }); - }); - - $('#layer_delete').click(function() { - if (svgCanvas.deleteCurrentLayer()) { - updateContextPanel(); - populateLayers(); - // This matches what SvgCanvas does - // TODO: make this behavior less brittle (svg-editor should get which - // layer is selected from the canvas and then select that one in the UI) - $('#layerlist tr.layer').removeClass("layersel"); - $('#layerlist tr.layer:first').addClass("layersel"); - } - }); - - $('#layer_up').click(function() { - // find index position of selected option - var curIndex = $('#layerlist tr.layersel').prevAll().length; - if (curIndex > 0) { - var total = $('#layerlist tr.layer').length; - curIndex--; - svgCanvas.setCurrentLayerPosition(total-curIndex-1); - populateLayers(); - $('#layerlist tr.layer').removeClass("layersel"); - $('#layerlist tr.layer:eq('+curIndex+')').addClass("layersel"); - } - }); - - $('#layer_down').click(function() { - // find index position of selected option - var curIndex = $('#layerlist tr.layersel').prevAll().length; - var total = $('#layerlist tr.layer').length; - if (curIndex < total-1) { - curIndex++; - svgCanvas.setCurrentLayerPosition(total-curIndex-1); - populateLayers(); - $('#layerlist tr.layer').removeClass("layersel"); - $('#layerlist tr.layer:eq('+curIndex+')').addClass("layersel"); - } - }); - - $('#layer_rename').click(function() { - var curIndex = $('#layerlist tr.layersel').prevAll().length; - var oldName = $('#layerlist tr.layersel td.layername').text(); - $.prompt(uiStrings.enterNewLayerName,"", function(newName) { - if (!newName) return; - if (oldName == newName) { - $.alert(uiStrings.layerHasThatName); - return; - } - - var curNames = new Array(svgCanvas.getNumLayers()); - for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); } - if ($.inArray(newName, curNames) != -1) { - $.alert(uiStrings.layerHasThatName); - return; - } - - svgCanvas.renameCurrentLayer(newName); - populateLayers(); - $('#layerlist tr.layer').removeClass("layersel"); - $('#layerlist tr.layer:eq('+curIndex+')').addClass("layersel"); - }); - }); - - var SIDEPANEL_MAXWIDTH = 300; - var SIDEPANEL_OPENWIDTH = 150; - var sidedrag = -1, sidedragging = false, allowmove = false; - - var resizePanel = function(evt) { - if (!allowmove) return; - if (sidedrag == -1) return; - sidedragging = true; - var deltax = sidedrag - evt.pageX; - - var sidepanels = $('#sidepanels'); - var sidewidth = parseInt(sidepanels.css('width')); - if (sidewidth+deltax > SIDEPANEL_MAXWIDTH) { - deltax = SIDEPANEL_MAXWIDTH - sidewidth; - sidewidth = SIDEPANEL_MAXWIDTH; - } - else if (sidewidth+deltax < 2) { - deltax = 2 - sidewidth; - sidewidth = 2; - } - - if (deltax == 0) return; - sidedrag -= deltax; - - var layerpanel = $('#layerpanel'); - workarea.css('right', parseInt(workarea.css('right'))+deltax); - sidepanels.css('width', parseInt(sidepanels.css('width'))+deltax); - layerpanel.css('width', parseInt(layerpanel.css('width'))+deltax); - } - - $('#sidepanel_handle') - .mousedown(function(evt) { - sidedrag = evt.pageX; - $(window).mousemove(resizePanel); - allowmove = false; - // Silly hack for Chrome, which always runs mousemove right after mousedown - setTimeout(function() { - allowmove = true; - }, 20); - }) - .mouseup(function(evt) { - if (!sidedragging) toggleSidePanel(); - sidedrag = -1; - sidedragging = false; - }); - - $(window).mouseup(function() { - sidedrag = -1; - sidedragging = false; - $('#svg_editor').unbind('mousemove', resizePanel); - }); - - // if width is non-zero, then fully close it, otherwise fully open it - // the optional close argument forces the side panel closed - var toggleSidePanel = function(close){ - var w = parseInt($('#sidepanels').css('width')); - var deltax = (w > 2 || close ? 2 : SIDEPANEL_OPENWIDTH) - w; - var sidepanels = $('#sidepanels'); - var layerpanel = $('#layerpanel'); - workarea.css('right', parseInt(workarea.css('right'))+deltax); - sidepanels.css('width', parseInt(sidepanels.css('width'))+deltax); - layerpanel.css('width', parseInt(layerpanel.css('width'))+deltax); - }; - - // this function highlights the layer passed in (by fading out the other layers) - // if no layer is passed in, this function restores the other layers - var toggleHighlightLayer = function(layerNameToHighlight) { - var curNames = new Array(svgCanvas.getNumLayers()); - for (var i = 0; i < curNames.length; ++i) { curNames[i] = svgCanvas.getLayer(i); } - - if (layerNameToHighlight) { - for (var i = 0; i < curNames.length; ++i) { - if (curNames[i] != layerNameToHighlight) { - svgCanvas.setLayerOpacity(curNames[i], 0.5); - } - } - } - else { - for (var i = 0; i < curNames.length; ++i) { - svgCanvas.setLayerOpacity(curNames[i], 1.0); - } - } - }; - - var populateLayers = function(){ - var layerlist = $('#layerlist tbody'); - var selLayerNames = $('#selLayerNames'); - layerlist.empty(); - selLayerNames.empty(); - var currentlayer = svgCanvas.getCurrentLayer(); - var layer = svgCanvas.getNumLayers(); - var icon = $.getSvgIcon('eye'); - // we get the layers in the reverse z-order (the layer rendered on top is listed first) - while (layer--) { - var name = svgCanvas.getLayer(layer); - // contenteditable=\"true\" - var appendstr = "<tr class=\"layer"; - if (name == currentlayer) { - appendstr += " layersel" - } - appendstr += "\">"; - - if (svgCanvas.getLayerVisibility(name)) { - appendstr += "<td class=\"layervis\"/><td class=\"layername\" >" + name + "</td></tr>"; - } - else { - appendstr += "<td class=\"layervis layerinvis\"/><td class=\"layername\" >" + name + "</td></tr>"; - } - layerlist.append(appendstr); - selLayerNames.append("<option value=\"" + name + "\">" + name + "</option>"); - } - if(icon !== undefined) { - var copy = icon.clone(); - $('td.layervis',layerlist).append(icon.clone()); - $.resizeSvgIcons({'td.layervis .svg_icon':14}); - } - // handle selection of layer - $('#layerlist td.layername') - .click(function(evt){ - $('#layerlist tr.layer').removeClass("layersel"); - var row = $(this.parentNode); - row.addClass("layersel"); - svgCanvas.setCurrentLayer(this.textContent); - evt.preventDefault(); - }) - .mouseover(function(evt){ - $(this).css({"font-style": "italic", "color":"blue"}); - toggleHighlightLayer(this.textContent); - }) - .mouseout(function(evt){ - $(this).css({"font-style": "normal", "color":"black"}); - toggleHighlightLayer(); - }); - $('#layerlist td.layervis').click(function(evt){ - var row = $(this.parentNode).prevAll().length; - var name = $('#layerlist tr.layer:eq(' + row + ') td.layername').text(); - var vis = $(this).hasClass('layerinvis'); - svgCanvas.setLayerVisibility(name, vis); - if (vis) { - $(this).removeClass('layerinvis'); - } - else { - $(this).addClass('layerinvis'); - } - }); - - // if there were too few rows, let's add a few to make it not so lonely - var num = 5 - $('#layerlist tr.layer').size(); - while (num-- > 0) { - // FIXME: there must a better way to do this - layerlist.append("<tr><td style=\"color:white\">_</td><td/></tr>"); - } - }; - populateLayers(); - - // function changeResolution(x,y) { - // var zoom = svgCanvas.getResolution().zoom; - // setResolution(x * zoom, y * zoom); - // } - - var centerCanvas = function() { - // this centers the canvas vertically in the workarea (horizontal handled in CSS) - workarea.css('line-height', workarea.height() + 'px'); - }; - - $(window).bind('load resize', centerCanvas); - - function stepFontSize(elem, step) { - var orig_val = elem.value-0; - var sug_val = orig_val + step; - var increasing = sug_val >= orig_val; - if(step === 0) return orig_val; - - if(orig_val >= 24) { - if(increasing) { - return Math.round(orig_val * 1.1); - } else { - return Math.round(orig_val / 1.1); - } - } else if(orig_val <= 1) { - if(increasing) { - return orig_val * 2; - } else { - return orig_val / 2; - } - } else { - return sug_val; - } - } - - function stepZoom(elem, step) { - var orig_val = elem.value-0; - if(orig_val === 0) return 100; - var sug_val = orig_val + step; - if(step === 0) return orig_val; - - if(orig_val >= 100) { - return sug_val; - } else { - if(sug_val >= orig_val) { - return orig_val * 2; - } else { - return orig_val / 2; - } - } - } - - // function setResolution(w, h, center) { - // updateCanvas(); - // // w-=0; h-=0; - // // $('#svgcanvas').css( { 'width': w, 'height': h } ); - // // $('#canvas_width').val(w); - // // $('#canvas_height').val(h); - // // - // // if(center) { - // // var w_area = workarea; - // // var scroll_y = h/2 - w_area.height()/2; - // // var scroll_x = w/2 - w_area.width()/2; - // // w_area[0].scrollTop = scroll_y; - // // w_area[0].scrollLeft = scroll_x; - // // } - // } - - $('#resolution').change(function(){ - var wh = $('#canvas_width,#canvas_height'); - if(!this.selectedIndex) { - if($('#canvas_width').val() == 'fit') { - wh.removeAttr("disabled").val(100); - } - } else if(this.value == 'content') { - wh.val('fit').attr("disabled","disabled"); - } else { - var dims = this.value.split('x'); - $('#canvas_width').val(dims[0]); - $('#canvas_height').val(dims[1]); - wh.removeAttr("disabled"); - } - }); - - //Prevent browser from erroneously repopulating fields - $('input,select').attr("autocomplete","off"); - - // Associate all button actions as well as non-button keyboard shortcuts - var Actions = function() { - // sel:'selector', fn:function, evt:'event', key:[key, preventDefault, NoDisableInInput] - var tool_buttons = [ - {sel:'#tool_select', fn: clickSelect, evt: 'click', key: 1}, - {sel:'#tool_fhpath', fn: clickFHPath, evt: 'click', key: 2}, - {sel:'#tool_line', fn: clickLine, evt: 'click', key: 3}, - {sel:'#tool_rect', fn: clickRect, evt: 'mouseup', key: 4, parent: '#tools_rect', icon: 'rect'}, - {sel:'#tool_square', fn: clickSquare, evt: 'mouseup', key: 'Shift+4', parent: '#tools_rect', icon: 'square'}, - {sel:'#tool_fhrect', fn: clickFHRect, evt: 'mouseup', parent: '#tools_rect', icon: 'fh_rect'}, - {sel:'#tool_ellipse', fn: clickEllipse, evt: 'mouseup', key: 5, parent: '#tools_ellipse', icon: 'ellipse'}, - {sel:'#tool_circle', fn: clickCircle, evt: 'mouseup', key: 'Shift+5', parent: '#tools_ellipse', icon: 'circle'}, - {sel:'#tool_fhellipse', fn: clickFHEllipse, evt: 'mouseup', parent: '#tools_ellipse', icon: 'fh_ellipse'}, - {sel:'#tool_path', fn: clickPath, evt: 'click', key: 6}, - {sel:'#tool_text', fn: clickText, evt: 'click', key: 7}, - {sel:'#tool_image', fn: clickImage, evt: 'mouseup', key: 8}, - {sel:'#tool_zoom', fn: clickZoom, evt: 'mouseup', key: 9}, - {sel:'#tool_clear', fn: clickClear, evt: 'mouseup', key: [modKey+'N', true]}, - {sel:'#tool_save', fn: function() { editingsource?saveSourceEditor():clickSave()}, evt: 'mouseup', key: [modKey+'S', true]}, - {sel:'#tool_export', fn: clickExport, evt: 'mouseup'}, - {sel:'#tool_open', fn: clickOpen, evt: 'mouseup', key: [modKey+'O', true]}, - {sel:'#tool_import', fn: clickImport, evt: 'mouseup'}, - {sel:'#tool_source', fn: showSourceEditor, evt: 'click', key: ['U', true]}, - {sel:'#tool_wireframe', fn: clickWireframe, evt: 'click', key: ['F', true]}, - {sel:'#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel', fn: cancelOverlays, evt: 'click', key: ['esc', false, false], hidekey: true}, - {sel:'#tool_source_save', fn: saveSourceEditor, evt: 'click'}, - {sel:'#tool_docprops_save', fn: saveDocProperties, evt: 'click'}, - {sel:'#tool_docprops', fn: showDocProperties, evt: 'mouseup', key: ['P', true]}, - {sel:'#tool_delete,#tool_delete_multi', fn: deleteSelected, evt: 'click', key: ['del/backspace', true]}, - {sel:'#tool_reorient', fn: reorientPath, evt: 'click'}, - {sel:'#tool_node_link', fn: linkControlPoints, evt: 'click'}, - {sel:'#tool_node_clone', fn: clonePathNode, evt: 'click'}, - {sel:'#tool_node_delete', fn: deletePathNode, evt: 'click'}, - {sel:'#tool_openclose_path', fn: opencloseSubPath, evt: 'click'}, - {sel:'#tool_add_subpath', fn: addSubPath, evt: 'click'}, - {sel:'#tool_move_top', fn: moveToTopSelected, evt: 'click', key: 'shift+up'}, - {sel:'#tool_move_bottom', fn: moveToBottomSelected, evt: 'click', key: 'shift+down'}, - {sel:'#tool_topath', fn: convertToPath, evt: 'click'}, - {sel:'#tool_undo', fn: clickUndo, evt: 'click', key: [modKey+'Z', true]}, - {sel:'#tool_redo', fn: clickRedo, evt: 'click', key: [modKey+'Y', true]}, - {sel:'#tool_clone,#tool_clone_multi', fn: clickClone, evt: 'click', key: [modKey+'C', true]}, - {sel:'#tool_group', fn: clickGroup, evt: 'click', key: [modKey+'G', true]}, - {sel:'#tool_ungroup', fn: clickGroup, evt: 'click'}, - {sel:'[id^=tool_align]', fn: clickAlign, evt: 'click'}, - // these two lines are required to make Opera work properly with the flyout mechanism - // {sel:'#tools_rect_show', fn: clickRect, evt: 'click'}, - // {sel:'#tools_ellipse_show', fn: clickEllipse, evt: 'click'}, - {sel:'#tool_bold', fn: clickBold, evt: 'mousedown'}, - {sel:'#tool_italic', fn: clickItalic, evt: 'mousedown'}, - {sel:'#sidepanel_handle', fn: toggleSidePanel, key: [modKey+'X']}, - - // Shortcuts not associated with buttons - {key: 'shift+left', fn: function(){rotateSelected(0)}}, - {key: 'shift+right', fn: function(){rotateSelected(1)}}, - {key: 'shift+O', fn: selectPrev}, - {key: 'shift+P', fn: selectNext}, - {key: ['ctrl+up', true], fn: function(){zoomImage(2);}}, - {key: ['ctrl+down', true], fn: function(){zoomImage(.5);}}, - {key: ['up', true], fn: function(){moveSelected(0,-1);}}, - {key: ['down', true], fn: function(){moveSelected(0,1);}}, - {key: ['left', true], fn: function(){moveSelected(-1,0);}}, - {key: ['right', true], fn: function(){moveSelected(1,0);}}, - {key: 'A', fn: function(){svgCanvas.selectAllInCurrentLayer();}} - ]; - - // Tooltips not directly associated with a single function - var key_assocs = { - '4/Shift+4': '#tools_rect_show', - '5/Shift+5': '#tools_ellipse_show' - }; - - return { - setAll: function() { - var flyouts = {}; - - $.each(tool_buttons, function(i, opts) { - // Bind function to button - if(opts.sel) { - var btn = $(opts.sel); - if(opts.evt) { - btn[opts.evt](opts.fn); - } - - // Add to parent flyout menu - if(opts.parent) { - var f_h = $(opts.parent); - if(!f_h.length) { - f_h = makeFlyoutHolder(opts.parent.substr(1)); - } - - f_h.append(btn); - - if(!$.isArray(flyouts[opts.parent])) { - flyouts[opts.parent] = []; - } - flyouts[opts.parent].push(opts); - } - } - - - // Bind function to shortcut key - if(opts.key) { - // Set shortcut based on options - var keyval, shortcut = '', disInInp = true, fn = opts.fn, pd = false; - if($.isArray(opts.key)) { - keyval = opts.key[0]; - if(opts.key.length > 1) pd = opts.key[1]; - if(opts.key.length > 2) disInInp = opts.key[2]; - } else { - keyval = opts.key; - } - keyval += ''; - - $.each(keyval.split('/'), function(i, key) { - $(document).bind('keydown', key, function(e) { - fn(); - if(pd) { - e.preventDefault(); - } - // Prevent default on ALL keys? - return false; - }); - }); - - // Put shortcut in title - if(opts.sel && !opts.hidekey) { - var new_title = btn.attr('title').split('[')[0] + '[' + keyval + ']'; - key_assocs[keyval] = opts.sel; - // Disregard for menu items - if(!btn.parents('#main_menu').length) { - btn.attr('title', new_title); - } - } - } - }); - - // Setup flyouts - setupFlyouts(flyouts); - - - // Misc additional actions - - // Make "return" keypress trigger the change event - $('.attr_changer, #image_url').bind('keydown', 'return', - function(evt) {$(this).change();evt.preventDefault();} - ); - - $('#tool_zoom').dblclick(dblclickZoom); - }, - setTitles: function() { - $.each(key_assocs, function(keyval, sel) { - var menu = ($(sel).parents('#main_menu').length); - - $(sel).each(function() { - if(menu) { - var t = $(this).text().split(' [')[0]; - } else { - var t = this.title.split(' [')[0]; - } - var key_str = ''; - // Shift+Up - $.each(keyval.split('/'), function(i, key) { - var mod_bits = key.split('+'), mod = ''; - if(mod_bits.length > 1) { - mod = mod_bits[0] + '+'; - key = mod_bits[1]; - } - key_str += (i?'/':'') + mod + (uiStrings['key_'+key] || key); - }); - if(menu) { - this.lastChild.textContent = t +' ['+key_str+']'; - } else { - this.title = t +' ['+key_str+']'; - } - }); - }); - }, - getButtonData: function(sel) { - var b; - $.each(tool_buttons, function(i, btn) { - if(btn.sel === sel) b = btn; - }); - return b; - } - }; - }(); - - Actions.setAll(); - - // Select given tool - Editor.ready(function() { - var itool = curConfig.initTool, - container = $("#tools_left, #svg_editor .tools_flyout"), - pre_tool = container.find("#tool_" + itool), - reg_tool = container.find("#" + itool); - if(pre_tool.length) { - tool = pre_tool; - } else if(reg_tool.length){ - tool = reg_tool; - } else { - tool = $("#tool_select"); - } - tool.click().mouseup(); - - if(curConfig.wireframe) { - $('#tool_wireframe').click(); - } - - if(curConfig.showlayers) { - toggleSidePanel(); - } - }); - - $('#rect_rx').SpinButton({ min: 0, max: 1000, step: 1, callback: changeRectRadius }); - $('#stroke_width').SpinButton({ min: 0, max: 99, step: 1, smallStep: 0.1, callback: changeStrokeWidth }); - $('#angle').SpinButton({ min: -180, max: 180, step: 5, callback: changeRotationAngle }); - $('#font_size').SpinButton({ step: 1, min: 0.001, stepfunc: stepFontSize, callback: changeFontSize }); - $('#group_opacity').SpinButton({ step: 5, min: 0, max: 100, callback: changeOpacity }); - $('#blur').SpinButton({ step: .1, min: 0, max: 10, callback: changeBlur }); - $('#zoom').SpinButton({ min: 0.001, max: 10000, step: 50, stepfunc: stepZoom, callback: changeZoom }); - - window.onbeforeunload = function() { - // Suppress warning if page is empty - if(undoMgr.getUndoStackSize() === 0) { - show_save_warning = false; - } - - // show_save_warning is set to "false" when the page is saved. - if(!curConfig.no_save_warning && show_save_warning) { - // Browser already asks question about closing the page - return "There are unsaved changes."; - } - }; - - Editor.openPrep = function(func) { - $('#main_menu').hide(); - if(undoMgr.getUndoStackSize() === 0) { - func(true); - } else { - $.confirm(uiStrings.QwantToOpen, func); - } - } - - // use HTML5 File API: http://www.w3.org/TR/FileAPI/ - // if browser has HTML5 File API support, then we will show the open menu item - // and provide a file input to click. When that change event fires, it will - // get the text contents of the file and send it to the canvas - if (window.FileReader) { - var inp = $('<input type="file">').change(function() { - var f = this; - Editor.openPrep(function(ok) { - if(!ok) return; - svgCanvas.clear(); - if(f.files.length==1) { - var reader = new FileReader(); - reader.onloadend = function(e) { - svgCanvas.setSvgString(e.target.result); - updateCanvas(); - }; - reader.readAsText(f.files[0]); - } - }); - }); - $("#tool_open").show().prepend(inp); - var inp2 = $('<input type="file">').change(function() { - $('#main_menu').hide(); - if(this.files.length==1) { - var reader = new FileReader(); - reader.onloadend = function(e) { - svgCanvas.importSvgString(e.target.result); - updateCanvas(); - }; - reader.readAsText(this.files[0]); - } - }); - $("#tool_import").show().prepend(inp2); - } - - var updateCanvas = Editor.updateCanvas = function(center, new_ctr) { - var w = workarea.width(), h = workarea.height(); - var w_orig = w, h_orig = h; - var zoom = svgCanvas.getZoom(); - var w_area = workarea; - var cnvs = $("#svgcanvas"); - - var old_ctr = { - x: w_area[0].scrollLeft + w_orig/2, - y: w_area[0].scrollTop + h_orig/2 - }; - - var multi = curConfig.canvas_expansion; - w = Math.max(w_orig, svgCanvas.contentW * zoom * multi); - h = Math.max(h_orig, svgCanvas.contentH * zoom * multi); - - if(w == w_orig && h == h_orig) { - workarea.css('overflow','hidden'); - } else { - workarea.css('overflow','scroll'); - } - - var old_can_y = cnvs.height()/2; - var old_can_x = cnvs.width()/2; - cnvs.width(w).height(h); - var new_can_y = h/2; - var new_can_x = w/2; - var offset = svgCanvas.updateCanvas(w, h); - - var ratio = new_can_x / old_can_x; - - var scroll_x = w/2 - w_orig/2; - var scroll_y = h/2 - h_orig/2; - - if(!new_ctr) { - - var old_dist_x = old_ctr.x - old_can_x; - var new_x = new_can_x + old_dist_x * ratio; - - var old_dist_y = old_ctr.y - old_can_y; - var new_y = new_can_y + old_dist_y * ratio; - - new_ctr = { - x: new_x, - y: new_y - }; - - } else { - new_ctr.x += offset.x, - new_ctr.y += offset.y; - } - - if(center) { - w_area[0].scrollLeft = scroll_x; - w_area[0].scrollTop = scroll_y; - } else { - w_area[0].scrollLeft = new_ctr.x - w_orig/2; - w_area[0].scrollTop = new_ctr.y - h_orig/2; - } - } - -// $(function() { - updateCanvas(true); -// }); - - // var revnums = "svg-editor.js ($Rev: 1738 $) "; - // revnums += svgCanvas.getVersion(); - // $('#copyright')[0].setAttribute("title", revnums); - - var good_langs = []; - - $('#lang_select option').each(function() { - good_langs.push(this.value); - }); - -// var lang = ('lang' in curPrefs) ? curPrefs.lang : null; - Editor.putLocale(null, good_langs); - - try{ - json_encode = function(obj){ - //simple partial JSON encoder implementation - if(window.JSON && JSON.stringify) return JSON.stringify(obj); - var enc = arguments.callee; //for purposes of recursion - if(typeof obj == "boolean" || typeof obj == "number"){ - return obj+'' //should work... - }else if(typeof obj == "string"){ - //a large portion of this is stolen from Douglas Crockford's json2.js - return '"'+ - obj.replace( - /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g - , function (a) { - return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); - }) - +'"'; //note that this isn't quite as purtyful as the usualness - }else if(obj.length){ //simple hackish test for arrayish-ness - for(var i = 0; i < obj.length; i++){ - obj[i] = enc(obj[i]); //encode every sub-thingy on top - } - return "["+obj.join(",")+"]"; - }else{ - var pairs = []; //pairs will be stored here - for(var k in obj){ //loop through thingys - pairs.push(enc(k)+":"+enc(obj[k])); //key: value - } - return "{"+pairs.join(",")+"}" //wrap in the braces - } - } - window.addEventListener("message", function(e){ - var cbid = parseInt(e.data.substr(0, e.data.indexOf(";"))); - try{ - e.source.postMessage("SVGe"+cbid+";"+json_encode(eval(e.data)), e.origin); - }catch(err){ - e.source.postMessage("SVGe"+cbid+";error:"+err.message, e.origin); - } - }, false) - }catch(err){ - window.embed_error = err; - } - - - - // For Compatibility with older extensions - $(function() { - window.svgCanvas = svgCanvas; - svgCanvas.ready = svgEditor.ready; - }); - - - Editor.setLang = function(lang, strings) { - $.pref('lang', lang); - $('#lang_select').val(lang); - if(strings) { - // $.extend will only replace the given strings - var oldLayerName = $('#layerlist tr.layersel td.layername').text(); - var rename_layer = (oldLayerName == uiStrings.layer + ' 1'); - - $.extend(uiStrings,strings); - svgCanvas.setUiStrings(strings); - Actions.setTitles(); - - if(rename_layer) { - svgCanvas.renameCurrentLayer(uiStrings.layer + ' 1'); - populateLayers(); - } - - svgCanvas.runExtensions("langChanged", lang); - - // Update flyout tooltips - setFlyoutTitles(); - - // Copy title for certain tool elements - var elems = { - '#stroke_color': '#tool_stroke .icon_label, #tool_stroke .color_block', - '#fill_color': '#tool_fill label, #tool_fill .color_block', - '#linejoin_miter': '#cur_linejoin', - '#linecap_butt': '#cur_linecap' - } - - $.each(elems, function(source, dest) { - $(dest).attr('title', $(source)[0].title); - }); - - // Copy alignment titles - $('#multiselected_panel div[id^=tool_align]').each(function() { - $('#tool_pos' + this.id.substr(10))[0].title = this.title; - }); - - } - }; - }; - - var callbacks = []; - - Editor.ready = function(cb) { - if(!is_ready) { - callbacks.push(cb); - } else { - cb(); - } - }; - - Editor.runCallbacks = function() { - $.each(callbacks, function() { - this(); - }); - is_ready = true; - }; - - Editor.loadFromString = function(str) { - Editor.ready(function() { - svgCanvas.setSvgString(str); - }); - }; - - Editor.loadFromURL = function(url) { - Editor.ready(function() { - $.ajax({ - 'url': url, - 'dataType': 'text', - success: svgCanvas.setSvgString, - error: function(xhr, stat, err) { - if(xhr.responseText) { - svgCanvas.setSvgString(xhr.responseText); - } else { - $.alert("Unable to load from URL. Error: \n"+err+''); - } - } - }); - }); - }; - - Editor.loadFromDataURI = function(str) { - Editor.ready(function() { - svgCanvas.setSvgString(str); - var pre = 'data:image/svg+xml;base64,'; - var src = str.substring(pre.length); - svgCanvas.setSvgString(Utils.decode64(src)); - }); - }; - - Editor.addExtension = function() { - var args = arguments; - $(function() { - svgCanvas.addExtension.apply(this, args); - }); - }; - - return Editor; - }(jQuery); - - // Run init once DOM is loaded - $(svgEditor.init); - -})(); - -// ?iconsize=s&bkgd_color=555 - -// svgEditor.setConfig({ -// // imgPath: 'foo', -// dimensions: [800, 600], -// canvas_expansion: 5, -// initStroke: { -// color: '0000FF', -// width: 3.5, -// opacity: .5 -// }, -// initFill: { -// color: '550000', -// opacity: .75 -// }, -// extensions: ['ext-helloworld.js'] -// }) diff --git a/files_svgedit/js/svg-editor.min.js b/files_svgedit/js/svg-editor.min.js deleted file mode 100644 index 0a477a532..000000000 --- a/files_svgedit/js/svg-editor.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(){if(!window.svgEditor){window.svgEditor=function($){var svgCanvas;var Editor={};var is_ready=false;var defaultPrefs={lang:"en",iconsize:"m",bkgd_color:"#FFF",bkgd_url:"",img_save:"embed"},curPrefs={},curConfig={canvas_expansion:3,dimensions:[640,480],initFill:{color:"FF0000",opacity:1},initStroke:{width:5,color:"000000",opacity:1},initOpacity:1,imgPath:"images/",langPath:"locale/",extPath:"extensions/",extensions:["ext-markers.js","ext-connector.js","ext-eyedropper.js"],initTool:"select",wireframe:false},uiStrings={invalidAttrValGiven:"Invalid value given",noContentToFitTo:"No content to fit to",layer:"Layer",dupeLayerName:"There is already a layer named that!",enterUniqueLayerName:"Please enter a unique layer name",enterNewLayerName:"Please enter the new layer name",layerHasThatName:"Layer already has that name",QmoveElemsToLayer:'Move selected elements to layer "%s"?',QwantToClear:"Do you want to clear the drawing?\nThis will also erase your undo history!",QwantToOpen:"Do you want to open a new file?\nThis will also erase your undo history!",QerrorsRevertToSource:"There were parsing errors in your SVG source.\nRevert back to original SVG source?",QignoreSourceChanges:"Ignore changes made to SVG source?",featNotSupported:"Feature not supported",enterNewImgURL:"Enter the new image URL",defsFailOnSave:"NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",loadingImage:"Loading image, please wait...",saveFromBrowser:'Select "Save As..." in your browser to save this image as a %s file.',noteTheseIssues:"Also note the following issues: ",ok:"OK",cancel:"Cancel",key_up:"Up",key_down:"Down",key_backspace:"Backspace",key_del:"Del"};var curPrefs={};var customHandlers={};Editor.curConfig=curConfig;$.pref=function(key,val){if(val){curPrefs[key]=val}key="svg-edit-"+key;var host=location.hostname,onweb=host&&host.indexOf(".")!=-1,store=(val!=undefined),storage=false;try{if(window.localStorage){storage=localStorage}}catch(e){}try{if(window.globalStorage&&onweb){storage=globalStorage[host]}}catch(e){}if(storage){if(store){storage.setItem(key,val)}else{if(storage.getItem(key)){return storage.getItem(key)+""}}}else{if(window.widget){if(store){widget.setPreferenceForKey(val,key)}else{return widget.preferenceForKey(key)}}else{if(store){var d=new Date();d.setTime(d.getTime()+31536000000);val=encodeURIComponent(val);document.cookie=key+"="+val+"; expires="+d.toUTCString()}else{var result=document.cookie.match(new RegExp(key+"=([^;]+)"));return result?decodeURIComponent(result[1]):""}}}};Editor.setConfig=function(opts){$.each(opts,function(key,val){if(key in defaultPrefs){$.pref(key,val)}});$.extend(true,curConfig,opts);if(opts.extensions){curConfig.extensions=opts.extensions}};Editor.setCustomHandlers=function(opts){if(opts.open){$('#tool_open > input[type="file"]').remove();$("#tool_open").show();svgCanvas.open=opts.open}if(opts.save){show_save_warning=false;svgCanvas.bind("saved",opts.save)}if(opts.pngsave){svgCanvas.bind("exported",opts.pngsave)}customHandlers=opts};Editor.randomizeIds=function(){svgCanvas.randomizeIds(arguments)};Editor.init=function(){(function(){var urldata=$.deparam.querystring(true);if(!$.isEmptyObject(urldata)){if(urldata.dimensions){urldata.dimensions=urldata.dimensions.split(",")}if(urldata.extensions){urldata.extensions=urldata.extensions.split(",")}if(urldata.bkgd_color){urldata.bkgd_color="#"+urldata.bkgd_color}svgEditor.setConfig(urldata);var src=urldata.source;var qstr=$.param.querystring();if(src){if(src.indexOf("data:")===0){src=src.replace(/ /g,"+");Editor.loadFromDataURI(src)}else{Editor.loadFromString(src)}}else{if(qstr.indexOf("paramurl=")!==-1){svgEditor.loadFromURL(qstr.substr(9))}else{if(urldata.url){svgEditor.loadFromURL(urldata.url)}}}}})();var extFunc=function(){$.each(curConfig.extensions,function(){$.getScript(curConfig.extPath+this)})};if(window.opera&&document.location.protocol==="file:"){setTimeout(extFunc,1000)}else{extFunc()}$.svgIcons(curConfig.imgPath+"svg_edit_icons.svg",{w:24,h:24,id_match:false,no_img:true,fallback_path:curConfig.imgPath,fallback:{new_image:"clear.png",save:"save.png",open:"open.png",source:"source.png",docprops:"document-properties.png",wireframe:"wireframe.png",undo:"undo.png",redo:"redo.png",select:"select.png",select_node:"select_node.png",pencil:"fhpath.png",pen:"line.png",square:"square.png",rect:"rect.png",fh_rect:"freehand-square.png",circle:"circle.png",ellipse:"ellipse.png",fh_ellipse:"freehand-circle.png",path:"path.png",text:"text.png",image:"image.png",zoom:"zoom.png",clone:"clone.png",node_clone:"node_clone.png","delete":"delete.png",node_delete:"node_delete.png",group:"shape_group.png",ungroup:"shape_ungroup.png",move_top:"move_top.png",move_bottom:"move_bottom.png",to_path:"to_path.png",link_controls:"link_controls.png",reorient:"reorient.png",align_left:"align-left.png",align_center:"align-center",align_right:"align-right",align_top:"align-top",align_middle:"align-middle",align_bottom:"align-bottom",go_up:"go-up.png",go_down:"go-down.png",ok:"save.png",cancel:"cancel.png",arrow_right:"flyouth.png",arrow_down:"dropdown.gif"},placement:{"#logo":"logo","#tool_clear div,#layer_new":"new_image","#tool_save div":"save","#tool_export div":"export","#tool_open div div":"open","#tool_import div div":"import","#tool_source":"source","#tool_docprops > div":"docprops","#tool_wireframe":"wireframe","#tool_undo":"undo","#tool_redo":"redo","#tool_select":"select","#tool_fhpath":"pencil","#tool_line":"pen","#tool_rect,#tools_rect_show":"rect","#tool_square":"square","#tool_fhrect":"fh_rect","#tool_ellipse,#tools_ellipse_show":"ellipse","#tool_circle":"circle","#tool_fhellipse":"fh_ellipse","#tool_path":"path","#tool_text,#layer_rename":"text","#tool_image":"image","#tool_zoom":"zoom","#tool_clone,#tool_clone_multi":"clone","#tool_node_clone":"node_clone","#layer_delete,#tool_delete,#tool_delete_multi":"delete","#tool_node_delete":"node_delete","#tool_add_subpath":"add_subpath","#tool_openclose_path":"open_path","#tool_move_top":"move_top","#tool_move_bottom":"move_bottom","#tool_topath":"to_path","#tool_node_link":"link_controls","#tool_reorient":"reorient","#tool_group":"group","#tool_ungroup":"ungroup","#tool_alignleft, #tool_posleft":"align_left","#tool_aligncenter, #tool_poscenter":"align_center","#tool_alignright, #tool_posright":"align_right","#tool_aligntop, #tool_postop":"align_top","#tool_alignmiddle, #tool_posmiddle":"align_middle","#tool_alignbottom, #tool_posbottom":"align_bottom","#cur_position":"align","#linecap_butt,#cur_linecap":"linecap_butt","#linecap_round":"linecap_round","#linecap_square":"linecap_square","#linejoin_miter,#cur_linejoin":"linejoin_miter","#linejoin_round":"linejoin_round","#linejoin_bevel":"linejoin_bevel","#url_notice":"warning","#layer_up":"go_up","#layer_down":"go_down","#layerlist td.layervis":"eye","#tool_source_save,#tool_docprops_save":"ok","#tool_source_cancel,#tool_docprops_cancel":"cancel","#rwidthLabel, #iwidthLabel":"width","#rheightLabel, #iheightLabel":"height","#cornerRadiusLabel span":"c_radius","#angleLabel":"angle","#zoomLabel":"zoom","#tool_fill label":"fill","#tool_stroke .icon_label":"stroke","#group_opacityLabel":"opacity","#blurLabel":"blur","#font_sizeLabel":"fontsize",".flyout_arrow_horiz":"arrow_right",".dropdown button, #main_button .dropdown":"arrow_down","#palette .palette_item:first, #fill_bg, #stroke_bg":"no_color"},resize:{"#logo .svg_icon":32,".flyout_arrow_horiz .svg_icon":5,".layer_button .svg_icon, #layerlist td.layervis .svg_icon":14,".dropdown button .svg_icon":7,"#main_button .dropdown .svg_icon":9,".palette_item:first .svg_icon, #fill_bg .svg_icon, #stroke_bg .svg_icon":16,".toolbar_button button .svg_icon":16,".stroke_tool div div .svg_icon":20,"#tools_bottom label .svg_icon":18},callback:function(icons){$(".toolbar_button button > svg, .toolbar_button button > img").each(function(){$(this).parent().prepend(this)});var tleft=$("#tools_left");var min_height=tleft.offset().top+tleft.outerHeight();var size=$.pref("iconsize");if(size&&size!="m"){svgEditor.setIconSize(size)}else{if($(window).height()<min_height){svgEditor.setIconSize("s")}}$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var sel=shower.attr("data-curopt");if(!shower.children("svg, img").length){var clone=$(sel).children().clone();shower.append(clone)}if(window.opera){shower.children().removeAttr("style")}});svgEditor.runCallbacks()}});Editor.canvas=svgCanvas=new $.SvgCanvas(document.getElementById("svgcanvas"),curConfig);var palette=["#000000","#3f3f3f","#7f7f7f","#bfbfbf","#ffffff","#ff0000","#ff7f00","#ffff00","#7fff00","#00ff00","#00ff7f","#00ffff","#007fff","#0000ff","#7f00ff","#ff00ff","#ff007f","#7f0000","#7f3f00","#7f7f00","#3f7f00","#007f00","#007f3f","#007f7f","#003f7f","#00007f","#3f007f","#7f007f","#7f003f","#ffaaaa","#ffd4aa","#ffffaa","#d4ffaa","#aaffaa","#aaffd4","#aaffff","#aad4ff","#aaaaff","#d4aaff","#ffaaff","#ffaad4",];isMac=false,modKey="",path=svgCanvas.pathActions,undoMgr=svgCanvas.undoMgr,Utils=svgCanvas.Utils,default_img_url=curConfig.imgPath+"logo.png",workarea=$("#workarea"),show_save_warning=false,exportWindow=null;(function(){$("#dialog_container").draggable({cancel:"#dialog_content, #dialog_buttons *"});var box=$("#dialog_box"),btn_holder=$("#dialog_buttons");var dbox=function(type,msg,callback,defText){$("#dialog_content").html("<p>"+msg.replace(/\n/g,"</p><p>")+"</p>").toggleClass("prompt",(type=="prompt"));btn_holder.empty();var ok=$('<input type="button" value="'+uiStrings.ok+'">').appendTo(btn_holder);if(type!="alert"){$('<input type="button" value="'+uiStrings.cancel+'">').appendTo(btn_holder).click(function(){box.hide();callback(false)})}if(type=="prompt"){var input=$('<input type="text">').prependTo(btn_holder);input.val(defText||"");input.bind("keydown","return",function(){ok.click()})}if(type=="process"){ok.hide()}box.show();ok.click(function(){box.hide();var resp=(type=="prompt")?input.val():true;if(callback){callback(resp)}}).focus();if(type=="prompt"){input.focus()}};$.alert=function(msg,cb){dbox("alert",msg,cb)};$.confirm=function(msg,cb){dbox("confirm",msg,cb)};$.process_cancel=function(msg,cb){dbox("process",msg,cb)};$.prompt=function(msg,txt,cb){dbox("prompt",msg,cb,txt)}}());var setSelectMode=function(){$(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");$("#tool_select").addClass("tool_button_current").removeClass("tool_button");$("#styleoverrides").text("#svgcanvas svg *{cursor:move;pointer-events:all} #svgcanvas svg{cursor:default}");svgCanvas.setMode("select")};var togglePathEditMode=function(editmode,elems){$("#path_node_panel").toggle(editmode);$("#tools_bottom_2,#tools_bottom_3").toggle(!editmode);if(editmode){$(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");$("#tool_select").addClass("tool_button_current").removeClass("tool_button");setIcon("#tool_select","select_node");multiselected=false;if(elems.length){selectedElement=elems[0]}}else{setIcon("#tool_select","select")}};var flyoutspeed=1250;var textBeingEntered=false;var selectedElement=null;var multiselected=false;var editingsource=false;var docprops=false;var fillPaint=new $.jGraduate.Paint({solidColor:curConfig.initFill.color});var strokePaint=new $.jGraduate.Paint({solidColor:curConfig.initStroke.color});var saveHandler=function(window,svg){show_save_warning=false;svg='<?xml version="1.0"?>\n'+svg;var win=window.open("data:image/svg+xml;base64,"+Utils.encode64(svg));var done=$.pref("save_notice_done");if(done!=="all"){var note=uiStrings.saveFromBrowser.replace("%s","SVG");if(navigator.userAgent.indexOf("Gecko/")!==-1){if(svg.indexOf("<defs")!==-1){note+="\n\n"+uiStrings.defsFailOnSave;$.pref("save_notice_done","all");done="all"}else{$.pref("save_notice_done","part")}}else{$.pref("save_notice_done","all")}if(done!=="part"){win.alert(note)}}};var exportHandler=function(window,data){var issues=data.issues;if(!$("#export_canvas").length){$("<canvas>",{id:"export_canvas"}).hide().appendTo("body")}var c=$("#export_canvas")[0];c.width=svgCanvas.contentW;c.height=svgCanvas.contentH;canvg(c,data.svg);var datauri=c.toDataURL("image/png");exportWindow.location.href=datauri;var done=$.pref("export_notice_done");if(done!=="all"){var note=uiStrings.saveFromBrowser.replace("%s","PNG");if(issues.length){var pre="\n \u2022 ";note+=("\n\n"+uiStrings.noteTheseIssues+pre+issues.join(pre))}$.pref("export_notice_done","all");exportWindow.alert(note)}};var selectedChanged=function(window,elems){var mode=svgCanvas.getMode();var is_node=(mode=="pathedit");selectedElement=(elems.length==1||elems[1]==null?elems[0]:null);multiselected=(elems.length>=2&&elems[1]!=null);if(selectedElement!=null){if(mode!="multiselect"&&!is_node){setSelectMode();updateToolbar()}}togglePathEditMode(is_node,elems);updateContextPanel();svgCanvas.runExtensions("selectedChanged",{elems:elems,selectedElement:selectedElement,multiselected:multiselected})};var elementChanged=function(window,elems){for(var i=0;i<elems.length;++i){var elem=elems[i];if(elem&&elem.tagName=="svg"){populateLayers();updateCanvas()}else{if(elem&&selectedElement&&selectedElement.parentNode==null){selectedElement=elem}}}show_save_warning=true;updateContextPanel();svgCanvas.runExtensions("elementChanged",{elems:elems})};var zoomChanged=function(window,bbox,autoCenter){var scrbar=15,res=svgCanvas.getResolution(),w_area=workarea,canvas_pos=$("#svgcanvas").position();w_area.css("cursor","auto");var z_info=svgCanvas.setBBoxZoom(bbox,w_area.width()-scrbar,w_area.height()-scrbar);if(!z_info){return}var zoomlevel=z_info.zoom,bb=z_info.bbox;$("#zoom").val(Math.round(zoomlevel*100));if(autoCenter){updateCanvas()}else{updateCanvas(false,{x:bb.x*zoomlevel+(bb.width*zoomlevel)/2,y:bb.y*zoomlevel+(bb.height*zoomlevel)/2})}if(svgCanvas.getMode()=="zoom"&&bb.width){setSelectMode()}zoomDone()};var flyout_funcs={};var setupFlyouts=function(holders){$.each(holders,function(hold_sel,btn_opts){var buttons=$(hold_sel).children();var show_sel=hold_sel+"_show";var def=false;buttons.addClass("tool_button").unbind("click mousedown mouseup").each(function(i){var opts=btn_opts[i];flyout_funcs[opts.sel]=opts.fn;if(opts.isDefault){def=i}var func=function(){if($(this).hasClass("disabled")){return false}if(toolButtonClick(show_sel)){opts.fn()}if(opts.icon){var icon=$.getSvgIcon(opts.icon).clone()}else{var icon=$(opts.sel).children().eq(0).clone()}var shower=$(show_sel);icon[0].setAttribute("width",shower.width());icon[0].setAttribute("height",shower.height());shower.children(":not(.flyout_arrow_horiz)").remove();shower.append(icon).attr("data-curopt",opts.sel)};$(this).mouseup(func);if(opts.key){$(document).bind("keydown",opts.key+"",func)}});if(def){$(show_sel).attr("data-curopt",btn_opts[def].sel)}else{if(!$(show_sel).attr("data-curopt")){$(show_sel).attr("data-curopt",btn_opts[0].sel)}}var timer;$(show_sel).mousedown(function(evt){if($(show_sel).hasClass("disabled")){return false}var holder=$(show_sel.replace("_show",""));var l=holder.css("left");var w=holder.width()*-1;var time=holder.data("shown_popop")?200:0;timer=setTimeout(function(){holder.css("left",w).show().animate({left:l},150);holder.data("shown_popop",true)},time);evt.preventDefault()}).mouseup(function(){clearTimeout(timer);var opt=$(this).attr("data-curopt");if(toolButtonClick(show_sel)){flyout_funcs[opt]()}});var pos=$(show_sel).position();$(hold_sel).css({left:pos.left+34,top:pos.top+77})});setFlyoutTitles()};var makeFlyoutHolder=function(id,child){var div=$("<div>",{"class":"tools_flyout",id:id}).appendTo("#svg_editor").append(child);return div};var setFlyoutPositions=function(){$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var pos=shower.offset();var w=shower.outerWidth();$(this).css({left:pos.left+w,top:pos.top})})};var setFlyoutTitles=function(){$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var tooltips=[];$(this).children().each(function(){tooltips.push(this.title)});shower[0].title=tooltips.join(" / ")})};var extAdded=function(window,ext){var cb_called=false;var runCallback=function(){if(ext.callback&&!cb_called){cb_called=true;ext.callback()}};var btn_selects=[];if(ext.context_tools){$.each(ext.context_tools,function(i,tool){var cont_id=tool.container_id?(' id="'+tool.container_id+'"'):"";var panel=$("#"+tool.panel);if(!panel.length){panel=$("<div>",{id:tool.panel}).appendTo("#tools_top")}switch(tool.type){case"tool_button":var html='<div class="tool_button">'+tool.id+"</div>";var div=$(html).appendTo(panel);if(tool.events){$.each(tool.events,function(evt,func){$(div).bind(evt,func)})}break;case"select":var html="<label"+cont_id+'><select id="'+tool.id+'">';$.each(tool.options,function(val,text){var sel=(val==tool.defval)?" selected":"";html+='<option value="'+val+'"'+sel+">"+text+"</option>"});html+="</select></label>";var sel=$(html).appendTo(panel).find("select");$.each(tool.events,function(evt,func){$(sel).bind(evt,func)});break;case"button-select":var html='<div id="'+tool.id+'" class="dropdown toolset" title="'+tool.title+'"><div id="cur_'+tool.id+'" class="icon_label"></div><button></button></div>';var list=$('<ul id="'+tool.id+'_opts"></ul>').appendTo("#option_lists");if(tool.colnum){list.addClass("optcols"+tool.colnum)}var dropdown=$(html).appendTo(panel).children();btn_selects.push({elem:("#"+tool.id),list:("#"+tool.id+"_opts"),title:tool.title,callback:tool.events.change,cur:("#cur_"+tool.id)});break;case"input":var html="<label"+cont_id+'><span id="'+tool.id+'_label">'+tool.label+':</span><input id="'+tool.id+'" title="'+tool.title+'" size="'+(tool.size||"4")+'" value="'+(tool.defval||"")+'" type="text"/></label>';var inp=$(html).appendTo(panel).find("input");if(tool.spindata){inp.SpinButton(tool.spindata)}if(tool.events){$.each(tool.events,function(evt,func){inp.bind(evt,func)})}break;default:break}})}if(ext.buttons){var fallback_obj={},placement_obj={},svgicons=ext.svgicons;var holders={};$.each(ext.buttons,function(i,btn){var icon;var id=btn.id;var num=i;while($("#"+id).length){id=btn.id+"_"+(++num)}if(!svgicons){icon=$('<img src="'+btn.icon+'">')}else{fallback_obj[id]=btn.icon;var svgicon=btn.svgicon?btn.svgicon:btn.id;placement_obj["#"+id]=svgicon}var cls,parent;switch(btn.type){case"mode":cls="tool_button";parent="#tools_left";break;case"context":cls="tool_button";parent="#"+btn.panel;if(!$(parent).length){$("<div>",{id:btn.panel}).appendTo("#tools_top")}break}var button=$(btn.list?"<li/>":"<div/>").attr("id",id).attr("title",btn.title).addClass(cls);if(!btn.includeWith&&!btn.list){button.appendTo(parent)}else{if(btn.list){button.addClass("push_button");$("#"+btn.list+"_opts").append(button);if(btn.isDefault){$("#cur_"+btn.list).append(button.children().clone());var svgicon=btn.svgicon?btn.svgicon:btn.id;placement_obj["#cur_"+btn.list]=svgicon}}else{if(btn.includeWith){var opts=btn.includeWith;var ref_btn=$(opts.button);var flyout_holder=ref_btn.parent();if(!ref_btn.parent().hasClass("tools_flyout")){var arr_div=$("<div>",{id:"flyout_arrow_horiz"});var tls_id=ref_btn[0].id.replace("tool_","tools_");var show_btn=ref_btn.clone().attr("id",tls_id+"_show").append($("<div>",{"class":"flyout_arrow_horiz"}));ref_btn.before(show_btn);flyout_holder=makeFlyoutHolder(tls_id,ref_btn)}var ref_data=Actions.getButtonData(opts.button);if(opts.isDefault){placement_obj["#"+tls_id+"_show"]=btn.id}var cur_h=holders["#"+flyout_holder[0].id]=[{sel:"#"+id,fn:btn.events.click,icon:btn.id,key:btn.key,isDefault:btn.includeWith?btn.includeWith.isDefault:0},ref_data];var pos=("position" in opts)?opts.position:"last";var len=flyout_holder.children().length;if(!isNaN(pos)&&pos>=0&&pos<len){flyout_holder.children().eq(pos).before(button)}else{flyout_holder.append(button);cur_h.reverse()}}}}if(!svgicons){button.append(icon)}if(!btn.list){$.each(btn.events,function(name,func){if(name=="click"){if(btn.type=="mode"){if(btn.includeWith){button.bind(name,func)}else{button.bind(name,function(){if(toolButtonClick(button)){func()}})}if(btn.key){$(document).bind("keydown",btn.key,func);if(btn.title){button.attr("title",btn.title+" ["+btn.key+"]")}}}else{button.bind(name,func)}}else{button.bind(name,func)}})}setupFlyouts(holders)});$.each(btn_selects,function(){addAltDropDown(this.elem,this.list,this.callback,{seticon:true})});$.svgIcons(svgicons,{w:24,h:24,id_match:false,no_img:true,fallback:fallback_obj,placement:placement_obj,callback:function(icons){if(curPrefs.iconsize&&curPrefs.iconsize!="m"){setIconSize(curPrefs.iconsize,true)}runCallback()}})}runCallback()};var getPaint=function(color,opac){var opts=null;if(color.substr(0,5)=="url(#"){var grad=document.getElementById(color.substr(5,color.length-6));opts={alpha:opac};opts[grad.tagName]=grad}else{if(color.substr(0,1)=="#"){opts={alpha:opac,solidColor:color.substr(1)}}else{opts={alpha:opac,solidColor:"none"}}}return new $.jGraduate.Paint(opts)};var updateToolbar=function(){if(selectedElement!=null&&$.inArray(selectedElement.tagName,["image","foreignObject","g","a"])===-1){var fillOpacity=parseFloat(selectedElement.getAttribute("fill-opacity"));if(isNaN(fillOpacity)){fillOpacity=1}var strokeOpacity=parseFloat(selectedElement.getAttribute("stroke-opacity"));if(isNaN(strokeOpacity)){strokeOpacity=1}var fillColor=selectedElement.getAttribute("fill")||"black";svgCanvas.setColor("fill",fillColor,true);svgCanvas.setPaintOpacity("fill",fillOpacity,true);var strokeColor=selectedElement.getAttribute("stroke")||"none";svgCanvas.setColor("stroke",strokeColor,true);svgCanvas.setPaintOpacity("stroke",strokeOpacity,true);$("#stroke_color rect").attr({fill:strokeColor,opacity:strokeOpacity});$("#fill_color rect").attr({fill:fillColor,opacity:fillOpacity});fillOpacity*=100;strokeOpacity*=100;fillPaint=getPaint(fillColor,fillOpacity);strokePaint=getPaint(strokeColor,strokeOpacity);fillOpacity=fillOpacity+" %";strokeOpacity=strokeOpacity+" %";if(fillColor=="none"){fillOpacity="N/A"}if(strokeColor==null||strokeColor==""||strokeColor=="none"){strokeColor="none";strokeOpacity="N/A"}$("#stroke_width").val(selectedElement.getAttribute("stroke-width")||1);$("#stroke_style").val(selectedElement.getAttribute("stroke-dasharray")||"none");var attr=selectedElement.getAttribute("stroke-linejoin")||"miter";setStrokeOpt($("#linejoin_"+attr)[0]);attr=selectedElement.getAttribute("stroke-linecap")||"butt";setStrokeOpt($("#linecap_"+attr)[0])}if(selectedElement!=null){var opac_perc=((selectedElement.getAttribute("opacity")||1)*100);$("#group_opacity").val(opac_perc);$("#opac_slider").slider("option","value",opac_perc);$("#elem_id").val(selectedElement.id)}updateToolButtonState()};var updateContextPanel=function(){var elem=selectedElement;if(elem!=null&&!elem.parentNode){elem=null}var currentLayer=svgCanvas.getCurrentLayer();var currentMode=svgCanvas.getMode();if(currentMode=="rotate"&&elem!=null){var ang=svgCanvas.getRotationAngle(elem);$("#angle").val(ang);$("#tool_reorient").toggleClass("disabled",ang==0);return}var is_node=currentMode=="pathedit";$("#selected_panel, #multiselected_panel, #g_panel, #rect_panel, #circle_panel, #ellipse_panel, #line_panel, #text_panel, #image_panel").hide();if(elem!=null){var elname=elem.nodeName;var angle=svgCanvas.getRotationAngle(elem);$("#angle").val(angle);var blurval=svgCanvas.getBlur(elem);$("#blur").val(blurval);$("#blur_slider").slider("option","value",blurval);if(svgCanvas.addedNew){if(elname=="image"){var xlinkNS="http://www.w3.org/1999/xlink";var href=elem.getAttributeNS(xlinkNS,"href");if(href.indexOf("data:")!==0){promptImgURL()}}else{if(elname=="text"){}}}if(!is_node&¤tMode!="pathedit"){$("#selected_panel").show();if($.inArray(elname,["line","circle","ellipse"])!=-1){$("#xy_panel").hide()}else{var x,y;if($.inArray(elname,["g","polyline","path"])!=-1){var bb=svgCanvas.getStrokedBBox([elem]);if(bb){x=bb.x;y=bb.y}}else{x=elem.getAttribute("x");y=elem.getAttribute("y")}$("#selected_x").val(x||0);$("#selected_y").val(y||0);$("#xy_panel").show()}var no_path=$.inArray(elname,["image","text","path","g","use"])==-1;$("#tool_topath").toggle(no_path);$("#tool_reorient").toggle(elname=="path");$("#tool_reorient").toggleClass("disabled",angle==0)}else{var point=path.getNodePoint();$("#tool_add_subpath").removeClass("push_button_pressed").addClass("tool_button");$("#tool_node_delete").toggleClass("disabled",!path.canDeleteNodes);setIcon("#tool_openclose_path",path.closed_subpath?"open_path":"close_path");if(point){var seg_type=$("#seg_type");$("#path_node_x").val(point.x);$("#path_node_y").val(point.y);if(point.type){seg_type.val(point.type).removeAttr("disabled")}else{seg_type.val(4).attr("disabled","disabled")}}return}var panels={g:[],rect:["rx","width","height"],image:["width","height"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],line:["x1","y1","x2","y2"],text:[]};var el_name=elem.tagName;if(panels[el_name]){var cur_panel=panels[el_name];$("#"+el_name+"_panel").show();$.each(cur_panel,function(i,item){$("#"+el_name+"_"+item).val(elem.getAttribute(item)||0)});if(el_name=="text"){$("#text_panel").css("display","inline");if(svgCanvas.getItalic()){$("#tool_italic").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_italic").removeClass("push_button_pressed").addClass("tool_button")}if(svgCanvas.getBold()){$("#tool_bold").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_bold").removeClass("push_button_pressed").addClass("tool_button")}$("#font_family").val(elem.getAttribute("font-family"));$("#font_size").val(elem.getAttribute("font-size"));$("#text").val(elem.textContent);if(svgCanvas.addedNew){$("#text").focus().select()}}else{if(el_name=="image"){var xlinkNS="http://www.w3.org/1999/xlink";var href=elem.getAttributeNS(xlinkNS,"href");setImageURL(href)}}}}else{if(multiselected){$("#multiselected_panel").show()}}if(undoMgr.getUndoStackSize()>0){$("#tool_undo").removeClass("disabled")}else{$("#tool_undo").addClass("disabled")}if(undoMgr.getRedoStackSize()>0){$("#tool_redo").removeClass("disabled")}else{$("#tool_redo").addClass("disabled")}svgCanvas.addedNew=false;if((elem&&!is_node)||multiselected){$("#selLayerNames").removeAttr("disabled").val(currentLayer)}else{$("#selLayerNames").attr("disabled","disabled")}};$("#text").focus(function(){textBeingEntered=true});$("#text").blur(function(){textBeingEntered=false});svgCanvas.bind("selected",selectedChanged);svgCanvas.bind("changed",elementChanged);svgCanvas.bind("saved",saveHandler);svgCanvas.bind("exported",exportHandler);svgCanvas.bind("zoomed",zoomChanged);svgCanvas.bind("extension_added",extAdded);svgCanvas.textActions.setInputElem($("#text")[0]);var str='<div class="palette_item" data-rgb="none"></div>';$.each(palette,function(i,item){str+='<div class="palette_item" style="background-color: '+item+';" data-rgb="'+item+'"></div>'});$("#palette").append(str);var color_blocks=["#FFF","#888","#000"];var str="";$.each(color_blocks,function(){str+='<div class="color_block" style="background-color:'+this+';"></div>'});$("#bg_blocks").append(str);var blocks=$("#bg_blocks div");var cur_bg="cur_background";blocks.each(function(){var blk=$(this);blk.click(function(){blocks.removeClass(cur_bg);$(this).addClass(cur_bg)})});if($.pref("bkgd_color")){setBackground($.pref("bkgd_color"),$.pref("bkgd_url"))}else{if($.pref("bkgd_url")){setBackground(defaultPrefs.bkgd_color,$.pref("bkgd_url"))}}if($.pref("img_save")){curPrefs.img_save=$.pref("img_save");$("#image_save_opts input").val([curPrefs.img_save])}var changeRectRadius=function(ctl){svgCanvas.setRectRadius(ctl.value)};var changeFontSize=function(ctl){svgCanvas.setFontSize(ctl.value)};var changeStrokeWidth=function(ctl){var val=ctl.value;if(val==0&&selectedElement&&$.inArray(selectedElement.nodeName,["line","polyline"])!=-1){val=ctl.value=1}svgCanvas.setStrokeWidth(val)};var changeRotationAngle=function(ctl){svgCanvas.setRotationAngle(ctl.value);$("#tool_reorient").toggleClass("disabled",ctl.value==0)};var changeZoom=function(ctl){var zoomlevel=ctl.value/100;var zoom=svgCanvas.getZoom();var w_area=workarea;zoomChanged(window,{width:0,height:0,x:(w_area[0].scrollLeft+w_area.width()/2)/zoom,y:(w_area[0].scrollTop+w_area.height()/2)/zoom,zoom:zoomlevel},true)};var changeOpacity=function(ctl,val){if(val==null){val=ctl.value}$("#group_opacity").val(val);if(!ctl||!ctl.handle){$("#opac_slider").slider("option","value",val)}svgCanvas.setOpacity(val/100)};var changeBlur=function(ctl,val,noUndo){if(val==null){val=ctl.value}$("#blur").val(val);var complete=false;if(!ctl||!ctl.handle){$("#blur_slider").slider("option","value",val);complete=true}if(noUndo){svgCanvas.setBlurNoUndo(val)}else{svgCanvas.setBlur(val,complete)}};var operaRepaint=function(){if(!window.opera){return}$("<p/>").hide().appendTo("body").remove()};$("#stroke_style").change(function(){svgCanvas.setStrokeAttr("stroke-dasharray",$(this).val());operaRepaint()});$("#stroke_linejoin").change(function(){svgCanvas.setStrokeAttr("stroke-linejoin",$(this).val());operaRepaint()});$("select").change(function(){$(this).blur()});var promptMoveLayerOnce=false;$("#selLayerNames").change(function(){var destLayer=this.options[this.selectedIndex].value;var confirm_str=uiStrings.QmoveElemsToLayer.replace("%s",destLayer);var moveToLayer=function(ok){if(!ok){return}promptMoveLayerOnce=true;svgCanvas.moveSelectedToLayer(destLayer);svgCanvas.clearSelection();populateLayers()};if(destLayer){if(promptMoveLayerOnce){moveToLayer(true)}else{$.confirm(confirm_str,moveToLayer)}}});$("#font_family").change(function(){svgCanvas.setFontFamily(this.value)});$("#seg_type").change(function(){svgCanvas.setSegType($(this).val())});$("#text").keyup(function(){svgCanvas.setTextContent(this.value)});$("#image_url").change(function(){setImageURL(this.value)});$(".attr_changer").change(function(){var attr=this.getAttribute("data-attr");var val=this.value;var valid=svgCanvas.isValidUnit(attr,val);if(!valid){$.alert(uiStrings.invalidAttrValGiven);this.value=selectedElement.getAttribute(attr);return false}if(attr=="id"){var elem=selectedElement;svgCanvas.clearSelection();elem.id=val;svgCanvas.addToSelection([elem],true)}else{svgCanvas.changeSelectedAttribute(attr,val)}});$("#palette").mouseover(function(){var inp=$('<input type="hidden">');$(this).append(inp);inp.focus().remove()});$(".palette_item").click(function(evt){var picker=(evt.shiftKey?"stroke":"fill");var id=(evt.shiftKey?"#stroke_":"#fill_");var color=$(this).attr("data-rgb");var rectbox=document.getElementById("gradbox_"+picker).parentNode.firstChild;var paint=null;if(color=="transparent"||color=="initial"){color="none";$(id+"opacity").html("N/A");paint=new $.jGraduate.Paint()}else{paint=new $.jGraduate.Paint({alpha:100,solidColor:color.substr(1)})}rectbox.setAttribute("fill",color);rectbox.setAttribute("opacity",1);if(evt.shiftKey){strokePaint=paint;if(svgCanvas.getColor("stroke")!=color){svgCanvas.setColor("stroke",color)}if(color!="none"&&svgCanvas.getStrokeOpacity()!=1){svgCanvas.setPaintOpacity("stroke",1)}}else{fillPaint=paint;if(svgCanvas.getColor("fill")!=color){svgCanvas.setColor("fill",color)}if(color!="none"&&svgCanvas.getFillOpacity("fill")!=1){svgCanvas.setPaintOpacity("fill",1)}}updateToolButtonState()});$("#toggle_stroke_tools").toggle(function(){$(".stroke_tool").css("display","table-cell");$(this).text("<<")},function(){$(".stroke_tool").css("display","none");$(this).text(">>")});var toolButtonClick=function(button,fadeFlyouts){if($(button).hasClass("disabled")){return false}if($(button).parent().hasClass("tools_flyout")){return true}var fadeFlyouts=fadeFlyouts||"normal";$(".tools_flyout").fadeOut(fadeFlyouts);$("#styleoverrides").text("");$(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");$(button).addClass("tool_button_current").removeClass("tool_button");svgCanvas.clearSelection();return true};(function(){var last_x=null,last_y=null,w_area=workarea[0],panning=false,keypan=false;$("#svgcanvas").bind("mousemove mouseup",function(evt){if(panning===false){return}w_area.scrollLeft-=(evt.clientX-last_x);w_area.scrollTop-=(evt.clientY-last_y);last_x=evt.clientX;last_y=evt.clientY;if(evt.type==="mouseup"){panning=false}return false}).mousedown(function(evt){if(evt.button===1||keypan===true){panning=true;last_x=evt.clientX;last_y=evt.clientY;return false}});$(window).mouseup(function(){panning=false});$(document).bind("keydown","space",function(evt){svgCanvas.spaceKey=keypan=true;evt.preventDefault()}).bind("keyup","space",function(evt){evt.preventDefault();svgCanvas.spaceKey=keypan=false})}());function setStrokeOpt(opt,changeElem){var id=opt.id;var bits=id.split("_");var pre=bits[0];var val=bits[1];if(changeElem){svgCanvas.setStrokeAttr("stroke-"+pre,val)}operaRepaint();setIcon("#cur_"+pre,id,20);$(opt).addClass("current").siblings().removeClass("current")}(function(){var button=$("#main_icon");var overlay=$("#main_icon span");var list=$("#main_menu");var on_button=false;var height=0;var js_hover=true;var set_click=false;var hideMenu=function(){list.fadeOut(200)};$(window).mouseup(function(evt){if(!on_button){button.removeClass("buttondown");if(evt.target.tagName.toLowerCase()!="input"){list.fadeOut(200)}else{if(!set_click){set_click=true;$(evt.target).click(function(){list.css("margin-left","-9999px").show()})}}}on_button=false}).mousedown(function(){$(".tools_flyout:visible").fadeOut()});overlay.bind("mousedown",function(){if(!button.hasClass("buttondown")){button.addClass("buttondown").removeClass("buttonup");list.css("margin-left",0).show();if(!height){height=list.height()}list.css("height",0).animate({height:height},200);on_button=true;return false}else{button.removeClass("buttondown").addClass("buttonup");list.fadeOut(200)}}).hover(function(){on_button=true}).mouseout(function(){on_button=false});var list_items=$("#main_menu li");list_items.mouseover(function(){js_hover=($(this).css("background-color")=="rgba(0, 0, 0, 0)");list_items.unbind("mouseover");if(js_hover){list_items.mouseover(function(){this.style.backgroundColor="#FFC"}).mouseout(function(){this.style.backgroundColor="transparent";return true})}})}());var addDropDown=function(elem,callback,dropUp){var button=$(elem).find("button");var list=$(elem).find("ul");var on_button=false;if(dropUp){$(elem).addClass("dropup")}$(elem).find("li").bind("mouseup",callback);$(window).mouseup(function(evt){if(!on_button){button.removeClass("down");list.hide()}on_button=false});button.bind("mousedown",function(){if(!button.hasClass("down")){button.addClass("down");list.show();on_button=true}else{button.removeClass("down");list.hide()}}).hover(function(){on_button=true}).mouseout(function(){on_button=false})};var addAltDropDown=function(elem,list,callback,opts){var button=$(elem);var list=$(list);var on_button=false;var dropUp=opts.dropUp;if(dropUp){$(elem).addClass("dropup")}list.find("li").bind("mouseup",function(){if(opts.seticon){setIcon("#cur_"+button[0].id,$(this).children());$(this).addClass("current").siblings().removeClass("current")}callback.apply(this,arguments)});$(window).mouseup(function(evt){if(!on_button){button.removeClass("down");list.hide();list.css({top:0,left:0})}on_button=false});var height=list.height();$(elem).bind("mousedown",function(){var off=$(elem).offset();if(dropUp){off.top-=list.height();off.left+=8}else{off.top+=$(elem).height()}$(list).offset(off);if(!button.hasClass("down")){button.addClass("down");list.show();on_button=true;return false}else{button.removeClass("down");list.hide();list.css({top:0,left:0})}}).hover(function(){on_button=true}).mouseout(function(){on_button=false});if(opts.multiclick){list.mousedown(function(){on_button=true})}};addDropDown("#font_family_dropdown",function(){var fam=$(this).text();$("#font_family").val($(this).text()).change()});addDropDown("#opacity_dropdown",function(){if($(this).find("div").length){return}var perc=parseInt($(this).text().split("%")[0]);changeOpacity(false,perc)},true);$("#opac_slider").slider({start:function(){$("#opacity_dropdown li:not(.special)").hide()},stop:function(){$("#opacity_dropdown li").show();$(window).mouseup()},slide:function(evt,ui){changeOpacity(ui)}});addDropDown("#blur_dropdown",function(){});var slideStart=false;$("#blur_slider").slider({max:10,step:0.1,stop:function(evt,ui){slideStart=false;changeBlur(ui);$("#blur_dropdown li").show();$(window).mouseup()},start:function(){slideStart=true},slide:function(evt,ui){changeBlur(ui,null,slideStart)}});addDropDown("#zoom_dropdown",function(){var item=$(this);var val=item.attr("data-val");if(val){zoomChanged(window,val)}else{changeZoom({value:parseInt(item.text())})}},true);addAltDropDown("#stroke_linecap","#linecap_opts",function(){setStrokeOpt(this,true)},{dropUp:true});addAltDropDown("#stroke_linejoin","#linejoin_opts",function(){setStrokeOpt(this,true)},{dropUp:true});addAltDropDown("#tool_position","#position_opts",function(){var letter=this.id.replace("tool_pos","").charAt(0);svgCanvas.alignSelectedElements(letter,"page")},{multiclick:true});(function(){var inp;var unfocus=function(){$(inp).blur()};$("#svg_editor input:text:not(#text)").focus(function(){inp=this;workarea.mousedown(unfocus)}).blur(function(){workarea.unbind("mousedown",unfocus)})}());var clickSelect=function(){if(toolButtonClick("#tool_select")){svgCanvas.setMode("select");$("#styleoverrides").text("#svgcanvas svg *{cursor:move;pointer-events:all}, #svgcanvas svg{cursor:default}")}};var clickFHPath=function(){if(toolButtonClick("#tool_fhpath")){svgCanvas.setMode("fhpath")}};var clickLine=function(){if(toolButtonClick("#tool_line")){svgCanvas.setMode("line")}};var clickSquare=function(){svgCanvas.setMode("square")};var clickRect=function(){svgCanvas.setMode("rect")};var clickFHRect=function(){svgCanvas.setMode("fhrect")};var clickCircle=function(){svgCanvas.setMode("circle")};var clickEllipse=function(){svgCanvas.setMode("ellipse")};var clickFHEllipse=function(){svgCanvas.setMode("fhellipse")};var clickImage=function(){if(toolButtonClick("#tool_image")){svgCanvas.setMode("image")}};var clickZoom=function(){if(toolButtonClick("#tool_zoom")){workarea.css("cursor","crosshair");svgCanvas.setMode("zoom")}};var dblclickZoom=function(){if(toolButtonClick("#tool_zoom")){zoomImage();setSelectMode()}};var clickText=function(){toolButtonClick("#tool_text");svgCanvas.setMode("text")};var clickPath=function(){toolButtonClick("#tool_path");svgCanvas.setMode("path")};var deleteSelected=function(){if(selectedElement!=null||multiselected){svgCanvas.deleteSelectedElements()}};var moveToTopSelected=function(){if(selectedElement!=null){svgCanvas.moveToTopSelectedElement()}};var moveToBottomSelected=function(){if(selectedElement!=null){svgCanvas.moveToBottomSelectedElement()}};var convertToPath=function(){if(selectedElement!=null){svgCanvas.convertToPath()}};var reorientPath=function(){if(selectedElement!=null){path.reorient()}};var moveSelected=function(dx,dy){if(selectedElement!=null||multiselected){svgCanvas.moveSelectedElements(dx,dy)}};var linkControlPoints=function(){var linked=!$("#tool_node_link").hasClass("push_button_pressed");if(linked){$("#tool_node_link").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_node_link").removeClass("push_button_pressed").addClass("tool_button")}path.linkControlPoints(linked)};var clonePathNode=function(){if(path.getNodePoint()){path.clonePathNode()}};var deletePathNode=function(){if(path.getNodePoint()){path.deletePathNode()}};var addSubPath=function(){var button=$("#tool_add_subpath");var sp=!button.hasClass("push_button_pressed");if(sp){button.addClass("push_button_pressed").removeClass("tool_button")}else{button.removeClass("push_button_pressed").addClass("tool_button")}path.addSubPath(sp)};var opencloseSubPath=function(){path.opencloseSubPath()};var selectNext=function(){svgCanvas.cycleElement(1)};var selectPrev=function(){svgCanvas.cycleElement(0)};var rotateSelected=function(cw){if(selectedElement==null||multiselected){return}var step=5;if(!cw){step*=-1}var new_angle=$("#angle").val()*1+step;svgCanvas.setRotationAngle(new_angle);updateContextPanel()};var clickClear=function(){var dims=curConfig.dimensions;$.confirm(uiStrings.QwantToClear,function(ok){if(!ok){return}setSelectMode();svgCanvas.clear();svgCanvas.setResolution(dims[0],dims[1]);updateCanvas(true);zoomImage();populateLayers();updateContextPanel()})};var clickBold=function(){svgCanvas.setBold(!svgCanvas.getBold());updateContextPanel()};var clickItalic=function(){svgCanvas.setItalic(!svgCanvas.getItalic());updateContextPanel()};var clickSave=function(){var saveOpts={images:curPrefs.img_save,round_digits:6};svgCanvas.save(saveOpts)};var clickExport=function(){if(!customHandlers.pngsave){var str=uiStrings.loadingImage;exportWindow=window.open("data:text/html;charset=utf-8,<title>"+str+"</title><h1>"+str+"</h1>")}if(window.canvg){svgCanvas.rasterExport()}else{$.getScript("canvg/rgbcolor.js",function(){$.getScript("canvg/canvg.js",function(){svgCanvas.rasterExport()})})}};var clickOpen=function(){svgCanvas.open()};var clickImport=function(){};var clickUndo=function(){if(undoMgr.getUndoStackSize()>0){undoMgr.undo();populateLayers()}};var clickRedo=function(){if(undoMgr.getRedoStackSize()>0){undoMgr.redo();populateLayers()}};var clickGroup=function(){if(multiselected){svgCanvas.groupSelectedElements()}else{if(selectedElement&&selectedElement.tagName=="g"){svgCanvas.ungroupSelectedElement()}}};var clickClone=function(){svgCanvas.cloneSelectedElements()};var clickAlign=function(){var letter=this.id.replace("tool_align","").charAt(0);svgCanvas.alignSelectedElements(letter,$("#align_relative_to").val())};var zoomImage=function(multiplier){var res=svgCanvas.getResolution();multiplier=multiplier?res.zoom*multiplier:1;$("#zoom").val(multiplier*100);svgCanvas.setZoom(multiplier);zoomDone();updateCanvas(true)};var zoomDone=function(){updateWireFrame()};var clickWireframe=function(){var wf=!$("#tool_wireframe").hasClass("push_button_pressed");if(wf){$("#tool_wireframe").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_wireframe").removeClass("push_button_pressed").addClass("tool_button")}workarea.toggleClass("wireframe");if(supportsNonSS){return}var wf_rules=$("#wireframe_rules");if(!wf_rules.length){wf_rules=$('<style id="wireframe_rules"></style>').appendTo("head")}else{wf_rules.empty()}updateWireFrame()};var updateWireFrame=function(){if(supportsNonSS){return}var rule="#workarea.wireframe #svgcontent * { stroke-width: "+1/svgCanvas.getZoom()+"px; }";$("#wireframe_rules").text(workarea.hasClass("wireframe")?rule:"")};var showSourceEditor=function(){if(editingsource){return}editingsource=true;var str=svgCanvas.getSvgString();$("#svg_source_textarea").val(str);$("#svg_source_editor").fadeIn();properlySourceSizeTextArea();$("#svg_source_textarea").focus()};$("#svg_docprops_container").draggable({cancel:"button,fieldset"});var showDocProperties=function(){if(docprops){return}docprops=true;$("#image_save_opts input").val([curPrefs.img_save]);var res=svgCanvas.getResolution();$("#canvas_width").val(res.w);$("#canvas_height").val(res.h);$("#canvas_title").val(svgCanvas.getDocumentTitle());var blocks=$("#bg_blocks div");var cur_bg="cur_background";var canvas_bg=$.pref("bkgd_color");var url=$.pref("bkgd_url");blocks.each(function(){var blk=$(this);var is_bg=blk.css("background-color")==canvas_bg;blk.toggleClass(cur_bg,is_bg);if(is_bg){$("#canvas_bg_url").removeClass(cur_bg)}});if(!canvas_bg){blocks.eq(0).addClass(cur_bg)}if(url){$("#canvas_bg_url").val(url)}$("#svg_docprops").fadeIn()};var properlySourceSizeTextArea=function(){var height=$("#svg_source_container").height()-80;$("#svg_source_textarea").css("height",height)};var saveSourceEditor=function(){if(!editingsource){return}var saveChanges=function(){svgCanvas.clearSelection();hideSourceEditor();zoomImage();populateLayers();setTitle(svgCanvas.getDocumentTitle())};if(!svgCanvas.setSvgString($("#svg_source_textarea").val())){$.confirm(uiStrings.QerrorsRevertToSource,function(ok){if(!ok){return false}saveChanges()})}else{saveChanges()}setSelectMode()};var setTitle=function(title){var editor_title=$("title:first").text().split(":")[0];var new_title=editor_title+(title?": "+title:"");$("title:first").text(new_title)};var saveDocProperties=function(){var new_title=$("#canvas_title").val();setTitle(new_title);svgCanvas.setDocumentTitle(new_title);var width=$("#canvas_width"),w=width.val();var height=$("#canvas_height"),h=height.val();if(w!="fit"&&!svgCanvas.isValidUnit("width",w)){$.alert(uiStrings.invalidAttrValGiven);width.parent().addClass("error");return false}width.parent().removeClass("error");if(h!="fit"&&!svgCanvas.isValidUnit("height",h)){$.alert(uiStrings.invalidAttrValGiven);height.parent().addClass("error");return false}height.parent().removeClass("error");if(!svgCanvas.setResolution(w,h)){$.alert(uiStrings.noContentToFitTo);return false}curPrefs.img_save=$("#image_save_opts :checked").val();$.pref("img_save",curPrefs.img_save);var color=$("#bg_blocks div.cur_background").css("background-color")||"#FFF";setBackground(color,$("#canvas_bg_url").val());var lang=$("#lang_select").val();if(lang!=curPrefs.lang){Editor.putLocale(lang)}setIconSize($("#iconsize").val());updateCanvas();hideDocProperties()};function setBackground(color,url){$.pref("bkgd_color",color);$.pref("bkgd_url",url);svgCanvas.setBackground(color,url)}var setIcon=Editor.setIcon=function(elem,icon_id,forcedSize){var icon=(typeof icon_id=="string")?$.getSvgIcon(icon_id).clone():icon_id.clone();$(elem).empty().append(icon);if(forcedSize){var obj={};obj[elem+" .svg_icon"]=forcedSize;$.resizeSvgIcons(obj)}else{var size=curPrefs.iconsize;if(size&&size!=="m"){var icon_sizes={s:16,m:24,l:32,xl:48},obj={};obj[elem+" .svg_icon"]=icon_sizes[size];$.resizeSvgIcons(obj)}}};var setIconSize=Editor.setIconSize=function(size,force){if(size==curPrefs.size&&!force){return}$.pref("iconsize",size);$("#iconsize").val(size);var icon_sizes={s:16,m:24,l:32,xl:48};var size_num=icon_sizes[size];$(".tool_button, .push_button, .tool_button_current, .disabled, .icon_label, #url_notice, #tool_open").find("> svg, > img").each(function(){this.setAttribute("width",size_num);this.setAttribute("height",size_num)});$.resizeSvgIcons({".flyout_arrow_horiz > svg, .flyout_arrow_horiz > img":size_num/5,"#logo > svg, #logo > img":size_num*1.3,"#tools_bottom .icon_label > *":(size_num===16?18:size_num*0.75)});if(size!="s"){$.resizeSvgIcons({"#layerbuttons svg, #layerbuttons img":size_num*0.6})}var cssResizeRules={".tool_button, .push_button, .tool_button_current, .push_button_pressed, .disabled, .icon_label, .tools_flyout .tool_button":{width:{s:"16px",l:"32px",xl:"48px"},height:{s:"16px",l:"32px",xl:"48px"},padding:{s:"1px",l:"2px",xl:"3px"}},".tool_sep":{height:{s:"16px",l:"32px",xl:"48px"},margin:{s:"2px 2px",l:"2px 5px",xl:"2px 8px"}},"#main_icon":{width:{s:"31px",l:"53px",xl:"75px"},height:{s:"22px",l:"42px",xl:"64px"}},"#tools_top":{left:{s:"36px",l:"60px",xl:"80px"},height:{s:"50px",l:"88px",xl:"125px"}},"#tools_left":{width:{s:"22px",l:"30px",xl:"38px"},top:{s:"50px",l:"87px",xl:"125px"}},"div#workarea":{left:{s:"27px",l:"46px",xl:"65px"},top:{s:"50px",l:"88px",xl:"125px"},bottom:{s:"55px",l:"98px",xl:"145px"}},"#tools_bottom":{left:{s:"27px",l:"46px",xl:"65px"},height:{s:"58px",l:"98px",xl:"145px"}},"#color_tools":{"border-spacing":{s:"0 1px"},"margin-top":{s:"-1px"}},"#color_tools .icon_label":{width:{l:"43px",xl:"60px"}},".color_tool":{height:{s:"20px"}},"#tool_opacity":{top:{s:"1px"},height:{s:"auto",l:"auto",xl:"auto"}},"#tools_top input, #tools_bottom input":{"margin-top":{s:"2px",l:"4px",xl:"5px"},height:{s:"auto",l:"auto",xl:"auto"},border:{s:"1px solid #555",l:"auto",xl:"auto"},"font-size":{s:".9em",l:"1.2em",xl:"1.4em"}},"#zoom_panel":{"margin-top":{s:"3px",l:"4px",xl:"5px"}},"#copyright, #tools_bottom .label":{"font-size":{l:"1.5em",xl:"2em"},"line-height":{s:"15px"}},"#tools_bottom_2":{width:{l:"295px",xl:"355px"},top:{s:"4px"}},"#tools_top > div, #tools_top":{"line-height":{s:"17px",l:"34px",xl:"50px"}},".dropdown button":{height:{s:"18px",l:"34px",xl:"40px"},"line-height":{s:"18px",l:"34px",xl:"40px"},"margin-top":{s:"3px"}},"#tools_top label, #tools_bottom label":{"font-size":{s:"1em",l:"1.5em",xl:"2em"},height:{s:"25px",l:"42px",xl:"64px"}},"div.toolset":{height:{s:"25px",l:"42px",xl:"64px"}},"#tool_bold, #tool_italic":{"font-size":{s:"1.5em",l:"3em",xl:"4.5em"}},"#sidepanels":{top:{s:"50px",l:"88px",xl:"125px"},bottom:{s:"51px",l:"68px",xl:"65px"}},"#layerbuttons":{width:{l:"130px",xl:"175px"},height:{l:"24px",xl:"30px"}},"#layerlist":{width:{l:"128px",xl:"150px"}},".layer_button":{width:{l:"19px",xl:"28px"},height:{l:"19px",xl:"28px"}},"input.spin-button":{"background-image":{l:"url('images/spinbtn_updn_big.png')",xl:"url('images/spinbtn_updn_big.png')"},"background-position":{l:"100% -5px",xl:"100% -2px"},"padding-right":{l:"24px",xl:"24px"}},"input.spin-button.up":{"background-position":{l:"100% -45px",xl:"100% -42px"}},"input.spin-button.down":{"background-position":{l:"100% -85px",xl:"100% -82px"}},"#position_opts":{width:{all:(size_num*4)+"px"}}};var rule_elem=$("#tool_size_rules");if(!rule_elem.length){rule_elem=$('<style id="tool_size_rules"></style>').appendTo("head")}else{rule_elem.empty()}if(size!="m"){var style_str="";$.each(cssResizeRules,function(selector,rules){selector="#svg_editor "+selector.replace(/,/g,", #svg_editor");style_str+=selector+"{";$.each(rules,function(prop,values){if(values[size]||values.all){style_str+=(prop+":"+(values[size]||values.all)+";")}});style_str+="}"});rule_elem.text(style_str)}setFlyoutPositions()};var cancelOverlays=function(){$("#dialog_box").hide();if(!editingsource&&!docprops){return}if(editingsource){var oldString=svgCanvas.getSvgString();if(oldString!=$("#svg_source_textarea").val()){$.confirm(uiStrings.QignoreSourceChanges,function(ok){if(ok){hideSourceEditor()}})}else{hideSourceEditor()}}else{if(docprops){hideDocProperties()}}};var hideSourceEditor=function(){$("#svg_source_editor").hide();editingsource=false;$("#svg_source_textarea").blur()};var hideDocProperties=function(){$("#svg_docprops").hide();$("#canvas_width,#canvas_height").removeAttr("disabled");$("#resolution")[0].selectedIndex=0;$("#image_save_opts input").val([curPrefs.img_save]);docprops=false};var win_wh={width:$(window).width(),height:$(window).height()};$(window).resize(function(evt){if(editingsource){properlySourceSizeTextArea()}$.each(win_wh,function(type,val){var curval=$(window)[type]();workarea[0]["scroll"+(type==="width"?"Left":"Top")]-=(curval-val)/2;win_wh[type]=curval})});$("#url_notice").click(function(){$.alert(this.title)});$("#change_image_url").click(promptImgURL);function promptImgURL(){$.prompt(uiStrings.enterNewImgURL,default_img_url,function(url){if(url){setImageURL(url)}})}function setImageURL(url){if(!url){url=default_img_url}svgCanvas.setImageURL(url);$("#image_url").val(url);if(url.indexOf("data:")===0){$("#image_url").hide();$("#change_image_url").show()}else{svgCanvas.embedImage(url,function(datauri){if(!datauri){$("#url_notice").show()}else{$("#url_notice").hide()}default_img_url=url});$("#image_url").show();$("#change_image_url").hide()}}(function(){var toolnames=["clear","open","save","source","delete","delete_multi","paste","clone","clone_multi","move_top","move_bottom"];var all_tools="";var cur_class="tool_button_current";$.each(toolnames,function(i,item){all_tools+="#tool_"+item+(i==toolnames.length-1?",":"")});$(all_tools).mousedown(function(){$(this).addClass(cur_class)}).bind("mousedown mouseout",function(){$(this).removeClass(cur_class)});$("#tool_undo, #tool_redo").mousedown(function(){if(!$(this).hasClass("disabled")){$(this).addClass(cur_class)}}).bind("mousedown mouseout",function(){$(this).removeClass(cur_class)})}());if(isMac){var shortcutButtons=["tool_clear","tool_save","tool_source","tool_undo","tool_redo","tool_clone"];var i=shortcutButtons.length;while(i--){var button=document.getElementById(shortcutButtons[i]);var title=button.title;var index=title.indexOf("Ctrl+");button.title=[title.substr(0,index),"Cmd+",title.substr(index+5)].join("")}}var colorPicker=function(elem){var picker=elem.attr("id")=="stroke_color"?"stroke":"fill";var paint=(picker=="stroke"?strokePaint:fillPaint);var title=(picker=="stroke"?"Pick a Stroke Paint and Opacity":"Pick a Fill Paint and Opacity");var was_none=false;var pos=elem.position();$("#color_picker").draggable({cancel:".jPicker_table,.jGraduate_lgPick,.jGraduate_rgPick"}).css({left:pos.left,bottom:50-pos.top}).jGraduate({paint:paint,window:{pickerTitle:title},images:{clientPath:"jgraduate/images/"}},function(p){paint=new $.jGraduate.Paint(p);var oldgrad=document.getElementById("gradbox_"+picker);var svgbox=oldgrad.parentNode;var rectbox=svgbox.firstChild;if(paint.type=="linearGradient"||paint.type=="radialGradient"){svgbox.removeChild(oldgrad);var newgrad=svgbox.appendChild(document.importNode(paint[paint.type],true));newgrad.id="gradbox_"+picker;rectbox.setAttribute("fill","url(#gradbox_"+picker+")");rectbox.setAttribute("opacity",paint.alpha/100)}else{rectbox.setAttribute("fill",paint.solidColor!="none"?"#"+paint.solidColor:"none");rectbox.setAttribute("opacity",paint.alpha/100)}if(picker=="stroke"){svgCanvas.setPaint("stroke",paint);strokePaint=paint}else{svgCanvas.setPaint("fill",paint);fillPaint=paint}updateToolbar();$("#color_picker").hide()},function(p){$("#color_picker").hide()})};var updateToolButtonState=function(){var bNoFill=(svgCanvas.getColor("fill")=="none");var bNoStroke=(svgCanvas.getColor("stroke")=="none");var buttonsNeedingStroke=["#tool_fhpath","#tool_line"];var buttonsNeedingFillAndStroke=["#tools_rect .tool_button","#tools_ellipse .tool_button","#tool_text","#tool_path"];if(bNoStroke){for(index in buttonsNeedingStroke){var button=buttonsNeedingStroke[index];if($(button).hasClass("tool_button_current")){clickSelect()}$(button).addClass("disabled")}}else{for(index in buttonsNeedingStroke){var button=buttonsNeedingStroke[index];$(button).removeClass("disabled")}}if(bNoStroke&&bNoFill){for(index in buttonsNeedingFillAndStroke){var button=buttonsNeedingFillAndStroke[index];if($(button).hasClass("tool_button_current")){clickSelect()}$(button).addClass("disabled")}}else{for(index in buttonsNeedingFillAndStroke){var button=buttonsNeedingFillAndStroke[index];$(button).removeClass("disabled")}}svgCanvas.runExtensions("toolButtonStateUpdate",{nofill:bNoFill,nostroke:bNoStroke});$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var has_enabled=false;$(this).children().each(function(){if(!$(this).hasClass("disabled")){has_enabled=true}});shower.toggleClass("disabled",!has_enabled)});operaRepaint()};var svgdocbox=new DOMParser().parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="#'+curConfig.initFill.color+'" opacity="'+curConfig.initFill.opacity+'"/> <linearGradient id="gradbox_"> <stop stop-color="#000" offset="0.0"/> <stop stop-color="#FF0000" offset="1.0"/> </linearGradient></svg>',"text/xml");var boxgrad=svgdocbox.getElementById("gradbox_");boxgrad.id="gradbox_fill";svgdocbox.documentElement.setAttribute("width",16.5);$("#fill_color").append(document.importNode(svgdocbox.documentElement,true));boxgrad.id="gradbox_stroke";svgdocbox.documentElement.setAttribute("width",16.5);$("#stroke_color").append(document.importNode(svgdocbox.documentElement,true));$("#stroke_color rect").attr({fill:"#"+curConfig.initStroke.color,opacity:curConfig.initStroke.opacity});$("#stroke_width").val(curConfig.initStroke.width);$("#group_opacity").val(curConfig.initOpacity*100);var test_el=svgdocbox.documentElement.firstChild;test_el.setAttribute("style","vector-effect:non-scaling-stroke");var supportsNonSS=(test_el.style.vectorEffect=="non-scaling-stroke");test_el.removeAttribute("style");var blur_test=svgdocbox.createElementNS("http://www.w3.org/2000/svg","feGaussianBlur");if(typeof blur_test.stdDeviationX==="undefined"){$("#tool_blur").hide()}$(blur_test).remove();setTimeout(function(){svgCanvas.embedImage("images/logo.png",function(datauri){if(!datauri){$("#image_save_opts [value=embed]").attr("disabled","disabled");$("#image_save_opts input").val(["ref"]);curPrefs.img_save="ref";$("#image_opt_embed").css("color","#666").attr("title",uiStrings.featNotSupported)}})},1000);$("#fill_color, #tool_fill .icon_label").click(function(){colorPicker($("#fill_color"));updateToolButtonState()});$("#stroke_color, #tool_stroke .icon_label").click(function(){colorPicker($("#stroke_color"));updateToolButtonState()});$("#group_opacityLabel").click(function(){$("#opacity_dropdown button").mousedown();$(window).mouseup()});$("#zoomLabel").click(function(){$("#zoom_dropdown button").mousedown();$(window).mouseup()});$("#tool_move_top").mousedown(function(evt){$("#tools_stacking").show();evt.preventDefault()});$(".layer_button").mousedown(function(){$(this).addClass("layer_buttonpressed")}).mouseout(function(){$(this).removeClass("layer_buttonpressed")}).mouseup(function(){$(this).removeClass("layer_buttonpressed")});$(".push_button").mousedown(function(){if(!$(this).hasClass("disabled")){$(this).addClass("push_button_pressed").removeClass("push_button")}}).mouseout(function(){$(this).removeClass("push_button_pressed").addClass("push_button")}).mouseup(function(){$(this).removeClass("push_button_pressed").addClass("push_button")});$("#layer_new").click(function(){var curNames=new Array(svgCanvas.getNumLayers());for(var i=0;i<curNames.length;++i){curNames[i]=svgCanvas.getLayer(i)}var j=(curNames.length+1);var uniqName=uiStrings.layer+" "+j;while($.inArray(uniqName,curNames)!=-1){j++;uniqName=uiStrings.layer+" "+j}$.prompt(uiStrings.enterUniqueLayerName,uniqName,function(newName){if(!newName){return}if($.inArray(newName,curNames)!=-1){$.alert(uiStrings.dupeLayerName);return}svgCanvas.createLayer(newName);updateContextPanel();populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:first").addClass("layersel")})});$("#layer_delete").click(function(){if(svgCanvas.deleteCurrentLayer()){updateContextPanel();populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:first").addClass("layersel")}});$("#layer_up").click(function(){var curIndex=$("#layerlist tr.layersel").prevAll().length;if(curIndex>0){var total=$("#layerlist tr.layer").length;curIndex--;svgCanvas.setCurrentLayerPosition(total-curIndex-1);populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:eq("+curIndex+")").addClass("layersel")}});$("#layer_down").click(function(){var curIndex=$("#layerlist tr.layersel").prevAll().length;var total=$("#layerlist tr.layer").length;if(curIndex<total-1){curIndex++;svgCanvas.setCurrentLayerPosition(total-curIndex-1);populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:eq("+curIndex+")").addClass("layersel")}});$("#layer_rename").click(function(){var curIndex=$("#layerlist tr.layersel").prevAll().length;var oldName=$("#layerlist tr.layersel td.layername").text();$.prompt(uiStrings.enterNewLayerName,"",function(newName){if(!newName){return}if(oldName==newName){$.alert(uiStrings.layerHasThatName);return}var curNames=new Array(svgCanvas.getNumLayers());for(var i=0;i<curNames.length;++i){curNames[i]=svgCanvas.getLayer(i)}if($.inArray(newName,curNames)!=-1){$.alert(uiStrings.layerHasThatName);return}svgCanvas.renameCurrentLayer(newName);populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:eq("+curIndex+")").addClass("layersel")})});var SIDEPANEL_MAXWIDTH=300;var SIDEPANEL_OPENWIDTH=150;var sidedrag=-1,sidedragging=false,allowmove=false;var resizePanel=function(evt){if(!allowmove){return}if(sidedrag==-1){return}sidedragging=true;var deltax=sidedrag-evt.pageX;var sidepanels=$("#sidepanels");var sidewidth=parseInt(sidepanels.css("width"));if(sidewidth+deltax>SIDEPANEL_MAXWIDTH){deltax=SIDEPANEL_MAXWIDTH-sidewidth;sidewidth=SIDEPANEL_MAXWIDTH}else{if(sidewidth+deltax<2){deltax=2-sidewidth;sidewidth=2}}if(deltax==0){return}sidedrag-=deltax;var layerpanel=$("#layerpanel");workarea.css("right",parseInt(workarea.css("right"))+deltax);sidepanels.css("width",parseInt(sidepanels.css("width"))+deltax);layerpanel.css("width",parseInt(layerpanel.css("width"))+deltax)};$("#sidepanel_handle").mousedown(function(evt){sidedrag=evt.pageX;$(window).mousemove(resizePanel);allowmove=false;setTimeout(function(){allowmove=true},20)}).mouseup(function(evt){if(!sidedragging){toggleSidePanel()}sidedrag=-1;sidedragging=false});$(window).mouseup(function(){sidedrag=-1;sidedragging=false;$("#svg_editor").unbind("mousemove",resizePanel)});var toggleSidePanel=function(close){var w=parseInt($("#sidepanels").css("width"));var deltax=(w>2||close?2:SIDEPANEL_OPENWIDTH)-w;var sidepanels=$("#sidepanels");var layerpanel=$("#layerpanel");workarea.css("right",parseInt(workarea.css("right"))+deltax);sidepanels.css("width",parseInt(sidepanels.css("width"))+deltax);layerpanel.css("width",parseInt(layerpanel.css("width"))+deltax)};var toggleHighlightLayer=function(layerNameToHighlight){var curNames=new Array(svgCanvas.getNumLayers());for(var i=0;i<curNames.length;++i){curNames[i]=svgCanvas.getLayer(i)}if(layerNameToHighlight){for(var i=0;i<curNames.length;++i){if(curNames[i]!=layerNameToHighlight){svgCanvas.setLayerOpacity(curNames[i],0.5)}}}else{for(var i=0;i<curNames.length;++i){svgCanvas.setLayerOpacity(curNames[i],1)}}};var populateLayers=function(){var layerlist=$("#layerlist tbody");var selLayerNames=$("#selLayerNames");layerlist.empty();selLayerNames.empty();var currentlayer=svgCanvas.getCurrentLayer();var layer=svgCanvas.getNumLayers();var icon=$.getSvgIcon("eye");while(layer--){var name=svgCanvas.getLayer(layer);var appendstr='<tr class="layer';if(name==currentlayer){appendstr+=" layersel"}appendstr+='">';if(svgCanvas.getLayerVisibility(name)){appendstr+='<td class="layervis"/><td class="layername" >'+name+"</td></tr>"}else{appendstr+='<td class="layervis layerinvis"/><td class="layername" >'+name+"</td></tr>"}layerlist.append(appendstr);selLayerNames.append('<option value="'+name+'">'+name+"</option>")}if(icon!==undefined){var copy=icon.clone();$("td.layervis",layerlist).append(icon.clone());$.resizeSvgIcons({"td.layervis .svg_icon":14})}$("#layerlist td.layername").click(function(evt){$("#layerlist tr.layer").removeClass("layersel");var row=$(this.parentNode);row.addClass("layersel");svgCanvas.setCurrentLayer(this.textContent);evt.preventDefault()}).mouseover(function(evt){$(this).css({"font-style":"italic",color:"blue"});toggleHighlightLayer(this.textContent)}).mouseout(function(evt){$(this).css({"font-style":"normal",color:"black"});toggleHighlightLayer()});$("#layerlist td.layervis").click(function(evt){var row=$(this.parentNode).prevAll().length;var name=$("#layerlist tr.layer:eq("+row+") td.layername").text();var vis=$(this).hasClass("layerinvis");svgCanvas.setLayerVisibility(name,vis);if(vis){$(this).removeClass("layerinvis")}else{$(this).addClass("layerinvis")}});var num=5-$("#layerlist tr.layer").size();while(num-->0){layerlist.append('<tr><td style="color:white">_</td><td/></tr>')}};populateLayers();var centerCanvas=function(){workarea.css("line-height",workarea.height()+"px")};$(window).bind("load resize",centerCanvas);function stepFontSize(elem,step){var orig_val=elem.value-0;var sug_val=orig_val+step;var increasing=sug_val>=orig_val;if(step===0){return orig_val}if(orig_val>=24){if(increasing){return Math.round(orig_val*1.1)}else{return Math.round(orig_val/1.1)}}else{if(orig_val<=1){if(increasing){return orig_val*2}else{return orig_val/2}}else{return sug_val}}}function stepZoom(elem,step){var orig_val=elem.value-0;if(orig_val===0){return 100}var sug_val=orig_val+step;if(step===0){return orig_val}if(orig_val>=100){return sug_val}else{if(sug_val>=orig_val){return orig_val*2}else{return orig_val/2}}}$("#resolution").change(function(){var wh=$("#canvas_width,#canvas_height");if(!this.selectedIndex){if($("#canvas_width").val()=="fit"){wh.removeAttr("disabled").val(100)}}else{if(this.value=="content"){wh.val("fit").attr("disabled","disabled")}else{var dims=this.value.split("x");$("#canvas_width").val(dims[0]);$("#canvas_height").val(dims[1]);wh.removeAttr("disabled")}}});$("input,select").attr("autocomplete","off");var Actions=function(){var tool_buttons=[{sel:"#tool_select",fn:clickSelect,evt:"click",key:1},{sel:"#tool_fhpath",fn:clickFHPath,evt:"click",key:2},{sel:"#tool_line",fn:clickLine,evt:"click",key:3},{sel:"#tool_rect",fn:clickRect,evt:"mouseup",key:4,parent:"#tools_rect",icon:"rect"},{sel:"#tool_square",fn:clickSquare,evt:"mouseup",key:"Shift+4",parent:"#tools_rect",icon:"square"},{sel:"#tool_fhrect",fn:clickFHRect,evt:"mouseup",parent:"#tools_rect",icon:"fh_rect"},{sel:"#tool_ellipse",fn:clickEllipse,evt:"mouseup",key:5,parent:"#tools_ellipse",icon:"ellipse"},{sel:"#tool_circle",fn:clickCircle,evt:"mouseup",key:"Shift+5",parent:"#tools_ellipse",icon:"circle"},{sel:"#tool_fhellipse",fn:clickFHEllipse,evt:"mouseup",parent:"#tools_ellipse",icon:"fh_ellipse"},{sel:"#tool_path",fn:clickPath,evt:"click",key:6},{sel:"#tool_text",fn:clickText,evt:"click",key:7},{sel:"#tool_image",fn:clickImage,evt:"mouseup",key:8},{sel:"#tool_zoom",fn:clickZoom,evt:"mouseup",key:9},{sel:"#tool_clear",fn:clickClear,evt:"mouseup",key:[modKey+"N",true]},{sel:"#tool_save",fn:function(){editingsource?saveSourceEditor():clickSave()},evt:"mouseup",key:[modKey+"S",true]},{sel:"#tool_export",fn:clickExport,evt:"mouseup"},{sel:"#tool_open",fn:clickOpen,evt:"mouseup",key:[modKey+"O",true]},{sel:"#tool_import",fn:clickImport,evt:"mouseup"},{sel:"#tool_source",fn:showSourceEditor,evt:"click",key:["U",true]},{sel:"#tool_wireframe",fn:clickWireframe,evt:"click",key:["F",true]},{sel:"#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel",fn:cancelOverlays,evt:"click",key:["esc",false,false],hidekey:true},{sel:"#tool_source_save",fn:saveSourceEditor,evt:"click"},{sel:"#tool_docprops_save",fn:saveDocProperties,evt:"click"},{sel:"#tool_docprops",fn:showDocProperties,evt:"mouseup",key:["P",true]},{sel:"#tool_delete,#tool_delete_multi",fn:deleteSelected,evt:"click",key:["del/backspace",true]},{sel:"#tool_reorient",fn:reorientPath,evt:"click"},{sel:"#tool_node_link",fn:linkControlPoints,evt:"click"},{sel:"#tool_node_clone",fn:clonePathNode,evt:"click"},{sel:"#tool_node_delete",fn:deletePathNode,evt:"click"},{sel:"#tool_openclose_path",fn:opencloseSubPath,evt:"click"},{sel:"#tool_add_subpath",fn:addSubPath,evt:"click"},{sel:"#tool_move_top",fn:moveToTopSelected,evt:"click",key:"shift+up"},{sel:"#tool_move_bottom",fn:moveToBottomSelected,evt:"click",key:"shift+down"},{sel:"#tool_topath",fn:convertToPath,evt:"click"},{sel:"#tool_undo",fn:clickUndo,evt:"click",key:[modKey+"Z",true]},{sel:"#tool_redo",fn:clickRedo,evt:"click",key:[modKey+"Y",true]},{sel:"#tool_clone,#tool_clone_multi",fn:clickClone,evt:"click",key:[modKey+"C",true]},{sel:"#tool_group",fn:clickGroup,evt:"click",key:[modKey+"G",true]},{sel:"#tool_ungroup",fn:clickGroup,evt:"click"},{sel:"[id^=tool_align]",fn:clickAlign,evt:"click"},{sel:"#tool_bold",fn:clickBold,evt:"mousedown"},{sel:"#tool_italic",fn:clickItalic,evt:"mousedown"},{sel:"#sidepanel_handle",fn:toggleSidePanel,key:[modKey+"X"]},{key:"shift+left",fn:function(){rotateSelected(0)}},{key:"shift+right",fn:function(){rotateSelected(1)}},{key:"shift+O",fn:selectPrev},{key:"shift+P",fn:selectNext},{key:["ctrl+up",true],fn:function(){zoomImage(2)}},{key:["ctrl+down",true],fn:function(){zoomImage(0.5)}},{key:["up",true],fn:function(){moveSelected(0,-1)}},{key:["down",true],fn:function(){moveSelected(0,1)}},{key:["left",true],fn:function(){moveSelected(-1,0)}},{key:["right",true],fn:function(){moveSelected(1,0)}},{key:"A",fn:function(){svgCanvas.selectAllInCurrentLayer()}}];var key_assocs={"4/Shift+4":"#tools_rect_show","5/Shift+5":"#tools_ellipse_show"};return{setAll:function(){var flyouts={};$.each(tool_buttons,function(i,opts){if(opts.sel){var btn=$(opts.sel);if(opts.evt){btn[opts.evt](opts.fn)}if(opts.parent){var f_h=$(opts.parent);if(!f_h.length){f_h=makeFlyoutHolder(opts.parent.substr(1))}f_h.append(btn);if(!$.isArray(flyouts[opts.parent])){flyouts[opts.parent]=[]}flyouts[opts.parent].push(opts)}}if(opts.key){var keyval,shortcut="",disInInp=true,fn=opts.fn,pd=false;if($.isArray(opts.key)){keyval=opts.key[0];if(opts.key.length>1){pd=opts.key[1]}if(opts.key.length>2){disInInp=opts.key[2]}}else{keyval=opts.key}keyval+="";$.each(keyval.split("/"),function(i,key){$(document).bind("keydown",key,function(e){fn();if(pd){e.preventDefault()}return false})});if(opts.sel&&!opts.hidekey){var new_title=btn.attr("title").split("[")[0]+"["+keyval+"]";key_assocs[keyval]=opts.sel;if(!btn.parents("#main_menu").length){btn.attr("title",new_title)}}}});setupFlyouts(flyouts);$(".attr_changer, #image_url").bind("keydown","return",function(evt){$(this).change();evt.preventDefault()});$("#tool_zoom").dblclick(dblclickZoom)},setTitles:function(){$.each(key_assocs,function(keyval,sel){var menu=($(sel).parents("#main_menu").length);$(sel).each(function(){if(menu){var t=$(this).text().split(" [")[0]}else{var t=this.title.split(" [")[0]}var key_str="";$.each(keyval.split("/"),function(i,key){var mod_bits=key.split("+"),mod="";if(mod_bits.length>1){mod=mod_bits[0]+"+";key=mod_bits[1]}key_str+=(i?"/":"")+mod+(uiStrings["key_"+key]||key)});if(menu){this.lastChild.textContent=t+" ["+key_str+"]"}else{this.title=t+" ["+key_str+"]"}})})},getButtonData:function(sel){var b;$.each(tool_buttons,function(i,btn){if(btn.sel===sel){b=btn}});return b}}}();Actions.setAll();Editor.ready(function(){var itool=curConfig.initTool,container=$("#tools_left, #svg_editor .tools_flyout"),pre_tool=container.find("#tool_"+itool),reg_tool=container.find("#"+itool);if(pre_tool.length){tool=pre_tool}else{if(reg_tool.length){tool=reg_tool}else{tool=$("#tool_select")}}tool.click().mouseup();if(curConfig.wireframe){$("#tool_wireframe").click()}if(curConfig.showlayers){toggleSidePanel()}});$("#rect_rx").SpinButton({min:0,max:1000,step:1,callback:changeRectRadius});$("#stroke_width").SpinButton({min:0,max:99,step:1,smallStep:0.1,callback:changeStrokeWidth});$("#angle").SpinButton({min:-180,max:180,step:5,callback:changeRotationAngle});$("#font_size").SpinButton({step:1,min:0.001,stepfunc:stepFontSize,callback:changeFontSize});$("#group_opacity").SpinButton({step:5,min:0,max:100,callback:changeOpacity});$("#blur").SpinButton({step:0.1,min:0,max:10,callback:changeBlur});$("#zoom").SpinButton({min:0.001,max:10000,step:50,stepfunc:stepZoom,callback:changeZoom});window.onbeforeunload=function(){if(undoMgr.getUndoStackSize()===0){show_save_warning=false}if(!curConfig.no_save_warning&&show_save_warning){return"There are unsaved changes."}};Editor.openPrep=function(func){$("#main_menu").hide();if(undoMgr.getUndoStackSize()===0){func(true)}else{$.confirm(uiStrings.QwantToOpen,func)}};if(window.FileReader){var inp=$('<input type="file">').change(function(){var f=this;Editor.openPrep(function(ok){if(!ok){return}svgCanvas.clear();if(f.files.length==1){var reader=new FileReader();reader.onloadend=function(e){svgCanvas.setSvgString(e.target.result);updateCanvas()};reader.readAsText(f.files[0])}})});$("#tool_open").show().prepend(inp);var inp2=$('<input type="file">').change(function(){$("#main_menu").hide();if(this.files.length==1){var reader=new FileReader();reader.onloadend=function(e){svgCanvas.importSvgString(e.target.result);updateCanvas()};reader.readAsText(this.files[0])}});$("#tool_import").show().prepend(inp2)}var updateCanvas=Editor.updateCanvas=function(center,new_ctr){var w=workarea.width(),h=workarea.height();var w_orig=w,h_orig=h;var zoom=svgCanvas.getZoom();var w_area=workarea;var cnvs=$("#svgcanvas");var old_ctr={x:w_area[0].scrollLeft+w_orig/2,y:w_area[0].scrollTop+h_orig/2};var multi=curConfig.canvas_expansion;w=Math.max(w_orig,svgCanvas.contentW*zoom*multi);h=Math.max(h_orig,svgCanvas.contentH*zoom*multi);if(w==w_orig&&h==h_orig){workarea.css("overflow","hidden")}else{workarea.css("overflow","scroll")}var old_can_y=cnvs.height()/2;var old_can_x=cnvs.width()/2;cnvs.width(w).height(h);var new_can_y=h/2;var new_can_x=w/2;var offset=svgCanvas.updateCanvas(w,h);var ratio=new_can_x/old_can_x;var scroll_x=w/2-w_orig/2;var scroll_y=h/2-h_orig/2;if(!new_ctr){var old_dist_x=old_ctr.x-old_can_x;var new_x=new_can_x+old_dist_x*ratio;var old_dist_y=old_ctr.y-old_can_y;var new_y=new_can_y+old_dist_y*ratio;new_ctr={x:new_x,y:new_y}}else{new_ctr.x+=offset.x,new_ctr.y+=offset.y}if(center){w_area[0].scrollLeft=scroll_x;w_area[0].scrollTop=scroll_y}else{w_area[0].scrollLeft=new_ctr.x-w_orig/2;w_area[0].scrollTop=new_ctr.y-h_orig/2}};updateCanvas(true);var good_langs=[];$("#lang_select option").each(function(){good_langs.push(this.value)});Editor.putLocale(null,good_langs);try{json_encode=function(obj){if(window.JSON&&JSON.stringify){return JSON.stringify(obj)}var enc=arguments.callee;if(typeof obj=="boolean"||typeof obj=="number"){return obj+""}else{if(typeof obj=="string"){return'"'+obj.replace(/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'}else{if(obj.length){for(var i=0;i<obj.length;i++){obj[i]=enc(obj[i])}return"["+obj.join(",")+"]"}else{var pairs=[];for(var k in obj){pairs.push(enc(k)+":"+enc(obj[k]))}return"{"+pairs.join(",")+"}"}}}};window.addEventListener("message",function(e){var cbid=parseInt(e.data.substr(0,e.data.indexOf(";")));try{e.source.postMessage("SVGe"+cbid+";"+json_encode(eval(e.data)),e.origin)}catch(err){e.source.postMessage("SVGe"+cbid+";error:"+err.message,e.origin)}},false)}catch(err){window.embed_error=err}$(function(){window.svgCanvas=svgCanvas;svgCanvas.ready=svgEditor.ready});Editor.setLang=function(lang,strings){$.pref("lang",lang);$("#lang_select").val(lang);if(strings){var oldLayerName=$("#layerlist tr.layersel td.layername").text();var rename_layer=(oldLayerName==uiStrings.layer+" 1");$.extend(uiStrings,strings);svgCanvas.setUiStrings(strings);Actions.setTitles();if(rename_layer){svgCanvas.renameCurrentLayer(uiStrings.layer+" 1");populateLayers()}svgCanvas.runExtensions("langChanged",lang);setFlyoutTitles();var elems={"#stroke_color":"#tool_stroke .icon_label, #tool_stroke .color_block","#fill_color":"#tool_fill label, #tool_fill .color_block","#linejoin_miter":"#cur_linejoin","#linecap_butt":"#cur_linecap"};$.each(elems,function(source,dest){$(dest).attr("title",$(source)[0].title)});$("#multiselected_panel div[id^=tool_align]").each(function(){$("#tool_pos"+this.id.substr(10))[0].title=this.title})}}};var callbacks=[];Editor.ready=function(cb){if(!is_ready){callbacks.push(cb)}else{cb()}};Editor.runCallbacks=function(){$.each(callbacks,function(){this()});is_ready=true};Editor.loadFromString=function(str){Editor.ready(function(){svgCanvas.setSvgString(str)})};Editor.loadFromURL=function(url){Editor.ready(function(){$.ajax({url:url,dataType:"text",success:svgCanvas.setSvgString,error:function(xhr,stat,err){if(xhr.responseText){svgCanvas.setSvgString(xhr.responseText)}else{$.alert("Unable to load from URL. Error: \n"+err+"")}}})})};Editor.loadFromDataURI=function(str){Editor.ready(function(){svgCanvas.setSvgString(str);var pre="data:image/svg+xml;base64,";var src=str.substring(pre.length);svgCanvas.setSvgString(Utils.decode64(src))})};Editor.addExtension=function(){var args=arguments;$(function(){svgCanvas.addExtension.apply(this,args)})};return Editor}(jQuery)}$(svgEditor.init)})();
\ No newline at end of file diff --git a/files_svgedit/js/svgcanvas.js b/files_svgedit/js/svgcanvas.js deleted file mode 100644 index dfd6c10e2..000000000 --- a/files_svgedit/js/svgcanvas.js +++ /dev/null @@ -1,10320 +0,0 @@ -/* - * svgcanvas.js - * - * Licensed under the Apache License, Version 2 - * - * Copyright(c) 2010 Alexis Deveria - * Copyright(c) 2010 Pavol Rusnak - * Copyright(c) 2010 Jeff Schiller - * - */ - -if(!window.console) { - window.console = {}; - window.console.log = function(str) {}; - window.console.dir = function(str) {}; -} - -if(window.opera) { - window.console.log = function(str) {opera.postError(str);}; - window.console.dir = function(str) {}; -} - -(function() { - - // This fixes $(...).attr() to work as expected with SVG elements. - // Does not currently use *AttributeNS() since we rarely need that. - - // See http://api.jquery.com/attr/ for basic documentation of .attr() - - // Additional functionality: - // - When getting attributes, a string that's a number is return as type number. - // - If an array is supplied as first parameter, multiple values are returned - // as an object with values for each given attributes - - var proxied = jQuery.fn.attr, svgns = "http://www.w3.org/2000/svg"; - jQuery.fn.attr = function(key, value) { - var len = this.length; - if(!len) return this; - for(var i=0; i<len; i++) { - var elem = this[i]; - // set/get SVG attribute - if(elem.namespaceURI === svgns) { - // Setting attribute - if(value !== undefined) { - elem.setAttribute(key, value); - } else if($.isArray(key)) { - // Getting attributes from array - var j = key.length, obj = {}; - - while(j--) { - var aname = key[j]; - var attr = elem.getAttribute(aname); - // This returns a number when appropriate - if(attr || attr === "0") { - attr = isNaN(attr)?attr:attr-0; - } - obj[aname] = attr; - } - return obj; - - } else if(typeof key === "object") { - // Setting attributes form object - for(var v in key) { - elem.setAttribute(v, key[v]); - } - // Getting attribute - } else { - var attr = elem.getAttribute(key); - if(attr || attr === "0") { - attr = isNaN(attr)?attr:attr-0; - } - - return attr; - } - } else { - return proxied.apply(this, arguments); - } - } - return this; - }; - -}()); - -// Class: SvgCanvas -// The main SvgCanvas class that manages all SVG-related functions -// -// Parameters: -// container - The container HTML element that should hold the SVG root element -// config - An object that contains configuration data -$.SvgCanvas = function(container, config) -{ -var isOpera = !!window.opera, - isWebkit = navigator.userAgent.indexOf("AppleWebKit") != -1, - - // Object populated later with booleans indicating support for features - support = {}, - - // this defines which elements and attributes that we support - svgWhiteList = { - // SVG Elements - "a": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "xlink:href", "xlink:title"], - "circle": ["class", "clip-path", "clip-rule", "cx", "cy", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "r", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"], - "clipPath": ["class", "clipPathUnits", "id"], - "defs": [], - "desc": [], - "ellipse": ["class", "clip-path", "clip-rule", "cx", "cy", "fill", "fill-opacity", "fill-rule", "filter", "id", "mask", "opacity", "requiredFeatures", "rx", "ry", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"], - "feGaussianBlur": ["class", "color-interpolation-filters", "id", "requiredFeatures", "stdDeviation"], - "filter": ["class", "color-interpolation-filters", "filterRes", "filterUnits", "height", "id", "primitiveUnits", "requiredFeatures", "width", "x", "xlink:href", "y"], - "foreignObject": ["class", "font-size", "height", "id", "opacity", "requiredFeatures", "style", "transform", "width", "x", "y"], - "g": ["class", "clip-path", "clip-rule", "id", "display", "fill", "fill-opacity", "fill-rule", "filter", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"], - "image": ["class", "clip-path", "clip-rule", "filter", "height", "id", "mask", "opacity", "requiredFeatures", "style", "systemLanguage", "transform", "width", "x", "xlink:href", "xlink:title", "y"], - "line": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "id", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "x1", "x2", "y1", "y2"], - "linearGradient": ["class", "id", "gradientTransform", "gradientUnits", "requiredFeatures", "spreadMethod", "systemLanguage", "x1", "x2", "xlink:href", "y1", "y2"], - "marker": ["id", "class", "markerHeight", "markerUnits", "markerWidth", "orient", "preserveAspectRatio", "refX", "refY", "systemLanguage", "viewBox"], - "mask": ["class", "height", "id", "maskContentUnits", "maskUnits", "width", "x", "y"], - "metadata": ["class", "id"], - "path": ["class", "clip-path", "clip-rule", "d", "fill", "fill-opacity", "fill-rule", "filter", "id", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"], - "pattern": ["class", "height", "id", "patternContentUnits", "patternTransform", "patternUnits", "requiredFeatures", "style", "systemLanguage", "width", "x", "xlink:href", "y"], - "polygon": ["class", "clip-path", "clip-rule", "id", "fill", "fill-opacity", "fill-rule", "filter", "id", "class", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "points", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"], - "polyline": ["class", "clip-path", "clip-rule", "id", "fill", "fill-opacity", "fill-rule", "filter", "marker-end", "marker-mid", "marker-start", "mask", "opacity", "points", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform"], - "radialGradient": ["class", "cx", "cy", "fx", "fy", "gradientTransform", "gradientUnits", "id", "r", "requiredFeatures", "spreadMethod", "systemLanguage", "xlink:href"], - "rect": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "height", "id", "mask", "opacity", "requiredFeatures", "rx", "ry", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "width", "x", "y"], - "stop": ["class", "id", "offset", "requiredFeatures", "stop-color", "stop-opacity", "style", "systemLanguage"], - "svg": ["class", "clip-path", "clip-rule", "filter", "id", "height", "mask", "preserveAspectRatio", "requiredFeatures", "style", "systemLanguage", "viewBox", "width", "x", "xmlns", "xmlns:se", "xmlns:xlink", "y"], - "switch": ["class", "id", "requiredFeatures", "systemLanguage"], - "symbol": ["class", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "opacity", "preserveAspectRatio", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "transform", "viewBox"], - "text": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "mask", "opacity", "requiredFeatures", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "text-anchor", "transform", "x", "xml:space", "y"], - "textPath": ["class", "id", "method", "requiredFeatures", "spacing", "startOffset", "style", "systemLanguage", "transform", "xlink:href"], - "title": [], - "tspan": ["class", "clip-path", "clip-rule", "dx", "dy", "fill", "fill-opacity", "fill-rule", "filter", "font-family", "font-size", "font-style", "font-weight", "id", "mask", "opacity", "requiredFeatures", "rotate", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "systemLanguage", "text-anchor", "textLength", "transform", "x", "xml:space", "y"], - "use": ["class", "clip-path", "clip-rule", "fill", "fill-opacity", "fill-rule", "filter", "height", "id", "mask", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "style", "transform", "width", "x", "xlink:href", "y"], - - // MathML Elements - "annotation": ["encoding"], - "annotation-xml": ["encoding"], - "maction": ["actiontype", "other", "selection"], - "math": ["class", "id", "display", "xmlns"], - "menclose": ["notation"], - "merror": [], - "mfrac": ["linethickness"], - "mi": ["mathvariant"], - "mmultiscripts": [], - "mn": [], - "mo": ["fence", "lspace", "maxsize", "minsize", "rspace", "stretchy"], - "mover": [], - "mpadded": ["lspace", "width"], - "mphantom": [], - "mprescripts": [], - "mroot": [], - "mrow": ["xlink:href", "xlink:type", "xmlns:xlink"], - "mspace": ["depth", "height", "width"], - "msqrt": [], - "mstyle": ["displaystyle", "mathbackground", "mathcolor", "mathvariant", "scriptlevel"], - "msub": [], - "msubsup": [], - "msup": [], - "mtable": ["align", "columnalign", "columnlines", "columnspacing", "displaystyle", "equalcolumns", "equalrows", "frame", "rowalign", "rowlines", "rowspacing", "width"], - "mtd": ["columnalign", "columnspan", "rowalign", "rowspan"], - "mtext": [], - "mtr": ["columnalign", "rowalign"], - "munder": [], - "munderover": [], - "none": [], - "semantics": [] - }, - - // Interface strings, usually for title elements - uiStrings = { - "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type", - "pathCtrlPtTooltip": "Drag control point to adjust curve properties", - "exportNoBlur": "Blurred elements will appear as un-blurred", - "exportNoImage": "Image elements will not appear", - "exportNoforeignObject": "foreignObject elements will not appear", - "exportNoDashArray": "Strokes will appear filled", - "exportNoText": "Text may not appear as expected" - }, - - // Default configuration options - curConfig = { - show_outside_canvas: true, - dimensions: [640, 480] - }; - - - - - -// Update config with new one if given -if(config) { - $.extend(curConfig, config); -} - -// Static class for various utility functions -var Utils = this.Utils = function() { - - var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - - return { - - // Function: Utils.toXml - // Converts characters in a string to XML-friendly entities. - // - // Example: "&" becomes "&" - // - // Parameters: - // str - The string to be converted - // - // Returns: - // The converted string - "toXml": function(str) { - return $('<p/>').text(str).html(); - }, - - // Function: Utils.fromXml - // Converts XML entities in a string to single characters. - // Example: "&" becomes "&" - // - // Parameters: - // str - The string to be converted - // - // Returns: - // The converted string - "fromXml": function(str) { - return $('<p/>').html(str).text(); - }, - - // This code was written by Tyler Akins and has been placed in the - // public domain. It would be nice if you left this header intact. - // Base64 code from Tyler Akins -- http://rumkin.com - - // schiller: Removed string concatenation in favour of Array.join() optimization, - // also precalculate the size of the array needed. - - // Function: Utils.encode64 - // Converts a string to base64 - "encode64" : function(input) { - // base64 strings are 4/3 larger than the original string - // input = Utils.encodeUTF8(input); // convert non-ASCII characters - input = Utils.convertToXMLReferences(input); - if(window.btoa) return window.btoa(input); // Use native if available - var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 ); - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0, p = 0; - - do { - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - - output[p++] = _keyStr.charAt(enc1); - output[p++] = _keyStr.charAt(enc2); - output[p++] = _keyStr.charAt(enc3); - output[p++] = _keyStr.charAt(enc4); - } while (i < input.length); - - return output.join(''); - }, - - // Function: Utils.decode64 - // Converts a string from base64 - "decode64" : function(input) { - if(window.atob) return window.atob(input); - var output = ""; - var chr1, chr2, chr3 = ""; - var enc1, enc2, enc3, enc4 = ""; - var i = 0; - - // remove all characters that are not A-Z, a-z, 0-9, +, /, or = - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); - - do { - enc1 = _keyStr.indexOf(input.charAt(i++)); - enc2 = _keyStr.indexOf(input.charAt(i++)); - enc3 = _keyStr.indexOf(input.charAt(i++)); - enc4 = _keyStr.indexOf(input.charAt(i++)); - - chr1 = (enc1 << 2) | (enc2 >> 4); - chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); - chr3 = ((enc3 & 3) << 6) | enc4; - - output = output + String.fromCharCode(chr1); - - if (enc3 != 64) { - output = output + String.fromCharCode(chr2); - } - if (enc4 != 64) { - output = output + String.fromCharCode(chr3); - } - - chr1 = chr2 = chr3 = ""; - enc1 = enc2 = enc3 = enc4 = ""; - - } while (i < input.length); - return unescape(output); - }, - - // Currently not being used, so commented out for now - // based on http://phpjs.org/functions/utf8_encode:577 - // codedread:does not seem to work with webkit-based browsers on OSX -// "encodeUTF8": function(input) { -// //return unescape(encodeURIComponent(input)); //may or may not work -// var output = ''; -// for (var n = 0; n < input.length; n++){ -// var c = input.charCodeAt(n); -// if (c < 128) { -// output += input[n]; -// } -// else if (c > 127) { -// if (c < 2048){ -// output += String.fromCharCode((c >> 6) | 192); -// } -// else { -// output += String.fromCharCode((c >> 12) | 224) + String.fromCharCode((c >> 6) & 63 | 128); -// } -// output += String.fromCharCode((c & 63) | 128); -// } -// } -// return output; -// }, - - // Function: Utils.convertToXMLReferences - // Converts a string to use XML references - "convertToXMLReferences": function(input) { - var output = ''; - for (var n = 0; n < input.length; n++){ - var c = input.charCodeAt(n); - if (c < 128) { - output += input[n]; - } - else if(c > 127) { - output += ("&#" + c + ";"); - } - } - return output; - }, - - // Function: rectsIntersect - // Check if two rectangles (BBoxes objects) intersect each other - // - // Paramaters: - // r1 - The first BBox-like object - // r2 - The second BBox-like object - // - // Returns: - // Boolean that's true if rectangles intersect - "rectsIntersect": function(r1, r2) { - return r2.x < (r1.x+r1.width) && - (r2.x+r2.width) > r1.x && - r2.y < (r1.y+r1.height) && - (r2.y+r2.height) > r1.y; - }, - - // Function: snapToAngle - // Returns a 45 degree angle coordinate associated with the two given - // coordinates - // - // Parameters: - // x1 - First coordinate's x value - // x2 - Second coordinate's x value - // y1 - First coordinate's y value - // y2 - Second coordinate's y value - // - // Returns: - // Object with the following values: - // x - The angle-snapped x value - // y - The angle-snapped y value - // snapangle - The angle at which to snap - "snapToAngle": function(x1,y1,x2,y2) { - var snap = Math.PI/4; // 45 degrees - var dx = x2 - x1; - var dy = y2 - y1; - var angle = Math.atan2(dy,dx); - var dist = Math.sqrt(dx * dx + dy * dy); - var snapangle= Math.round(angle/snap)*snap; - var x = x1 + dist*Math.cos(snapangle); - var y = y1 + dist*Math.sin(snapangle); - //console.log(x1,y1,x2,y2,x,y,angle) - return {x:x, y:y, a:snapangle}; - }, - - // Function: text2xml - // Cross-browser compatible method of converting a string to an XML tree - // found this function here: http://groups.google.com/group/jquery-dev/browse_thread/thread/c6d11387c580a77f - "text2xml": function(sXML) { - var out; - try{ - var dXML = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser(); - dXML.async = false; - } catch(e){ - throw new Error("XML Parser could not be instantiated"); - }; - try{ - if($.browser.msie) out = (dXML.loadXML(sXML))?dXML:false; - else out = dXML.parseFromString(sXML, "text/xml"); - } - catch(e){ throw new Error("Error parsing XML string"); }; - return out; - } - } - -}(); - - -// TODO: declare the variables and set them as null, then move this setup stuff to -// an initialization function - probably just use clear() - -var canvas = this, - - // Namespace constants - svgns = "http://www.w3.org/2000/svg", - xlinkns = "http://www.w3.org/1999/xlink", - xmlns = "http://www.w3.org/XML/1998/namespace", - xmlnsns = "http://www.w3.org/2000/xmlns/", // see http://www.w3.org/TR/REC-xml-names/#xmlReserved - se_ns = "http://svg-edit.googlecode.com", - htmlns = "http://www.w3.org/1999/xhtml", - mathns = "http://www.w3.org/1998/Math/MathML", - - // Map of units, those set to 0 are updated later based on calculations - unit_types = {'em':0,'ex':0,'px':1,'cm':35.43307,'mm':3.543307,'in':90,'pt':1.25,'pc':15,'%':0}, - - //nonce to uniquify id's - nonce = Math.floor(Math.random()*100001), - - // Boolean to indicate whether or not IDs given to elements should be random - randomize_ids = false, - - // "document" element associated with the container (same as window.document using default svg-editor.js) - svgdoc = container.ownerDocument, - - // Array with width/height of canvas - dimensions = curConfig.dimensions, - - // Create Root SVG element. This is a container for the document being edited, not the document itself. - svgroot = svgdoc.importNode(Utils.text2xml('<svg id="svgroot" xmlns="' + svgns + '" xlinkns="' + xlinkns + '" ' + - 'width="' + dimensions[0] + '" height="' + dimensions[1] + '" x="' + dimensions[0] + '" y="' + dimensions[1] + '" overflow="visible">' + - '<defs>' + - '<filter id="canvashadow" filterUnits="objectBoundingBox">' + - '<feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/>'+ - '<feOffset in="blur" dx="5" dy="5" result="offsetBlur"/>'+ - '<feMerge>'+ - '<feMergeNode in="offsetBlur"/>'+ - '<feMergeNode in="SourceGraphic"/>'+ - '</feMerge>'+ - '</filter>'+ - '</defs>'+ - '</svg>').documentElement, true); - - - container.appendChild(svgroot); - -// The actual element that represents the final output SVG element -var svgcontent = svgdoc.createElementNS(svgns, "svg"); -$(svgcontent).attr({ - id: 'svgcontent', - width: dimensions[0], - height: dimensions[1], - x: dimensions[0], - y: dimensions[1], - overflow: curConfig.show_outside_canvas?'visible':'hidden', - xmlns: svgns, - "xmlns:se": se_ns, - "xmlns:xlink": xlinkns -}).appendTo(svgroot); - -// Set nonce if randomize_ids = true -if (randomize_ids) svgcontent.setAttributeNS(se_ns, 'se:nonce', nonce); - -// map namespace URIs to prefixes -var nsMap = {}; -nsMap[xlinkns] = 'xlink'; -nsMap[xmlns] = 'xml'; -nsMap[xmlnsns] = 'xmlns'; -nsMap[se_ns] = 'se'; -nsMap[htmlns] = 'xhtml'; -nsMap[mathns] = 'mathml'; - -// map prefixes to namespace URIs -var nsRevMap = {}; -$.each(nsMap, function(key,value){ - nsRevMap[value] = key; -}); - -// Produce a Namespace-aware version of svgWhitelist -var svgWhiteListNS = {}; -$.each(svgWhiteList, function(elt,atts){ - var attNS = {}; - $.each(atts, function(i, att){ - if (att.indexOf(':') != -1) { - var v = att.split(':'); - attNS[v[1]] = nsRevMap[v[0]]; - } else { - attNS[att] = att == 'xmlns' ? xmlnsns : null; - } - }); - svgWhiteListNS[elt] = attNS; -}); - -// Animation element to change the opacity of any newly created element -var opac_ani = document.createElementNS(svgns, 'animate'); -$(opac_ani).attr({ - attributeName: 'opacity', - begin: 'indefinite', - dur: 1, - fill: 'freeze' -}).appendTo(svgroot); - -// Group: Unit conversion functions - -// Set the scope for these functions -var convertToNum, convertToUnit, setUnitAttr; - -(function() { - var w_attrs = ['x', 'x1', 'cx', 'rx', 'width']; - var h_attrs = ['y', 'y1', 'cy', 'ry', 'height']; - var unit_attrs = $.merge(['r','radius'], w_attrs); - $.merge(unit_attrs, h_attrs); - - // Function: convertToNum - // Converts given values to numbers. Attributes must be supplied in - // case a percentage is given - // - // Parameters: - // attr - String with the name of the attribute associated with the value - // val - String with the attribute value to convert - convertToNum = function(attr, val) { - // Return a number if that's what it already is - if(!isNaN(val)) return val-0; - - if(val.substr(-1) === '%') { - // Deal with percentage, depends on attribute - var num = val.substr(0, val.length-1)/100; - var res = getResolution(); - - if($.inArray(attr, w_attrs) !== -1) { - return num * res.w; - } else if($.inArray(attr, h_attrs) !== -1) { - return num * res.h; - } else { - return num * Math.sqrt((res.w*res.w) + (res.h*res.h))/Math.sqrt(2); - } - } else { - var unit = val.substr(-2); - var num = val.substr(0, val.length-2); - // Note that this multiplication turns the string into a number - return num * unit_types[unit]; - } - }; - - - // Function: setUnitAttr - // Sets an element's attribute based on the unit in its current value. - // - // Parameters: - // elem - DOM element to be changed - // attr - String with the name of the attribute associated with the value - // val - String with the attribute value to convert - setUnitAttr = function(elem, attr, val) { - if(!isNaN(val)) { - // New value is a number, so check currently used unit - var old_val = elem.getAttribute(attr); - - if(old_val !== null && isNaN(old_val)) { - // Old value was a number, so get unit, then convert - var unit; - if(old_val.substr(-1) === '%') { - var res = getResolution(); - unit = '%'; - val *= 100; - if($.inArray(attr, w_attrs) !== -1) { - val = val / res.w; - } else if($.inArray(attr, h_attrs) !== -1) { - val = val / res.h; - } else { - return val / Math.sqrt((res.w*res.w) + (res.h*res.h))/Math.sqrt(2); - } - - } else { - unit = old_val.substr(-2); - val = val / unit_types[unit]; - } - - val += unit; - } - } - elem.setAttribute(attr, val); - } - - // Function: isValidUnit - // Check if an attribute's value is in a valid format - // - // Parameters: - // attr - String with the name of the attribute associated with the value - // val - String with the attribute value to check - canvas.isValidUnit = function(attr, val) { - var valid = false; - if($.inArray(attr, unit_attrs) != -1) { - // True if it's just a number - if(!isNaN(val)) { - valid = true; - } else { - // Not a number, check if it has a valid unit - val = val.toLowerCase(); - $.each(unit_types, function(unit) { - if(valid) return; - var re = new RegExp('^-?[\\d\\.]+' + unit + '$'); - if(re.test(val)) valid = true; - }); - } - } else if (attr == "id") { - // if we're trying to change the id, make sure it's not already present in the doc - // and the id value is valid. - - var result = false; - // because getElem() can throw an exception in the case of an invalid id - // (according to http://www.w3.org/TR/xml-id/ IDs must be a NCName) - // we wrap it in an exception and only return true if the ID was valid and - // not already present - try { - var elem = getElem(val); - result = (elem == null); - } catch(e) {} - return result; - } else valid = true; - - return valid; - } - -})(); - - -// Group: Undo/Redo history management - -this.undoCmd = {}; - -// Function: ChangeElementCommand -// History command to make a change to an element. -// Usually an attribute change, but can also be textcontent. -// -// Parameters: -// elem - The DOM element that was changed -// attrs - An object with the attributes to be changed and the values they had *before* the change -// text - An optional string visible to user related to this change -var ChangeElementCommand = this.undoCmd.changeElement = function(elem, attrs, text) { - this.elem = elem; - this.text = text ? ("Change " + elem.tagName + " " + text) : ("Change " + elem.tagName); - this.newValues = {}; - this.oldValues = attrs; - for (var attr in attrs) { - if (attr == "#text") this.newValues[attr] = elem.textContent; - else if (attr == "#href") this.newValues[attr] = elem.getAttributeNS(xlinkns, "href"); - else this.newValues[attr] = elem.getAttribute(attr); - } - - // Function: ChangeElementCommand.apply - // Performs the stored change action - this.apply = function() { - var bChangedTransform = false; - for(var attr in this.newValues ) { - if (this.newValues[attr]) { - if (attr == "#text") this.elem.textContent = this.newValues[attr]; - else if (attr == "#href") this.elem.setAttributeNS(xlinkns, "xlink:href", this.newValues[attr]) - else this.elem.setAttribute(attr, this.newValues[attr]); - } - else { - if (attr == "#text") this.elem.textContent = ""; - else { - this.elem.setAttribute(attr, ""); - this.elem.removeAttribute(attr); - } - } - - if (attr == "transform") { bChangedTransform = true; } - else if (attr == "stdDeviation") { canvas.setBlurOffsets(this.elem.parentNode, this.newValues[attr]); } - - } - // relocate rotational transform, if necessary - if(!bChangedTransform) { - var angle = getRotationAngle(elem); - if (angle) { - var bbox = elem.getBBox(); - var cx = bbox.x + bbox.width/2, - cy = bbox.y + bbox.height/2; - var rotate = ["rotate(", angle, " ", cx, ",", cy, ")"].join(''); - if (rotate != elem.getAttribute("transform")) { - elem.setAttribute("transform", rotate); - } - } - } - // if we are changing layer names, re-identify all layers - if (this.elem.tagName == "title" && this.elem.parentNode.parentNode == svgcontent) { - identifyLayers(); - } - return true; - }; - - // Function: ChangeElementCommand.unapply - // Reverses the stored change action - this.unapply = function() { - var bChangedTransform = false; - for(var attr in this.oldValues ) { - if (this.oldValues[attr]) { - if (attr == "#text") this.elem.textContent = this.oldValues[attr]; - else if (attr == "#href") this.elem.setAttributeNS(xlinkns, "xlink:href", this.oldValues[attr]); - else this.elem.setAttribute(attr, this.oldValues[attr]); - - if (attr == "stdDeviation") canvas.setBlurOffsets(this.elem.parentNode, this.oldValues[attr]); - } - else { - if (attr == "#text") this.elem.textContent = ""; - else this.elem.removeAttribute(attr); - } - if (attr == "transform") { bChangedTransform = true; } - } - // relocate rotational transform, if necessary - if(!bChangedTransform) { - var angle = getRotationAngle(elem); - if (angle) { - var bbox = elem.getBBox(); - var cx = bbox.x + bbox.width/2, - cy = bbox.y + bbox.height/2; - var rotate = ["rotate(", angle, " ", cx, ",", cy, ")"].join(''); - if (rotate != elem.getAttribute("transform")) { - elem.setAttribute("transform", rotate); - } - } - } - // if we are changing layer names, re-identify all layers - if (this.elem.tagName == "title" && this.elem.parentNode.parentNode == svgcontent) { - identifyLayers(); - } - - // Remove transformlist to prevent confusion that causes bugs like 575. - if (svgTransformLists[this.elem.id]) { - delete svgTransformLists[this.elem.id]; - } - - return true; - }; - - // Function: ChangeElementCommand.elements - // Returns array with element associated with this command - this.elements = function() { return [this.elem]; } -} - -// Function: InsertElementCommand -// History command for an element that was added to the DOM -// -// Parameters: -// elem - The newly added DOM element -// text - An optional string visible to user related to this change -var InsertElementCommand = this.undoCmd.insertElement = function(elem, text) { - this.elem = elem; - this.text = text || ("Create " + elem.tagName); - this.parent = elem.parentNode; - - // Function: InsertElementCommand.apply - // Re-Inserts the new element - this.apply = function() { - this.elem = this.parent.insertBefore(this.elem, this.elem.nextSibling); - if (this.parent == svgcontent) { - identifyLayers(); - } - }; - - // Function: InsertElementCommand.unapply - // Removes the element - this.unapply = function() { - this.parent = this.elem.parentNode; - this.elem = this.elem.parentNode.removeChild(this.elem); - if (this.parent == svgcontent) { - identifyLayers(); - } - }; - - // Function: InsertElementCommand.elements - // Returns array with element associated with this command - this.elements = function() { return [this.elem]; }; -} - -// Function: RemoveElementCommand -// History command for an element removed from the DOM -// -// Parameters: -// elem - The removed DOM element -// parent - The DOM element's parent -// text - An optional string visible to user related to this change -var RemoveElementCommand = this.undoCmd.removeElement = function(elem, parent, text) { - this.elem = elem; - this.text = text || ("Delete " + elem.tagName); - this.parent = parent; - - // Function: RemoveElementCommand.apply - // Re-removes the new element - this.apply = function() { - if (svgTransformLists[this.elem.id]) { - delete svgTransformLists[this.elem.id]; - } - - this.parent = this.elem.parentNode; - this.elem = this.parent.removeChild(this.elem); - if (this.parent == svgcontent) { - identifyLayers(); - } - }; - - // Function: RemoveElementCommand.unapply - // Re-adds the new element - this.unapply = function() { - if (svgTransformLists[this.elem.id]) { - delete svgTransformLists[this.elem.id]; - } - - this.elem = this.parent.insertBefore(this.elem, this.elem.nextSibling); - if (this.parent == svgcontent) { - identifyLayers(); - } - }; - - // Function: RemoveElementCommand.elements - // Returns array with element associated with this command - this.elements = function() { return [this.elem]; }; - - // special hack for webkit: remove this element's entry in the svgTransformLists map - if (svgTransformLists[elem.id]) { - delete svgTransformLists[elem.id]; - } -} - -// Function: MoveElementCommand -// History command for an element that had its DOM position changed -// -// Parameters: -// elem - The DOM element that was moved -// oldNextSibling - The element's next sibling before it was moved -// oldParent - The element's parent before it was moved -// text - An optional string visible to user related to this change -var MoveElementCommand = this.undoCmd.moveElement = function(elem, oldNextSibling, oldParent, text) { - this.elem = elem; - this.text = text ? ("Move " + elem.tagName + " to " + text) : ("Move " + elem.tagName); - this.oldNextSibling = oldNextSibling; - this.oldParent = oldParent; - this.newNextSibling = elem.nextSibling; - this.newParent = elem.parentNode; - - // Function: MoveElementCommand.unapply - // Re-positions the element - this.apply = function() { - this.elem = this.newParent.insertBefore(this.elem, this.newNextSibling); - if (this.newParent == svgcontent) { - identifyLayers(); - } - }; - - // Function: MoveElementCommand.unapply - // Positions the element back to its original location - this.unapply = function() { - this.elem = this.oldParent.insertBefore(this.elem, this.oldNextSibling); - if (this.oldParent == svgcontent) { - identifyLayers(); - } - }; - - // Function: MoveElementCommand.elements - // Returns array with element associated with this command - this.elements = function() { return [this.elem]; }; -} - -// TODO: create a 'typing' command object that tracks changes in text -// if a new Typing command is created and the top command on the stack is also a Typing -// and they both affect the same element, then collapse the two commands into one - -// Function: BatchCommand -// History command that can contain/execute multiple other commands -// -// Parameters: -// text - An optional string visible to user related to this change -var BatchCommand = this.undoCmd.batch = function(text) { - this.text = text || "Batch Command"; - this.stack = []; - - // Function: BatchCommand.apply - // Runs "apply" on all subcommands - this.apply = function() { - var len = this.stack.length; - for (var i = 0; i < len; ++i) { - this.stack[i].apply(); - } - }; - - // Function: BatchCommand.unapply - // Runs "unapply" on all subcommands - this.unapply = function() { - for (var i = this.stack.length-1; i >= 0; i--) { - this.stack[i].unapply(); - } - }; - - // Function: BatchCommand.elements - // Iterate through all our subcommands and returns all the elements we are changing - this.elements = function() { - var elems = []; - var cmd = this.stack.length; - while (cmd--) { - var thisElems = this.stack[cmd].elements(); - var elem = thisElems.length; - while (elem--) { - if (elems.indexOf(thisElems[elem]) == -1) elems.push(thisElems[elem]); - } - } - return elems; - }; - - // Function: BatchCommand.addSubCommand - // Adds a given command to the history stack - // - // Parameters: - // cmd - The undo command object to add - this.addSubCommand = function(cmd) { this.stack.push(cmd); }; - - // Function: BatchCommand.isEmpty - // Returns a boolean indicating whether or not the batch command is empty - this.isEmpty = function() { return this.stack.length == 0; }; -} - -// Set scope for these undo functions -var resetUndoStack, addCommandToHistory; - -// Undo/redo stack related functions -(function(c) { - var undoStackPointer = 0, - undoStack = []; - - // Function: resetUndoStack - // Resets the undo stack, effectively clearing the undo/redo history - resetUndoStack = function() { - undoStack = []; - undoStackPointer = 0; - }; - - c.undoMgr = { - // Function: undoMgr.getUndoStackSize - // Returns: - // Integer with the current size of the undo history stack - getUndoStackSize: function() { return undoStackPointer; }, - - // Function: undoMgr.getRedoStackSize - // Returns: - // Integer with the current size of the redo history stack - getRedoStackSize: function() { return undoStack.length - undoStackPointer; }, - - // Function: undoMgr.getNextUndoCommandText - // Returns: - // String associated with the next undo command - getNextUndoCommandText: function() { - if (undoStackPointer > 0) - return undoStack[undoStackPointer-1].text; - return ""; - }, - - // Function: undoMgr.getNextRedoCommandText - // Returns: - // String associated with the next redo command - getNextRedoCommandText: function() { - if (undoStackPointer < undoStack.length) - return undoStack[undoStackPointer].text; - return ""; - }, - - // Function: undoMgr.undo - // Performs an undo step - undo: function() { - if (undoStackPointer > 0) { - c.clearSelection(); - var cmd = undoStack[--undoStackPointer]; - cmd.unapply(); - pathActions.clear(); - call("changed", cmd.elements()); - } - }, - - // Function: undoMgr.redo - // Performs a redo step - redo: function() { - if (undoStackPointer < undoStack.length && undoStack.length > 0) { - c.clearSelection(); - var cmd = undoStack[undoStackPointer++]; - cmd.apply(); - pathActions.clear(); - call("changed", cmd.elements()); - } - } - }; - - // Function: addCommandToHistory - // Adds a command object to the undo history stack - // - // Parameters: - // cmd - The command object to add - addCommandToHistory = c.undoCmd.add = function(cmd) { - // FIXME: we MUST compress consecutive text changes to the same element - // (right now each keystroke is saved as a separate command that includes the - // entire text contents of the text element) - // TODO: consider limiting the history that we store here (need to do some slicing) - - // if our stack pointer is not at the end, then we have to remove - // all commands after the pointer and insert the new command - if (undoStackPointer < undoStack.length && undoStack.length > 0) { - undoStack = undoStack.splice(0, undoStackPointer); - } - undoStack.push(cmd); - undoStackPointer = undoStack.length; - }; - -}(canvas)); - -(function(c) { - - // New functions for refactoring of Undo/Redo - - // this is the stack that stores the original values, the elements and - // the attribute name for begin/finish - var undoChangeStackPointer = -1; - var undoableChangeStack = []; - - // Function: beginUndoableChange - // This function tells the canvas to remember the old values of the - // attrName attribute for each element sent in. The elements and values - // are stored on a stack, so the next call to finishUndoableChange() will - // pop the elements and old values off the stack, gets the current values - // from the DOM and uses all of these to construct the undo-able command. - // - // Parameters: - // attrName - The name of the attribute being changed - // elems - Array of DOM elements being changed - c.beginUndoableChange = function(attrName, elems) { - var p = ++undoChangeStackPointer; - var i = elems.length; - var oldValues = new Array(i), elements = new Array(i); - while (i--) { - var elem = elems[i]; - if (elem == null) continue; - elements[i] = elem; - oldValues[i] = elem.getAttribute(attrName); - } - undoableChangeStack[p] = {'attrName': attrName, - 'oldValues': oldValues, - 'elements': elements}; - }; - - // Function: finishUndoableChange - // This function returns a BatchCommand object which summarizes the - // change since beginUndoableChange was called. The command can then - // be added to the command history - // - // Returns: - // Batch command object with resulting changes - c.finishUndoableChange = function() { - var p = undoChangeStackPointer--; - var changeset = undoableChangeStack[p]; - var i = changeset['elements'].length; - var attrName = changeset['attrName']; - var batchCmd = new BatchCommand("Change " + attrName); - while (i--) { - var elem = changeset['elements'][i]; - if (elem == null) continue; - var changes = {}; - changes[attrName] = changeset['oldValues'][i]; - if (changes[attrName] != elem.getAttribute(attrName)) { - batchCmd.addSubCommand(new ChangeElementCommand(elem, changes, attrName)); - } - } - undoableChangeStack[p] = null; - return batchCmd; - }; - -}(canvas)); - -// Put SelectorManager in this scope -var SelectorManager; - -(function() { - // Interface: Selector - // Private class for DOM element selection boxes - // - // Parameters: - // id - integer to internally indentify the selector - // elem - DOM element associated with this selector - function Selector(id, elem) { - // this is the selector's unique number - this.id = id; - - // this holds a reference to the element for which this selector is being used - this.selectedElement = elem; - - // this is a flag used internally to track whether the selector is being used or not - this.locked = true; - - // Function: Selector.reset - // Used to reset the id and element that the selector is attached to - // - // Parameters: - // e - DOM element associated with this selector - this.reset = function(e) { - this.locked = true; - this.selectedElement = e; - this.resize(); - this.selectorGroup.setAttribute("display", "inline"); - }; - - // this holds a reference to the <g> element that holds all visual elements of the selector - this.selectorGroup = addSvgElementFromJson({ "element": "g", - "attr": {"id": ("selectorGroup"+this.id)} - }); - - // this holds a reference to the path rect - this.selectorRect = this.selectorGroup.appendChild( addSvgElementFromJson({ - "element": "path", - "attr": { - "id": ("selectedBox"+this.id), - "fill": "none", - "stroke": "#22C", - "stroke-width": "1", - "stroke-dasharray": "5,5", - // need to specify this so that the rect is not selectable - "style": "pointer-events:none" - } - }) ); - - // this holds a reference to the grip elements for this selector - this.selectorGrips = { "nw":null, - "n":null, - "ne":null, - "e":null, - "se":null, - "s":null, - "sw":null, - "w":null - }; - this.rotateGripConnector = this.selectorGroup.appendChild( addSvgElementFromJson({ - "element": "line", - "attr": { - "id": ("selectorGrip_rotateconnector_" + this.id), - "stroke": "#22C", - "stroke-width": "1" - } - }) ); - - this.rotateGrip = this.selectorGroup.appendChild( addSvgElementFromJson({ - "element": "circle", - "attr": { - "id": ("selectorGrip_rotate_" + this.id), - "fill": "lime", - "r": 4, - "stroke": "#22C", - "stroke-width": 2, - "style": "cursor:url(" + curConfig.imgPath + "rotate.png) 12 12, auto;" - } - }) ); - - // add the corner grips - for (var dir in this.selectorGrips) { - this.selectorGrips[dir] = this.selectorGroup.appendChild( - addSvgElementFromJson({ - "element": "circle", - "attr": { - "id": ("selectorGrip_resize_" + dir + "_" + this.id), - "fill": "#22C", - "r": 4, - "style": ("cursor:" + dir + "-resize"), - // This expands the mouse-able area of the grips making them - // easier to grab with the mouse. - // This works in Opera and WebKit, but does not work in Firefox - // see https://bugzilla.mozilla.org/show_bug.cgi?id=500174 - "stroke-width": 2, - "pointer-events":"all", - "display":"none" - } - }) ); - } - - // Function: Selector.showGrips - // Show the resize grips of this selector - // - // Parameters: - // show - boolean indicating whether grips should be shown or not - this.showGrips = function(show) { - // TODO: use suspendRedraw() here - var bShow = show ? "inline" : "none"; - this.rotateGrip.setAttribute("display", bShow); - this.rotateGripConnector.setAttribute("display", bShow); - var elem = this.selectedElement; - for (var dir in this.selectorGrips) { - this.selectorGrips[dir].setAttribute("display", bShow); - } - if(elem) this.updateGripCursors(getRotationAngle(elem)); - }; - - // Function: Selector.updateGripCursors - // Updates cursors for corner grips on rotation so arrows point the right way - // - // Parameters: - // angle - Float indicating current rotation angle in degrees - this.updateGripCursors = function(angle) { - var dir_arr = []; - var steps = Math.round(angle / 45); - if(steps < 0) steps += 8; - for (var dir in this.selectorGrips) { - dir_arr.push(dir); - } - while(steps > 0) { - dir_arr.push(dir_arr.shift()); - steps--; - } - var i = 0; - for (var dir in this.selectorGrips) { - this.selectorGrips[dir].setAttribute('style', ("cursor:" + dir_arr[i] + "-resize")); - i++; - }; - }; - - // Function: Selector.resize - // Updates the selector to match the element's size - this.resize = function() { - var selectedBox = this.selectorRect, - selectedGrips = this.selectorGrips, - selected = this.selectedElement, - sw = selected.getAttribute("stroke-width"); - var offset = 1/current_zoom; - if (selected.getAttribute("stroke") != "none" && !isNaN(sw)) { - offset += (sw/2); - } - if (selected.tagName == "text") { - offset += 2/current_zoom; - } - var bbox = getBBox(selected); - if(selected.tagName == 'g') { - // The bbox for a group does not include stroke vals, so we - // get the bbox based on its children. - var stroked_bbox = getStrokedBBox(selected.childNodes); - $.each(bbox, function(key, val) { - bbox[key] = stroked_bbox[key]; - }); - } - - // loop and transform our bounding box until we reach our first rotation - var m = getMatrix(selected); - - // This should probably be handled somewhere else, but for now - // it keeps the selection box correctly positioned when zoomed - m.e *= current_zoom; - m.f *= current_zoom; - - // apply the transforms - var l=bbox.x-offset, t=bbox.y-offset, w=bbox.width+(offset*2), h=bbox.height+(offset*2), - bbox = {x:l, y:t, width:w, height:h}; - - // we need to handle temporary transforms too - // if skewed, get its transformed box, then find its axis-aligned bbox - - //* - var nbox = transformBox(l*current_zoom, t*current_zoom, w*current_zoom, h*current_zoom, m), - nbax = nbox.aabox.x, - nbay = nbox.aabox.y, - nbaw = nbox.aabox.width, - nbah = nbox.aabox.height; - - // now if the shape is rotated, un-rotate it - var cx = nbax + nbaw/2, - cy = nbay + nbah/2; - var angle = getRotationAngle(selected); - if (angle) { - - var rot = svgroot.createSVGTransform(); - rot.setRotate(-angle,cx,cy); - var rotm = rot.matrix; - nbox.tl = transformPoint(nbox.tl.x,nbox.tl.y,rotm); - nbox.tr = transformPoint(nbox.tr.x,nbox.tr.y,rotm); - nbox.bl = transformPoint(nbox.bl.x,nbox.bl.y,rotm); - nbox.br = transformPoint(nbox.br.x,nbox.br.y,rotm); - - // calculate the axis-aligned bbox - var minx = nbox.tl.x, - miny = nbox.tl.y, - maxx = nbox.tl.x, - maxy = nbox.tl.y; - - minx = Math.min(minx, Math.min(nbox.tr.x, Math.min(nbox.bl.x, nbox.br.x) ) ); - miny = Math.min(miny, Math.min(nbox.tr.y, Math.min(nbox.bl.y, nbox.br.y) ) ); - maxx = Math.max(maxx, Math.max(nbox.tr.x, Math.max(nbox.bl.x, nbox.br.x) ) ); - maxy = Math.max(maxy, Math.max(nbox.tr.y, Math.max(nbox.bl.y, nbox.br.y) ) ); - - nbax = minx; - nbay = miny; - nbaw = (maxx-minx); - nbah = (maxy-miny); - } - - var sr_handle = svgroot.suspendRedraw(100); - - var dstr = "M" + nbax + "," + nbay - + " L" + (nbax+nbaw) + "," + nbay - + " " + (nbax+nbaw) + "," + (nbay+nbah) - + " " + nbax + "," + (nbay+nbah) + "z"; - assignAttributes(selectedBox, {'d': dstr}); - - var gripCoords = { - nw: [nbax, nbay], - ne: [nbax+nbaw, nbay], - sw: [nbax, nbay+nbah], - se: [nbax+nbaw, nbay+nbah], - n: [nbax + (nbaw)/2, nbay], - w: [nbax, nbay + (nbah)/2], - e: [nbax + nbaw, nbay + (nbah)/2], - s: [nbax + (nbaw)/2, nbay + nbah] - }; - - if(selected == selectedElements[0]) { - for(var dir in gripCoords) { - var coords = gripCoords[dir]; - assignAttributes(selectedGrips[dir], { - cx: coords[0], cy: coords[1] - }); - }; - } - - if (angle) { - this.selectorGroup.setAttribute("transform", "rotate(" + [angle,cx,cy].join(",") + ")"); - } - else { - this.selectorGroup.setAttribute("transform", ""); - } - - // we want to go 20 pixels in the negative transformed y direction, ignoring scale - assignAttributes(this.rotateGripConnector, { x1: nbax + (nbaw)/2, - y1: nbay, - x2: nbax + (nbaw)/2, - y2: nbay- 20}); - assignAttributes(this.rotateGrip, { cx: nbax + (nbaw)/2, - cy: nbay - 20 }); - - svgroot.unsuspendRedraw(sr_handle); - }; - - // now initialize the selector - this.reset(elem); - }; - - // Interface: SelectorManager - // Public class to manage all selector objects (selection boxes) - SelectorManager = function() { - - // this will hold the <g> element that contains all selector rects/grips - this.selectorParentGroup = null; - - // this is a special rect that is used for multi-select - this.rubberBandBox = null; - - // this will hold objects of type Selector (see above) - this.selectors = []; - - // this holds a map of SVG elements to their Selector object - this.selectorMap = {}; - - // local reference to this object - var mgr = this; - - // Function: SelectorManager.initGroup - // Resets the parent selector group element - this.initGroup = function() { - // remove old selector parent group if it existed - if (mgr.selectorParentGroup && mgr.selectorParentGroup.parentNode) { - mgr.selectorParentGroup.parentNode.removeChild(mgr.selectorParentGroup); - } - // create parent selector group and add it to svgroot - mgr.selectorParentGroup = svgdoc.createElementNS(svgns, "g"); - mgr.selectorParentGroup.setAttribute("id", "selectorParentGroup"); - svgroot.appendChild(mgr.selectorParentGroup); - mgr.selectorMap = {}; - mgr.selectors = []; - mgr.rubberBandBox = null; - - if($("#canvasBackground").length) return; - - var canvasbg = svgdoc.createElementNS(svgns, "svg"); - var dims = curConfig.dimensions; - assignAttributes(canvasbg, { - 'id':'canvasBackground', - 'width': dims[0], - 'height': dims[1], - 'x': 0, - 'y': 0, - 'overflow': 'visible', - 'style': 'pointer-events:none' - }); - - var rect = svgdoc.createElementNS(svgns, "rect"); - assignAttributes(rect, { - 'width': '100%', - 'height': '100%', - 'x': 0, - 'y': 0, - 'stroke-width': 1, - 'stroke': '#000', - 'fill': '#FFF', - 'style': 'pointer-events:none' - }); - // Both Firefox and WebKit are too slow with this filter region (especially at higher - // zoom levels) and Opera has at least one bug - // if (!window.opera) rect.setAttribute('filter', 'url(#canvashadow)'); - canvasbg.appendChild(rect); - svgroot.insertBefore(canvasbg, svgcontent); - }; - - // Function: SelectorManager.requestSelector - // Returns the selector based on the given element - // - // Parameters: - // elem - DOM element to get the selector for - this.requestSelector = function(elem) { - if (elem == null) return null; - var N = this.selectors.length; - // if we've already acquired one for this element, return it - if (typeof(this.selectorMap[elem.id]) == "object") { - this.selectorMap[elem.id].locked = true; - return this.selectorMap[elem.id]; - } - for (var i = 0; i < N; ++i) { - if (this.selectors[i] && !this.selectors[i].locked) { - this.selectors[i].locked = true; - this.selectors[i].reset(elem); - this.selectorMap[elem.id] = this.selectors[i]; - return this.selectors[i]; - } - } - // if we reached here, no available selectors were found, we create one - this.selectors[N] = new Selector(N, elem); - this.selectorParentGroup.appendChild(this.selectors[N].selectorGroup); - this.selectorMap[elem.id] = this.selectors[N]; - return this.selectors[N]; - }; - - // Function: SelectorManager.releaseSelector - // Removes the selector of the given element (hides selection box) - // - // Parameters: - // elem - DOM element to remove the selector for - this.releaseSelector = function(elem) { - if (elem == null) return; - var N = this.selectors.length, - sel = this.selectorMap[elem.id]; - for (var i = 0; i < N; ++i) { - if (this.selectors[i] && this.selectors[i] == sel) { - if (sel.locked == false) { - console.log("WARNING! selector was released but was already unlocked"); - } - delete this.selectorMap[elem.id]; - sel.locked = false; - sel.selectedElement = null; - sel.showGrips(false); - - // remove from DOM and store reference in JS but only if it exists in the DOM - try { - sel.selectorGroup.setAttribute("display", "none"); - } catch(e) { } - - break; - } - } - }; - - // Function: SelectorManager.getRubberBandBox - // Returns the rubberBandBox DOM element. This is the rectangle drawn by the user for selecting/zooming - this.getRubberBandBox = function() { - if (this.rubberBandBox == null) { - this.rubberBandBox = this.selectorParentGroup.appendChild( - addSvgElementFromJson({ "element": "rect", - "attr": { - "id": "selectorRubberBand", - "fill": "#22C", - "fill-opacity": 0.15, - "stroke": "#22C", - "stroke-width": 0.5, - "display": "none", - "style": "pointer-events:none" - } - })); - } - return this.rubberBandBox; - }; - - this.initGroup(); - }; -}()); - - -// ************************************************************************************** -// SVGTransformList implementation for Webkit -// These methods do not currently raise any exceptions. -// These methods also do not check that transforms are being inserted or handle if -// a transform is already in the list, etc. This is basically implementing as much -// of SVGTransformList that we need to get the job done. -// -// interface SVGEditTransformList { -// attribute unsigned long numberOfItems; -// void clear ( ) -// SVGTransform initialize ( in SVGTransform newItem ) -// SVGTransform getItem ( in unsigned long index ) -// SVGTransform insertItemBefore ( in SVGTransform newItem, in unsigned long index ) -// SVGTransform replaceItem ( in SVGTransform newItem, in unsigned long index ) -// SVGTransform removeItem ( in unsigned long index ) -// SVGTransform appendItem ( in SVGTransform newItem ) -// NOT IMPLEMENTED: SVGTransform createSVGTransformFromMatrix ( in SVGMatrix matrix ); -// NOT IMPLEMENTED: SVGTransform consolidate ( ); -// } -// ************************************************************************************** -var svgTransformLists = {}; -var SVGEditTransformList = function(elem) { - - function transformToString(xform) { - var m = xform.matrix, - text = ""; - switch(xform.type) { - case 1: // MATRIX - text = "matrix(" + [m.a,m.b,m.c,m.d,m.e,m.f].join(",") + ")"; - break; - case 2: // TRANSLATE - text = "translate(" + m.e + "," + m.f + ")"; - break; - case 3: // SCALE - if (m.a == m.d) text = "scale(" + m.a + ")"; - else text = "scale(" + m.a + "," + m.d + ")"; - break; - case 4: // ROTATE - var cx = 0, cy = 0; - // this prevents divide by zero - if (xform.angle != 0) { - var K = 1 - m.a; - cy = ( K * m.f + m.b*m.e ) / ( K*K + m.b*m.b ); - cx = ( m.e - m.b * cy ) / K; - } - text = "rotate(" + xform.angle + " " + cx + "," + cy + ")"; - break; - } - return text; - }; - - this._elem = elem || null; - this._xforms = []; - // TODO: how do we capture the undo-ability in the changed transform list? - this._update = function() { - var tstr = ""; - var concatMatrix = svgroot.createSVGMatrix(); - for (var i = 0; i < this.numberOfItems; ++i) { - var xform = this._list.getItem(i); - tstr += transformToString(xform) + " "; - } - this._elem.setAttribute("transform", tstr); - }; - this._list = this; - this._init = function() { - // Transform attribute parser - var str = this._elem.getAttribute("transform"); - if(!str) return; - - // TODO: Add skew support in future - var re = /\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/; - var arr = []; - var m = true; - while(m) { - m = str.match(re); - str = str.replace(re,''); - if(m && m[1]) { - var x = m[1]; - var bits = x.split(/\s*\(/); - var name = bits[0]; - var val_bits = bits[1].match(/\s*(.*?)\s*\)/); - var val_arr = val_bits[1].split(/[, ]+/); - var letters = 'abcdef'.split(''); - var mtx = svgroot.createSVGMatrix(); - $.each(val_arr, function(i, item) { - val_arr[i] = parseFloat(item); - if(name == 'matrix') { - mtx[letters[i]] = val_arr[i]; - } - }); - var xform = svgroot.createSVGTransform(); - var fname = 'set' + name.charAt(0).toUpperCase() + name.slice(1); - var values = name=='matrix'?[mtx]:val_arr; - - if(name == 'scale' && values.length == 1) { - values.push(values[0]); - } else if(name == 'translate' && values.length == 1) { - values.push(0); - } - xform[fname].apply(xform, values); - this._list.appendItem(xform); - } - } - } - - this.numberOfItems = 0; - this.clear = function() { - this.numberOfItems = 0; - this._xforms = []; - }; - - this.initialize = function(newItem) { - this.numberOfItems = 1; - this._xforms = [newItem]; - }; - - this.getItem = function(index) { - if (index < this.numberOfItems && index >= 0) { - return this._xforms[index]; - } - return null; - }; - - this.insertItemBefore = function(newItem, index) { - var retValue = null; - if (index >= 0) { - if (index < this.numberOfItems) { - var newxforms = new Array(this.numberOfItems + 1); - // TODO: use array copying and slicing - for ( var i = 0; i < index; ++i) { - newxforms[i] = this._xforms[i]; - } - newxforms[i] = newItem; - for ( var j = i+1; i < this.numberOfItems; ++j, ++i) { - newxforms[j] = this._xforms[i]; - } - this.numberOfItems++; - this._xforms = newxforms; - retValue = newItem; - this._list._update(); - } - else { - retValue = this._list.appendItem(newItem); - } - } - return retValue; - }; - - this.replaceItem = function(newItem, index) { - var retValue = null; - if (index < this.numberOfItems && index >= 0) { - this._xforms[index] = newItem; - retValue = newItem; - this._list._update(); - } - return retValue; - }; - - this.removeItem = function(index) { - var retValue = null; - if (index < this.numberOfItems && index >= 0) { - var retValue = this._xforms[index]; - var newxforms = new Array(this.numberOfItems - 1); - for (var i = 0; i < index; ++i) { - newxforms[i] = this._xforms[i]; - } - for (var j = i; j < this.numberOfItems-1; ++j, ++i) { - newxforms[j] = this._xforms[i+1]; - } - this.numberOfItems--; - this._xforms = newxforms; - this._list._update(); - } - return retValue; - }; - - this.appendItem = function(newItem) { - this._xforms.push(newItem); - this.numberOfItems++; - this._list._update(); - return newItem; - }; -}; -// ************************************************************************************** - -// Group: Helper functions - -// Function: walkTree -// Walks the tree and executes the callback on each element in a top-down fashion -// -// Parameters: -// elem - DOM element to traverse -// cbFn - Callback function to run on each element -function walkTree(elem, cbFn){ - if (elem && elem.nodeType == 1) { - cbFn(elem); - var i = elem.childNodes.length; - while (i--) { - walkTree(elem.childNodes.item(i), cbFn); - } - } -}; - -// Function: walkTreePost -// Walks the tree and executes the callback on each element in a depth-first fashion -// -// Parameters: -// elem - DOM element to traverse -// cbFn - Callback function to run on each element -function walkTreePost(elem, cbFn) { - if (elem && elem.nodeType == 1) { - var i = elem.childNodes.length; - while (i--) { - walkTree(elem.childNodes.item(i), cbFn); - } - cbFn(elem); - } -}; - -// Function: assignAttributes -// Assigns multiple attributes to an element. -// -// Parameters: -// node - DOM element to apply new attribute values to -// attrs - Object with attribute keys/values -// suspendLength - Optional integer of milliseconds to suspend redraw -// unitCheck - Boolean to indicate the need to use setUnitAttr -var assignAttributes = this.assignAttributes = function(node, attrs, suspendLength, unitCheck) { - if(!suspendLength) suspendLength = 0; - // Opera has a problem with suspendRedraw() apparently - var handle = null; - if (!window.opera) svgroot.suspendRedraw(suspendLength); - - for (var i in attrs) { - var ns = (i.substr(0,4) == "xml:" ? xmlns : - i.substr(0,6) == "xlink:" ? xlinkns : null); - - if(ns || !unitCheck) { - node.setAttributeNS(ns, i, attrs[i]); - } else { - setUnitAttr(node, i, attrs[i]); - } - - } - - if (!window.opera) svgroot.unsuspendRedraw(handle); -}; - -// Function: cleanupElement -// Remove unneeded (default) attributes, makes resulting SVG smaller -// -// Parameters: -// element - DOM element to clean up -var cleanupElement = this.cleanupElement = function(element) { - var handle = svgroot.suspendRedraw(60); - var defaults = { - 'fill-opacity':1, - 'stop-opacity':1, - 'opacity':1, - 'stroke':'none', - 'stroke-dasharray':'none', - 'stroke-linejoin':'miter', - 'stroke-linecap':'butt', - 'stroke-opacity':1, - 'stroke-width':1, - 'rx':0, - 'ry':0 - } - - for(var attr in defaults) { - var val = defaults[attr]; - if(element.getAttribute(attr) == val) { - element.removeAttribute(attr); - } - } - - svgroot.unsuspendRedraw(handle); -}; - -// Function: addSvgElementFromJson -// Create a new SVG element based on the given object keys/values and add it to the current layer -// The element will be ran through cleanupElement before being returned -// -// Parameters: -// data - Object with the following keys/values: -// * element - DOM element to create -// * attr - Object with attributes/values to assign to the new element -// * curStyles - Boolean indicating that current style attributes should be applied first -// -// Returns: The new element -var addSvgElementFromJson = this.addSvgElementFromJson = function(data) { - var shape = getElem(data.attr.id); - // if shape is a path but we need to create a rect/ellipse, then remove the path - if (shape && data.element != shape.tagName) { - current_layer.removeChild(shape); - shape = null; - } - if (!shape) { - shape = svgdoc.createElementNS(svgns, data.element); - if (current_layer) { - current_layer.appendChild(shape); - } - } - if(data.curStyles) { - assignAttributes(shape, { - "fill": cur_shape.fill, - "stroke": cur_shape.stroke, - "stroke-width": cur_shape.stroke_width, - "stroke-dasharray": cur_shape.stroke_dasharray, - "stroke-linejoin": cur_shape.stroke_linejoin, - "stroke-linecap": cur_shape.stroke_linecap, - "stroke-opacity": cur_shape.stroke_opacity, - "fill-opacity": cur_shape.fill_opacity, - "opacity": cur_shape.opacity / 2, - "style": "pointer-events:inherit" - }, 100); - } - assignAttributes(shape, data.attr, 100); - cleanupElement(shape); - return shape; -}; - -(function() { - // TODO: make this string optional and set by the client - var comment = svgdoc.createComment(" Created with SVG-edit - http://svg-edit.googlecode.com/ "); - svgcontent.appendChild(comment); - - // TODO For Issue 208: this is a start on a thumbnail - // var svgthumb = svgdoc.createElementNS(svgns, "use"); - // svgthumb.setAttribute('width', '100'); - // svgthumb.setAttribute('height', '100'); - // svgthumb.setAttributeNS(xlinkns, 'href', '#svgcontent'); - // svgroot.appendChild(svgthumb); - -})(); - -// z-ordered array of tuples containing layer names and <g> elements -// the first layer is the one at the bottom of the rendering -var all_layers = [], - - // Object to contain image data for raster images that were found encodable - encodableImages = {}, - - // String with image URL of last loadable image - last_good_img_url = curConfig.imgPath + 'logo.png', - - // pointer to the current layer <g> - current_layer = null, - - // Object with save options - save_options = {round_digits: 5}, - - // Boolean indicating whether or not a draw action has been started - started = false, - - // Integer with internal ID number for the latest element - obj_num = 1, - - // String with an element's initial transform attribute value - start_transform = null, - - // String indicating the current editor mode - current_mode = "select", - - // String with the current direction in which an element is being resized - current_resize_mode = "none", - - // Object containing data for the currently selected styles - all_properties = { - shape: { - fill: "#" + curConfig.initFill.color, - fill_paint: null, - fill_opacity: curConfig.initFill.opacity, - stroke: "#" + curConfig.initStroke.color, - stroke_paint: null, - stroke_opacity: curConfig.initStroke.opacity, - stroke_width: curConfig.initStroke.width, - stroke_dasharray: 'none', - stroke_linejoin: 'miter', - stroke_linecap: 'butt', - opacity: curConfig.initOpacity - } - }; - -all_properties.text = $.extend(true, {}, all_properties.shape); -$.extend(all_properties.text, { - fill: "#000000", - stroke_width: 0, - font_size: 24, - font_family: 'serif' -}); - -// Current shape style properties -var cur_shape = all_properties.shape, - - // Current text style properties - cur_text = all_properties.text, - - // Current general properties - cur_properties = cur_shape, - - // Float displaying the current zoom level (1 = 100%, .5 = 50%, etc) - current_zoom = 1, - - // Array with all the currently selected elements - // default size of 1 until it needs to grow bigger - selectedElements = new Array(1), - - // Array with selected elements' Bounding box object - selectedBBoxes = new Array(1), - - // The DOM element that was just selected - justSelected = null, - - // this object manages selectors for us - selectorManager = new SelectorManager(), - - // DOM element for selection rectangle drawn by the user - rubberBox = null, - - // Array of current BBoxes (still needed?) - curBBoxes = [], - - // Object to contain all included extensions - extensions = {}; - -// Should this return an array by default, so extension results aren't overwritten? -var runExtensions = this.runExtensions = function(action, vars, returnArray) { - var result = false; - if(returnArray) result = []; - $.each(extensions, function(name, opts) { - if(action in opts) { - if(returnArray) { - result.push(opts[action](vars)) - } else { - result = opts[action](vars); - } - } - }); - return result; -} - -// Function: addExtension -// Add an extension to the editor -// -// Parameters: -// name - String with the ID of the extension -// ext_func - Function supplied by the extension with its data -this.addExtension = function(name, ext_func) { - if(!(name in extensions)) { - // Provide private vars/funcs here. Is there a better way to do this? - - if($.isFunction(ext_func)) { - var ext = ext_func($.extend(canvas.getPrivateMethods(), { - svgroot: svgroot, - svgcontent: svgcontent, - nonce: nonce, - selectorManager: selectorManager - })); - } else { - var ext = ext_func; - } - extensions[name] = ext; - call("extension_added", ext); - } else { - console.log('Cannot add extension "' + name + '", an extension by that name already exists"'); - } -}; - -// Function: shortFloat -// Rounds a given value to a float with number of digits defined in save_options -// -// Parameters: -// val - The value as a String, Number or Array of two numbers to be rounded -// -// Returns: -// If a string/number was given, returns a Float. If an array, return a string -// with comma-seperated floats -var shortFloat = function(val) { - var digits = save_options.round_digits; - if(!isNaN(val)) { - return Number(Number(val).toFixed(digits)); - } else if($.isArray(val)) { - return shortFloat(val[0]) + ',' + shortFloat(val[1]); - } -} - -// This method rounds the incoming value to the nearest value based on the current_zoom -var round = this.round = function(val) { - return parseInt(val*current_zoom)/current_zoom; -}; - -// This method sends back an array or a NodeList full of elements that -// intersect the multi-select rubber-band-box on the current_layer only. -// -// Since the only browser that supports the SVG DOM getIntersectionList is Opera, -// we need to provide an implementation here. We brute-force it for now. -// -// Reference: -// Firefox does not implement getIntersectionList(), see https://bugzilla.mozilla.org/show_bug.cgi?id=501421 -// Webkit does not implement getIntersectionList(), see https://bugs.webkit.org/show_bug.cgi?id=11274 -var getIntersectionList = this.getIntersectionList = function(rect) { - if (rubberBox == null) { return null; } - - if(!curBBoxes.length) { - // Cache all bboxes - curBBoxes = getVisibleElements(current_layer, true); - } - - var resultList = null; - try { - resultList = current_layer.getIntersectionList(rect, null); - } catch(e) { } - - if (resultList == null || typeof(resultList.item) != "function") { - resultList = []; - - var rubberBBox = rubberBox.getBBox(); - $.each(rubberBBox, function(key, val) { - rubberBBox[key] = val / current_zoom; - }); - var i = curBBoxes.length; - while (i--) { - if(!rubberBBox.width || !rubberBBox.width) continue; - if (Utils.rectsIntersect(rubberBBox, curBBoxes[i].bbox)) { - resultList.push(curBBoxes[i].elem); - } - } - } - // addToSelection expects an array, but it's ok to pass a NodeList - // because using square-bracket notation is allowed: - // http://www.w3.org/TR/DOM-Level-2-Core/ecma-script-binding.html - return resultList; -}; - -// Function: getStrokedBBox -// Get the bounding box for one or more stroked and/or transformed elements -// -// Parameters: -// elems - Array with DOM elements to check -// -// Returns: -// A single bounding box object -var getStrokedBBox = this.getStrokedBBox = function(elems) { - if(!elems) elems = getVisibleElements(); - if(!elems.length) return false; - // Make sure the expected BBox is returned if the element is a group - var getCheckedBBox = function(elem) { - - try { - // TODO: Fix issue with rotated groups. Currently they work - // fine in FF, but not in other browsers (same problem mentioned - // in Issue 339 comment #2). - - var bb = getBBox(elem); - - var angle = getRotationAngle(elem); - if ((angle && angle % 90) || hasMatrixTransform(getTransformList(elem))) { - // Accurate way to get BBox of rotated element in Firefox: - // Put element in group and get its BBox - - var good_bb = false; - - // Get the BBox from the raw path for these elements - var elemNames = ['ellipse','path','line','polyline','polygon']; - if($.inArray(elem.tagName, elemNames) != -1) { - bb = good_bb = canvas.convertToPath(elem, true); - } else if(elem.tagName == 'rect') { - // Look for radius - var rx = elem.getAttribute('rx'); - var ry = elem.getAttribute('ry'); - if(rx || ry) { - bb = good_bb = canvas.convertToPath(elem, true); - } - } - - if(!good_bb) { - var g = document.createElementNS(svgns, "g"); - var parent = elem.parentNode; - parent.replaceChild(g, elem); - g.appendChild(elem); - bb = g.getBBox(); - parent.insertBefore(elem,g); - parent.removeChild(g); - } - - - // Old method: Works by giving the rotated BBox, - // this is (unfortunately) what Opera and Safari do - // natively when getting the BBox of the parent group -// var angle = angle * Math.PI / 180.0; -// var rminx = Number.MAX_VALUE, rminy = Number.MAX_VALUE, -// rmaxx = Number.MIN_VALUE, rmaxy = Number.MIN_VALUE; -// var cx = round(bb.x + bb.width/2), -// cy = round(bb.y + bb.height/2); -// var pts = [ [bb.x - cx, bb.y - cy], -// [bb.x + bb.width - cx, bb.y - cy], -// [bb.x + bb.width - cx, bb.y + bb.height - cy], -// [bb.x - cx, bb.y + bb.height - cy] ]; -// var j = 4; -// while (j--) { -// var x = pts[j][0], -// y = pts[j][1], -// r = Math.sqrt( x*x + y*y ); -// var theta = Math.atan2(y,x) + angle; -// x = round(r * Math.cos(theta) + cx); -// y = round(r * Math.sin(theta) + cy); -// -// // now set the bbox for the shape after it's been rotated -// if (x < rminx) rminx = x; -// if (y < rminy) rminy = y; -// if (x > rmaxx) rmaxx = x; -// if (y > rmaxy) rmaxy = y; -// } -// -// bb.x = rminx; -// bb.y = rminy; -// bb.width = rmaxx - rminx; -// bb.height = rmaxy - rminy; - } - - return bb; - } catch(e) { - console.log(elem, e); - return null; - } - - } - var full_bb; - $.each(elems, function() { - if(full_bb) return; - if(!this.parentNode) return; - full_bb = getCheckedBBox(this); - }); - - // This shouldn't ever happen... - if(full_bb == null) return null; - - // full_bb doesn't include the stoke, so this does no good! -// if(elems.length == 1) return full_bb; - - var max_x = full_bb.x + full_bb.width; - var max_y = full_bb.y + full_bb.height; - var min_x = full_bb.x; - var min_y = full_bb.y; - - // FIXME: same re-creation problem with this function as getCheckedBBox() above - var getOffset = function(elem) { - var sw = elem.getAttribute("stroke-width"); - var offset = 0; - if (elem.getAttribute("stroke") != "none" && !isNaN(sw)) { - offset += sw/2; - } - return offset; - } - var bboxes = []; - $.each(elems, function(i, elem) { - var cur_bb = getCheckedBBox(elem); - if(cur_bb) { - var offset = getOffset(elem); - min_x = Math.min(min_x, cur_bb.x - offset); - min_y = Math.min(min_y, cur_bb.y - offset); - bboxes.push(cur_bb); - } - }); - - full_bb.x = min_x; - full_bb.y = min_y; - - $.each(elems, function(i, elem) { - var cur_bb = bboxes[i]; - // ensure that elem is really an element node - if (cur_bb && elem.nodeType == 1) { - var offset = getOffset(elem); - max_x = Math.max(max_x, cur_bb.x + cur_bb.width + offset); - max_y = Math.max(max_y, cur_bb.y + cur_bb.height + offset); - } - }); - - full_bb.width = max_x - min_x; - full_bb.height = max_y - min_y; - return full_bb; -} - -// Function: getVisibleElements -// Get all elements that have a BBox (excludes <defs>, <title>, etc). -// Note that 0-opacity, off-screen etc elements are still considered "visible" -// for this function -// -// Parameters: -// parent - The parent DOM element to search within -// includeBBox - Boolean to indicate that an object should return with the element and its bbox -// -// Returns: -// An array with all "visible" elements, or if includeBBox is true, an array with -// objects that include: -// * elem - The element -// * bbox - The element's BBox as retrieved from getStrokedBBox -var getVisibleElements = this.getVisibleElements = function(parent, includeBBox) { - if(!parent) parent = $(svgcontent).children(); // Prevent layers from being included - - var contentElems = []; - $(parent).children().each(function(i, elem) { - try { - var box = elem.getBBox(); - if (box) { - var item = includeBBox?{'elem':elem, 'bbox':getStrokedBBox([elem])}:elem; - contentElems.push(item); - } - } catch(e) {} - }); - return contentElems.reverse(); -} - -// Function: copyElem -// Create a clone of an element, updating its ID and its children's IDs when needed -// -// Parameters: -// el - DOM element to clone -// -// Returns: The cloned element -var copyElem = function(el) { - // manually create a copy of the element - var new_el = document.createElementNS(el.namespaceURI, el.nodeName); - $.each(el.attributes, function(i, attr) { - if (attr.localName != '-moz-math-font-style') { - new_el.setAttributeNS(attr.namespaceURI, attr.nodeName, attr.nodeValue); - } - }); - // set the copied element's new id - new_el.removeAttribute("id"); - new_el.id = getNextId(); - // manually increment obj_num because our cloned elements are not in the DOM yet - obj_num++; - - // Opera's "d" value needs to be reset for Opera/Win/non-EN - // Also needed for webkit (else does not keep curved segments on clone) - if((isWebkit) && el.nodeName == 'path') { - var fixed_d = pathActions.convertPath(el); - new_el.setAttribute('d', fixed_d); - } - - // now create copies of all children - $.each(el.childNodes, function(i, child) { - switch(child.nodeType) { - case 1: // element node - new_el.appendChild(copyElem(child)); - break; - case 3: // text node - new_el.textContent = child.nodeValue; - break; - default: - break; - } - }); - if(new_el.tagName == 'image') { - preventClickDefault(new_el); - } - return new_el; -}; - -// Function: getElem -// Get a DOM element by ID within the SVG root element. -// -// Parameters: -// id - String with the element's new ID -function getElem(id) { -// if(svgroot.getElementById) { -// // getElementById lookup -// return svgroot.getElementById(id); -// } else - - if(svgroot.querySelector) { - // querySelector lookup - return svgroot.querySelector('#'+id); - } else if(svgdoc.evaluate) { - // xpath lookup - return svgdoc.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+id+'"]', container, function() { return "http://www.w3.org/2000/svg"; }, 9, null).singleNodeValue; - } else { - // jQuery lookup: twice as slow as xpath in FF - return $(svgroot).find('[id=' + id + ']')[0]; - } - - // getElementById lookup: includes icons, not good - // return svgdoc.getElementById(id); -} - -// Set scope for these functions -var getId, getNextId; - -(function(c) { - - // Object to contain editor event names and callback functions - var events = {}; - - // Prefix string for element IDs - var idprefix = "svg_"; - - // Function: getId - // Returns the last created DOM element ID string - getId = c.getId = function() { - if (events["getid"]) return call("getid", obj_num); - if (randomize_ids) { - return idprefix + nonce +'_' + obj_num; - } else { - return idprefix + obj_num; - } - }; - - // Function: getNextId - // Creates and returns a unique ID string for a DOM element - getNextId = c.getNextId = function() { - // ensure the ID does not exist - var id = getId(); - - while (getElem(id)) { - obj_num++; - id = getId(); - } - return id; - }; - - // Run the callback function associated with the given event - // - // Parameters: - // event - String with the event name - // arg - Argument to pass through to the callback function - call = c.call = function(event, arg) { - if (events[event]) { - return events[event](this,arg); - } - }; - - // Function: bind - // Attaches a callback function to an event - // - // Parameters: - // event - String indicating the name of the event - // f - The callback function to bind to the event - // - // Return: - // The previous event - c.bind = function(event, f) { - var old = events[event]; - events[event] = f; - return old; - }; - - // Function: setIdPrefix - // Changes the ID prefix to the given value - // - // Parameters: - // p - String with the new prefix - c.setIdPrefix = function(p) { - idprefix = p; - }; -}(canvas)); - - -// Function: sanitizeSvg -// Sanitizes the input node and its children -// It only keeps what is allowed from our whitelist defined above -// -// Parameters: -// node - The DOM element to be checked, will also check its children -var sanitizeSvg = this.sanitizeSvg = function(node) { - // we only care about element nodes - // automatically return for all comment, etc nodes - // for text, we do a whitespace trim - if (node.nodeType == 3) { - node.nodeValue = node.nodeValue.replace(/^\s+|\s+$/g, ""); - // Remove empty text nodes - if(!node.nodeValue.length) node.parentNode.removeChild(node); - } - if (node.nodeType != 1) return; - var doc = node.ownerDocument; - var parent = node.parentNode; - // can parent ever be null here? I think the root node's parent is the document... - if (!doc || !parent) return; - - var allowedAttrs = svgWhiteList[node.nodeName]; - var allowedAttrsNS = svgWhiteListNS[node.nodeName]; - - // if this element is allowed - if (allowedAttrs != undefined) { - var se_attrs = []; - - var i = node.attributes.length; - while (i--) { - // if the attribute is not in our whitelist, then remove it - // could use jQuery's inArray(), but I don't know if that's any better - var attr = node.attributes.item(i); - var attrName = attr.nodeName; - var attrLocalName = attr.localName; - var attrNsURI = attr.namespaceURI; - // Check that an attribute with the correct localName in the correct namespace is on - // our whitelist or is a namespace declaration for one of our allowed namespaces - if (!(allowedAttrsNS.hasOwnProperty(attrLocalName) && attrNsURI == allowedAttrsNS[attrLocalName] && attrNsURI != xmlnsns) && - !(attrNsURI == xmlnsns && nsMap[attr.nodeValue]) ) - { - // Bypassing the whitelist to allow se: prefixes. Is there - // a more appropriate way to do this? - if(attrName.indexOf('se:') == 0) { - se_attrs.push([attrName, attr.nodeValue]); - } - node.removeAttributeNS(attrNsURI, attrLocalName); - } - // special handling for path d attribute - if (node.nodeName == 'path' && attrName == 'd') { - // Convert to absolute - node.setAttribute('d',pathActions.convertPath(node)); - pathActions.fixEnd(node); - } - // for the style attribute, rewrite it in terms of XML presentational attributes - if (attrName == "style") { - var props = attr.nodeValue.split(";"), - p = props.length; - while(p--) { - var nv = props[p].split(":"); - // now check that this attribute is supported - if (allowedAttrs.indexOf(nv[0]) != -1) { - node.setAttribute(nv[0],nv[1]); - } - } - node.removeAttribute('style'); - } - } - - $.each(se_attrs, function(i, attr) { - node.setAttributeNS(se_ns, attr[0], attr[1]); - }); - - // for some elements that have a xlink:href, ensure the URI refers to a local element - // (but not for links) - var href = node.getAttributeNS(xlinkns,"href"); - if(href && - $.inArray(node.nodeName, ["filter", "linearGradient", "pattern", - "radialGradient", "textPath", "use"]) != -1) - { - // TODO: we simply check if the first character is a #, is this bullet-proof? - if (href[0] != "#") { - // remove the attribute (but keep the element) - node.setAttributeNS(xlinkns, "xlink:href", ""); - node.removeAttributeNS(xlinkns, "href"); - } - } - - // Safari crashes on a <use> without a xlink:href, so we just remove the node here - if (node.nodeName == "use" && !node.getAttributeNS(xlinkns,"href")) { - parent.removeChild(node); - return; - } - // if the element has attributes pointing to a non-local reference, - // need to remove the attribute - $.each(["clip-path", "fill", "filter", "marker-end", "marker-mid", "marker-start", "mask", "stroke"],function(i,attr) { - var val = node.getAttribute(attr); - if (val) { - val = getUrlFromAttr(val); - // simply check for first character being a '#' - if (val && val[0] != "#") { - node.setAttribute(attr, ""); - node.removeAttribute(attr); - } - } - }); - - // recurse to children - i = node.childNodes.length; - while (i--) { sanitizeSvg(node.childNodes.item(i)); } - } - // else, remove this element - else { - // remove all children from this node and insert them before this node - // FIXME: in the case of animation elements this will hardly ever be correct - var children = []; - while (node.hasChildNodes()) { - children.push(parent.insertBefore(node.firstChild, node)); - } - - // remove this node from the document altogether - parent.removeChild(node); - - // call sanitizeSvg on each of those children - var i = children.length; - while (i--) { sanitizeSvg(children[i]); } - - } -}; - -// Function: getUrlFromAttr -// Extracts the URL from the url(...) syntax of some attributes. -// Three variants: -// * <circle fill="url(someFile.svg#foo)" /> -// * <circle fill="url('someFile.svg#foo')" /> -// * <circle fill='url("someFile.svg#foo")' /> -// -// Parameters: -// attrVal - The attribute value as a string -// -// Returns: -// String with just the URL, like someFile.svg#foo -var getUrlFromAttr = this.getUrlFromAttr = function(attrVal) { - if (attrVal) { - // url("#somegrad") - if (attrVal.indexOf('url("') == 0) { - return attrVal.substring(5,attrVal.indexOf('"',6)); - } - // url('#somegrad') - else if (attrVal.indexOf("url('") == 0) { - return attrVal.substring(5,attrVal.indexOf("'",6)); - } - else if (attrVal.indexOf("url(") == 0) { - return attrVal.substring(4,attrVal.indexOf(')')); - } - } - return null; -}; - -// Function: getBBox -// Get the given/selected element's bounding box object, convert it to be more -// usable when necessary -// -// Parameters: -// elem - Optional DOM element to get the BBox for -var getBBox = this.getBBox = function(elem) { - var selected = elem || selectedElements[0]; - if (elem.nodeType != 1) return null; - var ret = null; - if(elem.nodeName == 'text' && selected.textContent == '') { - selected.textContent = 'a'; // Some character needed for the selector to use. - ret = selected.getBBox(); - selected.textContent = ''; - } else if(elem.nodeName == 'path' && isWebkit) { - ret = getPathBBox(selected); - } else if(elem.nodeName == 'use' && !isWebkit) { - ret = selected.getBBox(); - ret.x += parseFloat(selected.getAttribute('x')||0); - ret.y += parseFloat(selected.getAttribute('y')||0); - } else if(elem.nodeName == 'foreignObject') { - ret = selected.getBBox(); - ret.x += parseFloat(selected.getAttribute('x')||0); - ret.y += parseFloat(selected.getAttribute('y')||0); - } else { - try { ret = selected.getBBox(); } - catch(e) { - // Check if element is child of a foreignObject - var fo = $(selected).closest("foreignObject"); - if(fo.length) { - try { - ret = fo[0].getBBox(); - } catch(e) { - ret = null; - } - } else { - ret = null; - } - } - } - - // get the bounding box from the DOM (which is in that element's coordinate system) - return ret; -}; - - -// Function: ffClone -// Hack for Firefox bugs where text element features aren't updated. -// This function clones the element and re-selects it -// TODO: Test for this bug on load and add it to "support" object instead of -// browser sniffing -// -// Parameters: -// elem - The (text) DOM element to clone -var ffClone = function(elem) { - if(navigator.userAgent.indexOf('Gecko/') == -1) return elem; - var clone = elem.cloneNode(true) - elem.parentNode.insertBefore(clone, elem); - elem.parentNode.removeChild(elem); - selectorManager.releaseSelector(elem); - selectedElements[0] = clone; - selectorManager.requestSelector(clone).showGrips(true); - return clone; -} - -// Function: getPathBBox -// Get correct BBox for a path in Webkit -// Converted from code found here: -// http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html -// -// Parameters: -// path - The path DOM element to get the BBox for -// -// Returns: -// A BBox-like object -var getPathBBox = function(path) { - var seglist = path.pathSegList; - var tot = seglist.numberOfItems; - - var bounds = [[], []]; - var start = seglist.getItem(0); - var P0 = [start.x, start.y]; - - for(var i=0; i < tot; i++) { - var seg = seglist.getItem(i); - if(!seg.x) continue; - - // Add actual points to limits - bounds[0].push(P0[0]); - bounds[1].push(P0[1]); - - if(seg.x1) { - var P1 = [seg.x1, seg.y1], - P2 = [seg.x2, seg.y2], - P3 = [seg.x, seg.y]; - - for(var j=0; j < 2; j++) { - - var calc = function(t) { - return Math.pow(1-t,3) * P0[j] - + 3 * Math.pow(1-t,2) * t * P1[j] - + 3 * (1-t) * Math.pow(t,2) * P2[j] - + Math.pow(t,3) * P3[j]; - }; - - var b = 6 * P0[j] - 12 * P1[j] + 6 * P2[j]; - var a = -3 * P0[j] + 9 * P1[j] - 9 * P2[j] + 3 * P3[j]; - var c = 3 * P1[j] - 3 * P0[j]; - - if(a == 0) { - if(b == 0) { - continue; - } - var t = -c / b; - if(0 < t && t < 1) { - bounds[j].push(calc(t)); - } - continue; - } - - var b2ac = Math.pow(b,2) - 4 * c * a; - if(b2ac < 0) continue; - var t1 = (-b + Math.sqrt(b2ac))/(2 * a); - if(0 < t1 && t1 < 1) bounds[j].push(calc(t1)); - var t2 = (-b - Math.sqrt(b2ac))/(2 * a); - if(0 < t2 && t2 < 1) bounds[j].push(calc(t2)); - } - P0 = P3; - } else { - bounds[0].push(seg.x); - bounds[1].push(seg.y); - } - } - - var x = Math.min.apply(null, bounds[0]); - var w = Math.max.apply(null, bounds[0]) - x; - var y = Math.min.apply(null, bounds[1]); - var h = Math.max.apply(null, bounds[1]) - y; - return { - 'x': x, - 'y': y, - 'width': w, - 'height': h - }; -} - -// this.each is deprecated, if any extension used this it can be recreated by doing this: -// $(canvas.getRootElem()).children().each(...) - -// this.each = function(cb) { -// $(svgroot).children().each(cb); -// }; - - -// Group: Element Transforms - -// Function: getRotationAngle -// Get the rotation angle of the given/selected DOM element -// -// Parameters: -// elem - Optional DOM element to get the angle for -// to_rad - Boolean that when true returns the value in radians rather than degrees -// -// Returns: -// Float with the angle in degrees or radians -var getRotationAngle = this.getRotationAngle = function(elem, to_rad) { - var selected = elem || selectedElements[0]; - // find the rotation transform (if any) and set it - var tlist = getTransformList(selected); - if(!tlist) return 0; // <svg> elements have no tlist - var N = tlist.numberOfItems; - for (var i = 0; i < N; ++i) { - var xform = tlist.getItem(i); - if (xform.type == 4) { - return to_rad ? xform.angle * Math.PI / 180.0 : xform.angle; - } - } - return 0.0; -}; - -// Function: setRotationAngle -// Removes any old rotations if present, prepends a new rotation at the -// transformed center -// -// Parameters: -// val - The new rotation angle in degrees -// preventUndo - Boolean indicating whether the action should be undoable or not -this.setRotationAngle = function(val, preventUndo) { - // ensure val is the proper type - val = parseFloat(val); - var elem = selectedElements[0]; - var oldTransform = elem.getAttribute("transform"); - var bbox = getBBox(elem); - var cx = bbox.x+bbox.width/2, cy = bbox.y+bbox.height/2; - var tlist = getTransformList(elem); - - // only remove the real rotational transform if present (i.e. at index=0) - if (tlist.numberOfItems > 0) { - var xform = tlist.getItem(0); - if (xform.type == 4) { - tlist.removeItem(0); - } - } - // find R_nc and insert it - if (val != 0) { - var center = transformPoint(cx,cy,transformListToTransform(tlist).matrix); - var R_nc = svgroot.createSVGTransform(); - R_nc.setRotate(val, center.x, center.y); - tlist.insertItemBefore(R_nc,0); - } - else if (tlist.numberOfItems == 0) { - elem.removeAttribute("transform"); - } - - if (!preventUndo) { - // we need to undo it, then redo it so it can be undo-able! :) - // TODO: figure out how to make changes to transform list undo-able cross-browser? - var newTransform = elem.getAttribute("transform"); - elem.setAttribute("transform", oldTransform); - changeSelectedAttribute("transform",newTransform,selectedElements); - } - var pointGripContainer = getElem("pathpointgrip_container"); -// if(elem.nodeName == "path" && pointGripContainer) { -// pathActions.setPointContainerTransform(elem.getAttribute("transform")); -// } - var selector = selectorManager.requestSelector(selectedElements[0]); - selector.resize(); - selector.updateGripCursors(val); -}; - - -// Function: getTransformList -// Returns an object that behaves like a SVGTransformList for the given DOM element -// -// Parameters: -// elem - DOM element to get a transformlist from -var getTransformList = this.getTransformList = function(elem) { - if (isWebkit) { - var id = elem.id; - if(!id) { - // Get unique ID for temporary element - id = 'temp'; - } - var t = svgTransformLists[id]; - if (!t || id == 'temp') { - svgTransformLists[id] = new SVGEditTransformList(elem); - svgTransformLists[id]._init(); - t = svgTransformLists[id]; - } - return t; - } - else if (elem.transform) { - return elem.transform.baseVal; - } - else if (elem.gradientTransform) { - return elem.gradientTransform.baseVal; - } - return null; -}; - -// Function: recalculateAllSelectedDimensions -// Runs recalculateDimensions on the selected elements, -// adding the changes to a single batch command -var recalculateAllSelectedDimensions = this.recalculateAllSelectedDimensions = function() { - var text = (current_resize_mode == "none" ? "position" : "size"); - var batchCmd = new BatchCommand(text); - - var i = selectedElements.length; - while(i--) { - var elem = selectedElements[i]; -// if(getRotationAngle(elem) && !hasMatrixTransform(getTransformList(elem))) continue; - var cmd = recalculateDimensions(elem); - if (cmd) { - batchCmd.addSubCommand(cmd); - } - } - - if (!batchCmd.isEmpty()) { - addCommandToHistory(batchCmd); - call("changed", selectedElements); - } -}; - -// this is how we map paths to our preferred relative segment types -var pathMap = [0, 'z', 'M', 'm', 'L', 'l', 'C', 'c', 'Q', 'q', 'A', 'a', - 'H', 'h', 'V', 'v', 'S', 's', 'T', 't']; - -// Debug tool to easily see the current matrix in the browser's console -var logMatrix = function(m) { - console.log([m.a,m.b,m.c,m.d,m.e,m.f]); -}; - -// Function: remapElement -// Applies coordinate changes to an element based on the given matrix -// -// Parameters: -// selected - DOM element to be changed -// changes - Object with changes to be remapped -// m - Matrix object to use for remapping coordinates -var remapElement = this.remapElement = function(selected,changes,m) { - var remap = function(x,y) { return transformPoint(x,y,m); }, - scalew = function(w) { return m.a*w; }, - scaleh = function(h) { return m.d*h; }, - box = getBBox(selected); - - switch (selected.tagName) - { - case "line": - var pt1 = remap(changes["x1"],changes["y1"]), - pt2 = remap(changes["x2"],changes["y2"]); - changes["x1"] = pt1.x; - changes["y1"] = pt1.y; - changes["x2"] = pt2.x; - changes["y2"] = pt2.y; - break; - case "circle": - var c = remap(changes["cx"],changes["cy"]); - changes["cx"] = c.x; - changes["cy"] = c.y; - // take the minimum of the new selected box's dimensions for the new circle radius - var tbox = transformBox(box.x, box.y, box.width, box.height, m); - var w = tbox.tr.x - tbox.tl.x, h = tbox.bl.y - tbox.tl.y; - changes["r"] = Math.min(w/2, h/2); - break; - case "ellipse": - var c = remap(changes["cx"],changes["cy"]); - changes["cx"] = c.x; - changes["cy"] = c.y; - changes["rx"] = scalew(changes["rx"]); - changes["ry"] = scaleh(changes["ry"]); - break; - case "foreignObject": - case "rect": - case "image": - var pt1 = remap(changes["x"],changes["y"]); - changes["x"] = pt1.x; - changes["y"] = pt1.y; - changes["width"] = scalew(changes["width"]); - changes["height"] = scaleh(changes["height"]); - break; - case "use": - var pt1 = remap(changes["x"],changes["y"]); - changes["x"] = pt1.x; - changes["y"] = pt1.y; - break; - case "text": - // if it was a translate, then just update x,y - if (m.a == 1 && m.b == 0 && m.c == 0 && m.d == 1 && - (m.e != 0 || m.f != 0) ) - { - // [T][M] = [M][T'] - // therefore [T'] = [M_inv][T][M] - var existing = transformListToTransform(selected).matrix, - t_new = matrixMultiply(existing.inverse(), m, existing); - changes["x"] = parseFloat(changes["x"]) + t_new.e; - changes["y"] = parseFloat(changes["y"]) + t_new.f; - } - else { - // we just absorb all matrices into the element and don't do any remapping - var chlist = getTransformList(selected); - var mt = svgroot.createSVGTransform(); - mt.setMatrix(matrixMultiply(transformListToTransform(chlist).matrix,m)); - chlist.clear(); - chlist.appendItem(mt); - } - break; - case "polygon": - case "polyline": - var len = changes["points"].length; - for (var i = 0; i < len; ++i) { - var pt = changes["points"][i]; - pt = remap(pt.x,pt.y); - changes["points"][i].x = pt.x; - changes["points"][i].y = pt.y; - } - break; - case "path": - var segList = selected.pathSegList; - var len = segList.numberOfItems; - changes.d = new Array(len); - for (var i = 0; i < len; ++i) { - var seg = segList.getItem(i); - changes.d[i] = { - type: seg.pathSegType, - x: seg.x, - y: seg.y, - x1: seg.x1, - y1: seg.y1, - x2: seg.x2, - y2: seg.y2, - r1: seg.r1, - r2: seg.r2, - angle: seg.angle, - largeArcFlag: seg.largeArcFlag, - sweepFlag: seg.sweepFlag - }; - } - - var len = changes["d"].length, - firstseg = changes["d"][0], - currentpt = remap(firstseg.x,firstseg.y); - changes["d"][0].x = currentpt.x; - changes["d"][0].y = currentpt.y; - for (var i = 1; i < len; ++i) { - var seg = changes["d"][i]; - var type = seg.type; - // if absolute or first segment, we want to remap x, y, x1, y1, x2, y2 - // if relative, we want to scalew, scaleh - if (type % 2 == 0) { // absolute - var thisx = (seg.x != undefined) ? seg.x : currentpt.x, // for V commands - thisy = (seg.y != undefined) ? seg.y : currentpt.y, // for H commands - pt = remap(thisx,thisy), - pt1 = remap(seg.x1,seg.y1), - pt2 = remap(seg.x2,seg.y2); - seg.x = pt.x; - seg.y = pt.y; - seg.x1 = pt1.x; - seg.y1 = pt1.y; - seg.x2 = pt2.x; - seg.y2 = pt2.y; - seg.r1 = scalew(seg.r1), - seg.r2 = scaleh(seg.r2); - } - else { // relative - seg.x = scalew(seg.x); - seg.y = scaleh(seg.y); - seg.x1 = scalew(seg.x1); - seg.y1 = scaleh(seg.y1); - seg.x2 = scalew(seg.x2); - seg.y2 = scaleh(seg.y2); - seg.r1 = scalew(seg.r1), - seg.r2 = scaleh(seg.r2); - } - // tracks the current position (for H,V commands) - if (seg.x) currentpt.x = seg.x; - if (seg.y) currentpt.y = seg.y; - } // for each segment - break; - } // switch on element type to get initial values - - // now we have a set of changes and an applied reduced transform list - // we apply the changes directly to the DOM - // TODO: merge this switch with the above one and optimize - switch (selected.tagName) - { - case "foreignObject": - case "rect": - case "image": - changes.x = changes.x-0 + Math.min(0,changes.width); - changes.y = changes.y-0 + Math.min(0,changes.height); - changes.width = Math.abs(changes.width); - changes.height = Math.abs(changes.height); - assignAttributes(selected, changes, 1000, true); - break; - case "use": - assignAttributes(selected, changes, 1000, true); - break; - case "ellipse": - changes.rx = Math.abs(changes.rx); - changes.ry = Math.abs(changes.ry); - case "circle": - if(changes.r) changes.r = Math.abs(changes.r); - case "line": - case "text": - assignAttributes(selected, changes, 1000, true); - break; - case "polyline": - case "polygon": - var len = changes["points"].length; - var pstr = ""; - for (var i = 0; i < len; ++i) { - var pt = changes["points"][i]; - pstr += pt.x + "," + pt.y + " "; - } - selected.setAttribute("points", pstr); - break; - case "path": - var dstr = ""; - var len = changes["d"].length; - for (var i = 0; i < len; ++i) { - var seg = changes["d"][i]; - var type = seg.type; - dstr += pathMap[type]; - switch(type) { - case 13: // relative horizontal line (h) - case 12: // absolute horizontal line (H) - dstr += seg.x + " "; - break; - case 15: // relative vertical line (v) - case 14: // absolute vertical line (V) - dstr += seg.y + " "; - break; - case 3: // relative move (m) - case 5: // relative line (l) - case 19: // relative smooth quad (t) - case 2: // absolute move (M) - case 4: // absolute line (L) - case 18: // absolute smooth quad (T) - dstr += seg.x + "," + seg.y + " "; - break; - case 7: // relative cubic (c) - case 6: // absolute cubic (C) - dstr += seg.x1 + "," + seg.y1 + " " + seg.x2 + "," + seg.y2 + " " + - seg.x + "," + seg.y + " "; - break; - case 9: // relative quad (q) - case 8: // absolute quad (Q) - dstr += seg.x1 + "," + seg.y1 + " " + seg.x + "," + seg.y + " "; - break; - case 11: // relative elliptical arc (a) - case 10: // absolute elliptical arc (A) - dstr += seg.r1 + "," + seg.r2 + " " + seg.angle + " " + Number(seg.largeArcFlag) + - " " + Number(seg.sweepFlag) + " " + seg.x + "," + seg.y + " "; - break; - case 17: // relative smooth cubic (s) - case 16: // absolute smooth cubic (S) - dstr += seg.x2 + "," + seg.y2 + " " + seg.x + "," + seg.y + " "; - break; - } - } - selected.setAttribute("d", dstr); - break; - } - -}; - -// Function: recalculateDimensions -// Decides the course of action based on the element's transform list -// -// Parameters: -// selected - The DOM element to recalculate -// -// Returns: -// Undo command object with the resulting change -var recalculateDimensions = this.recalculateDimensions = function(selected) { - if (selected == null) return null; - - var tlist = getTransformList(selected); - - // remove any unnecessary transforms - if (tlist && tlist.numberOfItems > 0) { - var k = tlist.numberOfItems; - while (k--) { - var xform = tlist.getItem(k); - if (xform.type == 0) { - tlist.removeItem(k); - } - // remove identity matrices - else if (xform.type == 1) { - if (isIdentity(xform.matrix)) { - tlist.removeItem(k); - } - } - // remove zero-degree rotations - else if (xform.type == 4) { - if (xform.angle == 0) { - tlist.removeItem(k); - } - } - } - // End here if all it has is a rotation - if(tlist.numberOfItems == 1 && getRotationAngle(selected)) return null; - } - - // if this element had no transforms, we are done - if (!tlist || tlist.numberOfItems == 0) { - selected.removeAttribute("transform"); - return null; - } - - // we know we have some transforms, so set up return variable - var batchCmd = new BatchCommand("Transform"); - - // store initial values that will be affected by reducing the transform list - var changes = {}, initial = null, attrs = []; - switch (selected.tagName) - { - case "line": - attrs = ["x1", "y1", "x2", "y2"]; - break; - case "circle": - attrs = ["cx", "cy", "r"]; - break; - case "ellipse": - attrs = ["cx", "cy", "rx", "ry"]; - break; - case "foreignObject": - case "rect": - case "image": - attrs = ["width", "height", "x", "y"]; - break; - case "use": - attrs = ["x", "y"]; - break; - case "text": - attrs = ["x", "y"]; - break; - case "polygon": - case "polyline": - initial = {}; - initial["points"] = selected.getAttribute("points"); - var list = selected.points; - var len = list.numberOfItems; - changes["points"] = new Array(len); - for (var i = 0; i < len; ++i) { - var pt = list.getItem(i); - changes["points"][i] = {x:pt.x,y:pt.y}; - } - break; - case "path": - initial = {}; - initial["d"] = selected.getAttribute("d"); - changes["d"] = selected.getAttribute("d"); - break; - } // switch on element type to get initial values - - if(attrs.length) { - changes = $(selected).attr(attrs); - $.each(changes, function(attr, val) { - changes[attr] = convertToNum(attr, val); - }); - } - - // if we haven't created an initial array in polygon/polyline/path, then - // make a copy of initial values and include the transform - if (initial == null) { - initial = $.extend(true, {}, changes); - $.each(initial, function(attr, val) { - initial[attr] = convertToNum(attr, val); - }); - } - // save the start transform value too - initial["transform"] = start_transform ? start_transform : ""; - - // if it's a group, we have special processing to flatten transforms - if (selected.tagName == "g" || selected.tagName == "a") { - var box = getBBox(selected), - oldcenter = {x: box.x+box.width/2, y: box.y+box.height/2}, - newcenter = transformPoint(box.x+box.width/2, box.y+box.height/2, - transformListToTransform(tlist).matrix), - m = svgroot.createSVGMatrix(); - - - // temporarily strip off the rotate and save the old center - var gangle = getRotationAngle(selected); - if (gangle) { - var a = gangle * Math.PI / 180; - if ( Math.abs(a) > (1.0e-10) ) { - var s = Math.sin(a)/(1 - Math.cos(a)); - } else { - // FIXME: This blows up if the angle is exactly 0! - var s = 2/a; - } - for (var i = 0; i < tlist.numberOfItems; ++i) { - var xform = tlist.getItem(i); - if (xform.type == 4) { - // extract old center through mystical arts - var rm = xform.matrix; - oldcenter.y = (s*rm.e + rm.f)/2; - oldcenter.x = (rm.e - s*rm.f)/2; - tlist.removeItem(i); - break; - } - } - } - var tx = 0, ty = 0, - operation = 0, - N = tlist.numberOfItems; - - if(N) { - var first_m = tlist.getItem(0).matrix; - } - - // first, if it was a scale then the second-last transform will be it - if (N >= 3 && tlist.getItem(N-2).type == 3 && - tlist.getItem(N-3).type == 2 && tlist.getItem(N-1).type == 2) - { - operation = 3; // scale - - // if the children are unrotated, pass the scale down directly - // otherwise pass the equivalent matrix() down directly - var tm = tlist.getItem(N-3).matrix, - sm = tlist.getItem(N-2).matrix, - tmn = tlist.getItem(N-1).matrix; - - var children = selected.childNodes; - var c = children.length; - while (c--) { - var child = children.item(c); - tx = 0; - ty = 0; - if (child.nodeType == 1) { - var childTlist = getTransformList(child); - - // some children might not have a transform (<metadata>, <defs>, etc) - if (!childTlist) continue; - - var m = transformListToTransform(childTlist).matrix; - - var angle = getRotationAngle(child); - var old_start_transform = start_transform; - var childxforms = []; - start_transform = child.getAttribute("transform"); - if(angle || hasMatrixTransform(childTlist)) { - var e2t = svgroot.createSVGTransform(); - e2t.setMatrix(matrixMultiply(tm, sm, tmn, m)); - childTlist.clear(); - childTlist.appendItem(e2t); - childxforms.push(e2t); - } - // if not rotated or skewed, push the [T][S][-T] down to the child - else { - // update the transform list with translate,scale,translate - - // slide the [T][S][-T] from the front to the back - // [T][S][-T][M] = [M][T2][S2][-T2] - - // (only bringing [-T] to the right of [M]) - // [T][S][-T][M] = [T][S][M][-T2] - // [-T2] = [M_inv][-T][M] - var t2n = matrixMultiply(m.inverse(), tmn, m); - // [T2] is always negative translation of [-T2] - var t2 = svgroot.createSVGMatrix(); - t2.e = -t2n.e; - t2.f = -t2n.f; - - // [T][S][-T][M] = [M][T2][S2][-T2] - // [S2] = [T2_inv][M_inv][T][S][-T][M][-T2_inv] - var s2 = matrixMultiply(t2.inverse(), m.inverse(), tm, sm, tmn, m, t2n.inverse()); - - var translateOrigin = svgroot.createSVGTransform(), - scale = svgroot.createSVGTransform(), - translateBack = svgroot.createSVGTransform(); - translateOrigin.setTranslate(t2n.e, t2n.f); - scale.setScale(s2.a, s2.d); - translateBack.setTranslate(t2.e, t2.f); - childTlist.appendItem(translateBack); - childTlist.appendItem(scale); - childTlist.appendItem(translateOrigin); - childxforms.push(translateBack); - childxforms.push(scale); - childxforms.push(translateOrigin); - logMatrix(translateBack.matrix); - logMatrix(scale.matrix); - } // not rotated - batchCmd.addSubCommand( recalculateDimensions(child) ); - // TODO: If any <use> have this group as a parent and are - // referencing this child, then we need to impose a reverse - // scale on it so that when it won't get double-translated -// var uses = selected.getElementsByTagNameNS(svgns, "use"); -// var href = "#"+child.id; -// var u = uses.length; -// while (u--) { -// var useElem = uses.item(u); -// if(href == useElem.getAttributeNS(xlinkns, "href")) { -// var usexlate = svgroot.createSVGTransform(); -// usexlate.setTranslate(-tx,-ty); -// getTransformList(useElem).insertItemBefore(usexlate,0); -// batchCmd.addSubCommand( recalculateDimensions(useElem) ); -// } -// } - start_transform = old_start_transform; - } // element - } // for each child - // Remove these transforms from group - tlist.removeItem(N-1); - tlist.removeItem(N-2); - tlist.removeItem(N-3); - } - else if (N >= 3 && tlist.getItem(N-1).type == 1) - { - operation = 3; // scale - m = transformListToTransform(tlist).matrix; - var e2t = svgroot.createSVGTransform(); - e2t.setMatrix(m); - tlist.clear(); - tlist.appendItem(e2t); - } - // next, check if the first transform was a translate - // if we had [ T1 ] [ M ] we want to transform this into [ M ] [ T2 ] - // therefore [ T2 ] = [ M_inv ] [ T1 ] [ M ] - else if ( (N == 1 || (N > 1 && tlist.getItem(1).type != 3)) && - tlist.getItem(0).type == 2) - { - operation = 2; // translate - var T_M = transformListToTransform(tlist).matrix; - tlist.removeItem(0); - var M_inv = transformListToTransform(tlist).matrix.inverse(); - var M2 = matrixMultiply( M_inv, T_M ); - - tx = M2.e; - ty = M2.f; - - if (tx != 0 || ty != 0) { - // we pass the translates down to the individual children - var children = selected.childNodes; - var c = children.length; - while (c--) { - var child = children.item(c); - if (child.nodeType == 1) { - var old_start_transform = start_transform; - start_transform = child.getAttribute("transform"); - - var childTlist = getTransformList(child); - // some children might not have a transform (<metadata>, <defs>, etc) - if (childTlist) { - var newxlate = svgroot.createSVGTransform(); - newxlate.setTranslate(tx,ty); - childTlist.insertItemBefore(newxlate, 0); - batchCmd.addSubCommand( recalculateDimensions(child) ); - // If any <use> have this group as a parent and are - // referencing this child, then impose a reverse translate on it - // so that when it won't get double-translated - var uses = selected.getElementsByTagNameNS(svgns, "use"); - var href = "#"+child.id; - var u = uses.length; - while (u--) { - var useElem = uses.item(u); - if(href == useElem.getAttributeNS(xlinkns, "href")) { - var usexlate = svgroot.createSVGTransform(); - usexlate.setTranslate(-tx,-ty); - getTransformList(useElem).insertItemBefore(usexlate,0); - batchCmd.addSubCommand( recalculateDimensions(useElem) ); - } - } - start_transform = old_start_transform; - } - } - } - start_transform = old_start_transform; - } - } - // else, a matrix imposition from a parent group - // keep pushing it down to the children - else if (N == 1 && tlist.getItem(0).type == 1 && !gangle) { - operation = 1; - var m = tlist.getItem(0).matrix, - children = selected.childNodes, - c = children.length; - while (c--) { - var child = children.item(c); - if (child.nodeType == 1) { - var old_start_transform = start_transform; - start_transform = child.getAttribute("transform"); - var childTlist = getTransformList(child); - - var em = matrixMultiply(m, transformListToTransform(childTlist).matrix); - var e2m = svgroot.createSVGTransform(); - e2m.setMatrix(em); - childTlist.clear(); - childTlist.appendItem(e2m,0); - - batchCmd.addSubCommand( recalculateDimensions(child) ); - start_transform = old_start_transform; - } - } - tlist.clear(); - } - // else it was just a rotate - else { - if (gangle) { - var newRot = svgroot.createSVGTransform(); - newRot.setRotate(gangle,newcenter.x,newcenter.y); - tlist.insertItemBefore(newRot, 0); - } - if (tlist.numberOfItems == 0) { - selected.removeAttribute("transform"); - } - return null; - } - - // if it was a translate, put back the rotate at the new center - if (operation == 2) { - if (gangle) { - newcenter = { - x: oldcenter.x + first_m.e, - y: oldcenter.y + first_m.f - }; - - var newRot = svgroot.createSVGTransform(); - newRot.setRotate(gangle,newcenter.x,newcenter.y); - tlist.insertItemBefore(newRot, 0); - } - } - // if it was a resize - else if (operation == 3) { - var m = transformListToTransform(tlist).matrix; - var roldt = svgroot.createSVGTransform(); - roldt.setRotate(gangle, oldcenter.x, oldcenter.y); - var rold = roldt.matrix; - var rnew = svgroot.createSVGTransform(); - rnew.setRotate(gangle, newcenter.x, newcenter.y); - var rnew_inv = rnew.matrix.inverse(), - m_inv = m.inverse(), - extrat = matrixMultiply(m_inv, rnew_inv, rold, m); - - tx = extrat.e; - ty = extrat.f; - - if (tx != 0 || ty != 0) { - // now push this transform down to the children - // we pass the translates down to the individual children - var children = selected.childNodes; - var c = children.length; - while (c--) { - var child = children.item(c); - if (child.nodeType == 1) { - var old_start_transform = start_transform; - start_transform = child.getAttribute("transform"); - var childTlist = getTransformList(child); - var newxlate = svgroot.createSVGTransform(); - newxlate.setTranslate(tx,ty); - childTlist.insertItemBefore(newxlate, 0); - batchCmd.addSubCommand( recalculateDimensions(child) ); - start_transform = old_start_transform; - } - } - } - - if (gangle) { - tlist.insertItemBefore(rnew, 0); - } - } - } - // else, it's a non-group - else { - // FIXME: box might be null for some elements (<metadata> etc), need to handle this - var box = getBBox(selected); - if(!box) return null; - - var oldcenter = {x: box.x+box.width/2, y: box.y+box.height/2}, - newcenter = transformPoint(box.x+box.width/2, box.y+box.height/2, - transformListToTransform(tlist).matrix), - m = svgroot.createSVGMatrix(), - // temporarily strip off the rotate and save the old center - angle = getRotationAngle(selected); - if (angle) { - var a = angle * Math.PI / 180; - if ( Math.abs(a) > (1.0e-10) ) { - var s = Math.sin(a)/(1 - Math.cos(a)); - } else { - // FIXME: This blows up if the angle is exactly 0! - var s = 2/a; - } - for (var i = 0; i < tlist.numberOfItems; ++i) { - var xform = tlist.getItem(i); - if (xform.type == 4) { - // extract old center through mystical arts - var rm = xform.matrix; - oldcenter.y = (s*rm.e + rm.f)/2; - oldcenter.x = (rm.e - s*rm.f)/2; - tlist.removeItem(i); - break; - } - } - } - - // 2 = translate, 3 = scale, 4 = rotate, 1 = matrix imposition - var operation = 0; - var N = tlist.numberOfItems; - - - // Check if it has a gradient with userSpaceOnUse, in which case - // adjust it by recalculating the matrix transform. - // TODO: Make this work in Webkit using SVGEditTransformList - if(!isWebkit) { - var fill = selected.getAttribute('fill'); - if(fill && fill.indexOf('url(') === 0) { - var grad = getElem(getUrlFromAttr(fill).substr(1)); - if(grad.getAttribute('gradientUnits') === 'userSpaceOnUse') { - //Update the userSpaceOnUse element - var grad = $(grad); - m = transformListToTransform(tlist).matrix; - var gtlist = getTransformList(grad[0]); - var gmatrix = transformListToTransform(gtlist).matrix; - m = matrixMultiply(m, gmatrix); - var m_str = "matrix(" + [m.a,m.b,m.c,m.d,m.e,m.f].join(",") + ")"; - grad.attr('gradientTransform', m_str); - } - } - } - - // first, if it was a scale of a non-skewed element, then the second-last - // transform will be the [S] - // if we had [M][T][S][T] we want to extract the matrix equivalent of - // [T][S][T] and push it down to the element - if (N >= 3 && tlist.getItem(N-2).type == 3 && - tlist.getItem(N-3).type == 2 && tlist.getItem(N-1).type == 2 && - selected.nodeName != "use") - { - operation = 3; // scale - m = transformListToTransform(tlist,N-3,N-1).matrix; - tlist.removeItem(N-1); - tlist.removeItem(N-2); - tlist.removeItem(N-3); - } // if we had [T][S][-T][M], then this was a skewed element being resized - // Thus, we simply combine it all into one matrix - else if(N == 4 && tlist.getItem(N-1).type == 1) { - operation = 3; // scale - m = transformListToTransform(tlist).matrix; - var e2t = svgroot.createSVGTransform(); - e2t.setMatrix(m); - tlist.clear(); - tlist.appendItem(e2t); - // reset the matrix so that the element is not re-mapped - m = svgroot.createSVGMatrix(); - } // if we had [R][T][S][-T][M], then this was a rotated matrix-element - // if we had [T1][M] we want to transform this into [M][T2] - // therefore [ T2 ] = [ M_inv ] [ T1 ] [ M ] and we can push [T2] - // down to the element - else if ( (N == 1 || (N > 1 && tlist.getItem(1).type != 3)) && - tlist.getItem(0).type == 2) - { - operation = 2; // translate - var oldxlate = tlist.getItem(0).matrix, - meq = transformListToTransform(tlist,1).matrix, - meq_inv = meq.inverse(); - m = matrixMultiply( meq_inv, oldxlate, meq ); - tlist.removeItem(0); - } - // else if this child now has a matrix imposition (from a parent group) - // we might be able to simplify - else if (N == 1 && tlist.getItem(0).type == 1 && !angle) { - // Remap all point-based elements - m = transformListToTransform(tlist).matrix; - switch (selected.tagName) { - case 'line': - changes = $(selected).attr(["x1","y1","x2","y2"]); - case 'polyline': - case 'polygon': - changes.points = selected.getAttribute("points"); - if(changes.points) { - var list = selected.points; - var len = list.numberOfItems; - changes.points = new Array(len); - for (var i = 0; i < len; ++i) { - var pt = list.getItem(i); - changes.points[i] = {x:pt.x,y:pt.y}; - } - } - case 'path': - changes.d = selected.getAttribute("d"); - operation = 1; - tlist.clear(); - break; - default: - break; - } - } - // if it was a rotation, put the rotate back and return without a command - // (this function has zero work to do for a rotate()) - else { - operation = 4; // rotation - if (angle) { - var newRot = svgroot.createSVGTransform(); - newRot.setRotate(angle,newcenter.x,newcenter.y); - tlist.insertItemBefore(newRot, 0); - } - if (tlist.numberOfItems == 0) { - selected.removeAttribute("transform"); - } - return null; - } - - // if it was a translate or resize, we need to remap the element and absorb the xform - if (operation == 1 || operation == 2 || operation == 3) { - remapElement(selected,changes,m); - } // if we are remapping - - // if it was a translate, put back the rotate at the new center - if (operation == 2) { - if (angle) { - newcenter = { - x: oldcenter.x + m.e, - y: oldcenter.y + m.f - }; - var newRot = svgroot.createSVGTransform(); - newRot.setRotate(angle, newcenter.x, newcenter.y); - tlist.insertItemBefore(newRot, 0); - } - } - // [Rold][M][T][S][-T] became [Rold][M] - // we want it to be [Rnew][M][Tr] where Tr is the - // translation required to re-center it - // Therefore, [Tr] = [M_inv][Rnew_inv][Rold][M] - else if (operation == 3) { - var m = transformListToTransform(tlist).matrix; - var roldt = svgroot.createSVGTransform(); - roldt.setRotate(angle, oldcenter.x, oldcenter.y); - var rold = roldt.matrix; - var rnew = svgroot.createSVGTransform(); - rnew.setRotate(angle, newcenter.x, newcenter.y); - var rnew_inv = rnew.matrix.inverse(); - var m_inv = m.inverse(); - var extrat = matrixMultiply(m_inv, rnew_inv, rold, m); - - remapElement(selected,changes,extrat); - if (angle) { - tlist.insertItemBefore(rnew,0); - } - } - } // a non-group - - // if the transform list has been emptied, remove it - if (tlist.numberOfItems == 0) { - selected.removeAttribute("transform"); - } - batchCmd.addSubCommand(new ChangeElementCommand(selected, initial)); - - return batchCmd; -}; - -// Root Current Transformation Matrix in user units -var root_sctm = null; - -// Function: transformPoint -// A (hopefully) quicker function to transform a point by a matrix -// (this function avoids any DOM calls and just does the math) -// -// Parameters: -// x - Float representing the x coordinate -// y - Float representing the y coordinate -// m - Matrix object to transform the point with -// Returns a x,y object representing the transformed point -var transformPoint = function(x, y, m) { - return { x: m.a * x + m.c * y + m.e, y: m.b * x + m.d * y + m.f}; -}; - -// Function: isIdentity -// Helper function to check if the matrix performs no actual transform -// (i.e. exists for identity purposes) -// -// Parameters: -// m - The matrix object to check -// -// Returns: -// Boolean indicating whether or not the matrix is 1,0,0,1,0,0 -var isIdentity = function(m) { - return (m.a == 1 && m.b == 0 && m.c == 0 && m.d == 1 && m.e == 0 && m.f == 0); -} - -// matrixMultiply() is provided because WebKit didn't implement multiply() correctly -// on the SVGMatrix interface. See https://bugs.webkit.org/show_bug.cgi?id=16062 - -// Function: matrixMultiply -// This function tries to return a SVGMatrix that is the multiplication m1*m2. -// We also round to zero when it's near zero -// -// Parameters: -// >= 2 Matrix objects to multiply -// -// Returns: -// The matrix object resulting from the calculation -var matrixMultiply = this.matrixMultiply = function() { - var NEAR_ZERO = 1e-14, - multi2 = function(m1, m2) { - var m = svgroot.createSVGMatrix(); - m.a = m1.a*m2.a + m1.c*m2.b; - m.b = m1.b*m2.a + m1.d*m2.b, - m.c = m1.a*m2.c + m1.c*m2.d, - m.d = m1.b*m2.c + m1.d*m2.d, - m.e = m1.a*m2.e + m1.c*m2.f + m1.e, - m.f = m1.b*m2.e + m1.d*m2.f + m1.f; - return m; - }, - args = arguments, i = args.length, m = args[i-1]; - - while(i-- > 1) { - var m1 = args[i-1]; - m = multi2(m1, m); - } - if (Math.abs(m.a) < NEAR_ZERO) m.a = 0; - if (Math.abs(m.b) < NEAR_ZERO) m.b = 0; - if (Math.abs(m.c) < NEAR_ZERO) m.c = 0; - if (Math.abs(m.d) < NEAR_ZERO) m.d = 0; - if (Math.abs(m.e) < NEAR_ZERO) m.e = 0; - if (Math.abs(m.f) < NEAR_ZERO) m.f = 0; - - return m; -} - -// Function: transformListToTransform -// This returns a single matrix Transform for a given Transform List -// (this is the equivalent of SVGTransformList.consolidate() but unlike -// that method, this one does not modify the actual SVGTransformList) -// This function is very liberal with its min,max arguments -// -// Parameters: -// tlist - The transformlist object -// min - Optional integer indicating start transform position -// max - Optional integer indicating end transform position -// -// Returns: -// A single matrix transform object -var transformListToTransform = this.transformListToTransform = function(tlist, min, max) { - var min = min == undefined ? 0 : min; - var max = max == undefined ? (tlist.numberOfItems-1) : max; - min = parseInt(min); - max = parseInt(max); - if (min > max) { var temp = max; max = min; min = temp; } - var m = svgroot.createSVGMatrix(); - for (var i = min; i <= max; ++i) { - // if our indices are out of range, just use a harmless identity matrix - var mtom = (i >= 0 && i < tlist.numberOfItems ? - tlist.getItem(i).matrix : - svgroot.createSVGMatrix()); - m = matrixMultiply(m, mtom); - } - return svgroot.createSVGTransformFromMatrix(m); -}; - -// Function: hasMatrixTransform -// See if the given transformlist includes a non-indentity matrix transform -// -// Parameters: -// tlist - The transformlist to check -// -// Returns: -// Boolean on whether or not a matrix transform was found -var hasMatrixTransform = this.hasMatrixTransform = function(tlist) { - if(!tlist) return false; - var num = tlist.numberOfItems; - while (num--) { - var xform = tlist.getItem(num); - if (xform.type == 1 && !isIdentity(xform.matrix)) return true; - } - return false; -} - -// Function: getMatrix -// Get the matrix object for a given element -// -// Parameters: -// elem - The DOM element to check -// -// Returns: -// The matrix object associated with the element's transformlist -var getMatrix = function(elem) { - var tlist = getTransformList(elem); - return transformListToTransform(tlist).matrix; -} - -// Function: transformBox -// Transforms a rectangle based on the given matrix -// -// Parameters: -// l - Float with the box's left coordinate -// t - Float with the box's top coordinate -// w - Float with the box width -// h - Float with the box height -// m - Matrix object to transform the box by -// -// Returns: -// An object with the following values: -// * tl - The top left coordinate (x,y object) -// * tr - The top right coordinate (x,y object) -// * bl - The bottom left coordinate (x,y object) -// * br - The bottom right coordinate (x,y object) -// * aabox - Object with the following values: -// * Float with the axis-aligned x coordinate -// * Float with the axis-aligned y coordinate -// * Float with the axis-aligned width coordinate -// * Float with the axis-aligned height coordinate -var transformBox = this.transformBox = function(l, t, w, h, m) { - var topleft = {x:l,y:t}, - topright = {x:(l+w),y:t}, - botright = {x:(l+w),y:(t+h)}, - botleft = {x:l,y:(t+h)}; - topleft = transformPoint( topleft.x, topleft.y, m ); - var minx = topleft.x, - maxx = topleft.x, - miny = topleft.y, - maxy = topleft.y; - topright = transformPoint( topright.x, topright.y, m ); - minx = Math.min(minx, topright.x); - maxx = Math.max(maxx, topright.x); - miny = Math.min(miny, topright.y); - maxy = Math.max(maxy, topright.y); - botleft = transformPoint( botleft.x, botleft.y, m); - minx = Math.min(minx, botleft.x); - maxx = Math.max(maxx, botleft.x); - miny = Math.min(miny, botleft.y); - maxy = Math.max(maxy, botleft.y); - botright = transformPoint( botright.x, botright.y, m ); - minx = Math.min(minx, botright.x); - maxx = Math.max(maxx, botright.x); - miny = Math.min(miny, botright.y); - maxy = Math.max(maxy, botright.y); - - return {tl:topleft, tr:topright, bl:botleft, br:botright, - aabox: {x:minx, y:miny, width:(maxx-minx), height:(maxy-miny)} }; -}; - - -// Group: Selection - -// Function: clearSelection -// Clears the selection. The 'selected' handler is then called. -// Parameters: -// noCall - Optional boolean that when true does not call the "selected" handler -var clearSelection = this.clearSelection = function(noCall) { - if (selectedElements[0] != null) { - var len = selectedElements.length; - for (var i = 0; i < len; ++i) { - var elem = selectedElements[i]; - if (elem == null) break; - selectorManager.releaseSelector(elem); - selectedElements[i] = null; - } - selectedBBoxes[0] = null; - } - if(!noCall) call("selected", selectedElements); -}; - -// TODO: do we need to worry about selectedBBoxes here? - -// Function: addToSelection -// Adds a list of elements to the selection. The 'selected' handler is then called. -// -// Parameters: -// elemsToAdd - an array of DOM elements to add to the selection -// showGrips - a boolean flag indicating whether the resize grips should be shown -var addToSelection = this.addToSelection = function(elemsToAdd, showGrips) { - if (elemsToAdd.length == 0) { return; } - // find the first null in our selectedElements array - var j = 0; - while (j < selectedElements.length) { - if (selectedElements[j] == null) { - break; - } - ++j; - } - - // now add each element consecutively - var i = elemsToAdd.length; - while (i--) { - var elem = elemsToAdd[i]; - if (!elem || !getBBox(elem)) continue; - // if it's not already there, add it - if (selectedElements.indexOf(elem) == -1) { - selectedElements[j] = elem; - // only the first selectedBBoxes element is ever used in the codebase these days - if (j == 0) selectedBBoxes[j] = getBBox(elem); - j++; - var sel = selectorManager.requestSelector(elem); - - if (selectedElements.length > 1) { - sel.showGrips(false); - } - } - } - if(selectedElements[0] && selectedElements.length === 1 && selectedElements[0].tagName == 'a') { - // Make "a" element's child be the selected element - selectedElements[0] = selectedElements[0].firstChild; - } - - call("selected", selectedElements); - - if (showGrips || selectedElements.length == 1) { - selectorManager.requestSelector(selectedElements[0]).showGrips(true); - } - else { - selectorManager.requestSelector(selectedElements[0]).showGrips(false); - } - - // make sure the elements are in the correct order - // See: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-compareDocumentPosition - - selectedElements.sort(function(a,b) { - if(a && b && a.compareDocumentPosition) { - return 3 - (b.compareDocumentPosition(a) & 6); - } else if(a == null) { - return 1; - } - }); - - // Make sure first elements are not null - while(selectedElements[0] == null) selectedElements.shift(0); -}; - -// TODO: could use slice here to make this faster? -// TODO: should the 'selected' handler - -// Function: removeFromSelection -// Removes elements from the selection. -// -// Parameters: -// elemsToRemove - an array of elements to remove from selection -var removeFromSelection = this.removeFromSelection = function(elemsToRemove) { - if (selectedElements[0] == null) { return; } - if (elemsToRemove.length == 0) { return; } - - // find every element and remove it from our array copy - var newSelectedItems = new Array(selectedElements.length), - newSelectedBBoxes = new Array(selectedBBoxes.length), - j = 0, - len = selectedElements.length; - for (var i = 0; i < len; ++i) { - var elem = selectedElements[i]; - if (elem) { - // keep the item - if (elemsToRemove.indexOf(elem) == -1) { - newSelectedItems[j] = elem; - if (j==0) newSelectedBBoxes[j] = selectedBBoxes[i]; - j++; - } - else { // remove the item and its selector - selectorManager.releaseSelector(elem); - } - } - } - // the copy becomes the master now - selectedElements = newSelectedItems; - selectedBBoxes = newSelectedBBoxes; -}; - -// Function: selectAllInCurrentLayer -// Clears the selection, then adds all elements in the current layer to the selection. -// This function then fires the selected event. -this.selectAllInCurrentLayer = function() { - if (current_layer) { - clearSelection(); - addToSelection($(current_layer).children()); - current_mode = "select"; - call("selected", selectedElements); - } -}; - -// Function: smoothControlPoints -// Takes three points and creates a smoother line based on them -// -// Parameters: -// ct1 - Object with x and y values (first control point) -// ct2 - Object with x and y values (second control point) -// pt - Object with x and y values (third point) -// -// Returns: -// Array of two "smoothed" point objects -var smoothControlPoints = this.smoothControlPoints = function(ct1, ct2, pt) { - // each point must not be the origin - var x1 = ct1.x - pt.x, - y1 = ct1.y - pt.y, - x2 = ct2.x - pt.x, - y2 = ct2.y - pt.y; - - if ( (x1 != 0 || y1 != 0) && (x2 != 0 || y2 != 0) ) { - var anglea = Math.atan2(y1,x1), - angleb = Math.atan2(y2,x2), - r1 = Math.sqrt(x1*x1+y1*y1), - r2 = Math.sqrt(x2*x2+y2*y2), - nct1 = svgroot.createSVGPoint(), - nct2 = svgroot.createSVGPoint(); - if (anglea < 0) { anglea += 2*Math.PI; } - if (angleb < 0) { angleb += 2*Math.PI; } - - var angleBetween = Math.abs(anglea - angleb), - angleDiff = Math.abs(Math.PI - angleBetween)/2; - - var new_anglea, new_angleb; - if (anglea - angleb > 0) { - new_anglea = angleBetween < Math.PI ? (anglea + angleDiff) : (anglea - angleDiff); - new_angleb = angleBetween < Math.PI ? (angleb - angleDiff) : (angleb + angleDiff); - } - else { - new_anglea = angleBetween < Math.PI ? (anglea - angleDiff) : (anglea + angleDiff); - new_angleb = angleBetween < Math.PI ? (angleb + angleDiff) : (angleb - angleDiff); - } - - // rotate the points - nct1.x = r1 * Math.cos(new_anglea) + pt.x; - nct1.y = r1 * Math.sin(new_anglea) + pt.y; - nct2.x = r2 * Math.cos(new_angleb) + pt.x; - nct2.y = r2 * Math.sin(new_angleb) + pt.y; - - return [nct1, nct2]; - } - return undefined; -}; - - -// Function: getMouseTarget -// Gets the desired element from a mouse event -// -// Parameters: -// evt - Event object from the mouse event -// -// Returns: -// DOM element we want -var getMouseTarget = this.getMouseTarget = function(evt) { - if (evt == null) { - return null; - } - var mouse_target = evt.target; - - // if it was a <use>, Opera and WebKit return the SVGElementInstance - if (mouse_target.correspondingUseElement) - - mouse_target = mouse_target.correspondingUseElement; - // for foreign content, go up until we find the foreignObject - // WebKit browsers set the mouse target to the svgcanvas div - if ($.inArray(mouse_target.namespaceURI, [mathns, htmlns]) != -1 && - mouse_target.id != "svgcanvas") - { - while (mouse_target.nodeName != "foreignObject") { - mouse_target = mouse_target.parentNode; - } - } - - // go up until we hit a child of a layer - while (mouse_target.parentNode.parentNode.tagName == "g") { - mouse_target = mouse_target.parentNode; - } - // Webkit bubbles the mouse event all the way up to the div, so we - // set the mouse_target to the svgroot like the other browsers - if (mouse_target.nodeName.toLowerCase() == "div") { - mouse_target = svgroot; - } - - return mouse_target; -}; - -// Mouse events -(function() { - - var d_attr = null, - start_x = null, - start_y = null, - init_bbox = {}, - freehand = { - minx: null, - miny: null, - maxx: null, - maxy: null - }; - - // - when we are in a create mode, the element is added to the canvas - // but the action is not recorded until mousing up - // - when we are in select mode, select the element, remember the position - // and do nothing else - var mouseDown = function(evt) - { - if(evt.button === 1 || canvas.spaceKey) return; - root_sctm = svgcontent.getScreenCTM().inverse(); - var pt = transformPoint( evt.pageX, evt.pageY, root_sctm ), - mouse_x = pt.x * current_zoom, - mouse_y = pt.y * current_zoom; - evt.preventDefault(); - - // This would seem to be unnecessary... -// if($.inArray(current_mode, ['select', 'resize']) == -1) { -// setGradient(); -// } - - var x = mouse_x / current_zoom, - y = mouse_y / current_zoom, - mouse_target = getMouseTarget(evt); - - start_x = x; - start_y = y; - - // if it is a selector grip, then it must be a single element selected, - // set the mouse_target to that and update the mode to rotate/resize - if (mouse_target.parentNode == selectorManager.selectorParentGroup && selectedElements[0] != null) { - var gripid = evt.target.id, - griptype = gripid.substr(0,20); - // rotating - if (griptype == "selectorGrip_rotate_") { - current_mode = "rotate"; - } - // resizing - else if(griptype == "selectorGrip_resize_") { - current_mode = "resize"; - current_resize_mode = gripid.substr(20,gripid.indexOf("_",20)-20); - } - mouse_target = selectedElements[0]; - } - - start_transform = mouse_target.getAttribute("transform"); - var tlist = getTransformList(mouse_target); - switch (current_mode) { - case "select": - started = true; - current_resize_mode = "none"; - - if (mouse_target != svgroot) { - // if this element is not yet selected, clear selection and select it - if (selectedElements.indexOf(mouse_target) == -1) { - // only clear selection if shift is not pressed (otherwise, add - // element to selection) - if (!evt.shiftKey) { - // No need to do the call here as it will be done on addToSelection - clearSelection(true); - } - addToSelection([mouse_target]); - justSelected = mouse_target; - pathActions.clear(); - } - // else if it's a path, go into pathedit mode in mouseup - - // insert a dummy transform so if the element(s) are moved it will have - // a transform to use for its translate - for (var i = 0; i < selectedElements.length; ++i) { - if(selectedElements[i] == null) continue; - var slist = getTransformList(selectedElements[i]); - slist.insertItemBefore(svgroot.createSVGTransform(), 0); - } - } - else { - clearSelection(); - current_mode = "multiselect"; - if (rubberBox == null) { - rubberBox = selectorManager.getRubberBandBox(); - } - start_x *= current_zoom; - start_y *= current_zoom; - assignAttributes(rubberBox, { - 'x': start_x, - 'y': start_y, - 'width': 0, - 'height': 0, - 'display': 'inline' - }, 100); - } - break; - case "zoom": - started = true; - start_x = x; - start_y = y; - if (rubberBox == null) { - rubberBox = selectorManager.getRubberBandBox(); - } - assignAttributes(rubberBox, { - 'x': start_x * current_zoom, - 'y': start_y * current_zoom, - 'width': 0, - 'height': 0, - 'display': 'inline' - }, 100); - break; - case "resize": - started = true; - start_x = x; - start_y = y; - - // Getting the BBox from the selection box, since we know we - // want to orient around it - init_bbox = getBBox($('#selectedBox0')[0]); - $.each(init_bbox, function(key, val) { - init_bbox[key] = val/current_zoom; - }); - - // append three dummy transforms to the tlist so that - // we can translate,scale,translate in mousemove - var pos = getRotationAngle(mouse_target)?1:0; - - if(hasMatrixTransform(tlist)) { - tlist.insertItemBefore(svgroot.createSVGTransform(), pos); - tlist.insertItemBefore(svgroot.createSVGTransform(), pos); - tlist.insertItemBefore(svgroot.createSVGTransform(), pos); - } else { - tlist.appendItem(svgroot.createSVGTransform()); - tlist.appendItem(svgroot.createSVGTransform()); - tlist.appendItem(svgroot.createSVGTransform()); - } - break; - case "fhellipse": - case "fhrect": - case "fhpath": - started = true; - start_x = x; - start_y = y; - d_attr = x + "," + y + " "; - var stroke_w = cur_shape.stroke_width == 0?1:cur_shape.stroke_width; - addSvgElementFromJson({ - "element": "polyline", - "curStyles": true, - "attr": { - "points": d_attr, - "id": getNextId(), - "fill": "none", - "opacity": cur_shape.opacity / 2, - "stroke-linecap": "round", - "style": "pointer-events:none" - } - }); - freehand.minx = x; - freehand.maxx = x; - freehand.miny = y; - freehand.maxy = y; - break; - case "image": - started = true; - start_x = x; - start_y = y; - var newImage = addSvgElementFromJson({ - "element": "image", - "attr": { - "x": x, - "y": y, - "width": 0, - "height": 0, - "id": getNextId(), - "opacity": cur_shape.opacity / 2, - "style": "pointer-events:inherit" - } - }); - newImage.setAttributeNS(xlinkns, "xlink:href", last_good_img_url); - preventClickDefault(newImage); - break; - case "square": - // FIXME: once we create the rect, we lose information that this was a square - // (for resizing purposes this could be important) - case "rect": - started = true; - start_x = x; - start_y = y; - addSvgElementFromJson({ - "element": "rect", - "curStyles": true, - "attr": { - "x": x, - "y": y, - "width": 0, - "height": 0, - "id": getNextId(), - "opacity": cur_shape.opacity / 2 - } - }); - break; - case "line": - started = true; - var stroke_w = cur_shape.stroke_width == 0?1:cur_shape.stroke_width; - addSvgElementFromJson({ - "element": "line", - "curStyles": true, - "attr": { - "x1": x, - "y1": y, - "x2": x, - "y2": y, - "id": getNextId(), - "stroke": cur_shape.stroke, - "stroke-width": stroke_w, - "stroke-dasharray": cur_shape.stroke_dasharray, - "stroke-linejoin": cur_shape.stroke_linejoin, - "stroke-linecap": cur_shape.stroke_linecap, - "stroke-opacity": cur_shape.stroke_opacity, - "fill": "none", - "opacity": cur_shape.opacity / 2, - "style": "pointer-events:none" - } - }); - break; - case "circle": - started = true; - addSvgElementFromJson({ - "element": "circle", - "curStyles": true, - "attr": { - "cx": x, - "cy": y, - "r": 0, - "id": getNextId(), - "opacity": cur_shape.opacity / 2 - } - }); - break; - case "ellipse": - started = true; - addSvgElementFromJson({ - "element": "ellipse", - "curStyles": true, - "attr": { - "cx": x, - "cy": y, - "rx": 0, - "ry": 0, - "id": getNextId(), - "opacity": cur_shape.opacity / 2 - } - }); - break; - case "text": - started = true; - var newText = addSvgElementFromJson({ - "element": "text", - "curStyles": true, - "attr": { - "x": x, - "y": y, - "id": getNextId(), - "fill": cur_text.fill, - "stroke-width": cur_text.stroke_width, - "font-size": cur_text.font_size, - "font-family": cur_text.font_family, - "text-anchor": "middle", - "xml:space": "preserve" - } - }); -// newText.textContent = "text"; - break; - case "path": - // Fall through - case "pathedit": - start_x *= current_zoom; - start_y *= current_zoom; - pathActions.mouseDown(evt, mouse_target, start_x, start_y); - started = true; - break; - case "textedit": - start_x *= current_zoom; - start_y *= current_zoom; - textActions.mouseDown(evt, mouse_target, start_x, start_y); - started = true; - break; - case "rotate": - started = true; - // we are starting an undoable change (a drag-rotation) - canvas.beginUndoableChange("transform", selectedElements); - break; - default: - // This could occur in an extension - break; - } - - var ext_result = runExtensions("mouseDown", { - event: evt, - start_x: start_x, - start_y: start_y, - selectedElements: selectedElements - }, true); - - $.each(ext_result, function(i, r) { - if(r && r.started) { - started = true; - } - }); - }; - - // in this function we do not record any state changes yet (but we do update - // any elements that are still being created, moved or resized on the canvas) - // TODO: svgcanvas should just retain a reference to the image being dragged instead - // of the getId() and getElementById() funkiness - this will help us customize the ids - // a little bit for squares and paths - var mouseMove = function(evt) - { - if (!started) return; - if(evt.button === 1 || canvas.spaceKey) return; - var selected = selectedElements[0], - pt = transformPoint( evt.pageX, evt.pageY, root_sctm ), - mouse_x = pt.x * current_zoom, - mouse_y = pt.y * current_zoom, - shape = getElem(getId()); - - x = mouse_x / current_zoom; - y = mouse_y / current_zoom; - - evt.preventDefault(); - - switch (current_mode) - { - case "select": - // we temporarily use a translate on the element(s) being dragged - // this transform is removed upon mousing up and the element is - // relocated to the new location - if (selectedElements[0] != null) { - var dx = x - start_x; - var dy = y - start_y; - - if(evt.shiftKey) { var xya = Utils.snapToAngle(start_x,start_y,x,y); x=xya.x; y=xya.y; } - - if (dx != 0 || dy != 0) { - var len = selectedElements.length; - for (var i = 0; i < len; ++i) { - var selected = selectedElements[i]; - if (selected == null) break; - if (i==0) { - var box = getBBox(selected); -// selectedBBoxes[i].x = box.x + dx; -// selectedBBoxes[i].y = box.y + dy; - } - - // update the dummy transform in our transform list - // to be a translate - var xform = svgroot.createSVGTransform(); - var tlist = getTransformList(selected); - xform.setTranslate(dx,dy); - if(tlist.numberOfItems) { - tlist.replaceItem(xform, 0); - // TODO: Webkit returns null here, find out why -// console.log(selected.getAttribute("transform")) - - } else { - tlist.appendItem(xform); - } - - // update our internal bbox that we're tracking while dragging - selectorManager.requestSelector(selected).resize(); - } - } - } - break; - case "multiselect": - x *= current_zoom; - y *= current_zoom; - assignAttributes(rubberBox, { - 'x': Math.min(start_x,x), - 'y': Math.min(start_y,y), - 'width': Math.abs(x-start_x), - 'height': Math.abs(y-start_y) - },100); - - // for each selected: - // - if newList contains selected, do nothing - // - if newList doesn't contain selected, remove it from selected - // - for any newList that was not in selectedElements, add it to selected - var elemsToRemove = [], elemsToAdd = [], - newList = getIntersectionList(), - len = selectedElements.length; - for (var i = 0; i < len; ++i) { - var ind = newList.indexOf(selectedElements[i]); - if (ind == -1) { - elemsToRemove.push(selectedElements[i]); - } - else { - newList[ind] = null; - } - } - - len = newList.length; - for (i = 0; i < len; ++i) { if (newList[i]) elemsToAdd.push(newList[i]); } - - if (elemsToRemove.length > 0) - canvas.removeFromSelection(elemsToRemove); - - if (elemsToAdd.length > 0) - addToSelection(elemsToAdd); - break; - case "resize": - // we track the resize bounding box and translate/scale the selected element - // while the mouse is down, when mouse goes up, we use this to recalculate - // the shape's coordinates - var tlist = getTransformList(selected), - hasMatrix = hasMatrixTransform(tlist), - box=hasMatrix?init_bbox:getBBox(selected), - left=box.x, top=box.y, width=box.width, - height=box.height, dx=(x-start_x), dy=(y-start_y); - - // if rotated, adjust the dx,dy values - var angle = getRotationAngle(selected); - if (angle) { - var r = Math.sqrt( dx*dx + dy*dy ), - theta = Math.atan2(dy,dx) - angle * Math.PI / 180.0; - dx = r * Math.cos(theta); - dy = r * Math.sin(theta); - } - - // if not stretching in y direction, set dy to 0 - // if not stretching in x direction, set dx to 0 - if(current_resize_mode.indexOf("n")==-1 && current_resize_mode.indexOf("s")==-1) { - dy = 0; - } - if(current_resize_mode.indexOf("e")==-1 && current_resize_mode.indexOf("w")==-1) { - dx = 0; - } - - var ts = null, - tx = 0, ty = 0, - sy = height ? (height+dy)/height : 1, - sx = width ? (width+dx)/width : 1; - // if we are dragging on the north side, then adjust the scale factor and ty - if(current_resize_mode.indexOf("n") != -1) { - sy = height ? (height-dy)/height : 1; - ty = height; - } - - // if we dragging on the east side, then adjust the scale factor and tx - if(current_resize_mode.indexOf("w") != -1) { - sx = width ? (width-dx)/width : 1; - tx = width; - } - - // update the transform list with translate,scale,translate - var translateOrigin = svgroot.createSVGTransform(), - scale = svgroot.createSVGTransform(), - translateBack = svgroot.createSVGTransform(); - translateOrigin.setTranslate(-(left+tx),-(top+ty)); - if(evt.shiftKey) { - if(sx == 1) sx = sy - else sy = sx; - } - scale.setScale(sx,sy); - - translateBack.setTranslate(left+tx,top+ty); - if(hasMatrix) { - var diff = angle?1:0; - tlist.replaceItem(translateOrigin, 2+diff); - tlist.replaceItem(scale, 1+diff); - tlist.replaceItem(translateBack, 0+diff); - } else { - var N = tlist.numberOfItems; - tlist.replaceItem(translateBack, N-3); - tlist.replaceItem(scale, N-2); - tlist.replaceItem(translateOrigin, N-1); - } - var selectedBBox = selectedBBoxes[0]; - - // reset selected bbox top-left position - selectedBBox.x = left; - selectedBBox.y = top; - - // if this is a translate, adjust the box position - if (tx) { - selectedBBox.x += dx; - } - if (ty) { - selectedBBox.y += dy; - } - - selectorManager.requestSelector(selected).resize(); - break; - case "zoom": - x *= current_zoom; - y *= current_zoom; - assignAttributes(rubberBox, { - 'x': Math.min(start_x*current_zoom,x), - 'y': Math.min(start_y*current_zoom,y), - 'width': Math.abs(x-start_x*current_zoom), - 'height': Math.abs(y-start_y*current_zoom) - },100); - break; - case "text": - assignAttributes(shape,{ - 'x': x, - 'y': y - },1000); - break; - case "line": - // Opera has a problem with suspendRedraw() apparently - var handle = null; - if (!window.opera) svgroot.suspendRedraw(1000); - - var x2 = x; - var y2 = y; - - if(evt.shiftKey) { var xya=Utils.snapToAngle(start_x,start_y,x2,y2); x2=xya.x; y2=xya.y; } - - shape.setAttributeNS(null, "x2", x2); - shape.setAttributeNS(null, "y2", y2); - if (!window.opera) svgroot.unsuspendRedraw(handle); - break; - case "foreignObject": - // fall through - case "square": - // fall through - case "rect": - // fall through - case "image": - var square = (current_mode == 'square') || evt.shiftKey, - w = Math.abs(x - start_x), - h = Math.abs(y - start_y), - new_x, new_y; - if(square) { - w = h = Math.max(w, h); - new_x = start_x < x ? start_x : start_x - w; - new_y = start_y < y ? start_y : start_y - h; - } else { - new_x = Math.min(start_x,x); - new_y = Math.min(start_y,y); - } - - assignAttributes(shape,{ - 'width': w, - 'height': h, - 'x': new_x, - 'y': new_y - },1000); - - break; - case "circle": - var c = $(shape).attr(["cx", "cy"]); - var cx = c.cx, cy = c.cy, - rad = Math.sqrt( (x-cx)*(x-cx) + (y-cy)*(y-cy) ); - shape.setAttributeNS(null, "r", rad); - break; - case "ellipse": - var c = $(shape).attr(["cx", "cy"]); - var cx = c.cx, cy = c.cy; - // Opera has a problem with suspendRedraw() apparently - handle = null; - if (!window.opera) svgroot.suspendRedraw(1000); - shape.setAttributeNS(null, "rx", Math.abs(x - cx) ); - var ry = Math.abs(evt.shiftKey?(x - cx):(y - cy)); - shape.setAttributeNS(null, "ry", ry ); - if (!window.opera) svgroot.unsuspendRedraw(handle); - break; - case "fhellipse": - case "fhrect": - freehand.minx = Math.min(x, freehand.minx); - freehand.maxx = Math.max(x, freehand.maxx); - freehand.miny = Math.min(y, freehand.miny); - freehand.maxy = Math.max(y, freehand.maxy); - // break; missing on purpose - case "fhpath": - start_x = x; - start_y = y; - d_attr += + x + "," + y + " "; - shape.setAttributeNS(null, "points", d_attr); - break; - // update path stretch line coordinates - case "path": - // fall through - case "pathedit": - x *= current_zoom; - y *= current_zoom; - - if(evt.shiftKey) { - var x1 = path.dragging?path.dragging[0]:start_x; - var y1 = path.dragging?path.dragging[1]:start_y; - var xya=Utils.snapToAngle(x1,y1,x,y); - x=xya.x; y=xya.y; - } - - if(rubberBox && rubberBox.getAttribute('display') != 'none') { - assignAttributes(rubberBox, { - 'x': Math.min(start_x,x), - 'y': Math.min(start_y,y), - 'width': Math.abs(x-start_x), - 'height': Math.abs(y-start_y) - },100); - } - - pathActions.mouseMove(x, y); - - break; - case "textedit": - x *= current_zoom; - y *= current_zoom; -// if(rubberBox && rubberBox.getAttribute('display') != 'none') { -// assignAttributes(rubberBox, { -// 'x': Math.min(start_x,x), -// 'y': Math.min(start_y,y), -// 'width': Math.abs(x-start_x), -// 'height': Math.abs(y-start_y) -// },100); -// } - - textActions.mouseMove(mouse_x, mouse_y); - - break; - case "rotate": - var box = getBBox(selected), - cx = box.x + box.width/2, - cy = box.y + box.height/2, - m = getMatrix(selected), - center = transformPoint(cx,cy,m); - cx = center.x; - cy = center.y; - var angle = ((Math.atan2(cy-y,cx-x) * (180/Math.PI))-90) % 360; - - if(evt.shiftKey) { // restrict rotations to nice angles (WRS) - var snap = 45; - angle= Math.round(angle/snap)*snap; - } - - canvas.setRotationAngle(angle<-180?(360+angle):angle, true); - call("changed", selectedElements); - break; - default: - break; - } - - runExtensions("mouseMove", { - event: evt, - mouse_x: mouse_x, - mouse_y: mouse_y, - selected: selected - }); - - }; // mouseMove() - - // - in create mode, the element's opacity is set properly, we create an InsertElementCommand - // and store it on the Undo stack - // - in move/resize mode, the element's attributes which were affected by the move/resize are - // identified, a ChangeElementCommand is created and stored on the stack for those attrs - // this is done in when we recalculate the selected dimensions() - var mouseUp = function(evt) - { - if(evt.button === 1) return; - var tempJustSelected = justSelected; - justSelected = null; - if (!started) return; - var pt = transformPoint( evt.pageX, evt.pageY, root_sctm ), - mouse_x = pt.x * current_zoom, - mouse_y = pt.y * current_zoom, - x = mouse_x / current_zoom, - y = mouse_y / current_zoom, - element = getElem(getId()), - keep = false; - - started = false; - switch (current_mode) - { - // intentionally fall-through to select here - case "resize": - case "multiselect": - if (rubberBox != null) { - rubberBox.setAttribute("display", "none"); - curBBoxes = []; - } - current_mode = "select"; - case "select": - if (selectedElements[0] != null) { - // if we only have one selected element - if (selectedElements[1] == null) { - // set our current stroke/fill properties to the element's - var selected = selectedElements[0]; - if (selected.tagName != "g" && selected.tagName != "image" && selected.tagName != "foreignObject") { - cur_properties.fill = selected.getAttribute("fill"); - cur_properties.fill_opacity = selected.getAttribute("fill-opacity"); - cur_properties.stroke = selected.getAttribute("stroke"); - cur_properties.stroke_opacity = selected.getAttribute("stroke-opacity"); - cur_properties.stroke_width = selected.getAttribute("stroke-width"); - cur_properties.stroke_dasharray = selected.getAttribute("stroke-dasharray"); - cur_properties.stroke_linejoin = selected.getAttribute("stroke-linejoin"); - cur_properties.stroke_linecap = selected.getAttribute("stroke-linecap"); - } - if (selected.tagName == "text") { - cur_text.font_size = selected.getAttribute("font-size"); - cur_text.font_family = selected.getAttribute("font-family"); - } - selectorManager.requestSelector(selected).showGrips(true); - - // This shouldn't be necessary as it was done on mouseDown... -// call("selected", [selected]); - } - // always recalculate dimensions to strip off stray identity transforms - recalculateAllSelectedDimensions(); - // if it was being dragged/resized - if (x != start_x || y != start_y) { - var len = selectedElements.length; - for (var i = 0; i < len; ++i) { - if (selectedElements[i] == null) break; - if(selectedElements[i].tagName != 'g') { - // Not needed for groups (incorrectly resizes elems), possibly not needed at all? - selectorManager.requestSelector(selectedElements[i]).resize(); - } - } - } - // no change in position/size, so maybe we should move to pathedit - else { - var t = evt.target; - if (selectedElements[0].nodeName == "path" && selectedElements[1] == null) { - pathActions.select(t); - } // if it was a path - else if (selectedElements[0].nodeName == "text" && selectedElements[1] == null) { - textActions.select(t, x, y); - } // if it was a path - // else, if it was selected and this is a shift-click, remove it from selection - else if (evt.shiftKey) { - if(tempJustSelected != t) { - canvas.removeFromSelection([t]); - } - } - } // no change in mouse position - } - // we return immediately from select so that the obj_num is not incremented - return; - break; - case "zoom": - if (rubberBox != null) { - rubberBox.setAttribute("display", "none"); - } - var factor = evt.shiftKey?.5:2; - call("zoomed", { - 'x': Math.min(start_x,x), - 'y': Math.min(start_y,y), - 'width': Math.abs(x-start_x), - 'height': Math.abs(y-start_y), - 'factor': factor - }); - return; - case "fhpath": - // Check that the path contains at least 2 points; a degenerate one-point path - // causes problems. - // Webkit ignores how we set the points attribute with commas and uses space - // to separate all coordinates, see https://bugs.webkit.org/show_bug.cgi?id=29870 - var coords = element.getAttribute('points'); - var commaIndex = coords.indexOf(','); - if (commaIndex >= 0) { - keep = coords.indexOf(',', commaIndex+1) >= 0; - } else { - keep = coords.indexOf(' ', coords.indexOf(' ')+1) >= 0; - } - if (keep) { - element = pathActions.smoothPolylineIntoPath(element); - } - break; - case "line": - var attrs = $(element).attr(["x1", "x2", "y1", "y2"]); - keep = (attrs.x1 != attrs.x2 || attrs.y1 != attrs.y2); - break; - case "foreignObject": - case "square": - case "rect": - case "image": - var attrs = $(element).attr(["width", "height"]); - // Image should be kept regardless of size (use inherit dimensions later) - keep = (attrs.width != 0 || attrs.height != 0) || current_mode === "image"; - break; - case "circle": - keep = (element.getAttribute('r') != 0); - break; - case "ellipse": - var attrs = $(element).attr(["rx", "ry"]); - keep = (attrs.rx != null || attrs.ry != null); - break; - case "fhellipse": - if ((freehand.maxx - freehand.minx) > 0 && - (freehand.maxy - freehand.miny) > 0) { - element = addSvgElementFromJson({ - "element": "ellipse", - "curStyles": true, - "attr": { - "cx": (freehand.minx + freehand.maxx) / 2, - "cy": (freehand.miny + freehand.maxy) / 2, - "rx": (freehand.maxx - freehand.minx) / 2, - "ry": (freehand.maxy - freehand.miny) / 2, - "id": getId() - } - }); - call("changed",[element]); - keep = true; - } - break; - case "fhrect": - if ((freehand.maxx - freehand.minx) > 0 && - (freehand.maxy - freehand.miny) > 0) { - element = addSvgElementFromJson({ - "element": "rect", - "curStyles": true, - "attr": { - "x": freehand.minx, - "y": freehand.miny, - "width": (freehand.maxx - freehand.minx), - "height": (freehand.maxy - freehand.miny), - "id": getId() - } - }); - call("changed",[element]); - keep = true; - } - break; - case "text": - keep = true; - addToSelection([element]); - textActions.start(element); - break; - case "path": - // set element to null here so that it is not removed nor finalized - element = null; - // continue to be set to true so that mouseMove happens - started = true; - - var res = pathActions.mouseUp(evt, element, mouse_x, mouse_y); - element = res.element - keep = res.keep; - break; - case "pathedit": - keep = true; - element = null; - pathActions.mouseUp(evt); - break; - case "textedit": - keep = false; - element = null; - textActions.mouseUp(evt, mouse_x, mouse_y); - break; - case "rotate": - keep = true; - element = null; - current_mode = "select"; - var batchCmd = canvas.finishUndoableChange(); - if (!batchCmd.isEmpty()) { - addCommandToHistory(batchCmd); - } - // perform recalculation to weed out any stray identity transforms that might get stuck - recalculateAllSelectedDimensions(); - break; - default: - // This could occur in an extension - break; - } - - var ext_result = runExtensions("mouseUp", { - event: evt, - mouse_x: mouse_x, - mouse_y: mouse_y - }, true); - - $.each(ext_result, function(i, r) { - if(r) { - keep = r.keep || keep; - element = r.element; - started = r.started || started; - } - }); - - if (!keep && element != null) { - element.parentNode.removeChild(element); - element = null; - - var t = evt.target; - - // if this element is in a group, go up until we reach the top-level group - // just below the layer groups - // TODO: once we implement links, we also would have to check for <a> elements - while (t.parentNode.parentNode.tagName == "g") { - t = t.parentNode; - } - // if we are not in the middle of creating a path, and we've clicked on some shape, - // then go to Select mode. - // WebKit returns <div> when the canvas is clicked, Firefox/Opera return <svg> - if ( (current_mode != "path" || current_path_pts.length == 0) && - t.parentNode.id != "selectorParentGroup" && - t.id != "svgcanvas" && t.id != "svgroot") - { - // switch into "select" mode if we've clicked on an element - addToSelection([t], true); - canvas.setMode("select"); - } - - } else if (element != null) { - canvas.addedNew = true; - var ani_dur = .2, c_ani; - if(opac_ani.beginElement && element.getAttribute('opacity') != cur_shape.opacity) { - c_ani = $(opac_ani).clone().attr({ - to: cur_shape.opacity, - dur: ani_dur - }).appendTo(element); - c_ani[0].beginElement(); - } else { - ani_dur = 0; - } - - // Ideally this would be done on the endEvent of the animation, - // but that doesn't seem to be supported in Webkit - setTimeout(function() { - if(c_ani) c_ani.remove(); - element.setAttribute("opacity", cur_shape.opacity); - element.setAttribute("style", "pointer-events:inherit"); - cleanupElement(element); - if(current_mode == "path") { - pathActions.toEditMode(element); - } else if (current_mode == "text" || current_mode == "image" || current_mode == "foreignObject") { - // keep us in the tool we were in unless it was a text or image element - addToSelection([element], true); - } - // we create the insert command that is stored on the stack - // undo means to call cmd.unapply(), redo means to call cmd.apply() - addCommandToHistory(new InsertElementCommand(element)); - call("changed",[element]); - }, ani_dur * 1000); - } - - start_transform = null; - }; - - // prevent links from being followed in the canvas - var handleLinkInCanvas = function(e) { - e.preventDefault(); - return false; - }; - - $(container).mousedown(mouseDown).mousemove(mouseMove).click(handleLinkInCanvas); - $(window).mouseup(mouseUp); - - $(container).bind("mousewheel DOMMouseScroll", function(e){ - if(!e.shiftKey) return; - e.preventDefault(); - - root_sctm = svgcontent.getScreenCTM().inverse(); - var pt = transformPoint( e.pageX, e.pageY, root_sctm ); - var bbox = { - 'x': pt.x, - 'y': pt.y, - 'width': 0, - 'height': 0 - }; - - // Respond to mouse wheel in IE/Webkit/Opera. - // (It returns up/dn motion in multiples of 120) - if(e.wheelDelta) { - if (e.wheelDelta >= 120) { - bbox.factor = 2; - } else if (e.wheelDelta <= -120) { - bbox.factor = .5; - } - } else if(e.detail) { - if (e.detail > 0) { - bbox.factor = .5; - } else if (e.detail < 0) { - bbox.factor = 2; - } - } - - if(!bbox.factor) return; - call("zoomed", bbox); - }); - -}()); - -// Function: preventClickDefault -// Prevents default browser click behaviour on the given element -// -// Parameters: -// img - The DOM element to prevent the cilck on -var preventClickDefault = function(img) { - $(img).click(function(e){e.preventDefault()}); -} - -// Group: Text edit functions -// Functions relating to editing text elements -var textActions = canvas.textActions = function() { - var curtext, current_text; - var textinput; - var cursor; - var selblock; - var blinker; - var chardata = []; - var textbb, transbb; - var matrix; - var last_x, last_y; - var allow_dbl; - - function setCursor(index) { - var empty = (textinput.value === ""); - - if(!arguments.length) { - if(empty) { - index = 0; - } else { - if(textinput.selectionEnd !== textinput.selectionStart) return; - index = textinput.selectionEnd; - } - } - - var charbb; - charbb = chardata[index]; - if(!empty) { - textinput.setSelectionRange(index, index); - } - cursor = getElem("text_cursor"); - if (!cursor) { - cursor = document.createElementNS(svgns, "line"); - assignAttributes(cursor, { - 'id': "text_cursor", - 'stroke': "#333", - 'stroke-width': 1 - }); - cursor = getElem("selectorParentGroup").appendChild(cursor); - } - - if(!blinker) { - blinker = setInterval(function() { - var show = (cursor.getAttribute('display') === 'none'); - cursor.setAttribute('display', show?'inline':'none'); - }, 600); - - } - - - var start_pt = ptToScreen(charbb.x, textbb.y); - var end_pt = ptToScreen(charbb.x, (textbb.y + textbb.height)); - - assignAttributes(cursor, { - x1: start_pt.x, - y1: start_pt.y, - x2: end_pt.x, - y2: end_pt.y, - visibility: 'visible', - display: 'inline' - }); - - if(selblock) selblock.setAttribute('d', ''); - } - - function setSelection(start, end, skipInput) { - if(start === end) { - setCursor(end); - return; - } - - if(!skipInput) { - textinput.setSelectionRange(start, end); - } - - selblock = getElem("text_selectblock"); - if (!selblock) { - - selblock = document.createElementNS(svgns, "path"); - assignAttributes(selblock, { - 'id': "text_selectblock", - 'fill': "green", - 'opacity': .5, - 'style': "pointer-events:none" - }); - getElem("selectorParentGroup").appendChild(selblock); - } - - - var startbb = chardata[start]; - - var endbb = chardata[end]; - - cursor.setAttribute('visibility', 'hidden'); - - var tl = ptToScreen(startbb.x, textbb.y), - tr = ptToScreen(startbb.x + (endbb.x - startbb.x), textbb.y), - bl = ptToScreen(startbb.x, textbb.y + textbb.height), - br = ptToScreen(startbb.x + (endbb.x - startbb.x), textbb.y + textbb.height); - - - var dstr = "M" + tl.x + "," + tl.y - + " L" + tr.x + "," + tr.y - + " " + br.x + "," + br.y - + " " + bl.x + "," + bl.y + "z"; - - assignAttributes(selblock, { - d: dstr, - 'display': 'inline' - }); - } - - function getIndexFromPoint(mouse_x, mouse_y) { - // Position cursor here - var pt = svgroot.createSVGPoint(); - pt.x = mouse_x; - pt.y = mouse_y; - - // No content, so return 0 - if(chardata.length == 1) return 0; - - // Determine if cursor should be on left or right of character - var charpos = curtext.getCharNumAtPosition(pt); - if(charpos < 0) { - // Out of text range, look at mouse coords - charpos = chardata.length - 2; - if(mouse_x <= chardata[0].x) { - charpos = 0; - } - } else if(charpos >= chardata.length - 2) { - charpos = chardata.length - 2; - } - var charbb = chardata[charpos]; - var mid = charbb.x + (charbb.width/2); - if(mouse_x > mid) { - charpos++; - } - return charpos; - } - - function setCursorFromPoint(mouse_x, mouse_y) { - setCursor(getIndexFromPoint(mouse_x, mouse_y)); - } - - function setEndSelectionFromPoint(x, y, apply) { - var i1 = textinput.selectionStart; - var i2 = getIndexFromPoint(x, y); - - var start = Math.min(i1, i2); - var end = Math.max(i1, i2); - setSelection(start, end, !apply); - } - - function screenToPt(x_in, y_in) { - var out = { - x: x_in, - y: y_in - } - - out.x /= current_zoom; - out.y /= current_zoom; - - if(matrix) { - var pt = transformPoint(out.x, out.y, matrix.inverse()); - out.x = pt.x; - out.y = pt.y; - } - - return out; - } - - function ptToScreen(x_in, y_in) { - var out = { - x: x_in, - y: y_in - } - - if(matrix) { - var pt = transformPoint(out.x, out.y, matrix); - out.x = pt.x; - out.y = pt.y; - } - - out.x *= current_zoom; - out.y *= current_zoom; - - return out; - } - - function hideCursor() { - if(cursor) { - cursor.setAttribute('visibility', 'hidden'); - } - } - - function selectAll(evt) { - setSelection(0, curtext.textContent.length); - $(this).unbind(evt); - } - - function selectWord(evt) { - if(!allow_dbl) return; - - var ept = transformPoint( evt.pageX, evt.pageY, root_sctm ), - mouse_x = ept.x * current_zoom, - mouse_y = ept.y * current_zoom; - var pt = screenToPt(mouse_x, mouse_y); - - var index = getIndexFromPoint(pt.x, pt.y); - var str = curtext.textContent; - var first = str.substr(0, index).replace(/[a-z0-9]+$/i, '').length; - var m = str.substr(index).match(/^[a-z0-9]+/i); - var last = (m?m[0].length:0) + index; - setSelection(first, last); - - // Set tripleclick - $(evt.target).click(selectAll); - setTimeout(function() { - $(evt.target).unbind('click', selectAll); - }, 300); - - } - - return { - select: function(target, x, y) { - if (current_text == target) { - curtext = target; - textActions.toEditMode(x, y); - } // going into pathedit mode - else { - current_text = target; - } - }, - start: function(elem) { - curtext = elem; - textActions.toEditMode(); - }, - mouseDown: function(evt, mouse_target, start_x, start_y) { - var pt = screenToPt(start_x, start_y); - - textinput.focus(); - setCursorFromPoint(pt.x, pt.y); - last_x = start_x; - last_y = start_y; - - // TODO: Find way to block native selection - }, - mouseMove: function(mouse_x, mouse_y) { - var pt = screenToPt(mouse_x, mouse_y); - setEndSelectionFromPoint(pt.x, pt.y); - }, - mouseUp: function(evt, mouse_x, mouse_y) { - var pt = screenToPt(mouse_x, mouse_y); - - setEndSelectionFromPoint(pt.x, pt.y, true); - - // TODO: Find a way to make this work: Use transformed BBox instead of evt.target -// if(last_x === mouse_x && last_y === mouse_y -// && !Utils.rectsIntersect(transbb, {x: pt.x, y: pt.y, width:0, height:0})) { -// textActions.toSelectMode(true); -// } - if(last_x === mouse_x && last_y === mouse_y && evt.target !== curtext) { - textActions.toSelectMode(true); - } - - }, - setCursor: setCursor, - toEditMode: function(x, y) { - allow_dbl = false; - current_mode = "textedit"; - selectorManager.requestSelector(curtext).showGrips(false); - - textActions.init(); - $(curtext).css('cursor', 'text'); - -// if(support.editableText) { -// curtext.setAttribute('editable', 'simple'); -// return; -// } - - if(!arguments.length) { - setCursor(); - } else { - var pt = screenToPt(x, y); - setCursorFromPoint(pt.x, pt.y); - } - - setTimeout(function() { - allow_dbl = true; - }, 300); - }, - toSelectMode: function(selectElem) { - current_mode = "select"; - clearInterval(blinker); - blinker = null; - if(selblock) $(selblock).attr('display','none'); - if(cursor) $(cursor).attr('visibility','hidden'); - $(curtext).css('cursor', 'move'); - - if(selectElem) { - clearSelection(); - $(curtext).css('cursor', 'move'); - - call("selected", [curtext]); - addToSelection([curtext], true); - } - if(curtext && !curtext.textContent.length) { - // No content, so delete - canvas.deleteSelectedElements(); - } - - $(textinput).blur(); - - curtext = false; - -// if(support.editableText) { -// curtext.removeAttribute('editable'); -// } - }, - setInputElem: function(elem) { - textinput = elem; - $(textinput).blur(hideCursor); - }, - clear: function() { - current_text = null; - if(current_mode == "textedit") { - textActions.toSelectMode(); - } - }, - init: function(inputElem) { - if(!curtext) return; - -// if(support.editableText) { -// curtext.select(); -// return; -// } - - if(!curtext.parentNode) { - // Result of the ffClone, need to get correct element - curtext = selectedElements[0]; - selectorManager.requestSelector(curtext).showGrips(false); - } - - var str = curtext.textContent; - var len = str.length; - - var xform = curtext.getAttribute('transform'); - - textbb = getBBox(curtext); - - matrix = xform?getMatrix(curtext):null; - - chardata = Array(len); - textinput.focus(); - - $(curtext).unbind('dblclick', selectWord).dblclick(selectWord); - - if(!len) { - var end = {x: textbb.x + (textbb.width/2), width: 0}; - } - - for(var i=0; i<len; i++) { - var start = curtext.getStartPositionOfChar(i); - var end = curtext.getEndPositionOfChar(i); - - // Get a "bbox" equivalent for each character. Uses the - // bbox data of the actual text for y, height purposes - - // TODO: Decide if y, width and height are actually necessary - chardata[i] = { - x: start.x, - y: textbb.y, // start.y? - width: end.x - start.x, - height: textbb.height - }; - } - - // Add a last bbox for cursor at end of text - chardata.push({ - x: end.x, - width: 0 - }); - - setSelection(textinput.selectionStart, textinput.selectionEnd, true); - } - } -}(); - -// Group: Path edit functions -// Functions relating to editing path elements -var pathActions = this.pathActions = function() { - - var subpath = false; - var pathData = {}; - var current_path; - var path; - var segData = { - 2: ['x','y'], - 4: ['x','y'], - 6: ['x','y','x1','y1','x2','y2'], - 8: ['x','y','x1','y1'], - 10: ['x','y','r1','r2','angle','largeArcFlag','sweepFlag'], - 12: ['x'], - 14: ['y'] - }; - - function retPath() { - return path; - } - - function resetD(p) { - p.setAttribute("d", pathActions.convertPath(p)); - } - - function insertItemBefore(elem, newseg, index) { - // Support insertItemBefore on paths for FF2 - var list = elem.pathSegList; - - if(support.pathInsertItemBefore) { - list.insertItemBefore(newseg, index); - return; - } - var len = list.numberOfItems; - var arr = []; - for(var i=0; i<len; i++) { - var cur_seg = list.getItem(i); - arr.push(cur_seg) - } - list.clear(); - for(var i=0; i<len; i++) { - if(i == index) { //index+1 - list.appendItem(newseg); - } - list.appendItem(arr[i]); - } - } - - // TODO: See if this should just live in replacePathSeg - function ptObjToArr(type, seg_item) { - var arr = segData[type], len = arr.length; - var out = Array(len); - for(var i=0; i<len; i++) { - out[i] = seg_item[arr[i]]; - } - return out; - } - - function getGripContainer() { - var c = getElem("pathpointgrip_container"); - if (!c) { - var parent = getElem("selectorParentGroup"); - c = parent.appendChild(document.createElementNS(svgns, "g")); - c.id = "pathpointgrip_container"; - } - return c; - } - - var addPointGrip = function(index, x, y) { - // create the container of all the point grips - var pointGripContainer = getGripContainer(); - - var pointGrip = getElem("pathpointgrip_"+index); - // create it - if (!pointGrip) { - pointGrip = document.createElementNS(svgns, "circle"); - assignAttributes(pointGrip, { - 'id': "pathpointgrip_" + index, - 'display': "none", - 'r': 4, - 'fill': "#0FF", - 'stroke': "#00F", - 'stroke-width': 2, - 'cursor': 'move', - 'style': 'pointer-events:all', - 'xlink:title': uiStrings.pathNodeTooltip - }); - pointGrip = pointGripContainer.appendChild(pointGrip); - - var grip = $('#pathpointgrip_'+index); - grip.dblclick(function() { - if(path) path.setSegType(); - }); - } - if(x && y) { - // set up the point grip element and display it - assignAttributes(pointGrip, { - 'cx': x, - 'cy': y, - 'display': "inline" - }); - } - return pointGrip; - }; - - var getPointGrip = function(seg, update) { - var index = seg.index; - var pointGrip = addPointGrip(index); - - if(update) { - var pt = getGripPt(seg); - assignAttributes(pointGrip, { - 'cx': pt.x, - 'cy': pt.y, - 'display': "inline" - }); - } - - return pointGrip; - } - - var getSegSelector = function(seg, update) { - var index = seg.index; - var segLine = getElem("segline_" + index); - if(!segLine) { - var pointGripContainer = getGripContainer(); - // create segline - segLine = document.createElementNS(svgns, "path"); - assignAttributes(segLine, { - 'id': "segline_" + index, - 'display': 'none', - 'fill': "none", - 'stroke': "#0FF", - 'stroke-width': 2, - 'style':'pointer-events:none', - 'd': 'M0,0 0,0' - }); - pointGripContainer.appendChild(segLine); - } - - if(update) { - var prev = seg.prev; - if(!prev) { - segLine.setAttribute("display", "none"); - return segLine; - } - - var pt = getGripPt(prev); - // Set start point - replacePathSeg(2, 0, [pt.x, pt.y], segLine); - - var pts = ptObjToArr(seg.type, seg.item, true); - for(var i=0; i < pts.length; i+=2) { - var pt = getGripPt(seg, {x:pts[i], y:pts[i+1]}); - pts[i] = pt.x; - pts[i+1] = pt.y; - } - - replacePathSeg(seg.type, 1, pts, segLine); - } - return segLine; - } - - var getControlPoints = function(seg) { - var item = seg.item; - var index = seg.index; - if(!("x1" in item) || !("x2" in item)) return null; - var cpt = {}; - var pointGripContainer = getGripContainer(); - - // Note that this is intentionally not seg.prev.item - var prev = path.segs[index-1].item; - - var seg_items = [prev, item]; - - for(var i=1; i<3; i++) { - var id = index + 'c' + i; - var ctrlLine = cpt['c' + i + '_line'] = getElem("ctrlLine_"+id); - - if(!ctrlLine) { - ctrlLine = document.createElementNS(svgns, "line"); - assignAttributes(ctrlLine, { - 'id': "ctrlLine_"+id, - 'stroke': "#555", - 'stroke-width': 1, - "style": "pointer-events:none" - }); - pointGripContainer.appendChild(ctrlLine); - } - - var pt = getGripPt(seg, {x:item['x' + i], y:item['y' + i]}); - var gpt = getGripPt(seg, {x:seg_items[i-1].x, y:seg_items[i-1].y}); - - assignAttributes(ctrlLine, { - 'x1': pt.x, - 'y1': pt.y, - 'x2': gpt.x, - 'y2': gpt.y, - 'display': "inline" - }); - - cpt['c' + i + '_line'] = ctrlLine; - - var pointGrip = cpt['c' + i] = getElem("ctrlpointgrip_"+id); - // create it - if (!pointGrip) { - pointGrip = document.createElementNS(svgns, "circle"); - assignAttributes(pointGrip, { - 'id': "ctrlpointgrip_" + id, - 'display': "none", - 'r': 4, - 'fill': "#0FF", - 'stroke': "#55F", - 'stroke-width': 1, - 'cursor': 'move', - 'style': 'pointer-events:all', - 'xlink:title': uiStrings.pathCtrlPtTooltip - }); - pointGripContainer.appendChild(pointGrip); - } - - assignAttributes(pointGrip, { - 'cx': pt.x, - 'cy': pt.y, - 'display': "inline" - }); - cpt['c' + i] = pointGrip; - } - return cpt; - } - - function getGripPt(seg, alt_pt) { - var out = { - x: alt_pt? alt_pt.x : seg.item.x, - y: alt_pt? alt_pt.y : seg.item.y - }, path = seg.path; - - - if(path.matrix) { - var pt = transformPoint(out.x, out.y, path.matrix); - out = pt; - } - - out.x *= current_zoom; - out.y *= current_zoom; - - return out; - } - - function getPointFromGrip(pt, path) { - var out = { - x: pt.x, - y: pt.y - } - - if(path.matrix) { - var pt = transformPoint(out.x, out.y, path.imatrix); - out.x = pt.x; - out.y = pt.y; - } - - out.x /= current_zoom; - out.y /= current_zoom; - - return out; - } - - function Segment(index, item) { - var s = this; - - s.index = index; - s.selected = false; - s.type = item.pathSegType; - var grip; - - s.addGrip = function() { - grip = s.ptgrip = getPointGrip(s, true); - s.ctrlpts = getControlPoints(s, true); - s.segsel = getSegSelector(s, true); - } - - s.item = item; - s.show = function(y) { - if(grip) { - grip.setAttribute("display", y?"inline":"none"); - s.segsel.setAttribute("display", y?"inline":"none"); - - // Show/hide all control points if available - s.showCtrlPts(y); - } - } - s.select = function(y) { - if(grip) { - grip.setAttribute("stroke", y?"#0FF":"#00F"); - s.segsel.setAttribute("display", y?"inline":"none"); - if(s.ctrlpts) { - s.selectCtrls(y); - } - s.selected = y; - } - } - s.selectCtrls = function(y) { - $('#ctrlpointgrip_' + s.index + 'c1, #ctrlpointgrip_' + s.index + 'c2').attr('fill',y?'#0FF':'#EEE'); - } - s.update = function(full) { - item = s.item; - if(grip) { - var pt = getGripPt(s); - assignAttributes(grip, { - 'cx': pt.x, - 'cy': pt.y - }); - - getSegSelector(s, true); - - if(s.ctrlpts) { - if(full) { - s.item = path.elem.pathSegList.getItem(s.index); - s.type = s.item.pathSegType; - } - getControlPoints(s); - } - // this.segsel.setAttribute("display", y?"inline":"none"); - } - } - s.move = function(dx, dy) { - var item = s.item; - - var cur = s; - - if(cur.ctrlpts) { - var cur_pts = [item.x += dx, item.y += dy, - item.x1, item.y1, item.x2 += dx, item.y2 += dy]; - } else { - var cur_pts = [item.x += dx, item.y += dy]; - } - replacePathSeg(cur.type, cur.index, cur_pts); - - if(s.next && s.next.ctrlpts) { - var next = s.next.item; - var next_pts = [next.x, next.y, - next.x1 += dx, next.y1 += dy, next.x2, next.y2]; - replacePathSeg(s.next.type, s.next.index, next_pts); - } - - if(s.mate) { - // The last point of a closed subpath has a "mate", - // which is the "M" segment of the subpath - var item = s.mate.item; - var pts = [item.x += dx, item.y += dy]; - replacePathSeg(s.mate.type, s.mate.index, pts); - // Has no grip, so does not need "updating"? - } - - s.update(true); - if(s.next) s.next.update(true); - } - s.setLinked = function(num) { - var seg, anum, pt; - if(num == 2) { - anum = 1; - seg = s.next; - if(!seg) return; - pt = s.item; - } else { - anum = 2; - seg = s.prev; - if(!seg) return; - pt = seg.item; - } - var item = seg.item; - - item['x' + anum] = pt.x + (pt.x - s.item['x' + num]); - item['y' + anum] = pt.y + (pt.y - s.item['y' + num]); - - var pts = [item.x,item.y, - item.x1,item.y1, item.x2,item.y2]; - - replacePathSeg(seg.type, seg.index, pts); - seg.update(true); - - } - s.moveCtrl = function(num, dx, dy) { - var item = s.item; - - item['x' + num] += dx; - item['y' + num] += dy; - - var pts = [item.x,item.y, - item.x1,item.y1, item.x2,item.y2]; - - replacePathSeg(s.type, s.index, pts); - s.update(true); - } - s.setType = function(new_type, pts) { - replacePathSeg(new_type, index, pts); - s.type = new_type; - s.item = path.elem.pathSegList.getItem(index); - s.showCtrlPts(new_type === 6); - s.ctrlpts = getControlPoints(s); - s.update(true); - } - s.showCtrlPts = function(y) { - if(s.ctrlpts) { - for (var o in s.ctrlpts) { - s.ctrlpts[o].setAttribute("display", y?"inline":"none"); - } - } - } - } - - function Path(elem) { - if(!elem || elem.tagName !== "path") return false; - - var p = path = this; - this.elem = elem; - this.segs = []; - this.selected_pts = []; - - // Reset path data - this.init = function() { - // Hide all grips, etc - $(getGripContainer()).find("*").attr("display", "none"); - var segList = elem.pathSegList; - var len = segList.numberOfItems; - p.segs = []; - p.selected_pts = []; - p.first_seg = null; - - // Set up segs array - for(var i=0; i < len; i++) { - var item = segList.getItem(i); - var segment = new Segment(i, item); - segment.path = p; - p.segs.push(segment); - } - - var segs = p.segs; - var start_i = null; - - for(var i=0; i < len; i++) { - var seg = segs[i]; - var next_seg = (i+1) >= len ? null : segs[i+1]; - var prev_seg = (i-1) < 0 ? null : segs[i-1]; - - if(seg.type === 2) { - if(prev_seg && prev_seg.type !== 1) { - // New sub-path, last one is open, - // so add a grip to last sub-path's first point - var start_seg = segs[start_i]; - start_seg.next = segs[start_i+1]; - start_seg.next.prev = start_seg; - start_seg.addGrip(); - } - // Remember that this is a starter seg - start_i = i; - } else if(next_seg && next_seg.type === 1) { - // This is the last real segment of a closed sub-path - // Next is first seg after "M" - seg.next = segs[start_i+1]; - - // First seg after "M"'s prev is this - seg.next.prev = seg; - seg.mate = segs[start_i]; - seg.addGrip(); - if(p.first_seg == null) { - p.first_seg = seg; - } - } else if(!next_seg) { - if(seg.type !== 1) { - // Last seg, doesn't close so add a grip - // to last sub-path's first point - var start_seg = segs[start_i]; - start_seg.next = segs[start_i+1]; - start_seg.next.prev = start_seg; - start_seg.addGrip(); - seg.addGrip(); - - if(!p.first_seg) { - // Open path, so set first as real first and add grip - p.first_seg = segs[start_i]; - } - } - } else if(seg.type !== 1){ - // Regular segment, so add grip and its "next" - seg.addGrip(); - - // Don't set its "next" if it's an "M" - if(next_seg && next_seg.type !== 2) { - seg.next = next_seg; - seg.next.prev = seg; - } - } - } - return p; - } - - this.init(); - - // Update position of all points - this.update = function() { - if(getRotationAngle(p.elem)) { - p.matrix = getMatrix(path.elem); - p.imatrix = p.matrix.inverse(); - } - - p.eachSeg(function(i) { - this.item = elem.pathSegList.getItem(i); - this.update(); - }); - - return p; - } - - this.eachSeg = function(fn) { - var len = p.segs.length - for(var i=0; i < len; i++) { - var ret = fn.call(p.segs[i], i); - if(ret === false) break; - } - } - - this.addSeg = function(index) { - // Adds a new segment - var seg = p.segs[index]; - if(!seg.prev) return; - - var prev = seg.prev; - var newseg; - switch(seg.item.pathSegType) { - case 4: - var new_x = (seg.item.x + prev.item.x) / 2; - var new_y = (seg.item.y + prev.item.y) / 2; - newseg = elem.createSVGPathSegLinetoAbs(new_x, new_y); - break; - case 6: //make it a curved segment to preserve the shape (WRS) - // http://en.wikipedia.org/wiki/De_Casteljau%27s_algorithm#Geometric_interpretation - var p0_x = (prev.item.x + seg.item.x1)/2; - var p1_x = (seg.item.x1 + seg.item.x2)/2; - var p2_x = (seg.item.x2 + seg.item.x)/2; - var p01_x = (p0_x + p1_x)/2; - var p12_x = (p1_x + p2_x)/2; - var new_x = (p01_x + p12_x)/2; - var p0_y = (prev.item.y + seg.item.y1)/2; - var p1_y = (seg.item.y1 + seg.item.y2)/2; - var p2_y = (seg.item.y2 + seg.item.y)/2; - var p01_y = (p0_y + p1_y)/2; - var p12_y = (p1_y + p2_y)/2; - var new_y = (p01_y + p12_y)/2; - newseg = elem.createSVGPathSegCurvetoCubicAbs(new_x,new_y, p0_x,p0_y, p01_x,p01_y); - var pts = [seg.item.x,seg.item.y,p12_x,p12_y,p2_x,p2_y]; - replacePathSeg(seg.type,index,pts); - break; - } - - insertItemBefore(elem, newseg, index); - } - - this.deleteSeg = function(index) { - var seg = p.segs[index]; - var list = elem.pathSegList; - - seg.show(false); - var next = seg.next; - if(seg.mate) { - // Make the next point be the "M" point - var pt = [next.item.x, next.item.y]; - replacePathSeg(2, next.index, pt); - - // Reposition last node - replacePathSeg(4, seg.index, pt); - - list.removeItem(seg.mate.index); - } else if(!seg.prev) { - // First node of open path, make next point the M - var item = seg.item; - var pt = [next.item.x, next.item.y]; - replacePathSeg(2, seg.next.index, pt); - list.removeItem(index); - - } else { - list.removeItem(index); - } - } - - this.endChanges = function(text) { - if(isWebkit) resetD(p.elem); - var cmd = new ChangeElementCommand(elem, {d: p.last_d}, text); - addCommandToHistory(cmd); - call("changed", [elem]); - } - - this.subpathIsClosed = function(index) { - var closed = false; - // Check if subpath is already open - path.eachSeg(function(i) { - if(i <= index) return true; - if(this.type === 2) { - // Found M first, so open - return false; - } else if(this.type === 1) { - // Found Z first, so closed - closed = true; - return false; - } - }); - - return closed; - } - - this.addPtsToSelection = function(indexes) { - if(!$.isArray(indexes)) indexes = [indexes]; - for(var i=0; i< indexes.length; i++) { - var index = indexes[i]; - var seg = p.segs[index]; - if(seg.ptgrip) { - if($.inArray(index, p.selected_pts) == -1 && index >= 0) { - p.selected_pts.push(index); - } - } - }; - p.selected_pts.sort(); - var i = p.selected_pts.length, - grips = new Array(i); - // Loop through points to be selected and highlight each - while(i--) { - var pt = p.selected_pts[i]; - var seg = p.segs[pt]; - seg.select(true); - grips[i] = seg.ptgrip; - } - // TODO: Correct this: - pathActions.canDeleteNodes = true; - - pathActions.closed_subpath = p.subpathIsClosed(p.selected_pts[0]); - - call("selected", grips); - } - - this.removePtFromSelection = function(index) { - var pos = $.inArray(index, p.selected_pts); - if(pos == -1) { - return; - } - p.segs[index].select(false); - p.selected_pts.splice(pos, 1); - } - - - this.clearSelection = function() { - p.eachSeg(function(i) { - this.select(false); - }); - p.selected_pts = []; - } - - this.selectPt = function(pt, ctrl_num) { - p.clearSelection(); - if(pt == null) { - p.eachSeg(function(i) { - if(this.prev) { - pt = i; - } - }); - } - p.addPtsToSelection(pt); - if(ctrl_num) { - p.dragctrl = ctrl_num; - - if(link_control_pts) { - p.segs[pt].setLinked(ctrl_num); - } - } - } - - this.storeD = function() { - this.last_d = elem.getAttribute('d'); - } - - this.show = function(y) { - // Shows this path's segment grips - p.eachSeg(function() { - this.show(y); - }); - if(y) { - p.selectPt(p.first_seg.index); - } - return p; - } - - // Move selected points - this.movePts = function(d_x, d_y) { - var i = p.selected_pts.length; - while(i--) { - var seg = p.segs[p.selected_pts[i]]; - seg.move(d_x, d_y); - } - } - - this.moveCtrl = function(d_x, d_y) { - var seg = p.segs[p.selected_pts[0]]; - seg.moveCtrl(p.dragctrl, d_x, d_y); - if(link_control_pts) { - seg.setLinked(p.dragctrl); - } - } - - this.setSegType = function(new_type) { - p.storeD(); - var i = p.selected_pts.length; - var text; - while(i--) { - var sel_pt = p.selected_pts[i]; - - // Selected seg - var cur = p.segs[sel_pt]; - var prev = cur.prev; - if(!prev) continue; - - if(!new_type) { // double-click, so just toggle - text = "Toggle Path Segment Type"; - - // Toggle segment to curve/straight line - var old_type = cur.type; - - new_type = (old_type == 6) ? 4 : 6; - } - - new_type = new_type-0; - - var cur_x = cur.item.x; - var cur_y = cur.item.y; - var prev_x = prev.item.x; - var prev_y = prev.item.y; - var points; - switch ( new_type ) { - case 6: - if(cur.olditem) { - var old = cur.olditem; - points = [cur_x,cur_y, old.x1,old.y1, old.x2,old.y2]; - } else { - var diff_x = cur_x - prev_x; - var diff_y = cur_y - prev_y; - // get control points from straight line segment - /* - var ct1_x = (prev_x + (diff_y/2)); - var ct1_y = (prev_y - (diff_x/2)); - var ct2_x = (cur_x + (diff_y/2)); - var ct2_y = (cur_y - (diff_x/2)); - */ - //create control points on the line to preserve the shape (WRS) - var ct1_x = (prev_x + (diff_x/3)); - var ct1_y = (prev_y + (diff_y/3)); - var ct2_x = (cur_x - (diff_x/3)); - var ct2_y = (cur_y - (diff_y/3)); - points = [cur_x,cur_y, ct1_x,ct1_y, ct2_x,ct2_y]; - } - break; - case 4: - points = [cur_x,cur_y]; - - // Store original prevve segment nums - cur.olditem = cur.item; - break; - } - - cur.setType(new_type, points); - } - path.endChanges(text); - return; - } - - } - - function getPath(elem) { - var p = pathData[elem.id]; - if(!p) p = pathData[elem.id] = new Path(elem); - return p; - } - - - var pathFuncs = [], - current_path = null, - current_path_pts = [], - link_control_pts = false, - hasMoved = false; - - // This function converts a polyline (created by the fh_path tool) into - // a path element and coverts every three line segments into a single bezier - // curve in an attempt to smooth out the free-hand - var smoothPolylineIntoPath = function(element) { - var points = element.points; - var N = points.numberOfItems; - if (N >= 4) { - // loop through every 3 points and convert to a cubic bezier curve segment - // - // NOTE: this is cheating, it means that every 3 points has the potential to - // be a corner instead of treating each point in an equal manner. In general, - // this technique does not look that good. - // - // I am open to better ideas! - // - // Reading: - // - http://www.efg2.com/Lab/Graphics/Jean-YvesQueinecBezierCurves.htm - // - http://www.codeproject.com/KB/graphics/BezierSpline.aspx?msg=2956963 - // - http://www.ian-ko.com/ET_GeoWizards/UserGuide/smooth.htm - // - http://www.cs.mtu.edu/~shene/COURSES/cs3621/NOTES/spline/Bezier/bezier-der.html - var curpos = points.getItem(0), prevCtlPt = null; - var d = []; - d.push(["M",curpos.x,",",curpos.y," C"].join("")); - for (var i = 1; i <= (N-4); i += 3) { - var ct1 = points.getItem(i); - var ct2 = points.getItem(i+1); - var end = points.getItem(i+2); - - // if the previous segment had a control point, we want to smooth out - // the control points on both sides - if (prevCtlPt) { - var newpts = smoothControlPoints( prevCtlPt, ct1, curpos ); - if (newpts && newpts.length == 2) { - var prevArr = d[d.length-1].split(','); - prevArr[2] = newpts[0].x; - prevArr[3] = newpts[0].y; - d[d.length-1] = prevArr.join(','); - ct1 = newpts[1]; - } - } - - d.push([ct1.x,ct1.y,ct2.x,ct2.y,end.x,end.y].join(',')); - - curpos = end; - prevCtlPt = ct2; - } - // handle remaining line segments - d.push("L"); - for(;i < N;++i) { - var pt = points.getItem(i); - d.push([pt.x,pt.y].join(",")); - } - d = d.join(" "); - - // create new path element - element = addSvgElementFromJson({ - "element": "path", - "curStyles": true, - "attr": { - "id": getId(), - "d": d, - "fill": "none" - } - }); - call("changed",[element]); - } - return element; - }; - - // This replaces the segment at the given index. Type is given as number. - var replacePathSeg = function(type, index, pts, elem) { - var path = elem || retPath().elem; - var func = 'createSVGPathSeg' + pathFuncs[type]; - var seg = path[func].apply(path, pts); - - if(support.pathReplaceItem) { - path.pathSegList.replaceItem(seg, index); - } else { - var segList = path.pathSegList; - var len = segList.numberOfItems; - var arr = []; - for(var i=0; i<len; i++) { - var cur_seg = segList.getItem(i); - arr.push(cur_seg) - } - segList.clear(); - for(var i=0; i<len; i++) { - if(i == index) { - segList.appendItem(seg); - } else { - segList.appendItem(arr[i]); - } - } - } - } - - // If the path was rotated, we must now pay the piper: - // Every path point must be rotated into the rotated coordinate system of - // its old center, then determine the new center, then rotate it back - // This is because we want the path to remember its rotation - - // TODO: This is still using ye olde transform methods, can probably - // be optimized or even taken care of by recalculateDimensions - var recalcRotatedPath = function() { - var current_path = path.elem; - var angle = getRotationAngle(current_path, true); - if(!angle) return; - selectedBBoxes[0] = path.oldbbox; - var box = getBBox(current_path), - oldbox = selectedBBoxes[0], - oldcx = oldbox.x + oldbox.width/2, - oldcy = oldbox.y + oldbox.height/2, - newcx = box.x + box.width/2, - newcy = box.y + box.height/2, - - // un-rotate the new center to the proper position - dx = newcx - oldcx, - dy = newcy - oldcy, - r = Math.sqrt(dx*dx + dy*dy), - theta = Math.atan2(dy,dx) + angle; - - newcx = r * Math.cos(theta) + oldcx; - newcy = r * Math.sin(theta) + oldcy; - - var getRotVals = function(x, y) { - dx = x - oldcx; - dy = y - oldcy; - - // rotate the point around the old center - r = Math.sqrt(dx*dx + dy*dy); - theta = Math.atan2(dy,dx) + angle; - dx = r * Math.cos(theta) + oldcx; - dy = r * Math.sin(theta) + oldcy; - - // dx,dy should now hold the actual coordinates of each - // point after being rotated - - // now we want to rotate them around the new center in the reverse direction - dx -= newcx; - dy -= newcy; - - r = Math.sqrt(dx*dx + dy*dy); - theta = Math.atan2(dy,dx) - angle; - - return {'x':(r * Math.cos(theta) + newcx)/1, - 'y':(r * Math.sin(theta) + newcy)/1}; - } - - var list = current_path.pathSegList, - i = list.numberOfItems; - while (i) { - i -= 1; - var seg = list.getItem(i), - type = seg.pathSegType; - if(type == 1) continue; - - var rvals = getRotVals(seg.x,seg.y), - points = [rvals.x, rvals.y]; - if(seg.x1 != null && seg.x2 != null) { - c_vals1 = getRotVals(seg.x1, seg.y1); - c_vals2 = getRotVals(seg.x2, seg.y2); - points.splice(points.length, 0, c_vals1.x , c_vals1.y, c_vals2.x, c_vals2.y); - } - replacePathSeg(type, i, points); - } // loop for each point - - box = getBBox(current_path); - selectedBBoxes[0].x = box.x; selectedBBoxes[0].y = box.y; - selectedBBoxes[0].width = box.width; selectedBBoxes[0].height = box.height; - - // now we must set the new transform to be rotated around the new center - var R_nc = svgroot.createSVGTransform(), - tlist = getTransformList(current_path); - R_nc.setRotate((angle * 180.0 / Math.PI), newcx, newcy); - tlist.replaceItem(R_nc,0); - } - - return { - init: function() { - pathFuncs = [0,'ClosePath']; - var pathFuncsStrs = ['Moveto','Lineto','CurvetoCubic','CurvetoQuadratic','Arc','LinetoHorizontal','LinetoVertical','CurvetoCubicSmooth','CurvetoQuadraticSmooth']; - $.each(pathFuncsStrs,function(i,s){pathFuncs.push(s+'Abs');pathFuncs.push(s+'Rel');}); - }, - getPath: function() { - return path; - }, - mouseDown: function(evt, mouse_target, start_x, start_y) { - if(current_mode == "path") return; - - // TODO: Make sure current_path isn't null at this point - if(!path) return; - - path.storeD(); - - var id = evt.target.id; - if (id.substr(0,14) == "pathpointgrip_") { - // Select this point - var cur_pt = path.cur_pt = parseInt(id.substr(14)); - path.dragging = [start_x, start_y]; - var seg = path.segs[cur_pt]; - - // only clear selection if shift is not pressed (otherwise, add - // node to selection) - if (!evt.shiftKey) { - if(path.selected_pts.length <= 1 || !seg.selected) { - path.clearSelection(); - } - path.addPtsToSelection(cur_pt); - } else if(seg.selected) { - path.removePtFromSelection(cur_pt); - } else { - path.addPtsToSelection(cur_pt); - } - } else if(id.indexOf("ctrlpointgrip_") == 0) { - path.dragging = [start_x, start_y]; - - var parts = id.split('_')[1].split('c'); - var cur_pt = parts[0]-0; - var ctrl_num = parts[1]-0; - path.selectPt(cur_pt, ctrl_num); - } - - // Start selection box - if(!path.dragging) { - if (rubberBox == null) { - rubberBox = selectorManager.getRubberBandBox(); - } - assignAttributes(rubberBox, { - 'x': start_x * current_zoom, - 'y': start_y * current_zoom, - 'width': 0, - 'height': 0, - 'display': 'inline' - }, 100); - } - }, - mouseMove: function(mouse_x, mouse_y) { - hasMoved = true; - if(current_mode == "path") { - var line = getElem("path_stretch_line"); - if (line) { - line.setAttribute("x2", mouse_x); - line.setAttribute("y2", mouse_y); - } - return; - } - // if we are dragging a point, let's move it - if (path.dragging) { - var pt = getPointFromGrip({ - x: path.dragging[0], - y: path.dragging[1] - }, path); - var mpt = getPointFromGrip({ - x: mouse_x, - y: mouse_y - }, path); - var diff_x = mpt.x - pt.x; - var diff_y = mpt.y - pt.y; - path.dragging = [mouse_x, mouse_y]; - - if(path.dragctrl) { - path.moveCtrl(diff_x, diff_y); - } else { - path.movePts(diff_x, diff_y); - } - } else { - path.selected_pts = []; - path.eachSeg(function(i) { - var seg = this; - if(!seg.next && !seg.prev) return; - - var item = seg.item; - var rbb = rubberBox.getBBox(); - - var pt = getGripPt(seg); - var pt_bb = { - x: pt.x, - y: pt.y, - width: 0, - height: 0 - }; - - var sel = Utils.rectsIntersect(rbb, pt_bb); - - this.select(sel); - //Note that addPtsToSelection is not being run - if(sel) path.selected_pts.push(seg.index); - }); - - } - }, - mouseUp: function(evt, element, mouse_x, mouse_y) { - - // Create mode - if(current_mode == "path") { - var x = mouse_x/current_zoom, - y = mouse_y/current_zoom, - stretchy = getElem("path_stretch_line"); - if (!stretchy) { - stretchy = document.createElementNS(svgns, "line"); - assignAttributes(stretchy, { - 'id': "path_stretch_line", - 'stroke': "#22C", - 'stroke-width': "0.5" - }); - stretchy = getElem("selectorParentGroup").appendChild(stretchy); - } - stretchy.setAttribute("display", "inline"); - - var keep = null; - - // if pts array is empty, create path element with M at current point - if (current_path_pts.length == 0) { - current_path_pts.push(x); - current_path_pts.push(y); - d_attr = "M" + x + "," + y + " "; - addSvgElementFromJson({ - "element": "path", - "curStyles": true, - "attr": { - "d": d_attr, - "id": getNextId(), - "opacity": cur_shape.opacity / 2, - - } - }); - // set stretchy line to first point - assignAttributes(stretchy, { - 'x1': mouse_x, - 'y1': mouse_y, - 'x2': mouse_x, - 'y2': mouse_y - }); - var index = subpath ? path.segs.length : 0; - addPointGrip(index, mouse_x, mouse_y); - } - else { - // determine if we clicked on an existing point - var i = current_path_pts.length; - var FUZZ = 6/current_zoom; - var clickOnPoint = false; - while(i) { - i -= 2; - var px = current_path_pts[i], py = current_path_pts[i+1]; - // found a matching point - if ( x >= (px-FUZZ) && x <= (px+FUZZ) && y >= (py-FUZZ) && y <= (py+FUZZ) ) { - clickOnPoint = true; - break; - } - } - - // get path element that we are in the process of creating - var id = getId(); - - // Remove previous path object if previously created - if(id in pathData) delete pathData[id]; - - var newpath = getElem(id); - - var len = current_path_pts.length; - // if we clicked on an existing point, then we are done this path, commit it - // (i,i+1) are the x,y that were clicked on - if (clickOnPoint) { - // if clicked on any other point but the first OR - // the first point was clicked on and there are less than 3 points - // then leave the path open - // otherwise, close the path - if (i == 0 && len >= 6) { - // Create end segment - var abs_x = current_path_pts[0]; - var abs_y = current_path_pts[1]; - d_attr += ['L',abs_x,',',abs_y,'z'].join(''); - newpath.setAttribute("d", d_attr); - } else if(len < 3) { - keep = false; - return keep; - } - $(stretchy).remove(); - - // this will signal to commit the path - element = newpath; - current_path_pts = []; - started = false; - - if(subpath) { - if(path.matrix) { - remapElement(newpath, {}, path.matrix.inverse()); - } - - var new_d = newpath.getAttribute("d"); - var orig_d = $(path.elem).attr("d"); - $(path.elem).attr("d", orig_d + new_d); - $(newpath).remove(); - if(path.matrix) { - recalcRotatedPath(); - } - path.init(); - pathActions.toEditMode(path.elem); - path.selectPt(); - return false; - } - } - // else, create a new point, append to pts array, update path element - else { - // Checks if current target or parents are #svgcontent - if(!$.contains(container, getMouseTarget(evt))) { - // Clicked outside canvas, so don't make point - console.log("Clicked outside canvas"); - return false; - } - - var lastx = current_path_pts[len-2], lasty = current_path_pts[len-1]; - - if(evt.shiftKey) { var xya=Utils.snapToAngle(lastx,lasty,x,y); x=xya.x; y=xya.y; } - - // we store absolute values in our path points array for easy checking above - current_path_pts.push(x); - current_path_pts.push(y); - d_attr += "L" + round(x) + "," + round(y) + " "; - - newpath.setAttribute("d", d_attr); - - x *= current_zoom; - y *= current_zoom; - - // set stretchy line to latest point - assignAttributes(stretchy, { - 'x1': x, - 'y1': y, - 'x2': x, - 'y2': y - }); - var index = (current_path_pts.length/2 - 1); - if(subpath) index += path.segs.length; - addPointGrip(index, x, y); - } - keep = true; - } - return { - keep: keep, - element: element - } - } - - // Edit mode - - if (path.dragging) { - var last_pt = path.cur_pt; - - path.dragging = false; - path.dragctrl = false; - path.update(); - - - if(hasMoved) { - path.endChanges("Move path point(s)"); - } - - if(!evt.shiftKey && !hasMoved) { - path.selectPt(last_pt); - } - } - else if(rubberBox && rubberBox.getAttribute('display') != 'none') { - // Done with multi-node-select - rubberBox.setAttribute("display", "none"); - - if(rubberBox.getAttribute('width') <= 2 && rubberBox.getAttribute('height') <= 2) { - pathActions.toSelectMode(evt.target); - } - - // else, move back to select mode - } else { - pathActions.toSelectMode(evt.target); - } - hasMoved = false; - }, - clearData: function() { - pathData = {}; - }, - toEditMode: function(element) { - path = getPath(element); - current_mode = "pathedit"; - clearSelection(); - path.show(true).update(); - path.oldbbox = getBBox(path.elem); - subpath = false; - }, - toSelectMode: function(elem) { - var selPath = (elem == path.elem); - current_mode = "select"; - path.show(false); - current_path = false; - clearSelection(); - - if(path.matrix) { - // Rotated, so may need to re-calculate the center - recalcRotatedPath(); - } - - if(selPath) { - call("selected", [elem]); - addToSelection([elem], true); - } - }, - addSubPath: function(on) { - if(on) { - // Internally we go into "path" mode, but in the UI it will - // still appear as if in "pathedit" mode. - current_mode = "path"; - subpath = true; - } else { - pathActions.clear(true); - pathActions.toEditMode(path.elem); - } - }, - select: function(target) { - if (current_path == target) { - pathActions.toEditMode(target); - current_mode = "pathedit"; - } // going into pathedit mode - else { - current_path = target; - } - }, - reorient: function() { - var elem = selectedElements[0]; - if(!elem) return; - var angle = getRotationAngle(elem); - if(angle == 0) return; - - var batchCmd = new BatchCommand("Reorient path"); - var changes = { - d: elem.getAttribute('d'), - transform: elem.getAttribute('transform') - }; - batchCmd.addSubCommand(new ChangeElementCommand(elem, changes)); - clearSelection(); - this.resetOrientation(elem); - - addCommandToHistory(batchCmd); - - // Set matrix to null - getPath(elem).show(false).matrix = null; - - this.clear(); - - addToSelection([elem], true); - call("changed", selectedElements); - }, - - clear: function(remove) { - current_path = null; - if (current_mode == "path" && current_path_pts.length > 0) { - var elem = getElem(getId()); - $(getElem("path_stretch_line")).remove(); - $(elem).remove(); - $(getElem("pathpointgrip_container")).find('*').attr('display', 'none'); - current_path_pts = []; - started = false; - } else if (current_mode == "pathedit") { - this.toSelectMode(); - } - if(path) path.init().show(false); - }, - resetOrientation: function(path) { - if(path == null || path.nodeName != 'path') return false; - var tlist = getTransformList(path); - var m = transformListToTransform(tlist).matrix; - tlist.clear(); - path.removeAttribute("transform"); - var segList = path.pathSegList; - - // Opera/win/non-EN throws an error here. - // TODO: Find out why! - // Presumed fixed in Opera 10.5, so commented out for now - -// try { - var len = segList.numberOfItems; -// } catch(err) { -// var fixed_d = pathActions.convertPath(path); -// path.setAttribute('d', fixed_d); -// segList = path.pathSegList; -// var len = segList.numberOfItems; -// } - for (var i = 0; i < len; ++i) { - var seg = segList.getItem(i); - var type = seg.pathSegType; - if(type == 1) continue; - var pts = []; - $.each(['',1,2], function(j, n) { - var x = seg['x'+n], y = seg['y'+n]; - if(x && y) { - var pt = transformPoint(x, y, m); - pts.splice(pts.length, 0, pt.x, pt.y); - } - }); - replacePathSeg(type, i, pts, path); - } - }, - zoomChange: function() { - if(current_mode == "pathedit") { - path.update(); - } - }, - getNodePoint: function() { - var sel_pt = path.selected_pts.length ? path.selected_pts[0] : 1; - - var seg = path.segs[sel_pt]; - return { - x: seg.item.x, - y: seg.item.y, - type: seg.type - }; - }, - linkControlPoints: function(linkPoints) { - link_control_pts = linkPoints; - }, - clonePathNode: function() { - path.storeD(); - - var sel_pts = path.selected_pts; - var segs = path.segs; - - var i = sel_pts.length; - var nums = []; - - while(i--) { - var pt = sel_pts[i]; - path.addSeg(pt); - - nums.push(pt + i); - nums.push(pt + i + 1); - } - path.init().addPtsToSelection(nums); - - path.endChanges("Clone path node(s)"); - }, - opencloseSubPath: function() { - var sel_pts = path.selected_pts; - // Only allow one selected node for now - if(sel_pts.length !== 1) return; - - var elem = path.elem; - var list = elem.pathSegList; - - var len = list.numberOfItems; - - var index = sel_pts[0]; - - var open_pt = null; - var start_item = null; - - // Check if subpath is already open - path.eachSeg(function(i) { - if(this.type === 2 && i <= index) { - start_item = this.item; - } - if(i <= index) return true; - if(this.type === 2) { - // Found M first, so open - open_pt = i; - return false; - } else if(this.type === 1) { - // Found Z first, so closed - open_pt = false; - return false; - } - }); - - if(open_pt == null) { - // Single path, so close last seg - open_pt = path.segs.length - 1; - } - - if(open_pt !== false) { - // Close this path - - // Create a line going to the previous "M" - var newseg = elem.createSVGPathSegLinetoAbs(start_item.x, start_item.y); - - var closer = elem.createSVGPathSegClosePath(); - if(open_pt == path.segs.length - 1) { - list.appendItem(newseg); - list.appendItem(closer); - } else { - insertItemBefore(elem, closer, open_pt); - insertItemBefore(elem, newseg, open_pt); - } - - path.init().selectPt(open_pt+1); - return; - } - - - - // M 1,1 L 2,2 L 3,3 L 1,1 z // open at 2,2 - // M 2,2 L 3,3 L 1,1 - - // M 1,1 L 2,2 L 1,1 z M 4,4 L 5,5 L6,6 L 5,5 z - // M 1,1 L 2,2 L 1,1 z [M 4,4] L 5,5 L(M)6,6 L 5,5 z - - var seg = path.segs[index]; - - if(seg.mate) { - list.removeItem(index); // Removes last "L" - list.removeItem(index); // Removes the "Z" - path.init().selectPt(index - 1); - return; - } - - var last_m, z_seg; - - // Find this sub-path's closing point and remove - for(var i=0; i<list.numberOfItems; i++) { - var item = list.getItem(i); - - if(item.pathSegType === 2) { - // Find the preceding M - last_m = i; - } else if(i === index) { - // Remove it - list.removeItem(last_m); -// index--; - } else if(item.pathSegType === 1 && index < i) { - // Remove the closing seg of this subpath - z_seg = i-1; - list.removeItem(i); - break; - } - } - - var num = (index - last_m) - 1; - - while(num--) { - insertItemBefore(elem, list.getItem(last_m), z_seg); - } - - var pt = list.getItem(last_m); - - // Make this point the new "M" - replacePathSeg(2, last_m, [pt.x, pt.y]); - - var i = index - - path.init().selectPt(0); - }, - deletePathNode: function() { - if(!pathActions.canDeleteNodes) return; - path.storeD(); - - var sel_pts = path.selected_pts; - var i = sel_pts.length; - - while(i--) { - var pt = sel_pts[i]; - path.deleteSeg(pt); - } - - // Cleanup - var cleanup = function() { - var segList = path.elem.pathSegList; - var len = segList.numberOfItems; - - var remItems = function(pos, count) { - while(count--) { - segList.removeItem(pos); - } - } - - if(len <= 1) return true; - - while(len--) { - var item = segList.getItem(len); - if(item.pathSegType === 1) { - var prev = segList.getItem(len-1); - var nprev = segList.getItem(len-2); - if(prev.pathSegType === 2) { - remItems(len-1, 2); - cleanup(); - break; - } else if(nprev.pathSegType === 2) { - remItems(len-2, 3); - cleanup(); - break; - } - - } else if(item.pathSegType === 2) { - if(len > 0) { - var prev_type = segList.getItem(len-1).pathSegType; - // Path has M M - if(prev_type === 2) { - remItems(len-1, 1); - cleanup(); - break; - // Entire path ends with Z M - } else if(prev_type === 1 && segList.numberOfItems-1 === len) { - remItems(len, 1); - cleanup(); - break; - } - } - } - } - return false; - } - - cleanup(); - - // Completely delete a path with 1 or 0 segments - if(path.elem.pathSegList.numberOfItems <= 1) { - pathActions.toSelectMode(path.elem); - canvas.deleteSelectedElements(); - return; - } - - path.init(); - - path.clearSelection(); - - // TODO: Find right way to select point now - // path.selectPt(sel_pt); - if(window.opera) { // Opera repaints incorrectly - var cp = $(path.elem); cp.attr('d',cp.attr('d')); - } - path.endChanges("Delete path node(s)"); - }, - smoothPolylineIntoPath: smoothPolylineIntoPath, - setSegType: function(v) { - path.setSegType(v); - }, - moveNode: function(attr, newValue) { - var sel_pts = path.selected_pts; - if(!sel_pts.length) return; - - path.storeD(); - - // Get first selected point - var seg = path.segs[sel_pts[0]]; - var diff = {x:0, y:0}; - diff[attr] = newValue - seg.item[attr]; - - seg.move(diff.x, diff.y); - path.endChanges("Move path point"); - }, - fixEnd: function(elem) { - // Adds an extra segment if the last seg before a Z doesn't end - // at its M point - // M0,0 L0,100 L100,100 z - var segList = elem.pathSegList; - var len = segList.numberOfItems; - var last_m; - for (var i = 0; i < len; ++i) { - var item = segList.getItem(i); - if(item.pathSegType === 2) { - last_m = item; - } - - if(item.pathSegType === 1) { - var prev = segList.getItem(i-1); - if(prev.x != last_m.x || prev.y != last_m.y) { - // Add an L segment here - var newseg = elem.createSVGPathSegLinetoAbs(last_m.x, last_m.y); - insertItemBefore(elem, newseg, i); - // Can this be done better? - pathActions.fixEnd(elem); - break; - } - - } - } - if(isWebkit) resetD(elem); - }, - // Convert a path to one with only absolute or relative values - convertPath: function(path, toRel) { - var segList = path.pathSegList; - var len = segList.numberOfItems; - var curx = 0, cury = 0; - var d = ""; - var last_m = null; - - for (var i = 0; i < len; ++i) { - var seg = segList.getItem(i); - // if these properties are not in the segment, set them to zero - var x = seg.x || 0, - y = seg.y || 0, - x1 = seg.x1 || 0, - y1 = seg.y1 || 0, - x2 = seg.x2 || 0, - y2 = seg.y2 || 0; - - var type = seg.pathSegType; - var letter = pathMap[type]['to'+(toRel?'Lower':'Upper')+'Case'](); - - var addToD = function(pnts, more, last) { - var str = ''; - var more = more?' '+more.join(' '):''; - var last = last?shortFloat(last):''; - $.each(pnts, function(i, pnt) { - pnts[i] = shortFloat(pnt); - }); - d += letter + pnts.join(' ') + more + last; - } - - switch (type) { - case 1: // z,Z closepath (Z/z) - d += "z"; - break; - case 12: // absolute horizontal line (H) - x -= curx; - case 13: // relative horizontal line (h) - if(toRel) { - curx += x; - } else { - x += curx; - curx = x; - } - addToD([[x]]); - break; - case 14: // absolute vertical line (V) - y -= cury; - case 15: // relative vertical line (v) - if(toRel) { - cury += y; - } else { - y += cury; - cury = y; - } - addToD([[y]]); - break; - case 2: // absolute move (M) - case 4: // absolute line (L) - case 18: // absolute smooth quad (T) - x -= curx; - y -= cury; - case 5: // relative line (l) - case 3: // relative move (m) - // If the last segment was a "z", this must be relative to - if(last_m && segList.getItem(i-1).pathSegType === 1 && !toRel) { - curx = last_m[0]; - cury = last_m[1]; - } - - case 19: // relative smooth quad (t) - if(toRel) { - curx += x; - cury += y; - } else { - x += curx; - y += cury; - curx = x; - cury = y; - } - if(type === 3) last_m = [curx, cury]; - - addToD([[x,y]]); - break; - case 6: // absolute cubic (C) - x -= curx; x1 -= curx; x2 -= curx; - y -= cury; y1 -= cury; y2 -= cury; - case 7: // relative cubic (c) - if(toRel) { - curx += x; - cury += y; - } else { - x += curx; x1 += curx; x2 += curx; - y += cury; y1 += cury; y2 += cury; - curx = x; - cury = y; - } - addToD([[x1,y1],[x2,y2],[x,y]]); - break; - case 8: // absolute quad (Q) - x -= curx; x1 -= curx; - y -= cury; y1 -= cury; - case 9: // relative quad (q) - if(toRel) { - curx += x; - cury += y; - } else { - x += curx; x1 += curx; - y += cury; y1 += cury; - curx = x; - cury = y; - } - addToD([[x1,y1],[x,y]]); - break; - case 10: // absolute elliptical arc (A) - x -= curx; - y -= cury; - case 11: // relative elliptical arc (a) - if(toRel) { - curx += x; - cury += y; - } else { - x += curx; - y += cury; - curx = x; - cury = y; - } - addToD([[seg.r1,seg.r2]], [ - seg.angle, - (seg.largeArcFlag ? 1 : 0), - (seg.sweepFlag ? 1 : 0) - ],[x,y] - ); - break; - case 16: // absolute smooth cubic (S) - x -= curx; x2 -= curx; - y -= cury; y2 -= cury; - case 17: // relative smooth cubic (s) - if(toRel) { - curx += x; - cury += y; - } else { - x += curx; x2 += curx; - y += cury; y2 += cury; - curx = x; - cury = y; - } - addToD([[x2,y2],[x,y]]); - break; - } // switch on path segment type - } // for each segment - return d; - } - } -}(); - -pathActions.init(); - -// Group: Serialization - -// Function: removeUnusedDefElems -// Looks at DOM elements inside the <defs> to see if they are referred to, -// removes them from the DOM if they are not. -// -// Returns: -// The amount of elements that were removed -var removeUnusedDefElems = this.removeUnusedDefElems = function() { - var defs = svgcontent.getElementsByTagNameNS(svgns, "defs"); - if(!defs || !defs.length) return 0; - - var defelem_uses = [], - numRemoved = 0; - var attrs = ['fill', 'stroke', 'filter', 'marker-start', 'marker-mid', 'marker-end']; - var alen = attrs.length; - - var all_els = svgcontent.getElementsByTagNameNS(svgns, '*'); - var all_len = all_els.length; - - for(var i=0; i<all_len; i++) { - var el = all_els[i]; - for(var j = 0; j < alen; j++) { - var ref = getUrlFromAttr(el.getAttribute(attrs[j])); - if(ref) defelem_uses.push(ref.substr(1)); - } - - // gradients can refer to other gradients - var href = el.getAttributeNS(xlinkns, "href"); - if (href && href.indexOf('#') == 0) { - defelem_uses.push(href.substr(1)); - } - }; - - var defelems = $(svgcontent).find("linearGradient, radialGradient, filter, marker"); - defelem_ids = [], - i = defelems.length; - while (i--) { - var defelem = defelems[i]; - var id = defelem.id; - if($.inArray(id, defelem_uses) == -1) { - // Not found, so remove - defelem.parentNode.removeChild(defelem); - numRemoved++; - } - } - - // Remove defs if empty - var i = defs.length; - while (i--) { - var def = defs[i]; - if(!def.getElementsByTagNameNS(svgns,'*').length) { - def.parentNode.removeChild(def); - } - } - - return numRemoved; -} - -// Function: svgCanvasToString -// Main function to set up the SVG content for output -// -// Returns: -// String containing the SVG image for output -var svgCanvasToString = this.svgCanvasToString = function() { - // keep calling it until there are none to remove - while (removeUnusedDefElems() > 0) {}; - - pathActions.clear(true); - - // Keep SVG-Edit comment on top - $.each(svgcontent.childNodes, function(i, node) { - if(i && node.nodeType == 8 && node.data.indexOf('Created with') != -1) { - svgcontent.insertBefore(node, svgcontent.firstChild); - } - }); - - var output = svgToString(svgcontent, 0); - return output; -} - -// Function: svgToString -// Sub function ran on each SVG element to convert it to a string as desired -// -// Parameters: -// elem - The SVG element to convert -// indent - Integer with the amount of spaces to indent this tag -// -// Returns: -// String with the given element as an SVG tag -var svgToString = this.svgToString = function(elem, indent) { - var out = new Array(), toXml = Utils.toXml; - - if (elem) { - cleanupElement(elem); - var attrs = elem.attributes, - attr, - i, - childs = elem.childNodes; - - for (var i=0; i<indent; i++) out.push(" "); - out.push("<"); out.push(elem.nodeName); - if(elem.id == 'svgcontent') { - // Process root element separately - var res = getResolution(); - out.push(' width="' + res.w + '" height="' + res.h + '" xmlns="'+svgns+'"'); - - var nsuris = {}; - - // Check elements for namespaces, add if found - $(elem).find('*').andSelf().each(function() { - var el = this; - $.each(this.attributes, function(i, attr) { - var uri = attr.namespaceURI; - if(uri && !nsuris[uri] && nsMap[uri] !== 'xmlns' && nsMap[uri] !== 'xml' ) { - nsuris[uri] = true; - out.push(" xmlns:" + nsMap[uri] + '="' + uri +'"'); - } - }); - }); - - var i = attrs.length; - while (i--) { - attr = attrs.item(i); - var attrVal = toXml(attr.nodeValue); - - // Namespaces have already been dealt with, so skip - if(attr.nodeName.indexOf('xmlns:') === 0) continue; - - // only serialize attributes we don't use internally - if (attrVal != "" && - $.inArray(attr.localName, ['width','height','xmlns','x','y','viewBox','id','overflow']) == -1) - { - - if(!attr.namespaceURI || nsMap[attr.namespaceURI]) { - out.push(' '); - out.push(attr.nodeName); out.push("=\""); - out.push(attrVal); out.push("\""); - } - } - } - } else { - for (var i=attrs.length-1; i>=0; i--) { - attr = attrs.item(i); - var attrVal = toXml(attr.nodeValue); - //remove bogus attributes added by Gecko - if ($.inArray(attr.localName, ['-moz-math-font-style', '_moz-math-font-style']) !== -1) continue; - if (attrVal != "") { - if(attrVal.indexOf('pointer-events') == 0) continue; - if(attr.localName == "class" && attrVal.indexOf('se_') == 0) continue; - out.push(" "); - if(attr.localName == 'd') attrVal = pathActions.convertPath(elem, true); - if(!isNaN(attrVal)) { - attrVal = shortFloat(attrVal); - } - - // Embed images when saving - if(save_options.apply - && elem.nodeName == 'image' - && attr.localName == 'href' - && save_options.images - && save_options.images == 'embed') - { - var img = encodableImages[attrVal]; - if(img) attrVal = img; - } - - // map various namespaces to our fixed namespace prefixes - // (the default xmlns attribute itself does not get a prefix) - if(!attr.namespaceURI || attr.namespaceURI == svgns || nsMap[attr.namespaceURI]) { - out.push(attr.nodeName); out.push("=\""); - out.push(attrVal); out.push("\""); - } - } - } - } - - if (elem.hasChildNodes()) { - out.push(">"); - indent++; - var bOneLine = false; - for (var i=0; i<childs.length; i++) - { - var child = childs.item(i); - switch(child.nodeType) { - case 1: // element node - out.push("\n"); - out.push(svgToString(childs.item(i), indent)); - break; - case 3: // text node - var str = child.nodeValue.replace(/^\s+|\s+$/g, ""); - if (str != "") { - bOneLine = true; - out.push(toXml(str) + ""); - } - break; - case 8: // comment - out.push("\n"); - out.push(new Array(indent+1).join(" ")); - out.push("<!--"); - out.push(child.data); - out.push("-->"); - break; - } // switch on node type - } - indent--; - if (!bOneLine) { - out.push("\n"); - for (var i=0; i<indent; i++) out.push(" "); - } - out.push("</"); out.push(elem.nodeName); out.push(">"); - } else { - out.push("/>"); - } - } - return out.join(''); -}; // end svgToString() - -// Function: embedImage -// Converts a given image file to a data URL when possible, then runs a given callback -// -// Parameters: -// val - String with the path/URL of the image -// callback - Optional function to run when image data is found, supplies the -// result (data URL or false) as first parameter. -this.embedImage = function(val, callback) { - - // load in the image and once it's loaded, get the dimensions - $(new Image()).load(function() { - // create a canvas the same size as the raster image - var canvas = document.createElement("canvas"); - canvas.width = this.width; - canvas.height = this.height; - // load the raster image into the canvas - canvas.getContext("2d").drawImage(this,0,0); - // retrieve the data: URL - try { - var urldata = ';svgedit_url=' + encodeURIComponent(val); - urldata = canvas.toDataURL().replace(';base64',urldata+';base64'); - encodableImages[val] = urldata; - } catch(e) { - encodableImages[val] = false; - } - last_good_img_url = val; - if(callback) callback(encodableImages[val]); - }).attr('src',val); -} - -// Function: setGoodImage -// Sets a given URL to be a "last good image" URL -this.setGoodImage = function(val) { - last_good_img_url = val; -} - -this.open = function() { - // Nothing by default, handled by optional widget/extension -}; - -// Function: save -// Serializes the current drawing into SVG XML text and returns it to the 'saved' handler. -// This function also includes the XML prolog. Clients of the SvgCanvas bind their save -// function to the 'saved' event. -// -// Returns: -// Nothing -this.save = function(opts) { - // remove the selected outline before serializing - clearSelection(); - // Update save options if provided - if(opts) $.extend(save_options, opts); - save_options.apply = true; - - // no need for doctype, see http://jwatt.org/svg/authoring/#doctype-declaration - var str = svgCanvasToString(); - call("saved", str); -}; - -// Function: rasterExport -// Generates a PNG Data URL based on the current image, then calls "exported" -// with an object including the string and any issues found -this.rasterExport = function() { - // remove the selected outline before serializing - clearSelection(); - - // Check for known CanVG issues - var issues = []; - - // Selector and notice - var issue_list = { - 'feGaussianBlur': uiStrings.exportNoBlur, - 'image': uiStrings.exportNoImage, - 'foreignObject': uiStrings.exportNoforeignObject, - '[stroke-dasharray]': uiStrings.exportNoDashArray - }; - var content = $(svgcontent); - - // Add font/text check if Canvas Text API is not implemented - if(!("font" in $('<canvas>')[0].getContext('2d'))) { - issue_list['text'] = uiStrings.exportNoText; - } - - $.each(issue_list, function(sel, descr) { - if(content.find(sel).length) { - issues.push(descr); - } - }); - - var str = svgCanvasToString(); - call("exported", {svg: str, issues: issues}); -}; - -// Function: getSvgString -// Returns the current drawing as raw SVG XML text. -// -// Returns: -// The current drawing as raw SVG XML text. -this.getSvgString = function() { - save_options.apply = false; - return svgCanvasToString(); -}; - -//function randomizeIds -// This function determines whether to add a nonce to the prefix, when -// generating IDs in SVG-Edit -// -// Parameters: -// an opional boolean, which, if true, adds a nonce to the prefix. Thus -// svgCanvas.randomizeIds() <==> svgCanvas.randomizeIds(true) -// -// if you're controlling SVG-Edit externally, and want randomized IDs, call -// this BEFORE calling svgCanvas.setSvgString -// -this.randomizeIds = function() { - if (arguments.length > 0 && arguments[0] == false) { - randomize_ids = false; - if (extensions["Arrows"]) call("unsetarrownonce") ; - } else { - randomize_ids = true; - if (!svgcontent.getAttributeNS(se_ns, 'nonce')) { - svgcontent.setAttributeNS(se_ns, 'se:nonce', nonce); - if (extensions["Arrows"]) call("setarrownonce", nonce) ; - } - } -} - -// -// Function: setSvgString -// This function sets the current drawing as the input SVG XML. -// -// Parameters: -// xmlString - The SVG as XML text. -// -// Returns: -// This function returns false if the set was unsuccessful, true otherwise. -this.setSvgString = function(xmlString) { - try { - // convert string into XML document - var newDoc = Utils.text2xml(xmlString); - // run it through our sanitizer to remove anything we do not support - sanitizeSvg(newDoc.documentElement); - - var batchCmd = new BatchCommand("Change Source"); - - // remove old svg document - var oldzoom = svgroot.removeChild(svgcontent); - batchCmd.addSubCommand(new RemoveElementCommand(oldzoom, svgroot)); - - // set new svg document - svgcontent = svgroot.appendChild(svgdoc.importNode(newDoc.documentElement, true)); - // retrieve or set the nonce - n = svgcontent.getAttributeNS(se_ns, 'nonce'); - if (n) { - randomize_ids = true; - nonce = n; - if (extensions["Arrows"]) call("setarrownonce", n) ; - } else if (randomize_ids) { - svgcontent.setAttributeNS(xmlnsns, 'xmlns:se', se_ns); - svgcontent.setAttributeNS(se_ns, 'se:nonce', nonce); - if (extensions["Arrows"]) call("setarrownonce", nonce) ; - } - // change image href vals if possible - $(svgcontent).find('image').each(function() { - var image = this; - preventClickDefault(image); - var val = this.getAttributeNS(xlinkns, "href"); - if(val.indexOf('data:') === 0) { - // Check if an SVG-edit data URI - var m = val.match(/svgedit_url=(.*?);/); - if(m) { - var url = decodeURIComponent(m[1]); - $(new Image()).load(function() { - image.setAttributeNS(xlinkns,'xlink:href',url); - }).attr('src',url); - } - } - // Add to encodableImages if it loads - canvas.embedImage(val); - }); - - // convert gradients with userSpaceOnUse to objectBoundingBox - $(svgcontent).find('linearGradient, radialGradient').each(function() { - var grad = this; - if($(grad).attr('gradientUnits') === 'userSpaceOnUse') { - // TODO: Support more than one element with this ref by duplicating parent grad - var elems = $(svgcontent).find('[fill=url(#' + grad.id + ')],[stroke=url(#' + grad.id + ')]'); - if(!elems.length) return; - - // get object's bounding box - var bb = elems[0].getBBox(); - - if(grad.tagName === 'linearGradient') { - var g_coords = $(grad).attr(['x1', 'y1', 'x2', 'y2']); - - $(grad).attr({ - x1: (g_coords.x1 - bb.x) / bb.width, - y1: (g_coords.y1 - bb.y) / bb.height, - x2: (g_coords.x2 - bb.x) / bb.width, - y2: (g_coords.y1 - bb.y) / bb.height - }); - - grad.removeAttribute('gradientUnits'); - } else { - // Note: radialGradient elements cannot be easily converted - // because userSpaceOnUse will keep circular gradients, while - // objectBoundingBox will x/y scale the gradient according to - // its bbox. - - // For now we'll do nothing, though we should probably have - // the gradient be updated as the element is moved, as - // inkscape/illustrator do. - -// var g_coords = $(grad).attr(['cx', 'cy', 'r']); -// -// $(grad).attr({ -// cx: (g_coords.cx - bb.x) / bb.width, -// cy: (g_coords.cy - bb.y) / bb.height, -// r: g_coords.r -// }); -// -// grad.removeAttribute('gradientUnits'); - } - - - } - }); - - // recalculate dimensions on the top-level children so that unnecessary transforms - // are removed - walkTreePost(svgcontent, function(n){try{recalculateDimensions(n)}catch(e){console.log(e)}}); - - var content = $(svgcontent); - - var attrs = { - id: 'svgcontent', - overflow: curConfig.show_outside_canvas?'visible':'hidden' - }; - - // determine proper size - if (content.attr("viewBox")) { - var vb = content.attr("viewBox").split(' '); - attrs.width = vb[2]; - attrs.height = vb[3]; - } - // handle content that doesn't have a viewBox - else { - $.each(['width', 'height'], function(i, dim) { - // Set to 100 if not given - var val = content.attr(dim) || 100; - - if((val+'').substr(-1) === "%") { - // Use user units if percentage given - attrs[dim] = parseInt(val); - } else { - attrs[dim] = convertToNum(dim, val); - } - }); - } - - content.attr(attrs); - this.contentW = attrs['width']; - this.contentH = attrs['height']; - - batchCmd.addSubCommand(new InsertElementCommand(svgcontent)); - // update root to the correct size - var changes = content.attr(["width", "height"]); - batchCmd.addSubCommand(new ChangeElementCommand(svgroot, changes)); - - // reset zoom - current_zoom = 1; - - // identify layers - identifyLayers(); - - // reset transform lists - svgTransformLists = {}; - clearSelection(); - pathActions.clearData(); - svgroot.appendChild(selectorManager.selectorParentGroup); - - addCommandToHistory(batchCmd); - call("changed", [svgcontent]); - } catch(e) { - console.log(e); - return false; - } - - return true; -}; - -// Function: importSvgString -// This function imports the input SVG XML into the current layer in the drawing -// -// Parameters: -// xmlString - The SVG as XML text. -// -// Returns: -// This function returns false if the import was unsuccessful, true otherwise. -// TODO: -// * properly handle if namespace is introduced by imported content (must add to svgcontent -// and update all prefixes in the imported node) -// * properly handle recalculating dimensions, recalculateDimensions() doesn't handle -// arbitrary transform lists, but makes some assumptions about how the transform list -// was obtained -// * import should happen in top-left of current zoomed viewport -// * create a new layer for the imported SVG -this.importSvgString = function(xmlString) { - try { - // convert string into XML document - var newDoc = Utils.text2xml(xmlString); - // run it through our sanitizer to remove anything we do not support - sanitizeSvg(newDoc.documentElement); - - var batchCmd = new BatchCommand("Change Source"); - - // import new svg document into our document - var importedNode = svgdoc.importNode(newDoc.documentElement, true); - - if (current_layer) { - // TODO: properly handle if width/height are not specified or if in percentages - // TODO: properly handle if width/height are in units (px, etc) - var innerw = importedNode.getAttribute("width"), - innerh = importedNode.getAttribute("height"), - innervb = importedNode.getAttribute("viewBox"), - // if no explicit viewbox, create one out of the width and height - vb = innervb ? innervb.split(" ") : [0,0,innerw,innerh]; - for (var j = 0; j < 4; ++j) - vb[j] = Number(vb[j]); - - // TODO: properly handle preserveAspectRatio - var canvasw = Number(svgcontent.getAttribute("width")), - canvash = Number(svgcontent.getAttribute("height")); - // imported content should be 1/3 of the canvas on its largest dimension - if (innerh > innerw) { - var ts = "scale(" + (canvash/3)/vb[3] + ")"; - } - else { - var ts = "scale(" + (canvash/3)/vb[2] + ")"; - } - - // Hack to make recalculateDimensions understand how to scale - ts = "translate(0) " + ts + " translate(0)"; - - // TODO: Find way to add this in a recalculateDimensions-parsable way -// if (vb[0] != 0 || vb[1] != 0) -// ts = "translate(" + (-vb[0]) + "," + (-vb[1]) + ") " + ts; - - // add all children of the imported <svg> to the <g> we create - var g = svgdoc.createElementNS(svgns, "g"); - while (importedNode.hasChildNodes()) - g.appendChild(importedNode.firstChild); - if (ts) - g.setAttribute("transform", ts); - - // now ensure each element has a unique ID - var ids = {}; - walkTree(g, function(n) { - // if it's an element node - if (n.nodeType == 1) { - // and the element has an ID - if (n.id) { - // and we haven't tracked this ID yet - if (!(n.id in ids)) { - // add this id to our map - ids[n.id] = {elem:null, attrs:[], hrefs:[]}; - } - ids[n.id]["elem"] = n; - } - - // now search for all attributes on this element that might refer - // to other elements - $.each(["clip-path", "fill", "filter", "marker-end", "marker-mid", "marker-start", "mask", "stroke"],function(i,attr) { - var attrnode = n.getAttributeNode(attr); - if (attrnode) { - // the incoming file has been sanitized, so we should be able to safely just strip off the leading # - var url = getUrlFromAttr(attrnode.value), - refid = url ? url.substr(1) : null; - if (refid) { - if (!(refid in ids)) { - // add this id to our map - ids[refid] = {elem:null, attrs:[], hrefs:[]}; - } - ids[refid]["attrs"].push(attrnode); - } - } - }); - - // check xlink:href now - var href = n.getAttributeNS(xlinkns,"href"); - // TODO: what if an <image> or <a> element refers to an element internally? - if(href && - $.inArray(n.nodeName, ["filter", "linearGradient", "pattern", - "radialGradient", "textPath", "use"]) != -1) - { - var refid = href.substr(1); - if (!(refid in ids)) { - // add this id to our map - ids[refid] = {elem:null, attrs:[], hrefs:[]}; - } - ids[refid]["hrefs"].push(n); - } - } - }); - - // in ids, we now have a map of ids, elements and attributes, let's re-identify - for (var oldid in ids) { - var elem = ids[oldid]["elem"]; - if (elem) { - var newid = getNextId(); - // manually increment obj_num because our cloned elements are not in the DOM yet - obj_num++; - - // assign element its new id - elem.id = newid; - - // remap all url() attributes - var attrs = ids[oldid]["attrs"]; - var j = attrs.length; - while (j--) { - var attr = attrs[j]; - attr.ownerElement.setAttribute(attr.name, "url(#" + newid + ")"); - } - - // remap all href attributes - var hreffers = ids[oldid]["hrefs"]; - var k = hreffers.length; - while (k--) { - var hreffer = hreffers[k]; - hreffer.setAttributeNS(xlinkns, "xlink:href", "#"+newid); - } - } - } - - // now give the g itself a new id - - g.id = getNextId(); - // manually increment obj_num because our cloned elements are not in the DOM yet - obj_num++; - - current_layer.appendChild(g); - } - - // change image href vals if possible -// $(svgcontent).find('image').each(function() { -// var image = this; -// preventClickDefault(image); -// var val = this.getAttributeNS(xlinkns, "href"); -// if(val.indexOf('data:') === 0) { -// // Check if an SVG-edit data URI -// var m = val.match(/svgedit_url=(.*?);/); -// if(m) { -// var url = decodeURIComponent(m[1]); -// $(new Image()).load(function() { -// image.setAttributeNS(xlinkns,'xlink:href',url); -// }).attr('src',url); -// } -// } -// // Add to encodableImages if it loads -// canvas.embedImage(val); -// }); - - - // recalculate dimensions on the top-level children so that unnecessary transforms - // are removed - walkTreePost(svgcontent, function(n){try{recalculateDimensions(n)}catch(e){console.log(e)}}); - - - batchCmd.addSubCommand(new InsertElementCommand(svgcontent)); - - // reset zoom - TODO: why? -// current_zoom = 1; - - // identify layers -// identifyLayers(); - - // reset transform lists - svgTransformLists = {}; - clearSelection(); - - addCommandToHistory(batchCmd); - call("changed", [svgcontent]); - } catch(e) { - console.log(e); - return false; - } - - return true; -}; - -// Layer API Functions - -// Group: Layers - -// Function: identifyLayers -// Updates layer system -var identifyLayers = function() { - all_layers = []; - var numchildren = svgcontent.childNodes.length; - // loop through all children of svgcontent - var orphans = [], layernames = []; - for (var i = 0; i < numchildren; ++i) { - var child = svgcontent.childNodes.item(i); - // for each g, find its layer name - if (child && child.nodeType == 1) { - if (child.tagName == "g") { - var name = $("title",child).text(); - - // Hack for Opera 10.60 - if(!name && isOpera && child.querySelectorAll) { - name = $(child.querySelectorAll('title')).text(); - } - - // store layer and name in global variable - if (name) { - layernames.push(name); - all_layers.push( [name,child] ); - current_layer = child; - walkTree(child, function(e){e.setAttribute("style", "pointer-events:inherit");}); - current_layer.setAttribute("style", "pointer-events:none"); - } - // if group did not have a name, it is an orphan - else { - orphans.push(child); - } - } - // if child has a bbox (i.e. not a <title> or <defs> element), then it is an orphan - else if(getBBox(child) && child.nodeName != 'defs') { // Opera returns a BBox for defs - var bb = getBBox(child); - orphans.push(child); - } - } - } - // create a new layer and add all the orphans to it - if (orphans.length > 0) { - var i = 1; - while ($.inArray(("Layer " + i), layernames) != -1) { i++; } - var newname = "Layer " + i; - current_layer = svgdoc.createElementNS(svgns, "g"); - var layer_title = svgdoc.createElementNS(svgns, "title"); - layer_title.textContent = newname; - current_layer.appendChild(layer_title); - for (var j = 0; j < orphans.length; ++j) { - current_layer.appendChild(orphans[j]); - } - current_layer = svgcontent.appendChild(current_layer); - all_layers.push( [newname, current_layer] ); - } - walkTree(current_layer, function(e){e.setAttribute("style","pointer-events:inherit");}); - current_layer.setAttribute("style","pointer-events:all"); -}; - -// Function: createLayer -// Creates a new top-level layer in the drawing with the given name, sets the current layer -// to it, and then clears the selection This function then calls the 'changed' handler. -// This is an undoable action. -// -// Parameters: -// name - The given name -this.createLayer = function(name) { - var batchCmd = new BatchCommand("Create Layer"); - var new_layer = svgdoc.createElementNS(svgns, "g"); - var layer_title = svgdoc.createElementNS(svgns, "title"); - layer_title.textContent = name; - new_layer.appendChild(layer_title); - new_layer = svgcontent.appendChild(new_layer); - batchCmd.addSubCommand(new InsertElementCommand(new_layer)); - addCommandToHistory(batchCmd); - clearSelection(); - identifyLayers(); - canvas.setCurrentLayer(name); - call("changed", [new_layer]); -}; - -// Function: deleteCurrentLayer -// Deletes the current layer from the drawing and then clears the selection. This function -// then calls the 'changed' handler. This is an undoable action. -this.deleteCurrentLayer = function() { - if (current_layer && all_layers.length > 1) { - var batchCmd = new BatchCommand("Delete Layer"); - // actually delete from the DOM and store in our Undo History - var parent = current_layer.parentNode; - batchCmd.addSubCommand(new RemoveElementCommand(current_layer, parent)); - parent.removeChild(current_layer); - addCommandToHistory(batchCmd); - clearSelection(); - identifyLayers(); - canvas.setCurrentLayer(all_layers[all_layers.length-1][0]); - call("changed", [svgcontent]); - return true; - } - return false; -}; - -// Function: getNumLayers -// Returns the number of layers in the current drawing. -// -// Returns: -// The number of layers in the current drawing. -this.getNumLayers = function() { - return all_layers.length; -}; - -// Function: getLayer -// Returns the name of the ith layer. If the index is out of range, an empty string is returned. -// -// Parameters: -// i - the zero-based index of the layer you are querying. -// -// Returns: -// The name of the ith layer -this.getLayer = function(i) { - if (i >= 0 && i < canvas.getNumLayers()) { - return all_layers[i][0]; - } - return ""; -}; - -// Function: getCurrentLayer -// Returns the name of the currently selected layer. If an error occurs, an empty string -// is returned. -// -// Returns: -// The name of the currently active layer. -this.getCurrentLayer = function() { - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][1] == current_layer) { - return all_layers[i][0]; - } - } - return ""; -}; - -// Function: setCurrentLayer -// Sets the current layer. If the name is not a valid layer name, then this function returns -// false. Otherwise it returns true. This is not an undo-able action. -// -// Parameters: -// name - the name of the layer you want to switch to. -// -// Returns: -// true if the current layer was switched, otherwise false -this.setCurrentLayer = function(name) { - name = Utils.toXml(name); - for (var i = 0; i < all_layers.length; ++i) { - if (name == all_layers[i][0]) { - if (current_layer != all_layers[i][1]) { - clearSelection(); - current_layer.setAttribute("style", "pointer-events:none"); - current_layer = all_layers[i][1]; - current_layer.setAttribute("style", "pointer-events:all"); - } - return true; - } - } - return false; -}; - -// Function: renameCurrentLayer -// Renames the current layer. If the layer name is not valid (i.e. unique), then this function -// does nothing and returns false, otherwise it returns true. This is an undo-able action. -// -// Parameters: -// newname - the new name you want to give the current layer. This name must be unique -// among all layer names. -// -// Returns: -// true if the rename succeeded, false otherwise. -this.renameCurrentLayer = function(newname) { - if (current_layer) { - var oldLayer = current_layer; - // setCurrentLayer will return false if the name doesn't already exists - if (!canvas.setCurrentLayer(newname)) { - var batchCmd = new BatchCommand("Rename Layer"); - // find the index of the layer - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][1] == oldLayer) break; - } - var oldname = all_layers[i][0]; - all_layers[i][0] = Utils.toXml(newname); - - // now change the underlying title element contents - var len = oldLayer.childNodes.length; - for (var i = 0; i < len; ++i) { - var child = oldLayer.childNodes.item(i); - // found the <title> element, now append all the - if (child && child.tagName == "title") { - // wipe out old name - while (child.firstChild) { child.removeChild(child.firstChild); } - child.textContent = newname; - - batchCmd.addSubCommand(new ChangeElementCommand(child, {"#text":oldname})); - addCommandToHistory(batchCmd); - call("changed", [oldLayer]); - return true; - } - } - } - current_layer = oldLayer; - } - return false; -}; - -// Function: setCurrentLayerPosition -// Changes the position of the current layer to the new value. If the new index is not valid, -// this function does nothing and returns false, otherwise it returns true. This is an -// undo-able action. -// -// Parameters: -// newpos - The zero-based index of the new position of the layer. This should be between -// 0 and (number of layers - 1) -// -// Returns: -// true if the current layer position was changed, false otherwise. -this.setCurrentLayerPosition = function(newpos) { - if (current_layer && newpos >= 0 && newpos < all_layers.length) { - for (var oldpos = 0; oldpos < all_layers.length; ++oldpos) { - if (all_layers[oldpos][1] == current_layer) break; - } - // some unknown error condition (current_layer not in all_layers) - if (oldpos == all_layers.length) { return false; } - - if (oldpos != newpos) { - // if our new position is below us, we need to insert before the node after newpos - var refLayer = null; - var oldNextSibling = current_layer.nextSibling; - if (newpos > oldpos ) { - if (newpos < all_layers.length-1) { - refLayer = all_layers[newpos+1][1]; - } - } - // if our new position is above us, we need to insert before the node at newpos - else { - refLayer = all_layers[newpos][1]; - } - svgcontent.insertBefore(current_layer, refLayer); - addCommandToHistory(new MoveElementCommand(current_layer, oldNextSibling, svgcontent)); - - identifyLayers(); - canvas.setCurrentLayer(all_layers[newpos][0]); - - return true; - } - } - - return false; -}; - -// Function: getLayerVisibility -// Returns whether the layer is visible. If the layer name is not valid, then this function -// returns false. -// -// Parameters: -// layername - the name of the layer which you want to query. -// -// Returns: -// The visibility state of the layer, or false if the layer name was invalid. -this.getLayerVisibility = function(layername) { - // find the layer - var layer = null; - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][0] == layername) { - layer = all_layers[i][1]; - break; - } - } - if (!layer) return false; - return (layer.getAttribute("display") != "none"); -}; - -// Function: setLayerVisibility -// Sets the visibility of the layer. If the layer name is not valid, this function return -// false, otherwise it returns true. This is an undo-able action. -// -// Parameters: -// layername - the name of the layer to change the visibility -// bVisible - true/false, whether the layer should be visible -// -// Returns: -// true if the layer's visibility was set, false otherwise -this.setLayerVisibility = function(layername, bVisible) { - // find the layer - var layer = null; - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][0] == layername) { - layer = all_layers[i][1]; - break; - } - } - if (!layer) return false; - - var oldDisplay = layer.getAttribute("display"); - if (!oldDisplay) oldDisplay = "inline"; - layer.setAttribute("display", bVisible ? "inline" : "none"); - addCommandToHistory(new ChangeElementCommand(layer, {"display":oldDisplay}, "Layer Visibility")); - - if (layer == current_layer) { - clearSelection(); - pathActions.clear(); - } -// call("changed", [selected]); - - return true; -}; - -// Function: moveSelectedToLayer -// Moves the selected elements to layername. If the name is not a valid layer name, then false -// is returned. Otherwise it returns true. This is an undo-able action. -// -// Parameters: -// layername - the name of the layer you want to which you want to move the selected elements -// -// Returns: -// true if the selected elements were moved to the layer, false otherwise. -this.moveSelectedToLayer = function(layername) { - // find the layer - var layer = null; - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][0] == layername) { - layer = all_layers[i][1]; - break; - } - } - if (!layer) return false; - - var batchCmd = new BatchCommand("Move Elements to Layer"); - - // loop for each selected element and move it - var selElems = selectedElements; - var i = selElems.length; - while (i--) { - var elem = selElems[i]; - if (!elem) continue; - var oldNextSibling = elem.nextSibling; - // TODO: this is pretty brittle! - var oldLayer = elem.parentNode; - layer.appendChild(elem); - batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldLayer)); - } - - addCommandToHistory(batchCmd); - - return true; -}; - -// Function: getLayerOpacity -// Returns the opacity of the given layer. If the input name is not a layer, null is returned. -// -// Parameters: -// layername - name of the layer on which to get the opacity -// -// Returns: -// The opacity value of the given layer. This will be a value between 0.0 and 1.0, or null -// if layername is not a valid layer -this.getLayerOpacity = function(layername) { - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][0] == layername) { - var g = all_layers[i][1]; - var opacity = g.getAttribute("opacity"); - if (!opacity) { - opacity = "1.0"; - } - return parseFloat(opacity); - } - } - - return null; -}; - -// Function: setLayerOpacity -// Sets the opacity of the given layer. If the input name is not a layer, nothing happens. -// This is not an undo-able action. NOTE: this function exists solely to apply -// a highlighting/de-emphasis effect to a layer, when it is possible for a user to affect -// the opacity of a layer, we will need to allow this function to produce an undo-able action. -// If opacity is not a value between 0.0 and 1.0, then nothing happens. -// -// Parameters: -// layername - name of the layer on which to set the opacity -// opacity - a float value in the range 0.0-1.0 -this.setLayerOpacity = function(layername, opacity) { - if (opacity < 0.0 || opacity > 1.0) return; - for (var i = 0; i < all_layers.length; ++i) { - if (all_layers[i][0] == layername) { - var g = all_layers[i][1]; - g.setAttribute("opacity", opacity); - break; - } - } -}; - -// Group: Document functions - -// Function: clear -// Clears the current document. This is not an undoable action. -this.clear = function() { - pathActions.clear(); - - // clear the svgcontent node - var nodes = svgcontent.childNodes; - var len = svgcontent.childNodes.length; - var i = 0; - clearSelection(); - for(var rep = 0; rep < len; rep++){ - if (nodes[i].nodeType == 1) { // element node - svgcontent.removeChild(nodes[i]); - } else { - i++; - } - } - // create empty first layer - all_layers = []; - canvas.createLayer("Layer 1"); - - // clear the undo stack - resetUndoStack(); - // reset the selector manager - selectorManager.initGroup(); - // reset the rubber band box - rubberBox = selectorManager.getRubberBandBox(); - call("cleared"); -}; - -// Function: linkControlPoints -// Alias function -this.linkControlPoints = pathActions.linkControlPoints; - -// Function: getContentElem -// Returns the content DOM element -this.getContentElem = function() { return svgcontent; }; - -// Function: getRootElem -// Returns the root DOM element -this.getRootElem = function() { return svgroot; }; - -// Function: getSelectedElems -// Returns the array with selected DOM elements -this.getSelectedElems = function() { return selectedElements; }; - -// Function: getResolution -// Returns the current dimensions and zoom level in an object -var getResolution = this.getResolution = function() { -// var vb = svgcontent.getAttribute("viewBox").split(' '); -// return {'w':vb[2], 'h':vb[3], 'zoom': current_zoom}; - - return { - 'w':svgcontent.getAttribute("width")/current_zoom, - 'h':svgcontent.getAttribute("height")/current_zoom, - 'zoom': current_zoom - }; -}; - -// Function: getZoom -// Returns the current zoom level -this.getZoom = function(){return current_zoom;}; - -// Function: getVersion -// Returns a string which describes the revision number of SvgCanvas. -this.getVersion = function() { - return "svgcanvas.js ($Rev: 1738 $)"; -}; - -// Function: setUiStrings -// Update interface strings with given values -// -// Parameters: -// strs - Object with strings (see uiStrings for examples) -this.setUiStrings = function(strs) { - $.extend(uiStrings, strs); -} - -// Function: setConfig -// Update configuration options with given values -// -// Parameters: -// opts - Object with options (see curConfig for examples) -this.setConfig = function(opts) { - $.extend(curConfig, opts); -} - -// Function: getDocumentTitle -// Returns the current document title or an empty string if not found -this.getDocumentTitle = function() { - var childs = svgcontent.childNodes; - for (var i=0; i<childs.length; i++) { - if(childs[i].nodeName == 'title') { - return childs[i].textContent; - } - } - return ''; -} - -// Function: setDocumentTitle -// Adds/updates a title element for the document with the given name. -// This is an undoable action -// -// Parameters: -// newtitle - String with the new title -this.setDocumentTitle = function(newtitle) { - var childs = svgcontent.childNodes, doc_title = false, old_title = ''; - - var batchCmd = new BatchCommand("Change Image Title"); - - for (var i=0; i<childs.length; i++) { - if(childs[i].nodeName == 'title') { - doc_title = childs[i]; - old_title = doc_title.textContent; - break; - } - } - if(!doc_title) { - doc_title = svgdoc.createElementNS(svgns, "title"); - svgcontent.insertBefore(doc_title, svgcontent.firstChild); - } - - if(newtitle.length) { - doc_title.textContent = newtitle; - } else { - // No title given, so element is not necessary - doc_title.parentNode.removeChild(doc_title); - } - batchCmd.addSubCommand(new ChangeElementCommand(doc_title, {'#text': old_title})); - addCommandToHistory(batchCmd); -} - -// Function: getEditorNS -// Returns the editor's namespace URL, optionally adds it to root element -// -// Parameters: -// add - Boolean to indicate whether or not to add the namespace value -this.getEditorNS = function(add) { - if(add) { - svgcontent.setAttribute('xmlns:se', se_ns); - } - return se_ns; -} - -// Function: setResolution -// Changes the document's dimensions to the given size -// -// Parameters: -// x - Number with the width of the new dimensions in user units. -// Can also be the string "fit" to indicate "fit to content" -// y - Number with the height of the new dimensions in user units. -// -// Returns: -// Boolean to indicate if resolution change was succesful. -// It will fail on "fit to content" option with no content to fit to. -this.setResolution = function(x, y) { - var res = getResolution(); - var w = res.w, h = res.h; - var batchCmd; - - if(x == 'fit') { - // Get bounding box - var bbox = getStrokedBBox(); - - if(bbox) { - batchCmd = new BatchCommand("Fit Canvas to Content"); - var visEls = getVisibleElements(); - addToSelection(visEls); - var dx = [], dy = []; - $.each(visEls, function(i, item) { - dx.push(bbox.x*-1); - dy.push(bbox.y*-1); - }); - - var cmd = canvas.moveSelectedElements(dx, dy, true); - batchCmd.addSubCommand(cmd); - clearSelection(); - - x = Math.round(bbox.width); - y = Math.round(bbox.height); - } else { - return false; - } - } - if (x != w || y != h) { - var handle = svgroot.suspendRedraw(1000); - if(!batchCmd) { - batchCmd = new BatchCommand("Change Image Dimensions"); - } - x = convertToNum('width', x); - y = convertToNum('height', y); - - svgcontent.setAttribute('width', x); - svgcontent.setAttribute('height', y); - this.contentW = x; - this.contentH = y; - batchCmd.addSubCommand(new ChangeElementCommand(svgcontent, {"width":w, "height":h})); - - svgcontent.setAttribute("viewBox", [0, 0, x/current_zoom, y/current_zoom].join(' ')); - batchCmd.addSubCommand(new ChangeElementCommand(svgcontent, {"viewBox": ["0 0", w, h].join(' ')})); - - addCommandToHistory(batchCmd); - svgroot.unsuspendRedraw(handle); - call("changed", [svgcontent]); - } - return true; -}; - -// Function: getOffset -// Returns an object with x, y values indicating the svgcontent element's -// position in the editor's canvas. -this.getOffset = function() { - return $(svgcontent).attr(['x', 'y']); -} - -// Function: setBBoxZoom -// Sets the zoom level on the canvas-side based on the given value -// -// Parameters: -// val - Bounding box object to zoom to or string indicating zoom option -// editor_w - Integer with the editor's workarea box's width -// editor_h - Integer with the editor's workarea box's height -this.setBBoxZoom = function(val, editor_w, editor_h) { - var spacer = .85; - var bb; - var calcZoom = function(bb) { - if(!bb) return false; - var w_zoom = Math.round((editor_w / bb.width)*100 * spacer)/100; - var h_zoom = Math.round((editor_h / bb.height)*100 * spacer)/100; - var zoomlevel = Math.min(w_zoom,h_zoom); - canvas.setZoom(zoomlevel); - return {'zoom': zoomlevel, 'bbox': bb}; - } - - if(typeof val == 'object') { - bb = val; - if(bb.width == 0 || bb.height == 0) { - var newzoom = bb.zoom?bb.zoom:current_zoom * bb.factor; - canvas.setZoom(newzoom); - return {'zoom': current_zoom, 'bbox': bb}; - } - return calcZoom(bb); - } - - switch (val) { - case 'selection': - if(!selectedElements[0]) return; - var sel_elems = $.map(selectedElements, function(n){ if(n) return n; }); - bb = getStrokedBBox(sel_elems); - break; - case 'canvas': - var res = getResolution(); - spacer = .95; - bb = {width:res.w, height:res.h ,x:0, y:0}; - break; - case 'content': - bb = getStrokedBBox(); - break; - case 'layer': - bb = getStrokedBBox(getVisibleElements(current_layer)); - break; - default: - return; - } - return calcZoom(bb); -} - -// Function: setZoom -// Sets the zoom to the given level -// -// Parameters: -// zoomlevel - Float indicating the zoom level to change to -this.setZoom = function(zoomlevel) { - var res = getResolution(); - svgcontent.setAttribute("viewBox", "0 0 " + res.w/zoomlevel + " " + res.h/zoomlevel); - current_zoom = zoomlevel; - $.each(selectedElements, function(i, elem) { - if(!elem) return; - selectorManager.requestSelector(elem).resize(); - }); - pathActions.zoomChange(); - runExtensions("zoomChanged", zoomlevel); -} - -// Function: getMode -// Returns the current editor mode string -this.getMode = function() { - return current_mode; -}; - -// Function: setMode -// Sets the editor's mode to the given string -// -// Parameters: -// name - String with the new mode to change to -this.setMode = function(name) { - pathActions.clear(true); - textActions.clear(); - - cur_properties = (selectedElements[0] && selectedElements[0].nodeName == 'text') ? cur_text : cur_shape; - current_mode = name; -}; - -// Group: Element Styling - -// Function: getColor -// Returns the current fill/stroke option -this.getColor = function(type) { - return cur_properties[type]; -}; - -// Function: setColor -// Change the current stroke/fill color/gradient value -// -// Parameters: -// type - String indicating fill or stroke -// val - The value to set the stroke attribute to -// preventUndo - Boolean indicating whether or not this should be and undoable option -this.setColor = function(type, val, preventUndo) { - cur_shape[type] = val; - cur_properties[type + '_paint'] = {type:"solidColor"}; - var elems = []; - var i = selectedElements.length; - while (i--) { - var elem = selectedElements[i]; - if (elem) { - if (elem.tagName == "g") - walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);}); - else { - if(type == 'fill') { - if(elem.tagName != "polyline" && elem.tagName != "line") { - elems.push(elem); - } - } else { - elems.push(elem); - } - } - } - } - if (elems.length > 0) { - if (!preventUndo) { - changeSelectedAttribute(type, val, elems); - call("changed", elems); - } else - changeSelectedAttributeNoUndo(type, val, elems); - } -} - - -// Function: findDefs -// Return the document's <defs> element, create it first if necessary -var findDefs = function() { - var defs = svgcontent.getElementsByTagNameNS(svgns, "defs"); - if (defs.length > 0) { - defs = defs[0]; - } - else { - // first child is a comment, so call nextSibling - defs = svgcontent.insertBefore( svgdoc.createElementNS(svgns, "defs" ), svgcontent.firstChild.nextSibling); - } - return defs; -}; - -// Function: setGradient -// Apply the current gradient to selected element's fill or stroke -// -// Parameters -// type - String indicating "fill" or "stroke" to apply to an element -var setGradient = this.setGradient = function(type) { - if(!cur_properties[type + '_paint'] || cur_properties[type + '_paint'].type == "solidColor") return; - var grad = canvas[type + 'Grad']; - // find out if there is a duplicate gradient already in the defs - var duplicate_grad = findDuplicateGradient(grad); - var defs = findDefs(); - // no duplicate found, so import gradient into defs - if (!duplicate_grad) { - var orig_grad = grad; - grad = defs.appendChild( svgdoc.importNode(grad, true) ); - // get next id and set it on the grad - grad.id = getNextId(); - } - else { // use existing gradient - grad = duplicate_grad; - } - canvas.setColor(type, "url(#" + grad.id + ")"); -} - -// Function: findDuplicateGradient -// Check if exact gradient already exists -// -// Parameters: -// grad - The gradient DOM element to compare to others -// -// Returns: -// The existing gradient if found, null if not -var findDuplicateGradient = function(grad) { - var defs = findDefs(); - var existing_grads = $(defs).find("linearGradient, radialGradient"); - var i = existing_grads.length; - var rad_attrs = ['r','cx','cy','fx','fy']; - while (i--) { - var og = existing_grads[i]; - if(grad.tagName == "linearGradient") { - if (grad.getAttribute('x1') != og.getAttribute('x1') || - grad.getAttribute('y1') != og.getAttribute('y1') || - grad.getAttribute('x2') != og.getAttribute('x2') || - grad.getAttribute('y2') != og.getAttribute('y2')) - { - continue; - } - } else { - var grad_attrs = $(grad).attr(rad_attrs); - var og_attrs = $(og).attr(rad_attrs); - - var diff = false; - $.each(rad_attrs, function(i, attr) { - if(grad_attrs[attr] != og_attrs[attr]) diff = true; - }); - - if(diff) continue; - } - - // else could be a duplicate, iterate through stops - var stops = grad.getElementsByTagNameNS(svgns, "stop"); - var ostops = og.getElementsByTagNameNS(svgns, "stop"); - - if (stops.length != ostops.length) { - continue; - } - - var j = stops.length; - while(j--) { - var stop = stops[j]; - var ostop = ostops[j]; - - if (stop.getAttribute('offset') != ostop.getAttribute('offset') || - stop.getAttribute('stop-opacity') != ostop.getAttribute('stop-opacity') || - stop.getAttribute('stop-color') != ostop.getAttribute('stop-color')) - { - break; - } - } - - if (j == -1) { - return og; - } - } // for each gradient in defs - - return null; -}; - -// Function: setPaint -// Set a color/gradient to a fill/stroke -// -// Parameters: -// type - String with "fill" or "stroke" -// paint - The jGraduate paint object to apply -this.setPaint = function(type, paint) { - // make a copy - var p = new $.jGraduate.Paint(paint); - this.setPaintOpacity(type, p.alpha/100, true); - - // now set the current paint object - cur_properties[type + '_paint'] = p; - switch ( p.type ) { - case "solidColor": - this.setColor(type, p.solidColor != "none" ? "#"+p.solidColor : "none");; - break; - case "linearGradient": - case "radialGradient": - canvas[type + 'Grad'] = p[p.type]; - setGradient(type); - break; - default: -// console.log("none!"); - } -}; - - -// this.setStrokePaint = function(p) { -// // make a copy -// var p = new $.jGraduate.Paint(p); -// this.setStrokeOpacity(p.alpha/100); -// -// // now set the current paint object -// cur_properties.stroke_paint = p; -// switch ( p.type ) { -// case "solidColor": -// this.setColor('stroke', p.solidColor != "none" ? "#"+p.solidColor : "none");; -// break; -// case "linearGradient" -// case "radialGradient" -// canvas.strokeGrad = p[p.type]; -// setGradient(type); -// default: -// // console.log("none!"); -// } -// }; -// -// this.setFillPaint = function(p, addGrad) { -// // make a copy -// var p = new $.jGraduate.Paint(p); -// this.setFillOpacity(p.alpha/100, true); -// -// // now set the current paint object -// cur_properties.fill_paint = p; -// if (p.type == "solidColor") { -// this.setColor('fill', p.solidColor != "none" ? "#"+p.solidColor : "none"); -// } -// else if(p.type == "linearGradient") { -// canvas.fillGrad = p.linearGradient; -// if(addGrad) setGradient(); -// } -// else if(p.type == "radialGradient") { -// canvas.fillGrad = p.radialGradient; -// if(addGrad) setGradient(); -// } -// else { -// // console.log("none!"); -// } -// }; - -// Function: getStrokeWidth -// Returns the current stroke-width value -this.getStrokeWidth = function() { - return cur_properties.stroke_width; -}; - -// Function: setStrokeWidth -// Sets the stroke width for the current selected elements -// When attempting to set a line's width to 0, this changes it to 1 instead -// -// Parameters: -// val - A Float indicating the new stroke width value -this.setStrokeWidth = function(val) { - if(val == 0 && $.inArray(current_mode, ['line', 'path']) != -1) { - canvas.setStrokeWidth(1); - return; - } - cur_properties.stroke_width = val; - - var elems = []; - var i = selectedElements.length; - while (i--) { - var elem = selectedElements[i]; - if (elem) { - if (elem.tagName == "g") - walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);}); - else - elems.push(elem); - } - } - if (elems.length > 0) { - changeSelectedAttribute("stroke-width", val, elems); - call("changed", selectedElements); - } -}; - -// Function: setStrokeAttr -// Set the given stroke-related attribute the given value for selected elements -// -// Parameters: -// attr - String with the attribute name -// val - String or number with the attribute value -this.setStrokeAttr = function(attr, val) { - cur_shape[attr.replace('-','_')] = val; - var elems = []; - var i = selectedElements.length; - while (i--) { - var elem = selectedElements[i]; - if (elem) { - if (elem.tagName == "g") - walkTree(elem, function(e){if(e.nodeName!="g") elems.push(e);}); - else - elems.push(elem); - } - } - if (elems.length > 0) { - changeSelectedAttribute(attr, val, elems); - call("changed", selectedElements); - } -}; - -// Function: getOpacity -// Returns the current opacity -this.getOpacity = function() { - return cur_shape.opacity; -}; - -// Function: setOpacity -// Sets the given opacity to the current selected elements -this.setOpacity = function(val) { - cur_shape.opacity = val; - changeSelectedAttribute("opacity", val); -}; - -// Function: getOpacity -// Returns the current fill opacity -this.getFillOpacity = function() { - return cur_shape.fill_opacity; -}; - -// Function: getStrokeOpacity -// Returns the current stroke opacity -this.getStrokeOpacity = function() { - return cur_shape.stroke_opacity; -}; - -// Function: setPaintOpacity -// Sets the current fill/stroke opacity -// -// Parameters: -// type - String with "fill" or "stroke" -// val - Float with the new opacity value -// preventUndo - Boolean indicating whether or not this should be an undoable action -this.setPaintOpacity = function(type, val, preventUndo) { - cur_shape[type + '_opacity'] = val; - if (!preventUndo) - changeSelectedAttribute(type + "-opacity", val); - else - changeSelectedAttributeNoUndo(type + "-opacity", val); -}; - -// Function: getBlur -// Gets the stdDeviation blur value of the given element -// -// Parameters: -// elem - The element to check the blur value for -this.getBlur = function(elem) { - var val = 0; -// var elem = selectedElements[0]; - - if(elem) { - var filter_url = elem.getAttribute('filter'); - if(filter_url) { - var blur = getElem(elem.id + '_blur'); - if(blur) { - val = blur.firstChild.getAttribute('stdDeviation'); - } - } - } - return val; -}; - -(function() { - var cur_command = null; - var filter = null; - var filterHidden = false; - - // Function: setBlurNoUndo - // Sets the stdDeviation blur value on the selected element without being undoable - // - // Parameters: - // val - The new stdDeviation value - canvas.setBlurNoUndo = function(val) { - if(!filter) { - canvas.setBlur(val); - return; - } - if(val === 0) { - // Don't change the StdDev, as that will hide the element. - // Instead, just remove the value for "filter" - changeSelectedAttributeNoUndo("filter", ""); - filterHidden = true; - } else { - if(filterHidden) { - changeSelectedAttributeNoUndo("filter", 'url(#' + selectedElements[0].id + '_blur)'); - } - changeSelectedAttributeNoUndo("stdDeviation", val, [filter.firstChild]); - canvas.setBlurOffsets(filter, val); - } - } - - function finishChange() { - var bCmd = canvas.finishUndoableChange(); - cur_command.addSubCommand(bCmd); - addCommandToHistory(cur_command); - cur_command = null; - filter = null; - } - - // Function: setBlurOffsets - // Sets the x, y, with, height values of the filter element in order to - // make the blur not be clipped. Removes them if not neeeded - // - // Parameters: - // filter - The filter DOM element to update - // stdDev - The standard deviation value on which to base the offset size - canvas.setBlurOffsets = function(filter, stdDev) { - if(stdDev > 3) { - // TODO: Create algorithm here where size is based on expected blur - assignAttributes(filter, { - x: '-50%', - y: '-50%', - width: '200%', - height: '200%', - }, 100); - } else { - filter.removeAttribute('x'); - filter.removeAttribute('y'); - filter.removeAttribute('width'); - filter.removeAttribute('height'); - } - } - - // Function: setBlur - // Adds/updates the blur filter to the selected element - // - // Parameters: - // val - Float with the new stdDeviation blur value - // complete - Boolean indicating whether or not the action should be completed (to add to the undo manager) - canvas.setBlur = function(val, complete) { - if(cur_command) { - finishChange(); - return; - } - - // Looks for associated blur, creates one if not found - var elem = selectedElements[0]; - var elem_id = elem.id; - filter = getElem(elem_id + '_blur'); - - val -= 0; - - var batchCmd = new BatchCommand(); - - // Blur found! - if(filter) { - if(val === 0) { - filter = null; - } - } else { - // Not found, so create - var newblur = addSvgElementFromJson({ "element": "feGaussianBlur", - "attr": { - "in": 'SourceGraphic', - "stdDeviation": val - } - }); - - filter = addSvgElementFromJson({ "element": "filter", - "attr": { - "id": elem_id + '_blur' - } - }); - - filter.appendChild(newblur); - findDefs().appendChild(filter); - - batchCmd.addSubCommand(new InsertElementCommand(filter)); - } - - var changes = {filter: elem.getAttribute('filter')}; - - if(val === 0) { - elem.removeAttribute("filter"); - batchCmd.addSubCommand(new ChangeElementCommand(elem, changes)); - return; - } else { - changeSelectedAttribute("filter", 'url(#' + elem_id + '_blur)'); - - batchCmd.addSubCommand(new ChangeElementCommand(elem, changes)); - - canvas.setBlurOffsets(filter, val); - } - - cur_command = batchCmd; - canvas.beginUndoableChange("stdDeviation", [filter?filter.firstChild:null]); - if(complete) { - canvas.setBlurNoUndo(val); - finishChange(); - } - }; -}()); - -// Function: getBold -// Check whether selected element is bold or not -// -// Returns: -// Boolean indicating whether or not element is bold -this.getBold = function() { - // should only have one element selected - var selected = selectedElements[0]; - if (selected != null && selected.tagName == "text" && - selectedElements[1] == null) - { - return (selected.getAttribute("font-weight") == "bold"); - } - return false; -}; - -// Function: setBold -// Make the selected element bold or normal -// -// Parameters: -// b - Boolean indicating bold (true) or normal (false) -this.setBold = function(b) { - var selected = selectedElements[0]; - if (selected != null && selected.tagName == "text" && - selectedElements[1] == null) - { - changeSelectedAttribute("font-weight", b ? "bold" : "normal"); - } -}; - -// Function: getItalic -// Check whether selected element is italic or not -// -// Returns: -// Boolean indicating whether or not element is italic -this.getItalic = function() { - var selected = selectedElements[0]; - if (selected != null && selected.tagName == "text" && - selectedElements[1] == null) - { - return (selected.getAttribute("font-style") == "italic"); - } - return false; -}; - -// Function: setItalic -// Make the selected element italic or normal -// -// Parameters: -// b - Boolean indicating italic (true) or normal (false) -this.setItalic = function(i) { - var selected = selectedElements[0]; - if (selected != null && selected.tagName == "text" && - selectedElements[1] == null) - { - changeSelectedAttribute("font-style", i ? "italic" : "normal"); - } -}; - -// Function: getFontFamily -// Returns the current font family -this.getFontFamily = function() { - return cur_text.font_family; -}; - -// Function: setFontFamily -// Set the new font family -// -// Parameters: -// val - String with the new font family -this.setFontFamily = function(val) { - cur_text.font_family = val; - changeSelectedAttribute("font-family", val); -}; - -// Function: getFontSize -// Returns the current font size -this.getFontSize = function() { - return cur_text.font_size; -}; - -// Function: setFontSize -// Applies the given font size to the selected element -// -// Parameters: -// val - Float with the new font size -this.setFontSize = function(val) { - cur_text.font_size = val; - textActions.toSelectMode(); - changeSelectedAttribute("font-size", val); -}; - -// Function: getText -// Returns the current text (textContent) of the selected element -this.getText = function() { - var selected = selectedElements[0]; - if (selected == null) { return ""; } - return selected.textContent; -}; - -// Function: setTextContent -// Updates the text element with the given string -// -// Parameters: -// val - String with the new text -this.setTextContent = function(val) { - changeSelectedAttribute("#text", val); - textActions.init(val); - textActions.setCursor(); -}; - -// Function: setImageURL -// Sets the new image URL for the selected image element. Updates its size if -// a new URL is given -// -// Parameters: -// val - String with the image URL/path -this.setImageURL = function(val) { - var elem = selectedElements[0]; - if(!elem) return; - - var attrs = $(elem).attr(['width', 'height']); - var setsize = (!attrs.width || !attrs.height); - - var cur_href = elem.getAttributeNS(xlinkns, "href"); - - // Do nothing if no URL change or size change - if(cur_href !== val) { - setsize = true; - } else if(!setsize) return; - - var batchCmd = new BatchCommand("Change Image URL"); - - elem.setAttributeNS(xlinkns, "xlink:href", val); - batchCmd.addSubCommand(new ChangeElementCommand(elem, { - "#href": cur_href - })); - - if(setsize) { - $(new Image()).load(function() { - var changes = $(elem).attr(['width', 'height']); - - $(elem).attr({ - width: this.width, - height: this.height - }); - - selectorManager.requestSelector(elem).resize(); - - batchCmd.addSubCommand(new ChangeElementCommand(elem, changes)); - addCommandToHistory(batchCmd); - call("changed", elem); - }).attr('src',val); - } else { - addCommandToHistory(batchCmd); - } -}; - -// Function: setRectRadius -// Sets the rx & ry values to the selected rect element to change its corner radius -// -// Parameters: -// val - The new radius -this.setRectRadius = function(val) { - var selected = selectedElements[0]; - if (selected != null && selected.tagName == "rect") { - var r = selected.getAttribute("rx"); - if (r != val) { - selected.setAttribute("rx", val); - selected.setAttribute("ry", val); - addCommandToHistory(new ChangeElementCommand(selected, {"rx":r, "ry":r}, "Radius")); - call("changed", [selected]); - } - } -}; - -// Group: Element manipulation - -// Function: setSegType -// Sets the new segment type to the selected segment(s). -// -// Parameters: -// new_type - Integer with the new segment type -// See http://www.w3.org/TR/SVG/paths.html#InterfaceSVGPathSeg for list -this.setSegType = function(new_type) { - pathActions.setSegType(new_type); -} - -// Function: convertToPath -// Convert selected element to a path, or get the BBox of an element-as-path -// -// Parameters: -// elem - The DOM element to be converted -// getBBox - Boolean on whether or not to only return the path's BBox -// -// Returns: -// If the getBBox flag is true, the resulting path's bounding box object. -// Otherwise the resulting path element is returned. -this.convertToPath = function(elem, getBBox) { - if(elem == null) { - var elems = selectedElements; - $.each(selectedElements, function(i, elem) { - if(elem) canvas.convertToPath(elem); - }); - return; - } - - if(!getBBox) { - var batchCmd = new BatchCommand("Convert element to Path"); - } - - var attrs = getBBox?{}:{ - "fill": cur_shape.fill, - "fill-opacity": cur_shape.fill_opacity, - "stroke": cur_shape.stroke, - "stroke-width": cur_shape.stroke_width, - "stroke-dasharray": cur_shape.stroke_dasharray, - "stroke-linejoin": cur_shape.stroke_linejoin, - "stroke-linecap": cur_shape.stroke_linecap, - "stroke-opacity": cur_shape.stroke_opacity, - "opacity": cur_shape.opacity, - "visibility":"hidden" - }; - - // any attribute on the element not covered by the above - // TODO: make this list global so that we can properly maintain it - // TODO: what about @transform, @clip-rule, @fill-rule, etc? - $.each(['marker-start', 'marker-end', 'marker-mid', 'filter', 'clip-path'], function() { - if (elem.getAttribute(this)) { - attrs[this] = elem.getAttribute(this); - } - }); - - var path = addSvgElementFromJson({ - "element": "path", - "attr": attrs - }); - - var eltrans = elem.getAttribute("transform"); - if(eltrans) { - path.setAttribute("transform",eltrans); - } - - var id = elem.id; - var parent = elem.parentNode; - if(elem.nextSibling) { - parent.insertBefore(path, elem); - } else { - parent.appendChild(path); - } - - var d = ''; - - var joinSegs = function(segs) { - $.each(segs, function(j, seg) { - var l = seg[0], pts = seg[1]; - d += l; - for(var i=0; i < pts.length; i+=2) { - d += (pts[i] +','+pts[i+1]) + ' '; - } - }); - } - - // Possibly the cubed root of 6, but 1.81 works best - var num = 1.81; - - switch (elem.tagName) { - case 'ellipse': - case 'circle': - var a = $(elem).attr(['rx', 'ry', 'cx', 'cy']); - var cx = a.cx, cy = a.cy, rx = a.rx, ry = a.ry; - if(elem.tagName == 'circle') { - rx = ry = $(elem).attr('r'); - } - - joinSegs([ - ['M',[(cx-rx),(cy)]], - ['C',[(cx-rx),(cy-ry/num), (cx-rx/num),(cy-ry), (cx),(cy-ry)]], - ['C',[(cx+rx/num),(cy-ry), (cx+rx),(cy-ry/num), (cx+rx),(cy)]], - ['C',[(cx+rx),(cy+ry/num), (cx+rx/num),(cy+ry), (cx),(cy+ry)]], - ['C',[(cx-rx/num),(cy+ry), (cx-rx),(cy+ry/num), (cx-rx),(cy)]], - ['Z',[]] - ]); - break; - case 'path': - d = elem.getAttribute('d'); - break; - case 'line': - var a = $(elem).attr(["x1", "y1", "x2", "y2"]); - d = "M"+a.x1+","+a.y1+"L"+a.x2+","+a.y2; - break; - case 'polyline': - case 'polygon': - d = "M" + elem.getAttribute('points'); - break; - case 'rect': - var r = $(elem).attr(['rx', 'ry']); - var rx = r.rx, ry = r.ry; - var b = elem.getBBox(); - var x = b.x, y = b.y, w = b.width, h = b.height; - var num = 4-num; // Why? Because! - - if(!rx && !ry) { - // Regular rect - joinSegs([ - ['M',[x, y]], - ['L',[x+w, y]], - ['L',[x+w, y+h]], - ['L',[x, y+h]], - ['L',[x, y]], - ['Z',[]] - ]); - } else { - joinSegs([ - ['M',[x, y+ry]], - ['C',[x,y+ry/num, x+rx/num,y, x+rx,y]], - ['L',[x+w-rx, y]], - ['C',[x+w-rx/num,y, x+w,y+ry/num, x+w,y+ry]], - ['L',[x+w, y+h-ry]], - ['C',[x+w, y+h-ry/num, x+w-rx/num,y+h, x+w-rx,y+h]], - ['L',[x+rx, y+h]], - ['C',[x+rx/num, y+h, x,y+h-ry/num, x,y+h-ry]], - ['L',[x, y+ry]], - ['Z',[]] - ]); - } - break; - default: - path.parentNode.removeChild(path); - break; - } - - if(d) { - path.setAttribute('d',d); - } - - if(!getBBox) { - // Replace the current element with the converted one - - // Reorient if it has a matrix - if(eltrans) { - var tlist = getTransformList(path); - if(hasMatrixTransform(tlist)) { - pathActions.resetOrientation(path); - } - } - - batchCmd.addSubCommand(new RemoveElementCommand(elem, parent)); - batchCmd.addSubCommand(new InsertElementCommand(path)); - - clearSelection(); - elem.parentNode.removeChild(elem) - path.setAttribute('id', id); - path.removeAttribute("visibility"); - addToSelection([path], true); - - addCommandToHistory(batchCmd); - - } else { - // Get the correct BBox of the new path, then discard it - pathActions.resetOrientation(path); - var bb = false; - try { - bb = path.getBBox(); - } catch(e) { - // Firefox fails - } - path.parentNode.removeChild(path); - return bb; - } -} - - -// Function: changeSelectedAttributeNoUndo -// This function makes the changes to the elements. It does not add the change -// to the history stack. -// -// Parameters: -// attr - String with the attribute name -// newValue - String or number with the new attribute value -// elems - The DOM elements to apply the change to -var changeSelectedAttributeNoUndo = function(attr, newValue, elems) { - var handle = svgroot.suspendRedraw(1000); - if(current_mode == 'pathedit') { - // Editing node - pathActions.moveNode(attr, newValue); - } - var elems = elems || selectedElements; - var i = elems.length; - while (i--) { - var elem = elems[i]; - if (elem == null) continue; - - // Go into "select" mode for text changes - if(current_mode === "textedit" && attr !== "#text") { - textActions.toSelectMode(elem); - } - - // Set x,y vals on elements that don't have them - if((attr == 'x' || attr == 'y') && $.inArray(elem.tagName, ['g', 'polyline', 'path']) != -1) { - var bbox = getStrokedBBox([elem]); - var diff_x = attr == 'x' ? newValue - bbox.x : 0; - var diff_y = attr == 'y' ? newValue - bbox.y : 0; - canvas.moveSelectedElements(diff_x*current_zoom, diff_y*current_zoom, true); - continue; - } - - // only allow the transform/opacity attribute to change on <g> elements, slightly hacky - if (elem.tagName == "g" && $.inArray(attr, ['transform', 'opacity', 'filter']) !== -1); - var oldval = attr == "#text" ? elem.textContent : elem.getAttribute(attr); - if (oldval == null) oldval = ""; - if (oldval != String(newValue)) { - if (attr == "#text") { - var old_w = getBBox(elem).width; - elem.textContent = newValue; - elem = ffClone(elem); - - // Hoped to solve the issue of moving text with text-anchor="start", - // but this doesn't actually fix it. Hopefully on the right track, though. -Fyrd - -// var box=getBBox(elem), left=box.x, top=box.y, width=box.width, -// height=box.height, dx = width - old_w, dy=0; -// var angle = getRotationAngle(elem, true); -// if (angle) { -// var r = Math.sqrt( dx*dx + dy*dy ); -// var theta = Math.atan2(dy,dx) - angle; -// dx = r * Math.cos(theta); -// dy = r * Math.sin(theta); -// -// elem.setAttribute('x', elem.getAttribute('x')-dx); -// elem.setAttribute('y', elem.getAttribute('y')-dy); -// } - - } else if (attr == "#href") { - elem.setAttributeNS(xlinkns, "xlink:href", newValue); - } - else elem.setAttribute(attr, newValue); - if (i==0) - selectedBBoxes[i] = getBBox(elem); - // Use the Firefox ffClone hack for text elements with gradients or - // where other text attributes are changed. - if(elem.nodeName == 'text') { - if((newValue+'').indexOf('url') == 0 || $.inArray(attr, ['font-size','font-family','x','y']) != -1) { - elem = ffClone(elem); - } - } - // Timeout needed for Opera & Firefox - // codedread: it is now possible for this function to be called with elements - // that are not in the selectedElements array, we need to only request a - // selector if the element is in that array - if ($.inArray(elem, selectedElements) != -1) { - setTimeout(function() { - // Due to element replacement, this element may no longer - // be part of the DOM - if(!elem.parentNode) return; - selectorManager.requestSelector(elem).resize(); - },0); - } - // if this element was rotated, and we changed the position of this element - // we need to update the rotational transform attribute - var angle = getRotationAngle(elem); - if (angle != 0 && attr != "transform") { - var tlist = getTransformList(elem); - var n = tlist.numberOfItems; - while (n--) { - var xform = tlist.getItem(n); - if (xform.type == 4) { - // remove old rotate - tlist.removeItem(n); - - var box = getBBox(elem); - var center = transformPoint(box.x+box.width/2, box.y+box.height/2, transformListToTransform(tlist).matrix); - var cx = center.x, - cy = center.y; - var newrot = svgroot.createSVGTransform(); - newrot.setRotate(angle, cx, cy); - tlist.insertItemBefore(newrot, n); - break; - } - } - } - } // if oldValue != newValue - } // for each elem - svgroot.unsuspendRedraw(handle); -}; - -// Function: changeSelectedAttribute -// Change the given/selected element and add the original value to the history stack -// If you want to change all selectedElements, ignore the elems argument. -// If you want to change only a subset of selectedElements, then send the -// subset to this function in the elems argument. -// -// Parameters: -// attr - String with the attribute name -// newValue - String or number with the new attribute value -// elems - The DOM elements to apply the change to -var changeSelectedAttribute = this.changeSelectedAttribute = function(attr, val, elems) { - var elems = elems || selectedElements; - canvas.beginUndoableChange(attr, elems); - var i = elems.length; - - changeSelectedAttributeNoUndo(attr, val, elems); - - var batchCmd = canvas.finishUndoableChange(); - if (!batchCmd.isEmpty()) { - addCommandToHistory(batchCmd); - } -}; - -// Function: deleteSelectedElements -// Removes all selected elements from the DOM and adds the change to the -// history stack -this.deleteSelectedElements = function() { - var batchCmd = new BatchCommand("Delete Elements"); - var len = selectedElements.length; - var selectedCopy = []; //selectedElements is being deleted - for (var i = 0; i < len; ++i) { - var selected = selectedElements[i]; - if (selected == null) break; - - var parent = selected.parentNode; - var t = selected; - // this will unselect the element and remove the selectedOutline - selectorManager.releaseSelector(t); - var elem = parent.removeChild(t); - selectedCopy.push(selected) //for the copy - selectedElements[i] = null; - batchCmd.addSubCommand(new RemoveElementCommand(elem, parent)); - } - if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd); - call("changed", selectedCopy); - clearSelection(); -}; - -// Function: groupSelectedElements -// Wraps all the selected elements in a group (g) element -this.groupSelectedElements = function() { - var batchCmd = new BatchCommand("Group Elements"); - - // create and insert the group element - var g = addSvgElementFromJson({ - "element": "g", - "attr": { - "id": getNextId() - } - }); - batchCmd.addSubCommand(new InsertElementCommand(g)); - - // now move all children into the group - var i = selectedElements.length; - while (i--) { - var elem = selectedElements[i]; - if (elem == null) continue; - var oldNextSibling = elem.nextSibling; - var oldParent = elem.parentNode; - g.appendChild(elem); - batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldParent)); - } - if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd); - - // update selection - clearSelection(); - addToSelection([g], true); -}; - -// Function: ungroupSelectedElement -// Unwraps all the elements in a selected group (g) element. This requires -// significant recalculations to apply group's transforms, etc to its children -this.ungroupSelectedElement = function() { - var g = selectedElements[0]; - if (g.tagName == "g") { - var batchCmd = new BatchCommand("Ungroup Elements"); - var parent = g.parentNode; - var anchor = g.previousSibling; - var children = new Array(g.childNodes.length); - var xform = g.getAttribute("transform"); - // get consolidated matrix - var glist = getTransformList(g); - var m = transformListToTransform(glist).matrix; - - // TODO: get all fill/stroke properties from the group that we are about to destroy - // "fill", "fill-opacity", "fill-rule", "stroke", "stroke-dasharray", "stroke-dashoffset", - // "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", - // "stroke-width" - // and then for each child, if they do not have the attribute (or the value is 'inherit') - // then set the child's attribute - - var i = 0; - var gangle = getRotationAngle(g); - - var gattrs = $(g).attr(['filter', 'opacity']); - var gfilter, gblur; - - while (g.firstChild) { - var elem = g.firstChild; - var oldNextSibling = elem.nextSibling; - var oldParent = elem.parentNode; - children[i++] = elem = parent.insertBefore(elem, anchor); - batchCmd.addSubCommand(new MoveElementCommand(elem, oldNextSibling, oldParent)); - - if(gattrs.opacity !== null && gattrs.opacity !== 1) { - var c_opac = elem.getAttribute('opacity') || 1; - var new_opac = Math.round((elem.getAttribute('opacity') || 1) * gattrs.opacity * 100)/100; - changeSelectedAttribute('opacity', new_opac, [elem]); - } - - if(gattrs.filter) { - var cblur = this.getBlur(elem); - var orig_cblur = cblur; - if(!gblur) gblur = this.getBlur(g); - if(cblur) { - // Is this formula correct? - cblur = (gblur-0) + (cblur-0); - } else if(cblur === 0) { - cblur = gblur; - } - - // If child has no current filter, get group's filter or clone it. - if(!orig_cblur) { - // Set group's filter to use first child's ID - if(!gfilter) { - gfilter = getElem(getUrlFromAttr(gattrs.filter).substr(1)); - } else { - // Clone the group's filter - gfilter = copyElem(gfilter); - findDefs().appendChild(gfilter); - } - } else { - gfilter = getElem(getUrlFromAttr(elem.getAttribute('filter')).substr(1)); - } - - // Change this in future for different filters - var suffix = (gfilter.firstChild.tagName === 'feGaussianBlur')?'blur':'filter'; - gfilter.id = elem.id + '_' + suffix; - changeSelectedAttribute('filter', 'url(#' + gfilter.id + ')', [elem]); - - // Update blur value - if(cblur) { - changeSelectedAttribute('stdDeviation', cblur, [gfilter.firstChild]); - canvas.setBlurOffsets(gfilter, cblur); - } - } - - var chtlist = getTransformList(elem); - - if (glist.numberOfItems) { - // TODO: if the group's transform is just a rotate, we can always transfer the - // rotate() down to the children (collapsing consecutive rotates and factoring - // out any translates) - if (gangle && glist.numberOfItems == 1) { - // [Rg] [Rc] [Mc] - // we want [Tr] [Rc2] [Mc] where: - // - [Rc2] is at the child's current center but has the - // sum of the group and child's rotation angles - // - [Tr] is the equivalent translation that this child - // undergoes if the group wasn't there - - // [Tr] = [Rg] [Rc] [Rc2_inv] - - // get group's rotation matrix (Rg) - var rgm = glist.getItem(0).matrix; - - // get child's rotation matrix (Rc) - var rcm = svgroot.createSVGMatrix(); - var cangle = getRotationAngle(elem); - if (cangle) { - rcm = chtlist.getItem(0).matrix; - } - - // get child's old center of rotation - var cbox = getBBox(elem); - var ceqm = transformListToTransform(chtlist).matrix; - var coldc = transformPoint(cbox.x+cbox.width/2, cbox.y+cbox.height/2,ceqm); - - // sum group and child's angles - var sangle = gangle + cangle; - - // get child's rotation at the old center (Rc2_inv) - var r2 = svgroot.createSVGTransform(); - r2.setRotate(sangle, coldc.x, coldc.y); - - // calculate equivalent translate - var trm = matrixMultiply(rgm, rcm, r2.matrix.inverse()); - - // set up tlist - if (cangle) { - chtlist.removeItem(0); - } - - if (sangle) { - chtlist.insertItemBefore(r2, 0); - } - - if (trm.e || trm.f) { - var tr = svgroot.createSVGTransform(); - tr.setTranslate(trm.e, trm.f); - chtlist.insertItemBefore(tr, 0); - } - } - else { // more complicated than just a rotate - // transfer the group's transform down to each child and then - // call recalculateDimensions() - var oldxform = elem.getAttribute("transform"); - var changes = {}; - changes["transform"] = oldxform ? oldxform : ""; - - var newxform = svgroot.createSVGTransform(); - - // [ gm ] [ chm ] = [ chm ] [ gm' ] - // [ gm' ] = [ chm_inv ] [ gm ] [ chm ] - var chm = transformListToTransform(chtlist).matrix, - chm_inv = chm.inverse(); - var gm = matrixMultiply( chm_inv, m, chm ); - newxform.setMatrix(gm); - chtlist.appendItem(newxform); - } - batchCmd.addSubCommand(recalculateDimensions(elem)); - } - } - - - // remove transform and make it undo-able - if (xform) { - var changes = {}; - changes["transform"] = xform; - g.setAttribute("transform", ""); - g.removeAttribute("transform"); - batchCmd.addSubCommand(new ChangeElementCommand(g, changes)); - } - - // remove the group from the selection - clearSelection(); - - // delete the group element (but make undo-able) - g = parent.removeChild(g); - batchCmd.addSubCommand(new RemoveElementCommand(g, parent)); - - if (!batchCmd.isEmpty()) addCommandToHistory(batchCmd); - - // update selection - addToSelection(children); - } -}; - -// Function: moveToTopSelectedElement -// Repositions the selected element to the bottom in the DOM to appear on top of -// other elements -this.moveToTopSelectedElement = function() { - var selected = selectedElements[0]; - if (selected != null) { - var t = selected; - var oldParent = t.parentNode; - var oldNextSibling = t.nextSibling; - t = t.parentNode.appendChild(t); - addCommandToHistory(new MoveElementCommand(t, oldNextSibling, oldParent, "top")); - } -}; - -// Function: moveToBottomSelectedElement -// Repositions the selected element to the top in the DOM to appear under -// other elements -this.moveToBottomSelectedElement = function() { - var selected = selectedElements[0]; - if (selected != null) { - var t = selected; - var oldParent = t.parentNode; - var oldNextSibling = t.nextSibling; - var firstChild = t.parentNode.firstChild; - if (firstChild.tagName == 'title') { - firstChild = firstChild.nextSibling; - } - // This can probably be removed, as the defs should not ever apppear - // inside a layer group - if (firstChild.tagName == 'defs') { - firstChild = firstChild.nextSibling; - } - t = t.parentNode.insertBefore(t, firstChild); - addCommandToHistory(new MoveElementCommand(t, oldNextSibling, oldParent, "bottom")); - } -}; - -// Function: moveSelectedElements -// Moves selected elements on the X/Y axis -// -// Parameters: -// dx - Float with the distance to move on the x-axis -// dy - Float with the distance to move on the y-axis -// undoable - Boolean indicating whether or not the action should be undoable -// -// Returns: -// Batch command for the move -this.moveSelectedElements = function(dx,dy,undoable) { - // if undoable is not sent, default to true - // if single values, scale them to the zoom - if (dx.constructor != Array) { - dx /= current_zoom; - dy /= current_zoom; - } - var undoable = undoable || true; - var batchCmd = new BatchCommand("position"); - var i = selectedElements.length; - while (i--) { - var selected = selectedElements[i]; - if (selected != null) { - if (i==0) - selectedBBoxes[i] = getBBox(selected); - - var xform = svgroot.createSVGTransform(); - var tlist = getTransformList(selected); - - // dx and dy could be arrays - if (dx.constructor == Array) { - if (i==0) { - selectedBBoxes[i].x += dx[i]; - selectedBBoxes[i].y += dy[i]; - } - xform.setTranslate(dx[i],dy[i]); - } else { - if (i==0) { - selectedBBoxes[i].x += dx; - selectedBBoxes[i].y += dy; - } - xform.setTranslate(dx,dy); - } - - tlist.insertItemBefore(xform, 0); - - var cmd = recalculateDimensions(selected); - if (cmd) { - batchCmd.addSubCommand(cmd); - } - selectorManager.requestSelector(selected).resize(); - } - } - if (!batchCmd.isEmpty()) { - if (undoable) - addCommandToHistory(batchCmd); - call("changed", selectedElements); - return batchCmd; - } -}; - -// Function: cloneSelectedElements -// Create deep DOM copies (clones) of all selected elements and move them slightly -// from their originals -this.cloneSelectedElements = function() { - var batchCmd = new BatchCommand("Clone Elements"); - // find all the elements selected (stop at first null) - var len = selectedElements.length; - for (var i = 0; i < len; ++i) { - var elem = selectedElements[i]; - if (elem == null) break; - } - // use slice to quickly get the subset of elements we need - var copiedElements = selectedElements.slice(0,i); - this.clearSelection(); - // note that we loop in the reverse way because of the way elements are added - // to the selectedElements array (top-first) - var i = copiedElements.length; - while (i--) { - // clone each element and replace it within copiedElements - var elem = copiedElements[i] = copyElem(copiedElements[i]); - current_layer.appendChild(elem); - batchCmd.addSubCommand(new InsertElementCommand(elem)); - } - - if (!batchCmd.isEmpty()) { - addToSelection(copiedElements.reverse()); // Need to reverse for correct selection-adding - this.moveSelectedElements(20,20,false); - addCommandToHistory(batchCmd); - call("selected", selectedElements); - } -}; - -// Function: alignSelectedElements -// Aligns selected elements -// -// Parameters: -// type - String with single character indicating the alignment type -// relative_to - String that must be one of the following: -// "selected", "largest", "smallest", "page" -this.alignSelectedElements = function(type, relative_to) { - var bboxes = [], angles = []; - var minx = Number.MAX_VALUE, maxx = Number.MIN_VALUE, miny = Number.MAX_VALUE, maxy = Number.MIN_VALUE; - var curwidth = Number.MIN_VALUE, curheight = Number.MIN_VALUE; - var len = selectedElements.length; - if (!len) return; - for (var i = 0; i < len; ++i) { - if (selectedElements[i] == null) break; - var elem = selectedElements[i]; - bboxes[i] = getStrokedBBox([elem]); - - // now bbox is axis-aligned and handles rotation - switch (relative_to) { - case 'smallest': - if ( (type == 'l' || type == 'c' || type == 'r') && (curwidth == Number.MIN_VALUE || curwidth > bboxes[i].width) || - (type == 't' || type == 'm' || type == 'b') && (curheight == Number.MIN_VALUE || curheight > bboxes[i].height) ) { - minx = bboxes[i].x; - miny = bboxes[i].y; - maxx = bboxes[i].x + bboxes[i].width; - maxy = bboxes[i].y + bboxes[i].height; - curwidth = bboxes[i].width; - curheight = bboxes[i].height; - } - break; - case 'largest': - if ( (type == 'l' || type == 'c' || type == 'r') && (curwidth == Number.MIN_VALUE || curwidth < bboxes[i].width) || - (type == 't' || type == 'm' || type == 'b') && (curheight == Number.MIN_VALUE || curheight < bboxes[i].height) ) { - minx = bboxes[i].x; - miny = bboxes[i].y; - maxx = bboxes[i].x + bboxes[i].width; - maxy = bboxes[i].y + bboxes[i].height; - curwidth = bboxes[i].width; - curheight = bboxes[i].height; - } - break; - default: // 'selected' - if (bboxes[i].x < minx) minx = bboxes[i].x; - if (bboxes[i].y < miny) miny = bboxes[i].y; - if (bboxes[i].x + bboxes[i].width > maxx) maxx = bboxes[i].x + bboxes[i].width; - if (bboxes[i].y + bboxes[i].height > maxy) maxy = bboxes[i].y + bboxes[i].height; - break; - } - } // loop for each element to find the bbox and adjust min/max - - if (relative_to == 'page') { - minx = 0; - miny = 0; - maxx = canvas.contentW; - maxy = canvas.contentH; - } - - var dx = new Array(len); - var dy = new Array(len); - for (var i = 0; i < len; ++i) { - if (selectedElements[i] == null) break; - var elem = selectedElements[i]; - var bbox = bboxes[i]; - dx[i] = 0; - dy[i] = 0; - switch (type) { - case 'l': // left (horizontal) - dx[i] = minx - bbox.x; - break; - case 'c': // center (horizontal) - dx[i] = (minx+maxx)/2 - (bbox.x + bbox.width/2); - break; - case 'r': // right (horizontal) - dx[i] = maxx - (bbox.x + bbox.width); - break; - case 't': // top (vertical) - dy[i] = miny - bbox.y; - break; - case 'm': // middle (vertical) - dy[i] = (miny+maxy)/2 - (bbox.y + bbox.height/2); - break; - case 'b': // bottom (vertical) - dy[i] = maxy - (bbox.y + bbox.height); - break; - } - } - this.moveSelectedElements(dx,dy); -}; - -// Group: Additional editor tools - -this.contentW = getResolution().w; -this.contentH = getResolution().h; - -// Function: updateCanvas -// Updates the editor canvas width/height/position after a zoom has occurred -// -// Parameters: -// w - Float with the new width -// h - Float with the new height -// -// Returns: -// Object with the following values: -// * x - The canvas' new x coordinate -// * y - The canvas' new y coordinate -// * old_x - The canvas' old x coordinate -// * old_y - The canvas' old y coordinate -// * d_x - The x position difference -// * d_y - The y position difference -this.updateCanvas = function(w, h) { - svgroot.setAttribute("width", w); - svgroot.setAttribute("height", h); - var bg = $('#canvasBackground')[0]; - var old_x = svgcontent.getAttribute('x'); - var old_y = svgcontent.getAttribute('y'); - var x = (w/2 - this.contentW*current_zoom/2); - var y = (h/2 - this.contentH*current_zoom/2); - - assignAttributes(svgcontent, { - width: this.contentW*current_zoom, - height: this.contentH*current_zoom, - 'x': x, - 'y': y, - "viewBox" : "0 0 " + this.contentW + " " + this.contentH - }); - - assignAttributes(bg, { - width: svgcontent.getAttribute('width'), - height: svgcontent.getAttribute('height'), - x: x, - y: y - }); - - selectorManager.selectorParentGroup.setAttribute("transform","translate(" + x + "," + y + ")"); - - return {x:x, y:y, old_x:old_x, old_y:old_y, d_x:x - old_x, d_y:y - old_y}; -} - -// Function: setBackground -// Set the background of the editor (NOT the actual document) -// -// Parameters: -// color - String with fill color to apply -// url - URL or path to image to use -this.setBackground = function(color, url) { - var bg = getElem('canvasBackground'); - var border = $(bg).find('rect')[0]; - var bg_img = getElem('background_image'); - border.setAttribute('fill',color); - if(url) { - if(!bg_img) { - bg_img = svgdoc.createElementNS(svgns, "image"); - assignAttributes(bg_img, { - 'id': 'background_image', - 'width': '100%', - 'height': '100%', - 'preserveAspectRatio': 'xMinYMin', - 'style':'pointer-events:none' - }); - } - bg_img.setAttributeNS(xlinkns, "xlink:href", url); - bg.appendChild(bg_img); - } else if(bg_img) { - bg_img.parentNode.removeChild(bg_img); - } -} - -// Function: cycleElement -// Select the next/previous element within the current layer -// -// Parameters: -// next - Boolean where true = next and false = previous element -this.cycleElement = function(next) { - var cur_elem = selectedElements[0]; - var elem = false; - var all_elems = getVisibleElements(current_layer); - if (cur_elem == null) { - var num = next?all_elems.length-1:0; - elem = all_elems[num]; - } else { - var i = all_elems.length; - while(i--) { - if(all_elems[i] == cur_elem) { - var num = next?i-1:i+1; - if(num >= all_elems.length) { - num = 0; - } else if(num < 0) { - num = all_elems.length-1; - } - elem = all_elems[num]; - break; - } - } - } - clearSelection(); - addToSelection([elem], true); - call("selected", selectedElements); -} - -this.clear(); - - -// DEPRECATED: getPrivateMethods -// Since all methods are/should be public somehow, this function should be removed - -// Being able to access private methods publicly seems wrong somehow, -// but currently appears to be the best way to allow testing and provide -// access to them to plugins. -this.getPrivateMethods = function() { - var obj = { - addCommandToHistory: addCommandToHistory, - setGradient: setGradient, - addSvgElementFromJson: addSvgElementFromJson, - assignAttributes: assignAttributes, - BatchCommand: BatchCommand, - call: call, - ChangeElementCommand: ChangeElementCommand, - cleanupElement: cleanupElement, - copyElem: copyElem, - ffClone: ffClone, - findDefs: findDefs, - findDuplicateGradient: findDuplicateGradient, - getElem: getElem, - getId: getId, - getIntersectionList: getIntersectionList, - getMouseTarget: getMouseTarget, - getNextId: getNextId, - getPathBBox: getPathBBox, - getUrlFromAttr: getUrlFromAttr, - hasMatrixTransform: hasMatrixTransform, - identifyLayers: identifyLayers, - InsertElementCommand: InsertElementCommand, - isIdentity: isIdentity, - logMatrix: logMatrix, - matrixMultiply: matrixMultiply, - MoveElementCommand: MoveElementCommand, - preventClickDefault: preventClickDefault, - recalculateAllSelectedDimensions: recalculateAllSelectedDimensions, - recalculateDimensions: recalculateDimensions, - remapElement: remapElement, - RemoveElementCommand: RemoveElementCommand, - removeUnusedDefElems: removeUnusedDefElems, - round: round, - runExtensions: runExtensions, - sanitizeSvg: sanitizeSvg, - SelectorManager: SelectorManager, - shortFloat: shortFloat, - svgCanvasToString: svgCanvasToString, - SVGEditTransformList: SVGEditTransformList, - svgToString: svgToString, - toString: toString, - transformBox: transformBox, - transformListToTransform: transformListToTransform, - transformPoint: transformPoint, - walkTree: walkTree - } - return obj; -}; - -// console.log('canvas.getPrivateMethods',canvas.getPrivateMethods); - -// Test support for features/bugs -(function() { - // segList functions (for FF1.5 and 2.0) - var path = document.createElementNS(svgns,'path'); - path.setAttribute('d','M0,0 10,10'); - var seglist = path.pathSegList; - var seg = path.createSVGPathSegLinetoAbs(5,5); - try { - seglist.replaceItem(seg, 0); - support.pathReplaceItem = true; - } catch(err) { - support.pathReplaceItem = false; - } - - try { - seglist.insertItemBefore(seg, 0); - support.pathInsertItemBefore = true; - } catch(err) { - support.pathInsertItemBefore = false; - } - - // TODO: Find better way to check support for this - support.editableText = isOpera; - - // Correct decimals on clone attributes (Opera < 10.5/win/non-en) - var rect = document.createElementNS(svgns,'rect'); - rect.setAttribute('x',.1); - var crect = rect.cloneNode(false); - support.goodDecimals = (crect.getAttribute('x').indexOf(',') == -1); - if(!support.goodDecimals) { - $.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\ - Please upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed."); - } - - // Get correct em/ex values - var rect = document.createElementNS(svgns,'rect'); - rect.setAttribute('width',"1em"); - rect.setAttribute('height',"1ex"); - svgcontent.appendChild(rect); - var bb = rect.getBBox(); - unit_types.em = bb.width; - unit_types.ex = bb.height; - svgcontent.removeChild(rect); -}()); - -} diff --git a/files_svgedit/js/svgcanvas.min.js b/files_svgedit/js/svgcanvas.min.js deleted file mode 100644 index 0258a44e5..000000000 --- a/files_svgedit/js/svgcanvas.min.js +++ /dev/null @@ -1 +0,0 @@ -;if(!window.console){window.console={};window.console.log=function(a){};window.console.dir=function(a){}}if(window.opera){window.console.log=function(a){opera.postError(a)};window.console.dir=function(a){}}(function(){var a=jQuery.fn.attr,b="http://www.w3.org/2000/svg";jQuery.fn.attr=function(o,l){var g=this.length;if(!g){return this}for(var f=0;f<g;f++){var c=this[f];if(c.namespaceURI===b){if(l!==undefined){c.setAttribute(o,l)}else{if($.isArray(o)){var d=o.length,e={};while(d--){var k=o[d];var h=c.getAttribute(k);if(h||h==="0"){h=isNaN(h)?h:h-0}e[k]=h}return e}else{if(typeof o==="object"){for(var m in o){c.setAttribute(m,o[m])}}else{var h=c.getAttribute(o);if(h||h==="0"){h=isNaN(h)?h:h-0}return h}}}}else{return a.apply(this,arguments)}}return this}}());$.SvgCanvas=function(aL,ay){var k=!!window.opera,aC=navigator.userAgent.indexOf("AppleWebKit")!=-1,a0={},aF={a:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","mask","opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","xlink:href","xlink:title"],circle:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","r","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],clipPath:["class","clipPathUnits","id"],defs:[],desc:[],ellipse:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],feGaussianBlur:["class","color-interpolation-filters","id","requiredFeatures","stdDeviation"],filter:["class","color-interpolation-filters","filterRes","filterUnits","height","id","primitiveUnits","requiredFeatures","width","x","xlink:href","y"],foreignObject:["class","font-size","height","id","opacity","requiredFeatures","style","transform","width","x","y"],g:["class","clip-path","clip-rule","id","display","fill","fill-opacity","fill-rule","filter","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],image:["class","clip-path","clip-rule","filter","height","id","mask","opacity","requiredFeatures","style","systemLanguage","transform","width","x","xlink:href","xlink:title","y"],line:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","x1","x2","y1","y2"],linearGradient:["class","id","gradientTransform","gradientUnits","requiredFeatures","spreadMethod","systemLanguage","x1","x2","xlink:href","y1","y2"],marker:["id","class","markerHeight","markerUnits","markerWidth","orient","preserveAspectRatio","refX","refY","systemLanguage","viewBox"],mask:["class","height","id","maskContentUnits","maskUnits","width","x","y"],metadata:["class","id"],path:["class","clip-path","clip-rule","d","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],pattern:["class","height","id","patternContentUnits","patternTransform","patternUnits","requiredFeatures","style","systemLanguage","width","x","xlink:href","y"],polygon:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","id","class","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],polyline:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],radialGradient:["class","cx","cy","fx","fy","gradientTransform","gradientUnits","id","r","requiredFeatures","spreadMethod","systemLanguage","xlink:href"],rect:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","width","x","y"],stop:["class","id","offset","requiredFeatures","stop-color","stop-opacity","style","systemLanguage"],svg:["class","clip-path","clip-rule","filter","id","height","mask","preserveAspectRatio","requiredFeatures","style","systemLanguage","viewBox","width","x","xmlns","xmlns:se","xmlns:xlink","y"],"switch":["class","id","requiredFeatures","systemLanguage"],symbol:["class","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","opacity","preserveAspectRatio","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","viewBox"],text:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","transform","x","xml:space","y"],textPath:["class","id","method","requiredFeatures","spacing","startOffset","style","systemLanguage","transform","xlink:href"],title:[],tspan:["class","clip-path","clip-rule","dx","dy","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","rotate","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","textLength","transform","x","xml:space","y"],use:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","transform","width","x","xlink:href","y"],annotation:["encoding"],"annotation-xml":["encoding"],maction:["actiontype","other","selection"],math:["class","id","display","xmlns"],menclose:["notation"],merror:[],mfrac:["linethickness"],mi:["mathvariant"],mmultiscripts:[],mn:[],mo:["fence","lspace","maxsize","minsize","rspace","stretchy"],mover:[],mpadded:["lspace","width"],mphantom:[],mprescripts:[],mroot:[],mrow:["xlink:href","xlink:type","xmlns:xlink"],mspace:["depth","height","width"],msqrt:[],mstyle:["displaystyle","mathbackground","mathcolor","mathvariant","scriptlevel"],msub:[],msubsup:[],msup:[],mtable:["align","columnalign","columnlines","columnspacing","displaystyle","equalcolumns","equalrows","frame","rowalign","rowlines","rowspacing","width"],mtd:["columnalign","columnspan","rowalign","rowspan"],mtext:[],mtr:["columnalign","rowalign"],munder:[],munderover:[],none:[],semantics:[]},aB={pathNodeTooltip:"Drag node to move it. Double-click node to change segment type",pathCtrlPtTooltip:"Drag control point to adjust curve properties",exportNoBlur:"Blurred elements will appear as un-blurred",exportNoImage:"Image elements will not appear",exportNoforeignObject:"foreignObject elements will not appear",exportNoDashArray:"Strokes will appear filled",exportNoText:"Text may not appear as expected"},J={show_outside_canvas:true,dimensions:[640,480]};if(ay){$.extend(J,ay)}var aw=this.Utils=function(){var bg="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{toXml:function(bh){return $("<p/>").text(bh).html()},fromXml:function(bh){return $("<p/>").html(bh).text()},encode64:function(bk){bk=aw.convertToXMLReferences(bk);if(window.btoa){return window.btoa(bk)}var bi=new Array(Math.floor((bk.length+2)/3)*4);var br,bp,bn;var bq,bo,bm,bl;var bj=0,bh=0;do{br=bk.charCodeAt(bj++);bp=bk.charCodeAt(bj++);bn=bk.charCodeAt(bj++);bq=br>>2;bo=((br&3)<<4)|(bp>>4);bm=((bp&15)<<2)|(bn>>6);bl=bn&63;if(isNaN(bp)){bm=bl=64}else{if(isNaN(bn)){bl=64}}bi[bh++]=bg.charAt(bq);bi[bh++]=bg.charAt(bo);bi[bh++]=bg.charAt(bm);bi[bh++]=bg.charAt(bl)}while(bj<bk.length);return bi.join("")},decode64:function(bj){if(window.atob){return window.atob(bj)}var bh="";var bq,bo,bm="";var bp,bn,bl,bk="";var bi=0;bj=bj.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{bp=bg.indexOf(bj.charAt(bi++));bn=bg.indexOf(bj.charAt(bi++));bl=bg.indexOf(bj.charAt(bi++));bk=bg.indexOf(bj.charAt(bi++));bq=(bp<<2)|(bn>>4);bo=((bn&15)<<4)|(bl>>2);bm=((bl&3)<<6)|bk;bh=bh+String.fromCharCode(bq);if(bl!=64){bh=bh+String.fromCharCode(bo)}if(bk!=64){bh=bh+String.fromCharCode(bm)}bq=bo=bm="";bp=bn=bl=bk=""}while(bi<bj.length);return unescape(bh)},convertToXMLReferences:function(bi){var bh="";for(var bk=0;bk<bi.length;bk++){var bj=bi.charCodeAt(bk);if(bj<128){bh+=bi[bk]}else{if(bj>127){bh+=("&#"+bj+";")}}}return bh},rectsIntersect:function(bi,bh){return bh.x<(bi.x+bi.width)&&(bh.x+bh.width)>bi.x&&bh.y<(bi.y+bi.height)&&(bh.y+bh.height)>bi.y},snapToAngle:function(bi,bq,bh,bo){var bk=Math.PI/4;var bs=bh-bi;var br=bo-bq;var bj=Math.atan2(br,bs);var bm=Math.sqrt(bs*bs+br*br);var bl=Math.round(bj/bk)*bk;var bp=bi+bm*Math.cos(bl);var bn=bq+bm*Math.sin(bl);return{x:bp,y:bn,a:bl}},text2xml:function(bi){var bh;try{var bk=($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();bk.async=false}catch(bj){throw new Error("XML Parser could not be instantiated")}try{if($.browser.msie){bh=(bk.loadXML(bi))?bk:false}else{bh=bk.parseFromString(bi,"text/xml")}}catch(bj){throw new Error("Error parsing XML string")}return bh}}}();var bc=this,aK="http://www.w3.org/2000/svg",aE="http://www.w3.org/1999/xlink",W="http://www.w3.org/XML/1998/namespace",bf="http://www.w3.org/2000/xmlns/",al="http://svg-edit.googlecode.com",O="http://www.w3.org/1999/xhtml",f="http://www.w3.org/1998/Math/MathML",I={em:0,ex:0,px:1,cm:35.43307,mm:3.543307,"in":90,pt:1.25,pc:15,"%":0},m=Math.floor(Math.random()*100001),q=false,aM=aL.ownerDocument,w=J.dimensions,G=aM.importNode(aw.text2xml('<svg id="svgroot" xmlns="'+aK+'" xlinkns="'+aE+'" width="'+w[0]+'" height="'+w[1]+'" x="'+w[0]+'" y="'+w[1]+'" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>').documentElement,true);aL.appendChild(G);var ai=aM.createElementNS(aK,"svg");$(ai).attr({id:"svgcontent",width:w[0],height:w[1],x:w[0],y:w[1],overflow:J.show_outside_canvas?"visible":"hidden",xmlns:aK,"xmlns:se":al,"xmlns:xlink":aE}).appendTo(G);if(q){ai.setAttributeNS(al,"se:nonce",m)}var am={};am[aE]="xlink";am[W]="xml";am[bf]="xmlns";am[al]="se";am[O]="xhtml";am[f]="mathml";var ba={};$.each(am,function(bg,bh){ba[bh]=bg});var h={};$.each(aF,function(bg,bi){var bh={};$.each(bi,function(bl,bk){if(bk.indexOf(":")!=-1){var bj=bk.split(":");bh[bj[1]]=ba[bj[0]]}else{bh[bk]=bk=="xmlns"?bf:null}});h[bg]=bh});var N=document.createElementNS(aK,"animate");$(N).attr({attributeName:"opacity",begin:"indefinite",dur:1,fill:"freeze"}).appendTo(G);var a2,an,ab;(function(){var bg=["x","x1","cx","rx","width"];var bh=["y","y1","cy","ry","height"];var bi=$.merge(["r","radius"],bg);$.merge(bi,bh);a2=function(bj,bn){if(!isNaN(bn)){return bn-0}if(bn.substr(-1)==="%"){var bk=bn.substr(0,bn.length-1)/100;var bl=d();if($.inArray(bj,bg)!==-1){return bk*bl.w}else{if($.inArray(bj,bh)!==-1){return bk*bl.h}else{return bk*Math.sqrt((bl.w*bl.w)+(bl.h*bl.h))/Math.sqrt(2)}}}else{var bm=bn.substr(-2);var bk=bn.substr(0,bn.length-2);return bk*I[bm]}};ab=function(bn,bj,bo){if(!isNaN(bo)){var bl=bn.getAttribute(bj);if(bl!==null&&isNaN(bl)){var bm;if(bl.substr(-1)==="%"){var bk=d();bm="%";bo*=100;if($.inArray(bj,bg)!==-1){bo=bo/bk.w}else{if($.inArray(bj,bh)!==-1){bo=bo/bk.h}else{return bo/Math.sqrt((bk.w*bk.w)+(bk.h*bk.h))/Math.sqrt(2)}}}else{bm=bl.substr(-2);bo=bo/I[bm]}bo+=bm}}bn.setAttribute(bj,bo)};bc.isValidUnit=function(bk,bo){var bm=false;if($.inArray(bk,bi)!=-1){if(!isNaN(bo)){bm=true}else{bo=bo.toLowerCase();$.each(I,function(bq){if(bm){return}var bp=new RegExp("^-?[\\d\\.]+"+bq+"$");if(bp.test(bo)){bm=true}})}}else{if(bk=="id"){var bj=false;try{var bl=b(bo);bj=(bl==null)}catch(bn){}return bj}else{bm=true}}return bm}})();this.undoCmd={};var av=this.undoCmd.changeElement=function(bi,bh,bj){this.elem=bi;this.text=bj?("Change "+bi.tagName+" "+bj):("Change "+bi.tagName);this.newValues={};this.oldValues=bh;for(var bg in bh){if(bg=="#text"){this.newValues[bg]=bi.textContent}else{if(bg=="#href"){this.newValues[bg]=bi.getAttributeNS(aE,"href")}else{this.newValues[bg]=bi.getAttribute(bg)}}}this.apply=function(){var bn=false;for(var bl in this.newValues){if(this.newValues[bl]){if(bl=="#text"){this.elem.textContent=this.newValues[bl]}else{if(bl=="#href"){this.elem.setAttributeNS(aE,"xlink:href",this.newValues[bl])}else{this.elem.setAttribute(bl,this.newValues[bl])}}}else{if(bl=="#text"){this.elem.textContent=""}else{this.elem.setAttribute(bl,"");this.elem.removeAttribute(bl)}}if(bl=="transform"){bn=true}else{if(bl=="stdDeviation"){bc.setBlurOffsets(this.elem.parentNode,this.newValues[bl])}}}if(!bn){var bp=aq(bi);if(bp){var bo=bi.getBBox();var bk=bo.x+bo.width/2,bq=bo.y+bo.height/2;var bm=["rotate(",bp," ",bk,",",bq,")"].join("");if(bm!=bi.getAttribute("transform")){bi.setAttribute("transform",bm)}}}if(this.elem.tagName=="title"&&this.elem.parentNode.parentNode==ai){Y()}return true};this.unapply=function(){var bn=false;for(var bl in this.oldValues){if(this.oldValues[bl]){if(bl=="#text"){this.elem.textContent=this.oldValues[bl]}else{if(bl=="#href"){this.elem.setAttributeNS(aE,"xlink:href",this.oldValues[bl])}else{this.elem.setAttribute(bl,this.oldValues[bl])}}if(bl=="stdDeviation"){bc.setBlurOffsets(this.elem.parentNode,this.oldValues[bl])}}else{if(bl=="#text"){this.elem.textContent=""}else{this.elem.removeAttribute(bl)}}if(bl=="transform"){bn=true}}if(!bn){var bp=aq(bi);if(bp){var bo=bi.getBBox();var bk=bo.x+bo.width/2,bq=bo.y+bo.height/2;var bm=["rotate(",bp," ",bk,",",bq,")"].join("");if(bm!=bi.getAttribute("transform")){bi.setAttribute("transform",bm)}}}if(this.elem.tagName=="title"&&this.elem.parentNode.parentNode==ai){Y()}if(T[this.elem.id]){delete T[this.elem.id]}return true};this.elements=function(){return[this.elem]}};var a=this.undoCmd.insertElement=function(bg,bh){this.elem=bg;this.text=bh||("Create "+bg.tagName);this.parent=bg.parentNode;this.apply=function(){this.elem=this.parent.insertBefore(this.elem,this.elem.nextSibling);if(this.parent==ai){Y()}};this.unapply=function(){this.parent=this.elem.parentNode;this.elem=this.elem.parentNode.removeChild(this.elem);if(this.parent==ai){Y()}};this.elements=function(){return[this.elem]}};var R=this.undoCmd.removeElement=function(bh,bg,bi){this.elem=bh;this.text=bi||("Delete "+bh.tagName);this.parent=bg;this.apply=function(){if(T[this.elem.id]){delete T[this.elem.id]}this.parent=this.elem.parentNode;this.elem=this.parent.removeChild(this.elem);if(this.parent==ai){Y()}};this.unapply=function(){if(T[this.elem.id]){delete T[this.elem.id]}this.elem=this.parent.insertBefore(this.elem,this.elem.nextSibling);if(this.parent==ai){Y()}};this.elements=function(){return[this.elem]};if(T[bh.id]){delete T[bh.id]}};var S=this.undoCmd.moveElement=function(bh,bi,bg,bj){this.elem=bh;this.text=bj?("Move "+bh.tagName+" to "+bj):("Move "+bh.tagName);this.oldNextSibling=bi;this.oldParent=bg;this.newNextSibling=bh.nextSibling;this.newParent=bh.parentNode;this.apply=function(){this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling);if(this.newParent==ai){Y()}};this.unapply=function(){this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling);if(this.oldParent==ai){Y()}};this.elements=function(){return[this.elem]}};var aA=this.undoCmd.batch=function(bg){this.text=bg||"Batch Command";this.stack=[];this.apply=function(){var bh=this.stack.length;for(var bi=0;bi<bh;++bi){this.stack[bi].apply()}};this.unapply=function(){for(var bh=this.stack.length-1;bh>=0;bh--){this.stack[bh].unapply()}};this.elements=function(){var bh=[];var bk=this.stack.length;while(bk--){var bj=this.stack[bk].elements();var bi=bj.length;while(bi--){if(bh.indexOf(bj[bi])==-1){bh.push(bj[bi])}}}return bh};this.addSubCommand=function(bh){this.stack.push(bh)};this.isEmpty=function(){return this.stack.length==0}};var aJ,aT;(function(bi){var bg=0,bh=[];aJ=function(){bh=[];bg=0};bi.undoMgr={getUndoStackSize:function(){return bg},getRedoStackSize:function(){return bh.length-bg},getNextUndoCommandText:function(){if(bg>0){return bh[bg-1].text}return""},getNextRedoCommandText:function(){if(bg<bh.length){return bh[bg].text}return""},undo:function(){if(bg>0){bi.clearSelection();var bj=bh[--bg];bj.unapply();z.clear();call("changed",bj.elements())}},redo:function(){if(bg<bh.length&&bh.length>0){bi.clearSelection();var bj=bh[bg++];bj.apply();z.clear();call("changed",bj.elements())}}};aT=bi.undoCmd.add=function(bj){if(bg<bh.length&&bh.length>0){bh=bh.splice(0,bg)}bh.push(bj);bg=bh.length}}(bc));(function(bi){var bh=-1;var bg=[];bi.beginUndoableChange=function(bm,bk){var bp=++bh;var bl=bk.length;var bj=new Array(bl),bo=new Array(bl);while(bl--){var bn=bk[bl];if(bn==null){continue}bo[bl]=bn;bj[bl]=bn.getAttribute(bm)}bg[bp]={attrName:bm,oldValues:bj,elements:bo}};bi.finishUndoableChange=function(){var bo=bh--;var bp=bg[bo];var bl=bp.elements.length;var bk=bp.attrName;var bj=new aA("Change "+bk);while(bl--){var bn=bp.elements[bl];if(bn==null){continue}var bm={};bm[bk]=bp.oldValues[bl];if(bm[bk]!=bn.getAttribute(bk)){bj.addSubCommand(new av(bn,bm,bk))}}bg[bo]=null;return bj}}(bc));var bd;(function(){function bg(bj,bi){this.id=bj;this.selectedElement=bi;this.locked=true;this.reset=function(bk){this.locked=true;this.selectedElement=bk;this.resize();this.selectorGroup.setAttribute("display","inline")};this.selectorGroup=c({element:"g",attr:{id:("selectorGroup"+this.id)}});this.selectorRect=this.selectorGroup.appendChild(c({element:"path",attr:{id:("selectedBox"+this.id),fill:"none",stroke:"#22C","stroke-width":"1","stroke-dasharray":"5,5",style:"pointer-events:none"}}));this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};this.rotateGripConnector=this.selectorGroup.appendChild(c({element:"line",attr:{id:("selectorGrip_rotateconnector_"+this.id),stroke:"#22C","stroke-width":"1"}}));this.rotateGrip=this.selectorGroup.appendChild(c({element:"circle",attr:{id:("selectorGrip_rotate_"+this.id),fill:"lime",r:4,stroke:"#22C","stroke-width":2,style:"cursor:url("+J.imgPath+"rotate.png) 12 12, auto;"}}));for(var bh in this.selectorGrips){this.selectorGrips[bh]=this.selectorGroup.appendChild(c({element:"circle",attr:{id:("selectorGrip_resize_"+bh+"_"+this.id),fill:"#22C",r:4,style:("cursor:"+bh+"-resize"),"stroke-width":2,"pointer-events":"all",display:"none"}}))}this.showGrips=function(bk){var bm=bk?"inline":"none";this.rotateGrip.setAttribute("display",bm);this.rotateGripConnector.setAttribute("display",bm);var bn=this.selectedElement;for(var bl in this.selectorGrips){this.selectorGrips[bl].setAttribute("display",bm)}if(bn){this.updateGripCursors(aq(bn))}};this.updateGripCursors=function(bo){var bn=[];var bk=Math.round(bo/45);if(bk<0){bk+=8}for(var bl in this.selectorGrips){bn.push(bl)}while(bk>0){bn.push(bn.shift());bk--}var bm=0;for(var bl in this.selectorGrips){this.selectorGrips[bl].setAttribute("style",("cursor:"+bn[bm]+"-resize"));bm++}};this.resize=function(){var bk=this.selectorRect,br=this.selectorGrips,bH=this.selectedElement,bF=bH.getAttribute("stroke-width");var bx=1/ac;if(bH.getAttribute("stroke")!="none"&&!isNaN(bF)){bx+=(bF/2)}if(bH.tagName=="text"){bx+=2/ac}var bl=au(bH);if(bH.tagName=="g"){var bw=ag(bH.childNodes);$.each(bl,function(bP,bQ){bl[bP]=bw[bP]})}var bI=B(bH);bI.e*=ac;bI.f*=ac;var bJ=bl.x-bx,bC=bl.y-bx,bB=bl.width+(bx*2),bL=bl.height+(bx*2),bl={x:bJ,y:bC,width:bB,height:bL};var bN=be(bJ*ac,bC*ac,bB*ac,bL*ac,bI),bn=bN.aabox.x,bm=bN.aabox.y,bo=bN.aabox.width,bA=bN.aabox.height;var bq=bn+bo/2,bp=bm+bA/2;var bM=aq(bH);if(bM){var bz=G.createSVGTransform();bz.setRotate(-bM,bq,bp);var bD=bz.matrix;bN.tl=P(bN.tl.x,bN.tl.y,bD);bN.tr=P(bN.tr.x,bN.tr.y,bD);bN.bl=P(bN.bl.x,bN.bl.y,bD);bN.br=P(bN.br.x,bN.br.y,bD);var bv=bN.tl.x,bu=bN.tl.y,bt=bN.tl.x,bs=bN.tl.y;bv=Math.min(bv,Math.min(bN.tr.x,Math.min(bN.bl.x,bN.br.x)));bu=Math.min(bu,Math.min(bN.tr.y,Math.min(bN.bl.y,bN.br.y)));bt=Math.max(bt,Math.max(bN.tr.x,Math.max(bN.bl.x,bN.br.x)));bs=Math.max(bs,Math.max(bN.tr.y,Math.max(bN.bl.y,bN.br.y)));bn=bv;bm=bu;bo=(bt-bv);bA=(bs-bu)}var bO=G.suspendRedraw(100);var bE="M"+bn+","+bm+" L"+(bn+bo)+","+bm+" "+(bn+bo)+","+(bm+bA)+" "+bn+","+(bm+bA)+"z";az(bk,{d:bE});var by={nw:[bn,bm],ne:[bn+bo,bm],sw:[bn,bm+bA],se:[bn+bo,bm+bA],n:[bn+(bo)/2,bm],w:[bn,bm+(bA)/2],e:[bn+bo,bm+(bA)/2],s:[bn+(bo)/2,bm+bA]};if(bH==aR[0]){for(var bG in by){var bK=by[bG];az(br[bG],{cx:bK[0],cy:bK[1]})}}if(bM){this.selectorGroup.setAttribute("transform","rotate("+[bM,bq,bp].join(",")+")")}else{this.selectorGroup.setAttribute("transform","")}az(this.rotateGripConnector,{x1:bn+(bo)/2,y1:bm,x2:bn+(bo)/2,y2:bm-20});az(this.rotateGrip,{cx:bn+(bo)/2,cy:bm-20});G.unsuspendRedraw(bO)};this.reset(bi)}bd=function(){this.selectorParentGroup=null;this.rubberBandBox=null;this.selectors=[];this.selectorMap={};var bh=this;this.initGroup=function(){if(bh.selectorParentGroup&&bh.selectorParentGroup.parentNode){bh.selectorParentGroup.parentNode.removeChild(bh.selectorParentGroup)}bh.selectorParentGroup=aM.createElementNS(aK,"g");bh.selectorParentGroup.setAttribute("id","selectorParentGroup");G.appendChild(bh.selectorParentGroup);bh.selectorMap={};bh.selectors=[];bh.rubberBandBox=null;if($("#canvasBackground").length){return}var bi=aM.createElementNS(aK,"svg");var bk=J.dimensions;az(bi,{id:"canvasBackground",width:bk[0],height:bk[1],x:0,y:0,overflow:"visible",style:"pointer-events:none"});var bj=aM.createElementNS(aK,"rect");az(bj,{width:"100%",height:"100%",x:0,y:0,"stroke-width":1,stroke:"#000",fill:"#FFF",style:"pointer-events:none"});bi.appendChild(bj);G.insertBefore(bi,ai)};this.requestSelector=function(bj){if(bj==null){return null}var bk=this.selectors.length;if(typeof(this.selectorMap[bj.id])=="object"){this.selectorMap[bj.id].locked=true;return this.selectorMap[bj.id]}for(var bi=0;bi<bk;++bi){if(this.selectors[bi]&&!this.selectors[bi].locked){this.selectors[bi].locked=true;this.selectors[bi].reset(bj);this.selectorMap[bj.id]=this.selectors[bi];return this.selectors[bi]}}this.selectors[bk]=new bg(bk,bj);this.selectorParentGroup.appendChild(this.selectors[bk].selectorGroup);this.selectorMap[bj.id]=this.selectors[bk];return this.selectors[bk]};this.releaseSelector=function(bj){if(bj==null){return}var bm=this.selectors.length,bk=this.selectorMap[bj.id];for(var bi=0;bi<bm;++bi){if(this.selectors[bi]&&this.selectors[bi]==bk){if(bk.locked==false){console.log("WARNING! selector was released but was already unlocked")}delete this.selectorMap[bj.id];bk.locked=false;bk.selectedElement=null;bk.showGrips(false);try{bk.selectorGroup.setAttribute("display","none")}catch(bl){}break}}};this.getRubberBandBox=function(){if(this.rubberBandBox==null){this.rubberBandBox=this.selectorParentGroup.appendChild(c({element:"rect",attr:{id:"selectorRubberBand",fill:"#22C","fill-opacity":0.15,stroke:"#22C","stroke-width":0.5,display:"none",style:"pointer-events:none"}}))}return this.rubberBandBox};this.initGroup()}}());var T={};var H=function(bh){function bg(bk){var bj=bk.matrix,bm="";switch(bk.type){case 1:bm="matrix("+[bj.a,bj.b,bj.c,bj.d,bj.e,bj.f].join(",")+")";break;case 2:bm="translate("+bj.e+","+bj.f+")";break;case 3:if(bj.a==bj.d){bm="scale("+bj.a+")"}else{bm="scale("+bj.a+","+bj.d+")"}break;case 4:var bi=0,bn=0;if(bk.angle!=0){var bl=1-bj.a;bn=(bl*bj.f+bj.b*bj.e)/(bl*bl+bj.b*bj.b);bi=(bj.e-bj.b*bn)/bl}bm="rotate("+bk.angle+" "+bi+","+bn+")";break}return bm}this._elem=bh||null;this._xforms=[];this._update=function(){var bk="";var bj=G.createSVGMatrix();for(var bl=0;bl<this.numberOfItems;++bl){var bi=this._list.getItem(bl);bk+=bg(bi)+" "}this._elem.setAttribute("transform",bk)};this._list=this;this._init=function(){var br=this._elem.getAttribute("transform");if(!br){return}var bv=/\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/;var bo=[];var bn=true;while(bn){bn=br.match(bv);br=br.replace(bv,"");if(bn&&bn[1]){var bs=bn[1];var bu=bs.split(/\s*\(/);var bi=bu[0];var bm=bu[1].match(/\s*(.*?)\s*\)/);var bk=bm[1].split(/[, ]+/);var bp="abcdef".split("");var bj=G.createSVGMatrix();$.each(bk,function(bw,bx){bk[bw]=parseFloat(bx);if(bi=="matrix"){bj[bp[bw]]=bk[bw]}});var bq=G.createSVGTransform();var bl="set"+bi.charAt(0).toUpperCase()+bi.slice(1);var bt=bi=="matrix"?[bj]:bk;if(bi=="scale"&&bt.length==1){bt.push(bt[0])}else{if(bi=="translate"&&bt.length==1){bt.push(0)}}bq[bl].apply(bq,bt);this._list.appendItem(bq)}}};this.numberOfItems=0;this.clear=function(){this.numberOfItems=0;this._xforms=[]};this.initialize=function(bi){this.numberOfItems=1;this._xforms=[bi]};this.getItem=function(bi){if(bi<this.numberOfItems&&bi>=0){return this._xforms[bi]}return null};this.insertItemBefore=function(bl,bj){var bn=null;if(bj>=0){if(bj<this.numberOfItems){var bm=new Array(this.numberOfItems+1);for(var bk=0;bk<bj;++bk){bm[bk]=this._xforms[bk]}bm[bk]=bl;for(var bi=bk+1;bk<this.numberOfItems;++bi,++bk){bm[bi]=this._xforms[bk]}this.numberOfItems++;this._xforms=bm;bn=bl;this._list._update()}else{bn=this._list.appendItem(bl)}}return bn};this.replaceItem=function(bj,bi){var bk=null;if(bi<this.numberOfItems&&bi>=0){this._xforms[bi]=bj;bk=bj;this._list._update()}return bk};this.removeItem=function(bj){var bm=null;if(bj<this.numberOfItems&&bj>=0){var bm=this._xforms[bj];var bl=new Array(this.numberOfItems-1);for(var bk=0;bk<bj;++bk){bl[bk]=this._xforms[bk]}for(var bi=bk;bi<this.numberOfItems-1;++bi,++bk){bl[bi]=this._xforms[bk+1]}this.numberOfItems--;this._xforms=bl;this._list._update()}return bm};this.appendItem=function(bi){this._xforms.push(bi);this.numberOfItems++;this._list._update();return bi}};function at(bi,bg){if(bi&&bi.nodeType==1){bg(bi);var bh=bi.childNodes.length;while(bh--){at(bi.childNodes.item(bh),bg)}}}function a9(bi,bg){if(bi&&bi.nodeType==1){var bh=bi.childNodes.length;while(bh--){at(bi.childNodes.item(bh),bg)}bg(bi)}}var az=this.assignAttributes=function(bl,bi,bh,bg){if(!bh){bh=0}var bm=null;if(!window.opera){G.suspendRedraw(bh)}for(var bj in bi){var bk=(bj.substr(0,4)=="xml:"?W:bj.substr(0,6)=="xlink:"?aE:null);if(bk||!bg){bl.setAttributeNS(bk,bj,bi[bj])}else{ab(bl,bj,bi[bj])}}if(!window.opera){G.unsuspendRedraw(bm)}};var ar=this.cleanupElement=function(bh){var bi=G.suspendRedraw(60);var bj={"fill-opacity":1,"stop-opacity":1,opacity:1,stroke:"none","stroke-dasharray":"none","stroke-linejoin":"miter","stroke-linecap":"butt","stroke-opacity":1,"stroke-width":1,rx:0,ry:0};for(var bg in bj){var bk=bj[bg];if(bh.getAttribute(bg)==bk){bh.removeAttribute(bg)}}G.unsuspendRedraw(bi)};var c=this.addSvgElementFromJson=function(bh){var bg=b(bh.attr.id);if(bg&&bh.element!=bg.tagName){V.removeChild(bg);bg=null}if(!bg){bg=aM.createElementNS(aK,bh.element);if(V){V.appendChild(bg)}}if(bh.curStyles){az(bg,{fill:aN.fill,stroke:aN.stroke,"stroke-width":aN.stroke_width,"stroke-dasharray":aN.stroke_dasharray,"stroke-linejoin":aN.stroke_linejoin,"stroke-linecap":aN.stroke_linecap,"stroke-opacity":aN.stroke_opacity,"fill-opacity":aN.fill_opacity,opacity:aN.opacity/2,style:"pointer-events:inherit"},100)}az(bg,bh.attr,100);ar(bg);return bg};(function(){var bg=aM.createComment(" Created with SVG-edit - http://svg-edit.googlecode.com/ ");ai.appendChild(bg)})();var aS=[],aX={},ad=J.imgPath+"logo.png",V=null,ah={round_digits:5},aG=false,a4=1,aj=null,a1="select",aa="none",U={shape:{fill:"#"+J.initFill.color,fill_paint:null,fill_opacity:J.initFill.opacity,stroke:"#"+J.initStroke.color,stroke_paint:null,stroke_opacity:J.initStroke.opacity,stroke_width:J.initStroke.width,stroke_dasharray:"none",stroke_linejoin:"miter",stroke_linecap:"butt",opacity:J.initOpacity}};U.text=$.extend(true,{},U.shape);$.extend(U.text,{fill:"#000000",stroke_width:0,font_size:24,font_family:"serif"});var aN=U.shape,a6=U.text,r=aN,ac=1,aR=new Array(1),u=new Array(1),K=null,F=new bd(),j=null,aH=[],e={};var aI=this.runExtensions=function(bh,bj,bi){var bg=false;if(bi){bg=[]}$.each(e,function(bk,bl){if(bh in bl){if(bi){bg.push(bl[bh](bj))}else{bg=bl[bh](bj)}}});return bg};this.addExtension=function(bg,bi){if(!(bg in e)){if($.isFunction(bi)){var bh=bi($.extend(bc.getPrivateMethods(),{svgroot:G,svgcontent:ai,nonce:m,selectorManager:F}))}else{var bh=bi}e[bg]=bh;call("extension_added",bh)}else{console.log('Cannot add extension "'+bg+'", an extension by that name already exists"')}};var a3=function(bh){var bg=ah.round_digits;if(!isNaN(bh)){return Number(Number(bh).toFixed(bg))}else{if($.isArray(bh)){return a3(bh[0])+","+a3(bh[1])}}};var Q=this.round=function(bg){return parseInt(bg*ac)/ac};var aW=this.getIntersectionList=function(bj){if(j==null){return null}if(!aH.length){aH=aO(V,true)}var bg=null;try{bg=V.getIntersectionList(bj,null)}catch(bk){}if(bg==null||typeof(bg.item)!="function"){bg=[];var bi=j.getBBox();$.each(bi,function(bl,bm){bi[bl]=bm/ac});var bh=aH.length;while(bh--){if(!bi.width||!bi.width){continue}if(aw.rectsIntersect(bi,aH[bh].bbox)){bg.push(aH[bh].elem)}}}return bg};var ag=this.getStrokedBBox=function(bh){if(!bh){bh=aO()}if(!bh.length){return false}var bi=function(br){try{var bw=au(br);var bs=aq(br);if((bs&&bs%90)||aP(aQ(br))){var bv=false;var by=["ellipse","path","line","polyline","polygon"];if($.inArray(br.tagName,by)!=-1){bw=bv=bc.convertToPath(br,true)}else{if(br.tagName=="rect"){var bq=br.getAttribute("rx");var bp=br.getAttribute("ry");if(bq||bp){bw=bv=bc.convertToPath(br,true)}}}if(!bv){var bt=document.createElementNS(aK,"g");var bx=br.parentNode;bx.replaceChild(bt,br);bt.appendChild(br);bw=bt.getBBox();bx.insertBefore(br,bt);bx.removeChild(bt)}}return bw}catch(bu){console.log(br,bu);return null}};var bm;$.each(bh,function(){if(bm){return}if(!this.parentNode){return}bm=bi(this)});if(bm==null){return null}var bg=bm.x+bm.width;var bo=bm.y+bm.height;var bl=bm.x;var bk=bm.y;var bn=function(bq){var bp=bq.getAttribute("stroke-width");var br=0;if(bq.getAttribute("stroke")!="none"&&!isNaN(bp)){br+=bp/2}return br};var bj=[];$.each(bh,function(bq,br){var bp=bi(br);if(bp){var bs=bn(br);bl=Math.min(bl,bp.x-bs);bk=Math.min(bk,bp.y-bs);bj.push(bp)}});bm.x=bl;bm.y=bk;$.each(bh,function(bq,br){var bp=bj[bq];if(bp&&br.nodeType==1){var bs=bn(br);bg=Math.max(bg,bp.x+bp.width+bs);bo=Math.max(bo,bp.y+bp.height+bs)}});bm.width=bg-bl;bm.height=bo-bk;return bm};var aO=this.getVisibleElements=function(bg,bh){if(!bg){bg=$(ai).children()}var bi=[];$(bg).children().each(function(bj,bm){try{var bl=bm.getBBox();if(bl){var bk=bh?{elem:bm,bbox:ag([bm])}:bm;bi.push(bk)}}catch(bn){}});return bi.reverse()};var ap=function(bh){var bi=document.createElementNS(bh.namespaceURI,bh.nodeName);$.each(bh.attributes,function(bk,bj){if(bj.localName!="-moz-math-font-style"){bi.setAttributeNS(bj.namespaceURI,bj.nodeName,bj.nodeValue)}});bi.removeAttribute("id");bi.id=a7();a4++;if((aC)&&bh.nodeName=="path"){var bg=z.convertPath(bh);bi.setAttribute("d",bg)}$.each(bh.childNodes,function(bj,bk){switch(bk.nodeType){case 1:bi.appendChild(ap(bk));break;case 3:bi.textContent=bk.nodeValue;break;default:break}});if(bi.tagName=="image"){aV(bi)}return bi};function b(bg){if(G.querySelector){return G.querySelector("#"+bg)}else{if(aM.evaluate){return aM.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+bg+'"]',aL,function(){return"http://www.w3.org/2000/svg"},9,null).singleNodeValue}else{return $(G).find("[id="+bg+"]")[0]}}}var C,a7;(function(bi){var bg={};var bh="svg_";C=bi.getId=function(){if(bg.getid){return call("getid",a4)}if(q){return bh+m+"_"+a4}else{return bh+a4}};a7=bi.getNextId=function(){var bj=C();while(b(bj)){a4++;bj=C()}return bj};call=bi.call=function(bk,bj){if(bg[bk]){return bg[bk](this,bj)}};bi.bind=function(bk,bl){var bj=bg[bk];bg[bk]=bl;return bj};bi.setIdPrefix=function(bj){bh=bj}}(bc));var M=this.sanitizeSvg=function(bl){if(bl.nodeType==3){bl.nodeValue=bl.nodeValue.replace(/^\s+|\s+$/g,"");if(!bl.nodeValue.length){bl.parentNode.removeChild(bl)}}if(bl.nodeType!=1){return}var bt=bl.ownerDocument;var bu=bl.parentNode;if(!bt||!bu){return}var bq=aF[bl.nodeName];var bk=h[bl.nodeName];if(bq!=undefined){var bj=[];var bm=bl.attributes.length;while(bm--){var bp=bl.attributes.item(bm);var bs=bp.nodeName;var bn=bp.localName;var bv=bp.namespaceURI;if(!(bk.hasOwnProperty(bn)&&bv==bk[bn]&&bv!=bf)&&!(bv==bf&&am[bp.nodeValue])){if(bs.indexOf("se:")==0){bj.push([bs,bp.nodeValue])}bl.removeAttributeNS(bv,bn)}if(bl.nodeName=="path"&&bs=="d"){bl.setAttribute("d",z.convertPath(bl));z.fixEnd(bl)}if(bs=="style"){var br=bp.nodeValue.split(";"),bh=br.length;while(bh--){var bo=br[bh].split(":");if(bq.indexOf(bo[0])!=-1){bl.setAttribute(bo[0],bo[1])}}bl.removeAttribute("style")}}$.each(bj,function(bx,bw){bl.setAttributeNS(al,bw[0],bw[1])});var bg=bl.getAttributeNS(aE,"href");if(bg&&$.inArray(bl.nodeName,["filter","linearGradient","pattern","radialGradient","textPath","use"])!=-1){if(bg[0]!="#"){bl.setAttributeNS(aE,"xlink:href","");bl.removeAttributeNS(aE,"href")}}if(bl.nodeName=="use"&&!bl.getAttributeNS(aE,"href")){bu.removeChild(bl);return}$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(bx,bw){var by=bl.getAttribute(bw);if(by){by=ak(by);if(by&&by[0]!="#"){bl.setAttribute(bw,"");bl.removeAttribute(bw)}}});bm=bl.childNodes.length;while(bm--){M(bl.childNodes.item(bm))}}else{var bi=[];while(bl.hasChildNodes()){bi.push(bu.insertBefore(bl.firstChild,bl))}bu.removeChild(bl);var bm=bi.length;while(bm--){M(bi[bm])}}};var ak=this.getUrlFromAttr=function(bg){if(bg){if(bg.indexOf('url("')==0){return bg.substring(5,bg.indexOf('"',6))}else{if(bg.indexOf("url('")==0){return bg.substring(5,bg.indexOf("'",6))}else{if(bg.indexOf("url(")==0){return bg.substring(4,bg.indexOf(")"))}}}}return null};var au=this.getBBox=function(bj){var bi=bj||aR[0];if(bj.nodeType!=1){return null}var bg=null;if(bj.nodeName=="text"&&bi.textContent==""){bi.textContent="a";bg=bi.getBBox();bi.textContent=""}else{if(bj.nodeName=="path"&&aC){bg=bb(bi)}else{if(bj.nodeName=="use"&&!aC){bg=bi.getBBox();bg.x+=parseFloat(bi.getAttribute("x")||0);bg.y+=parseFloat(bi.getAttribute("y")||0)}else{if(bj.nodeName=="foreignObject"){bg=bi.getBBox();bg.x+=parseFloat(bi.getAttribute("x")||0);bg.y+=parseFloat(bi.getAttribute("y")||0)}else{try{bg=bi.getBBox()}catch(bk){var bh=$(bi).closest("foreignObject");if(bh.length){try{bg=bh[0].getBBox()}catch(bk){bg=null}}else{bg=null}}}}}}return bg};var g=function(bg){if(navigator.userAgent.indexOf("Gecko/")==-1){return bg}var bh=bg.cloneNode(true);bg.parentNode.insertBefore(bh,bg);bg.parentNode.removeChild(bg);F.releaseSelector(bg);aR[0]=bh;F.requestSelector(bh).showGrips(true);return bh};var bb=function(bv){var bA=bv.pathSegList;var bt=bA.numberOfItems;var bn=[[],[]];var bm=bA.getItem(0);var bl=[bm.x,bm.y];for(var bx=0;bx<bt;bx++){var bz=bA.getItem(bx);if(!bz.x){continue}bn[0].push(bl[0]);bn[1].push(bl[1]);if(bz.x1){var bk=[bz.x1,bz.y1],bj=[bz.x2,bz.y2],bh=[bz.x,bz.y];for(var bw=0;bw<2;bw++){var bg=function(bE){return Math.pow(1-bE,3)*bl[bw]+3*Math.pow(1-bE,2)*bE*bk[bw]+3*(1-bE)*Math.pow(bE,2)*bj[bw]+Math.pow(bE,3)*bh[bw]};var bC=6*bl[bw]-12*bk[bw]+6*bj[bw];var bD=-3*bl[bw]+9*bk[bw]-9*bj[bw]+3*bh[bw];var bB=3*bk[bw]-3*bl[bw];if(bD==0){if(bC==0){continue}var bu=-bB/bC;if(0<bu&&bu<1){bn[bw].push(bg(bu))}continue}var bi=Math.pow(bC,2)-4*bB*bD;if(bi<0){continue}var br=(-bC+Math.sqrt(bi))/(2*bD);if(0<br&&br<1){bn[bw].push(bg(br))}var bp=(-bC-Math.sqrt(bi))/(2*bD);if(0<bp&&bp<1){bn[bw].push(bg(bp))}}bl=bh}else{bn[0].push(bz.x);bn[1].push(bz.y)}}var bq=Math.min.apply(null,bn[0]);var bs=Math.max.apply(null,bn[0])-bq;var bo=Math.min.apply(null,bn[1]);var by=Math.max.apply(null,bn[1])-bo;return{x:bq,y:bo,width:bs,height:by}};var aq=this.getRotationAngle=function(bk,bh){var bj=bk||aR[0];var bm=aQ(bj);if(!bm){return 0}var bl=bm.numberOfItems;for(var bi=0;bi<bl;++bi){var bg=bm.getItem(bi);if(bg.type==4){return bh?bg.angle*Math.PI/180:bg.angle}}return 0};this.setRotationAngle=function(bi,bq){bi=parseFloat(bi);var bj=aR[0];var bn=bj.getAttribute("transform");var bt=au(bj);var bm=bt.x+bt.width/2,bl=bt.y+bt.height/2;var bp=aQ(bj);if(bp.numberOfItems>0){var bs=bp.getItem(0);if(bs.type==4){bp.removeItem(0)}}if(bi!=0){var bg=P(bm,bl,s(bp).matrix);var br=G.createSVGTransform();br.setRotate(bi,bg.x,bg.y);bp.insertItemBefore(br,0)}else{if(bp.numberOfItems==0){bj.removeAttribute("transform")}}if(!bq){var bh=bj.getAttribute("transform");bj.setAttribute("transform",bn);A("transform",bh,aR)}var bo=b("pathpointgrip_container");var bk=F.requestSelector(aR[0]);bk.resize();bk.updateGripCursors(bi)};var aQ=this.getTransformList=function(bh){if(aC){var bi=bh.id;if(!bi){bi="temp"}var bg=T[bi];if(!bg||bi=="temp"){T[bi]=new H(bh);T[bi]._init();bg=T[bi]}return bg}else{if(bh.transform){return bh.transform.baseVal}else{if(bh.gradientTransform){return bh.gradientTransform.baseVal}}}return null};var aY=this.recalculateAllSelectedDimensions=function(){var bk=(aa=="none"?"position":"size");var bg=new aA(bk);var bh=aR.length;while(bh--){var bi=aR[bh];var bj=l(bi);if(bj){bg.addSubCommand(bj)}}if(!bg.isEmpty()){aT(bg);call("changed",aR)}};var E=[0,"z","M","m","L","l","C","c","Q","q","A","a","H","h","V","v","S","s","T","t"];var ax=function(bg){console.log([bg.a,bg.b,bg.c,bg.d,bg.e,bg.f])};var D=this.remapElement=function(bv,bI,by){var bl=function(bJ,bK){return P(bJ,bK,by)},bk=function(bJ){return by.a*bJ},bt=function(bJ){return by.d*bJ},bq=au(bv);switch(bv.tagName){case"line":var bo=bl(bI.x1,bI.y1),bn=bl(bI.x2,bI.y2);bI.x1=bo.x;bI.y1=bo.y;bI.x2=bn.x;bI.y2=bn.y;break;case"circle":var bH=bl(bI.cx,bI.cy);bI.cx=bH.x;bI.cy=bH.y;var bB=be(bq.x,bq.y,bq.width,bq.height,by);var br=bB.tr.x-bB.tl.x,bF=bB.bl.y-bB.tl.y;bI.r=Math.min(br/2,bF/2);break;case"ellipse":var bH=bl(bI.cx,bI.cy);bI.cx=bH.x;bI.cy=bH.y;bI.rx=bk(bI.rx);bI.ry=bt(bI.ry);break;case"foreignObject":case"rect":case"image":var bo=bl(bI.x,bI.y);bI.x=bo.x;bI.y=bo.y;bI.width=bk(bI.width);bI.height=bt(bI.height);break;case"use":var bo=bl(bI.x,bI.y);bI.x=bo.x;bI.y=bo.y;break;case"text":if(by.a==1&&by.b==0&&by.c==0&&by.d==1&&(by.e!=0||by.f!=0)){var bu=s(bv).matrix,bp=af(bu.inverse(),by,bu);bI.x=parseFloat(bI.x)+bp.e;bI.y=parseFloat(bI.y)+bp.f}else{var bh=aQ(bv);var bw=G.createSVGTransform();bw.setMatrix(af(s(bh).matrix,by));bh.clear();bh.appendItem(bw)}break;case"polygon":case"polyline":var bE=bI.points.length;for(var bD=0;bD<bE;++bD){var bx=bI.points[bD];bx=bl(bx.x,bx.y);bI.points[bD].x=bx.x;bI.points[bD].y=bx.y}break;case"path":var bg=bv.pathSegList;var bE=bg.numberOfItems;bI.d=new Array(bE);for(var bD=0;bD<bE;++bD){var bG=bg.getItem(bD);bI.d[bD]={type:bG.pathSegType,x:bG.x,y:bG.y,x1:bG.x1,y1:bG.y1,x2:bG.x2,y2:bG.y2,r1:bG.r1,r2:bG.r2,angle:bG.angle,largeArcFlag:bG.largeArcFlag,sweepFlag:bG.sweepFlag}}var bE=bI.d.length,bj=bI.d[0],bz=bl(bj.x,bj.y);bI.d[0].x=bz.x;bI.d[0].y=bz.y;for(var bD=1;bD<bE;++bD){var bG=bI.d[bD];var bi=bG.type;if(bi%2==0){var bC=(bG.x!=undefined)?bG.x:bz.x,bA=(bG.y!=undefined)?bG.y:bz.y,bx=bl(bC,bA),bo=bl(bG.x1,bG.y1),bn=bl(bG.x2,bG.y2);bG.x=bx.x;bG.y=bx.y;bG.x1=bo.x;bG.y1=bo.y;bG.x2=bn.x;bG.y2=bn.y;bG.r1=bk(bG.r1),bG.r2=bt(bG.r2)}else{bG.x=bk(bG.x);bG.y=bt(bG.y);bG.x1=bk(bG.x1);bG.y1=bt(bG.y1);bG.x2=bk(bG.x2);bG.y2=bt(bG.y2);bG.r1=bk(bG.r1),bG.r2=bt(bG.r2)}if(bG.x){bz.x=bG.x}if(bG.y){bz.y=bG.y}}break}switch(bv.tagName){case"foreignObject":case"rect":case"image":bI.x=bI.x-0+Math.min(0,bI.width);bI.y=bI.y-0+Math.min(0,bI.height);bI.width=Math.abs(bI.width);bI.height=Math.abs(bI.height);az(bv,bI,1000,true);break;case"use":az(bv,bI,1000,true);break;case"ellipse":bI.rx=Math.abs(bI.rx);bI.ry=Math.abs(bI.ry);case"circle":if(bI.r){bI.r=Math.abs(bI.r)}case"line":case"text":az(bv,bI,1000,true);break;case"polyline":case"polygon":var bE=bI.points.length;var bm="";for(var bD=0;bD<bE;++bD){var bx=bI.points[bD];bm+=bx.x+","+bx.y+" "}bv.setAttribute("points",bm);break;case"path":var bs="";var bE=bI.d.length;for(var bD=0;bD<bE;++bD){var bG=bI.d[bD];var bi=bG.type;bs+=E[bi];switch(bi){case 13:case 12:bs+=bG.x+" ";break;case 15:case 14:bs+=bG.y+" ";break;case 3:case 5:case 19:case 2:case 4:case 18:bs+=bG.x+","+bG.y+" ";break;case 7:case 6:bs+=bG.x1+","+bG.y1+" "+bG.x2+","+bG.y2+" "+bG.x+","+bG.y+" ";break;case 9:case 8:bs+=bG.x1+","+bG.y1+" "+bG.x+","+bG.y+" ";break;case 11:case 10:bs+=bG.r1+","+bG.r2+" "+bG.angle+" "+Number(bG.largeArcFlag)+" "+Number(bG.sweepFlag)+" "+bG.x+","+bG.y+" ";break;case 17:case 16:bs+=bG.x2+","+bG.y2+" "+bG.x+","+bG.y+" ";break}}bv.setAttribute("d",bs);break}};var l=this.recalculateDimensions=function(bI){if(bI==null){return null}var bQ=aQ(bI);if(bQ&&bQ.numberOfItems>0){var b9=bQ.numberOfItems;while(b9--){var bY=bQ.getItem(b9);if(bY.type==0){bQ.removeItem(b9)}else{if(bY.type==1){if(a8(bY.matrix)){bQ.removeItem(b9)}}else{if(bY.type==4){if(bY.angle==0){bQ.removeItem(b9)}}}}}if(bQ.numberOfItems==1&&aq(bI)){return null}}if(!bQ||bQ.numberOfItems==0){bI.removeAttribute("transform");return null}var bh=new aA("Transform");var bC={},ch=null,bq=[];switch(bI.tagName){case"line":bq=["x1","y1","x2","y2"];break;case"circle":bq=["cx","cy","r"];break;case"ellipse":bq=["cx","cy","rx","ry"];break;case"foreignObject":case"rect":case"image":bq=["width","height","x","y"];break;case"use":bq=["x","y"];break;case"text":bq=["x","y"];break;case"polygon":case"polyline":ch={};ch.points=bI.getAttribute("points");var bB=bI.points;var bz=bB.numberOfItems;bC.points=new Array(bz);for(var cc=0;cc<bz;++cc){var br=bB.getItem(cc);bC.points[cc]={x:br.x,y:br.y}}break;case"path":ch={};ch.d=bI.getAttribute("d");bC.d=bI.getAttribute("d");break}if(bq.length){bC=$(bI).attr(bq);$.each(bC,function(cm,cn){bC[cm]=a2(cm,cn)})}if(ch==null){ch=$.extend(true,{},bC);$.each(ch,function(cm,cn){ch[cm]=a2(cm,cn)})}ch.transform=aj?aj:"";if(bI.tagName=="g"||bI.tagName=="a"){var bm=au(bI),ck={x:bm.x+bm.width/2,y:bm.y+bm.height/2},bj=P(bm.x+bm.width/2,bm.y+bm.height/2,s(bQ).matrix),b3=G.createSVGMatrix();var bG=aq(bI);if(bG){var ci=bG*Math.PI/180;if(Math.abs(ci)>(1e-10)){var bV=Math.sin(ci)/(1-Math.cos(ci))}else{var bV=2/ci}for(var cc=0;cc<bQ.numberOfItems;++cc){var bY=bQ.getItem(cc);if(bY.type==4){var bO=bY.matrix;ck.y=(bV*bO.e+bO.f)/2;ck.x=(bO.e-bV*bO.f)/2;bQ.removeItem(cc);break}}}var ca=0,b8=0,bP=0,bo=bQ.numberOfItems;if(bo){var b7=bQ.getItem(0).matrix}if(bo>=3&&bQ.getItem(bo-2).type==3&&bQ.getItem(bo-3).type==2&&bQ.getItem(bo-1).type==2){bP=3;var cl=bQ.getItem(bo-3).matrix,bt=bQ.getItem(bo-2).matrix,b1=bQ.getItem(bo-1).matrix;var bw=bI.childNodes;var cg=bw.length;while(cg--){var bl=bw.item(cg);ca=0;b8=0;if(bl.nodeType==1){var bA=aQ(bl);if(!bA){continue}var b3=s(bA).matrix;var by=aq(bl);var bU=aj;var b4=[];aj=bl.getAttribute("transform");if(by||aP(bA)){var bT=G.createSVGTransform();bT.setMatrix(af(cl,bt,b1,b3));bA.clear();bA.appendItem(bT);b4.push(bT)}else{var bk=af(b3.inverse(),b1,b3);var bK=G.createSVGMatrix();bK.e=-bk.e;bK.f=-bk.f;var cf=af(bK.inverse(),b3.inverse(),cl,bt,b1,b3,bk.inverse());var cj=G.createSVGTransform(),bM=G.createSVGTransform(),bs=G.createSVGTransform();cj.setTranslate(bk.e,bk.f);bM.setScale(cf.a,cf.d);bs.setTranslate(bK.e,bK.f);bA.appendItem(bs);bA.appendItem(bM);bA.appendItem(cj);b4.push(bs);b4.push(bM);b4.push(cj);ax(bs.matrix);ax(bM.matrix)}bh.addSubCommand(l(bl));aj=bU}}bQ.removeItem(bo-1);bQ.removeItem(bo-2);bQ.removeItem(bo-3)}else{if(bo>=3&&bQ.getItem(bo-1).type==1){bP=3;b3=s(bQ).matrix;var bT=G.createSVGTransform();bT.setMatrix(b3);bQ.clear();bQ.appendItem(bT)}else{if((bo==1||(bo>1&&bQ.getItem(1).type!=3))&&bQ.getItem(0).type==2){bP=2;var bF=s(bQ).matrix;bQ.removeItem(0);var bL=s(bQ).matrix.inverse();var bv=af(bL,bF);ca=bv.e;b8=bv.f;if(ca!=0||b8!=0){var bw=bI.childNodes;var cg=bw.length;while(cg--){var bl=bw.item(cg);if(bl.nodeType==1){var bU=aj;aj=bl.getAttribute("transform");var bA=aQ(bl);if(bA){var bJ=G.createSVGTransform();bJ.setTranslate(ca,b8);bA.insertItemBefore(bJ,0);bh.addSubCommand(l(bl));var bH=bI.getElementsByTagNameNS(aK,"use");var bE="#"+bl.id;var bS=bH.length;while(bS--){var bR=bH.item(bS);if(bE==bR.getAttributeNS(aE,"href")){var cd=G.createSVGTransform();cd.setTranslate(-ca,-b8);aQ(bR).insertItemBefore(cd,0);bh.addSubCommand(l(bR))}}aj=bU}}}aj=bU}}else{if(bo==1&&bQ.getItem(0).type==1&&!bG){bP=1;var b3=bQ.getItem(0).matrix,bw=bI.childNodes,cg=bw.length;while(cg--){var bl=bw.item(cg);if(bl.nodeType==1){var bU=aj;aj=bl.getAttribute("transform");var bA=aQ(bl);var cb=af(b3,s(bA).matrix);var b0=G.createSVGTransform();b0.setMatrix(cb);bA.clear();bA.appendItem(b0,0);bh.addSubCommand(l(bl));aj=bU}}bQ.clear()}else{if(bG){var bi=G.createSVGTransform();bi.setRotate(bG,bj.x,bj.y);bQ.insertItemBefore(bi,0)}if(bQ.numberOfItems==0){bI.removeAttribute("transform")}return null}}}}if(bP==2){if(bG){bj={x:ck.x+b7.e,y:ck.y+b7.f};var bi=G.createSVGTransform();bi.setRotate(bG,bj.x,bj.y);bQ.insertItemBefore(bi,0)}}else{if(bP==3){var b3=s(bQ).matrix;var bg=G.createSVGTransform();bg.setRotate(bG,ck.x,ck.y);var bN=bg.matrix;var b2=G.createSVGTransform();b2.setRotate(bG,bj.x,bj.y);var bD=b2.matrix.inverse(),b6=b3.inverse(),bX=af(b6,bD,bN,b3);ca=bX.e;b8=bX.f;if(ca!=0||b8!=0){var bw=bI.childNodes;var cg=bw.length;while(cg--){var bl=bw.item(cg);if(bl.nodeType==1){var bU=aj;aj=bl.getAttribute("transform");var bA=aQ(bl);var bJ=G.createSVGTransform();bJ.setTranslate(ca,b8);bA.insertItemBefore(bJ,0);bh.addSubCommand(l(bl));aj=bU}}}if(bG){bQ.insertItemBefore(b2,0)}}}}else{var bm=au(bI);if(!bm){return null}var ck={x:bm.x+bm.width/2,y:bm.y+bm.height/2},bj=P(bm.x+bm.width/2,bm.y+bm.height/2,s(bQ).matrix),b3=G.createSVGMatrix(),by=aq(bI);if(by){var ci=by*Math.PI/180;if(Math.abs(ci)>(1e-10)){var bV=Math.sin(ci)/(1-Math.cos(ci))}else{var bV=2/ci}for(var cc=0;cc<bQ.numberOfItems;++cc){var bY=bQ.getItem(cc);if(bY.type==4){var bO=bY.matrix;ck.y=(bV*bO.e+bO.f)/2;ck.x=(bO.e-bV*bO.f)/2;bQ.removeItem(cc);break}}}var bP=0;var bo=bQ.numberOfItems;if(!aC){var bu=bI.getAttribute("fill");if(bu&&bu.indexOf("url(")===0){var bx=b(ak(bu).substr(1));if(bx.getAttribute("gradientUnits")==="userSpaceOnUse"){var bx=$(bx);b3=s(bQ).matrix;var bZ=aQ(bx[0]);var b5=s(bZ).matrix;b3=af(b3,b5);var bW="matrix("+[b3.a,b3.b,b3.c,b3.d,b3.e,b3.f].join(",")+")";bx.attr("gradientTransform",bW)}}}if(bo>=3&&bQ.getItem(bo-2).type==3&&bQ.getItem(bo-3).type==2&&bQ.getItem(bo-1).type==2&&bI.nodeName!="use"){bP=3;b3=s(bQ,bo-3,bo-1).matrix;bQ.removeItem(bo-1);bQ.removeItem(bo-2);bQ.removeItem(bo-3)}else{if(bo==4&&bQ.getItem(bo-1).type==1){bP=3;b3=s(bQ).matrix;var bT=G.createSVGTransform();bT.setMatrix(b3);bQ.clear();bQ.appendItem(bT);b3=G.createSVGMatrix()}else{if((bo==1||(bo>1&&bQ.getItem(1).type!=3))&&bQ.getItem(0).type==2){bP=2;var ce=bQ.getItem(0).matrix,bp=s(bQ,1).matrix,bn=bp.inverse();b3=af(bn,ce,bp);bQ.removeItem(0)}else{if(bo==1&&bQ.getItem(0).type==1&&!by){b3=s(bQ).matrix;switch(bI.tagName){case"line":bC=$(bI).attr(["x1","y1","x2","y2"]);case"polyline":case"polygon":bC.points=bI.getAttribute("points");if(bC.points){var bB=bI.points;var bz=bB.numberOfItems;bC.points=new Array(bz);for(var cc=0;cc<bz;++cc){var br=bB.getItem(cc);bC.points[cc]={x:br.x,y:br.y}}}case"path":bC.d=bI.getAttribute("d");bP=1;bQ.clear();break;default:break}}else{bP=4;if(by){var bi=G.createSVGTransform();bi.setRotate(by,bj.x,bj.y);bQ.insertItemBefore(bi,0)}if(bQ.numberOfItems==0){bI.removeAttribute("transform")}return null}}}}if(bP==1||bP==2||bP==3){D(bI,bC,b3)}if(bP==2){if(by){bj={x:ck.x+b3.e,y:ck.y+b3.f};var bi=G.createSVGTransform();bi.setRotate(by,bj.x,bj.y);bQ.insertItemBefore(bi,0)}}else{if(bP==3){var b3=s(bQ).matrix;var bg=G.createSVGTransform();bg.setRotate(by,ck.x,ck.y);var bN=bg.matrix;var b2=G.createSVGTransform();b2.setRotate(by,bj.x,bj.y);var bD=b2.matrix.inverse();var b6=b3.inverse();var bX=af(b6,bD,bN,b3);D(bI,bC,bX);if(by){bQ.insertItemBefore(b2,0)}}}}if(bQ.numberOfItems==0){bI.removeAttribute("transform")}bh.addSubCommand(new av(bI,ch));return bh};var p=null;var P=function(bh,bi,bg){return{x:bg.a*bh+bg.c*bi+bg.e,y:bg.b*bh+bg.d*bi+bg.f}};var a8=function(bg){return(bg.a==1&&bg.b==0&&bg.c==0&&bg.d==1&&bg.e==0&&bg.f==0)};var af=this.matrixMultiply=function(){var bh=1e-14,bl=function(bo,bn){var bm=G.createSVGMatrix();bm.a=bo.a*bn.a+bo.c*bn.b;bm.b=bo.b*bn.a+bo.d*bn.b,bm.c=bo.a*bn.c+bo.c*bn.d,bm.d=bo.b*bn.c+bo.d*bn.d,bm.e=bo.a*bn.e+bo.c*bn.f+bo.e,bm.f=bo.b*bn.e+bo.d*bn.f+bo.f;return bm},bj=arguments,bk=bj.length,bg=bj[bk-1];while(bk-->1){var bi=bj[bk-1];bg=bl(bi,bg)}if(Math.abs(bg.a)<bh){bg.a=0}if(Math.abs(bg.b)<bh){bg.b=0}if(Math.abs(bg.c)<bh){bg.c=0}if(Math.abs(bg.d)<bh){bg.d=0}if(Math.abs(bg.e)<bh){bg.e=0}if(Math.abs(bg.f)<bh){bg.f=0}return bg};var s=this.transformListToTransform=function(bm,bl,bh){var bl=bl==undefined?0:bl;var bh=bh==undefined?(bm.numberOfItems-1):bh;bl=parseInt(bl);bh=parseInt(bh);if(bl>bh){var bi=bh;bh=bl;bl=bi}var bg=G.createSVGMatrix();for(var bk=bl;bk<=bh;++bk){var bj=(bk>=0&&bk<bm.numberOfItems?bm.getItem(bk).matrix:G.createSVGMatrix());bg=af(bg,bj)}return G.createSVGTransformFromMatrix(bg)};var aP=this.hasMatrixTransform=function(bi){if(!bi){return false}var bh=bi.numberOfItems;while(bh--){var bg=bi.getItem(bh);if(bg.type==1&&!a8(bg.matrix)){return true}}return false};var B=function(bg){var bh=aQ(bg);return s(bh).matrix};var be=this.transformBox=function(bi,bs,bp,bj,bh){var bl={x:bi,y:bs},bm={x:(bi+bp),y:bs},bg={x:(bi+bp),y:(bs+bj)},bk={x:bi,y:(bs+bj)};bl=P(bl.x,bl.y,bh);var br=bl.x,bo=bl.x,bq=bl.y,bn=bl.y;bm=P(bm.x,bm.y,bh);br=Math.min(br,bm.x);bo=Math.max(bo,bm.x);bq=Math.min(bq,bm.y);bn=Math.max(bn,bm.y);bk=P(bk.x,bk.y,bh);br=Math.min(br,bk.x);bo=Math.max(bo,bk.x);bq=Math.min(bq,bk.y);bn=Math.max(bn,bk.y);bg=P(bg.x,bg.y,bh);br=Math.min(br,bg.x);bo=Math.max(bo,bg.x);bq=Math.min(bq,bg.y);bn=Math.max(bn,bg.y);return{tl:bl,tr:bm,bl:bk,br:bg,aabox:{x:br,y:bq,width:(bo-br),height:(bn-bq)}}};var aZ=this.clearSelection=function(bj){if(aR[0]!=null){var bg=aR.length;for(var bh=0;bh<bg;++bh){var bi=aR[bh];if(bi==null){break}F.releaseSelector(bi);aR[bh]=null}u[0]=null}if(!bj){call("selected",aR)}};var a5=this.addToSelection=function(bg,bk){if(bg.length==0){return}var bh=0;while(bh<aR.length){if(aR[bh]==null){break}++bh}var bi=bg.length;while(bi--){var bj=bg[bi];if(!bj||!au(bj)){continue}if(aR.indexOf(bj)==-1){aR[bh]=bj;if(bh==0){u[bh]=au(bj)}bh++;var bl=F.requestSelector(bj);if(aR.length>1){bl.showGrips(false)}}}if(aR[0]&&aR.length===1&&aR[0].tagName=="a"){aR[0]=aR[0].firstChild}call("selected",aR);if(bk||aR.length==1){F.requestSelector(aR[0]).showGrips(true)}else{F.requestSelector(aR[0]).showGrips(false)}aR.sort(function(bn,bm){if(bn&&bm&&bn.compareDocumentPosition){return 3-(bm.compareDocumentPosition(bn)&6)}else{if(bn==null){return 1}}});while(aR[0]==null){aR.shift(0)}};var ao=this.removeFromSelection=function(bh){if(aR[0]==null){return}if(bh.length==0){return}var bk=new Array(aR.length),bm=new Array(u.length),bi=0,bg=aR.length;for(var bj=0;bj<bg;++bj){var bl=aR[bj];if(bl){if(bh.indexOf(bl)==-1){bk[bi]=bl;if(bi==0){bm[bi]=u[bj]}bi++}else{F.releaseSelector(bl)}}}aR=bk;u=bm};this.selectAllInCurrentLayer=function(){if(V){aZ();a5($(V).children());a1="select";call("selected",aR)}};var X=this.smoothControlPoints=function(bg,bw,bv){var bi=bg.x-bv.x,bu=bg.y-bv.y,bh=bw.x-bv.x,bs=bw.y-bv.y;if((bi!=0||bu!=0)&&(bh!=0||bs!=0)){var bo=Math.atan2(bu,bi),bn=Math.atan2(bs,bh),bk=Math.sqrt(bi*bi+bu*bu),bj=Math.sqrt(bh*bh+bs*bs),bm=G.createSVGPoint(),bl=G.createSVGPoint();if(bo<0){bo+=2*Math.PI}if(bn<0){bn+=2*Math.PI}var bt=Math.abs(bo-bn),bq=Math.abs(Math.PI-bt)/2;var br,bp;if(bo-bn>0){br=bt<Math.PI?(bo+bq):(bo-bq);bp=bt<Math.PI?(bn-bq):(bn+bq)}else{br=bt<Math.PI?(bo-bq):(bo+bq);bp=bt<Math.PI?(bn+bq):(bn-bq)}bm.x=bk*Math.cos(br)+bv.x;bm.y=bk*Math.sin(br)+bv.y;bl.x=bj*Math.cos(bp)+bv.x;bl.y=bj*Math.sin(bp)+bv.y;return[bm,bl]}return undefined};var Z=this.getMouseTarget=function(bg){if(bg==null){return null}var bh=bg.target;if(bh.correspondingUseElement){bh=bh.correspondingUseElement}if($.inArray(bh.namespaceURI,[f,O])!=-1&&bh.id!="svgcanvas"){while(bh.nodeName!="foreignObject"){bh=bh.parentNode}}while(bh.parentNode.parentNode.tagName=="g"){bh=bh.parentNode}if(bh.nodeName.toLowerCase()=="div"){bh=G}return bh};(function(){var bg=null,bn=null,bm=null,bl={},bh={minx:null,miny:null,maxx:null,maxy:null};var bj=function(bE){if(bE.button===1||bc.spaceKey){return}p=ai.getScreenCTM().inverse();var bF=P(bE.pageX,bE.pageY,p),bz=bF.x*ac,by=bF.y*ac;bE.preventDefault();var bD=bz/ac,bB=by/ac,bq=Z(bE);bn=bD;bm=bB;if(bq.parentNode==F.selectorParentGroup&&aR[0]!=null){var bC=bE.target.id,bx=bC.substr(0,20);if(bx=="selectorGrip_rotate_"){a1="rotate"}else{if(bx=="selectorGrip_resize_"){a1="resize";aa=bC.substr(20,bC.indexOf("_",20)-20)}}bq=aR[0]}aj=bq.getAttribute("transform");var bu=aQ(bq);switch(a1){case"select":aG=true;aa="none";if(bq!=G){if(aR.indexOf(bq)==-1){if(!bE.shiftKey){aZ(true)}a5([bq]);K=bq;z.clear()}for(var bs=0;bs<aR.length;++bs){if(aR[bs]==null){continue}var bw=aQ(aR[bs]);bw.insertItemBefore(G.createSVGTransform(),0)}}else{aZ();a1="multiselect";if(j==null){j=F.getRubberBandBox()}bn*=ac;bm*=ac;az(j,{x:bn,y:bm,width:0,height:0,display:"inline"},100)}break;case"zoom":aG=true;bn=bD;bm=bB;if(j==null){j=F.getRubberBandBox()}az(j,{x:bn*ac,y:bm*ac,width:0,height:0,display:"inline"},100);break;case"resize":aG=true;bn=bD;bm=bB;bl=au($("#selectedBox0")[0]);$.each(bl,function(bG,bH){bl[bG]=bH/ac});var bA=aq(bq)?1:0;if(aP(bu)){bu.insertItemBefore(G.createSVGTransform(),bA);bu.insertItemBefore(G.createSVGTransform(),bA);bu.insertItemBefore(G.createSVGTransform(),bA)}else{bu.appendItem(G.createSVGTransform());bu.appendItem(G.createSVGTransform());bu.appendItem(G.createSVGTransform())}break;case"fhellipse":case"fhrect":case"fhpath":aG=true;bn=bD;bm=bB;bg=bD+","+bB+" ";var br=aN.stroke_width==0?1:aN.stroke_width;c({element:"polyline",curStyles:true,attr:{points:bg,id:a7(),fill:"none",opacity:aN.opacity/2,"stroke-linecap":"round",style:"pointer-events:none"}});bh.minx=bD;bh.maxx=bD;bh.miny=bB;bh.maxy=bB;break;case"image":aG=true;bn=bD;bm=bB;var bv=c({element:"image",attr:{x:bD,y:bB,width:0,height:0,id:a7(),opacity:aN.opacity/2,style:"pointer-events:inherit"}});bv.setAttributeNS(aE,"xlink:href",ad);aV(bv);break;case"square":case"rect":aG=true;bn=bD;bm=bB;c({element:"rect",curStyles:true,attr:{x:bD,y:bB,width:0,height:0,id:a7(),opacity:aN.opacity/2}});break;case"line":aG=true;var br=aN.stroke_width==0?1:aN.stroke_width;c({element:"line",curStyles:true,attr:{x1:bD,y1:bB,x2:bD,y2:bB,id:a7(),stroke:aN.stroke,"stroke-width":br,"stroke-dasharray":aN.stroke_dasharray,"stroke-linejoin":aN.stroke_linejoin,"stroke-linecap":aN.stroke_linecap,"stroke-opacity":aN.stroke_opacity,fill:"none",opacity:aN.opacity/2,style:"pointer-events:none"}});break;case"circle":aG=true;c({element:"circle",curStyles:true,attr:{cx:bD,cy:bB,r:0,id:a7(),opacity:aN.opacity/2}});break;case"ellipse":aG=true;c({element:"ellipse",curStyles:true,attr:{cx:bD,cy:bB,rx:0,ry:0,id:a7(),opacity:aN.opacity/2}});break;case"text":aG=true;var bt=c({element:"text",curStyles:true,attr:{x:bD,y:bB,id:a7(),fill:a6.fill,"stroke-width":a6.stroke_width,"font-size":a6.font_size,"font-family":a6.font_family,"text-anchor":"middle","xml:space":"preserve"}});break;case"path":case"pathedit":bn*=ac;bm*=ac;z.mouseDown(bE,bq,bn,bm);aG=true;break;case"textedit":bn*=ac;bm*=ac;L.mouseDown(bE,bq,bn,bm);aG=true;break;case"rotate":aG=true;bc.beginUndoableChange("transform",aR);break;default:break}var bp=aI("mouseDown",{event:bE,start_x:bn,start_y:bm,selectedElements:aR},true);$.each(bp,function(bG,bH){if(bH&&bH.started){aG=true}})};var bo=function(bV){if(!aG){return}if(bV.button===1||bc.spaceKey){return}var bT=aR[0],bC=P(bV.pageX,bV.pageY,p),b2=bC.x*ac,b1=bC.y*ac,bN=b(C());x=b2/ac;y=b1/ac;bV.preventDefault();switch(a1){case"select":if(aR[0]!=null){var bu=x-bn;var bt=y-bm;if(bV.shiftKey){var bW=aw.snapToAngle(bn,bm,x,y);x=bW.x;y=bW.y}if(bu!=0||bt!=0){var bL=aR.length;for(var b9=0;b9<bL;++b9){var bT=aR[b9];if(bT==null){break}if(b9==0){var by=au(bT)}var b4=G.createSVGTransform();var bZ=aQ(bT);b4.setTranslate(bu,bt);if(bZ.numberOfItems){bZ.replaceItem(b4,0)}else{bZ.appendItem(b4)}F.requestSelector(bT).resize()}}}break;case"multiselect":x*=ac;y*=ac;az(j,{x:Math.min(bn,x),y:Math.min(bm,y),width:Math.abs(x-bn),height:Math.abs(y-bm)},100);var bU=[],b8=[],bv=aW(),bL=aR.length;for(var b9=0;b9<bL;++b9){var ca=bv.indexOf(aR[b9]);if(ca==-1){bU.push(aR[b9])}else{bv[ca]=null}}bL=bv.length;for(b9=0;b9<bL;++b9){if(bv[b9]){b8.push(bv[b9])}}if(bU.length>0){bc.removeFromSelection(bU)}if(b8.length>0){a5(b8)}break;case"resize":var bZ=aQ(bT),bD=aP(bZ),by=bD?bl:au(bT),bw=by.x,bx=by.y,bp=by.width,br=by.height,bu=(x-bn),bt=(y-bm);var bK=aq(bT);if(bK){var b3=Math.sqrt(bu*bu+bt*bt),bM=Math.atan2(bt,bu)-bK*Math.PI/180;bu=b3*Math.cos(bM);bt=b3*Math.sin(bM)}if(aa.indexOf("n")==-1&&aa.indexOf("s")==-1){bt=0}if(aa.indexOf("e")==-1&&aa.indexOf("w")==-1){bu=0}var cc=null,b7=0,b6=0,bA=br?(br+bt)/br:1,bB=bp?(bp+bu)/bp:1;if(aa.indexOf("n")!=-1){bA=br?(br-bt)/br:1;b6=br}if(aa.indexOf("w")!=-1){bB=bp?(bp-bu)/bp:1;b7=bp}var ch=G.createSVGTransform(),bX=G.createSVGTransform(),bE=G.createSVGTransform();ch.setTranslate(-(bw+b7),-(bx+b6));if(bV.shiftKey){if(bB==1){bB=bA}else{bA=bB}}bX.setScale(bB,bA);bE.setTranslate(bw+b7,bx+b6);if(bD){var bS=bK?1:0;bZ.replaceItem(ch,2+bS);bZ.replaceItem(bX,1+bS);bZ.replaceItem(bE,0+bS)}else{var bz=bZ.numberOfItems;bZ.replaceItem(bE,bz-3);bZ.replaceItem(bX,bz-2);bZ.replaceItem(ch,bz-1)}var bF=u[0];bF.x=bw;bF.y=bx;if(b7){bF.x+=bu}if(b6){bF.y+=bt}F.requestSelector(bT).resize();break;case"zoom":x*=ac;y*=ac;az(j,{x:Math.min(bn*ac,x),y:Math.min(bm*ac,y),width:Math.abs(x-bn*ac),height:Math.abs(y-bm*ac)},100);break;case"text":az(bN,{x:x,y:y},1000);break;case"line":var bO=null;if(!window.opera){G.suspendRedraw(1000)}var bI=x;var cf=y;if(bV.shiftKey){var bW=aw.snapToAngle(bn,bm,bI,cf);bI=bW.x;cf=bW.y}bN.setAttributeNS(null,"x2",bI);bN.setAttributeNS(null,"y2",cf);if(!window.opera){G.unsuspendRedraw(bO)}break;case"foreignObject":case"square":case"rect":case"image":var ce=(a1=="square")||bV.shiftKey,b0=Math.abs(x-bn),cb=Math.abs(y-bm),bH,bG;if(ce){b0=cb=Math.max(b0,cb);bH=bn<x?bn:bn-b0;bG=bm<y?bm:bm-cb}else{bH=Math.min(bn,x);bG=Math.min(bm,y)}az(bN,{width:b0,height:cb,x:bH,y:bG},1000);break;case"circle":var cd=$(bN).attr(["cx","cy"]);var bQ=cd.cx,bP=cd.cy,bs=Math.sqrt((x-bQ)*(x-bQ)+(y-bP)*(y-bP));bN.setAttributeNS(null,"r",bs);break;case"ellipse":var cd=$(bN).attr(["cx","cy"]);var bQ=cd.cx,bP=cd.cy;bO=null;if(!window.opera){G.suspendRedraw(1000)}bN.setAttributeNS(null,"rx",Math.abs(x-bQ));var bR=Math.abs(bV.shiftKey?(x-bQ):(y-bP));bN.setAttributeNS(null,"ry",bR);if(!window.opera){G.unsuspendRedraw(bO)}break;case"fhellipse":case"fhrect":bh.minx=Math.min(x,bh.minx);bh.maxx=Math.max(x,bh.maxx);bh.miny=Math.min(y,bh.miny);bh.maxy=Math.max(y,bh.maxy);case"fhpath":bn=x;bm=y;bg+=+x+","+y+" ";bN.setAttributeNS(null,"points",bg);break;case"path":case"pathedit":x*=ac;y*=ac;if(bV.shiftKey){var bJ=path.dragging?path.dragging[0]:bn;var cg=path.dragging?path.dragging[1]:bm;var bW=aw.snapToAngle(bJ,cg,x,y);x=bW.x;y=bW.y}if(j&&j.getAttribute("display")!="none"){az(j,{x:Math.min(bn,x),y:Math.min(bm,y),width:Math.abs(x-bn),height:Math.abs(y-bm)},100)}z.mouseMove(x,y);break;case"textedit":x*=ac;y*=ac;L.mouseMove(b2,b1);break;case"rotate":var by=au(bT),bQ=by.x+by.width/2,bP=by.y+by.height/2,b5=B(bT),bq=P(bQ,bP,b5);bQ=bq.x;bP=bq.y;var bK=((Math.atan2(bP-y,bQ-x)*(180/Math.PI))-90)%360;if(bV.shiftKey){var bY=45;bK=Math.round(bK/bY)*bY}bc.setRotationAngle(bK<-180?(360+bK):bK,true);call("changed",aR);break;default:break}aI("mouseMove",{event:bV,mouse_x:b2,mouse_y:b1,selected:bT})};var bk=function(bz){if(bz.button===1){return}var bu=K;K=null;if(!aG){return}var bC=P(bz.pageX,bz.pageY,p),bq=bC.x*ac,bp=bC.y*ac,bw=bq/ac,bv=bp/ac,bs=b(C()),bI=false;aG=false;switch(a1){case"resize":case"multiselect":if(j!=null){j.setAttribute("display","none");aH=[]}a1="select";case"select":if(aR[0]!=null){if(aR[1]==null){var bB=aR[0];if(bB.tagName!="g"&&bB.tagName!="image"&&bB.tagName!="foreignObject"){r.fill=bB.getAttribute("fill");r.fill_opacity=bB.getAttribute("fill-opacity");r.stroke=bB.getAttribute("stroke");r.stroke_opacity=bB.getAttribute("stroke-opacity");r.stroke_width=bB.getAttribute("stroke-width");r.stroke_dasharray=bB.getAttribute("stroke-dasharray");r.stroke_linejoin=bB.getAttribute("stroke-linejoin");r.stroke_linecap=bB.getAttribute("stroke-linecap")}if(bB.tagName=="text"){a6.font_size=bB.getAttribute("font-size");a6.font_family=bB.getAttribute("font-family")}F.requestSelector(bB).showGrips(true)}aY();if(bw!=bn||bv!=bm){var bG=aR.length;for(var bF=0;bF<bG;++bF){if(aR[bF]==null){break}if(aR[bF].tagName!="g"){F.requestSelector(aR[bF]).resize()}}}else{var by=bz.target;if(aR[0].nodeName=="path"&&aR[1]==null){z.select(by)}else{if(aR[0].nodeName=="text"&&aR[1]==null){L.select(by,bw,bv)}else{if(bz.shiftKey){if(bu!=by){bc.removeFromSelection([by])}}}}}}return;break;case"zoom":if(j!=null){j.setAttribute("display","none")}var bA=bz.shiftKey?0.5:2;call("zoomed",{x:Math.min(bn,bw),y:Math.min(bm,bv),width:Math.abs(bw-bn),height:Math.abs(bv-bm),factor:bA});return;case"fhpath":var bE=bs.getAttribute("points");var bt=bE.indexOf(",");if(bt>=0){bI=bE.indexOf(",",bt+1)>=0}else{bI=bE.indexOf(" ",bE.indexOf(" ")+1)>=0}if(bI){bs=z.smoothPolylineIntoPath(bs)}break;case"line":var bD=$(bs).attr(["x1","x2","y1","y2"]);bI=(bD.x1!=bD.x2||bD.y1!=bD.y2);break;case"foreignObject":case"square":case"rect":case"image":var bD=$(bs).attr(["width","height"]);bI=(bD.width!=0||bD.height!=0)||a1==="image";break;case"circle":bI=(bs.getAttribute("r")!=0);break;case"ellipse":var bD=$(bs).attr(["rx","ry"]);bI=(bD.rx!=null||bD.ry!=null);break;case"fhellipse":if((bh.maxx-bh.minx)>0&&(bh.maxy-bh.miny)>0){bs=c({element:"ellipse",curStyles:true,attr:{cx:(bh.minx+bh.maxx)/2,cy:(bh.miny+bh.maxy)/2,rx:(bh.maxx-bh.minx)/2,ry:(bh.maxy-bh.miny)/2,id:C()}});call("changed",[bs]);bI=true}break;case"fhrect":if((bh.maxx-bh.minx)>0&&(bh.maxy-bh.miny)>0){bs=c({element:"rect",curStyles:true,attr:{x:bh.minx,y:bh.miny,width:(bh.maxx-bh.minx),height:(bh.maxy-bh.miny),id:C()}});call("changed",[bs]);bI=true}break;case"text":bI=true;a5([bs]);L.start(bs);break;case"path":bs=null;aG=true;var bK=z.mouseUp(bz,bs,bq,bp);bs=bK.element;bI=bK.keep;break;case"pathedit":bI=true;bs=null;z.mouseUp(bz);break;case"textedit":bI=false;bs=null;L.mouseUp(bz,bq,bp);break;case"rotate":bI=true;bs=null;a1="select";var bx=bc.finishUndoableChange();if(!bx.isEmpty()){aT(bx)}aY();break;default:break}var bH=aI("mouseUp",{event:bz,mouse_x:bq,mouse_y:bp},true);$.each(bH,function(bL,bM){if(bM){bI=bM.keep||bI;bs=bM.element;aG=bM.started||aG}});if(!bI&&bs!=null){bs.parentNode.removeChild(bs);bs=null;var by=bz.target;while(by.parentNode.parentNode.tagName=="g"){by=by.parentNode}if((a1!="path"||current_path_pts.length==0)&&by.parentNode.id!="selectorParentGroup"&&by.id!="svgcanvas"&&by.id!="svgroot"){a5([by],true);bc.setMode("select")}}else{if(bs!=null){bc.addedNew=true;var bJ=0.2,br;if(N.beginElement&&bs.getAttribute("opacity")!=aN.opacity){br=$(N).clone().attr({to:aN.opacity,dur:bJ}).appendTo(bs);br[0].beginElement()}else{bJ=0}setTimeout(function(){if(br){br.remove()}bs.setAttribute("opacity",aN.opacity);bs.setAttribute("style","pointer-events:inherit");ar(bs);if(a1=="path"){z.toEditMode(bs)}else{if(a1=="text"||a1=="image"||a1=="foreignObject"){a5([bs],true)}}aT(new a(bs));call("changed",[bs])},bJ*1000)}}aj=null};var bi=function(bp){bp.preventDefault();return false};$(aL).mousedown(bj).mousemove(bo).click(bi);$(window).mouseup(bk);$(aL).bind("mousewheel DOMMouseScroll",function(bq){if(!bq.shiftKey){return}bq.preventDefault();p=ai.getScreenCTM().inverse();var bp=P(bq.pageX,bq.pageY,p);var br={x:bp.x,y:bp.y,width:0,height:0};if(bq.wheelDelta){if(bq.wheelDelta>=120){br.factor=2}else{if(bq.wheelDelta<=-120){br.factor=0.5}}}else{if(bq.detail){if(bq.detail>0){br.factor=0.5}else{if(bq.detail<0){br.factor=2}}}}if(!br.factor){return}call("zoomed",br)})}());var aV=function(bg){$(bg).click(function(bh){bh.preventDefault()})};var L=bc.textActions=function(){var bp,bt;var bv;var bl;var bs;var bm;var bA=[];var bB,bu;var bw;var bi,bg;var bj;function bC(bD){var bE=(bv.value==="");if(!arguments.length){if(bE){bD=0}else{if(bv.selectionEnd!==bv.selectionStart){return}bD=bv.selectionEnd}}var bF;bF=bA[bD];if(!bE){bv.setSelectionRange(bD,bD)}bl=b("text_cursor");if(!bl){bl=document.createElementNS(aK,"line");az(bl,{id:"text_cursor",stroke:"#333","stroke-width":1});bl=b("selectorParentGroup").appendChild(bl)}if(!bm){bm=setInterval(function(){var bI=(bl.getAttribute("display")==="none");bl.setAttribute("display",bI?"inline":"none")},600)}var bH=bq(bF.x,bB.y);var bG=bq(bF.x,(bB.y+bB.height));az(bl,{x1:bH.x,y1:bH.y,x2:bG.x,y2:bG.y,visibility:"visible",display:"inline"});if(bs){bs.setAttribute("d","")}}function bn(bD,bG,bF){if(bD===bG){bC(bG);return}if(!bF){bv.setSelectionRange(bD,bG)}bs=b("text_selectblock");if(!bs){bs=document.createElementNS(aK,"path");az(bs,{id:"text_selectblock",fill:"green",opacity:0.5,style:"pointer-events:none"});b("selectorParentGroup").appendChild(bs)}var bJ=bA[bD];var bK=bA[bG];bl.setAttribute("visibility","hidden");var bM=bq(bJ.x,bB.y),bI=bq(bJ.x+(bK.x-bJ.x),bB.y),bE=bq(bJ.x,bB.y+bB.height),bL=bq(bJ.x+(bK.x-bJ.x),bB.y+bB.height);var bH="M"+bM.x+","+bM.y+" L"+bI.x+","+bI.y+" "+bL.x+","+bL.y+" "+bE.x+","+bE.y+"z";az(bs,{d:bH,display:"inline"})}function bo(bE,bD){var bG=G.createSVGPoint();bG.x=bE;bG.y=bD;if(bA.length==1){return 0}var bI=bp.getCharNumAtPosition(bG);if(bI<0){bI=bA.length-2;if(bE<=bA[0].x){bI=0}}else{if(bI>=bA.length-2){bI=bA.length-2}}var bH=bA[bI];var bF=bH.x+(bH.width/2);if(bE>bF){bI++}return bI}function by(bE,bD){bC(bo(bE,bD))}function bx(bD,bJ,bF){var bH=bv.selectionStart;var bG=bo(bD,bJ);var bI=Math.min(bH,bG);var bE=Math.max(bH,bG);bn(bI,bE,!bF)}function br(bG,bE){var bD={x:bG,y:bE};bD.x/=ac;bD.y/=ac;if(bw){var bF=P(bD.x,bD.y,bw.inverse());bD.x=bF.x;bD.y=bF.y}return bD}function bq(bG,bE){var bD={x:bG,y:bE};if(bw){var bF=P(bD.x,bD.y,bw);bD.x=bF.x;bD.y=bF.y}bD.x*=ac;bD.y*=ac;return bD}function bh(){if(bl){bl.setAttribute("visibility","hidden")}}function bz(bD){bn(0,bp.textContent.length);$(this).unbind(bD)}function bk(bK){if(!bj){return}var bL=P(bK.pageX,bK.pageY,p),bI=bL.x*ac,bG=bL.y*ac;var bM=br(bI,bG);var bF=bo(bM.x,bM.y);var bH=bp.textContent;var bE=bH.substr(0,bF).replace(/[a-z0-9]+$/i,"").length;var bD=bH.substr(bF).match(/^[a-z0-9]+/i);var bJ=(bD?bD[0].length:0)+bF;bn(bE,bJ);$(bK.target).click(bz);setTimeout(function(){$(bK.target).unbind("click",bz)},300)}return{select:function(bE,bD,bF){if(bt==bE){bp=bE;L.toEditMode(bD,bF)}else{bt=bE}},start:function(bD){bp=bD;L.toEditMode()},mouseDown:function(bE,bG,bF,bD){var bH=br(bF,bD);bv.focus();by(bH.x,bH.y);bi=bF;bg=bD},mouseMove:function(bE,bD){var bF=br(bE,bD);bx(bF.x,bF.y)},mouseUp:function(bF,bE,bD){var bG=br(bE,bD);bx(bG.x,bG.y,true);if(bi===bE&&bg===bD&&bF.target!==bp){L.toSelectMode(true)}},setCursor:bC,toEditMode:function(bD,bF){bj=false;a1="textedit";F.requestSelector(bp).showGrips(false);L.init();$(bp).css("cursor","text");if(!arguments.length){bC()}else{var bE=br(bD,bF);by(bE.x,bE.y)}setTimeout(function(){bj=true},300)},toSelectMode:function(bD){a1="select";clearInterval(bm);bm=null;if(bs){$(bs).attr("display","none")}if(bl){$(bl).attr("visibility","hidden")}$(bp).css("cursor","move");if(bD){aZ();$(bp).css("cursor","move");call("selected",[bp]);a5([bp],true)}if(bp&&!bp.textContent.length){bc.deleteSelectedElements()}$(bv).blur();bp=false},setInputElem:function(bD){bv=bD;$(bv).blur(bh)},clear:function(){bt=null;if(a1=="textedit"){L.toSelectMode()}},init:function(bH){if(!bp){return}if(!bp.parentNode){bp=aR[0];F.requestSelector(bp).showGrips(false)}var bI=bp.textContent;var bE=bI.length;var bD=bp.getAttribute("transform");bB=au(bp);bw=bD?B(bp):null;bA=Array(bE);bv.focus();$(bp).unbind("dblclick",bk).dblclick(bk);if(!bE){var bF={x:bB.x+(bB.width/2),width:0}}for(var bG=0;bG<bE;bG++){var bJ=bp.getStartPositionOfChar(bG);var bF=bp.getEndPositionOfChar(bG);bA[bG]={x:bJ.x,y:bB.y,width:bF.x-bJ.x,height:bB.height}}bA.push({x:bF.x,width:0});bn(bv.selectionStart,bv.selectionEnd,true)}}}();var z=this.pathActions=function(){var bg=false;var bz={};var bv;var bt;var bl={2:["x","y"],4:["x","y"],6:["x","y","x1","y1","x2","y2"],8:["x","y","x1","y1"],10:["x","y","r1","r2","angle","largeArcFlag","sweepFlag"],12:["x"],14:["y"]};function bE(){return bt}function bm(bG){bG.setAttribute("d",z.convertPath(bG))}function bq(bL,bN,bI){var bM=bL.pathSegList;if(a0.pathInsertItemBefore){bM.insertItemBefore(bN,bI);return}var bH=bM.numberOfItems;var bG=[];for(var bK=0;bK<bH;bK++){var bJ=bM.getItem(bK);bG.push(bJ)}bM.clear();for(var bK=0;bK<bH;bK++){if(bK==bI){bM.appendItem(bN)}bM.appendItem(bG[bK])}}function bp(bL,bI){var bH=bl[bL],bG=bH.length;var bJ=Array(bG);for(var bK=0;bK<bG;bK++){bJ[bK]=bI[bH[bK]]}return bJ}function bo(){var bH=b("pathpointgrip_container");if(!bH){var bG=b("selectorParentGroup");bH=bG.appendChild(document.createElementNS(aK,"g"));bH.id="pathpointgrip_container"}return bH}var br=function(bI,bG,bL){var bK=bo();var bJ=b("pathpointgrip_"+bI);if(!bJ){bJ=document.createElementNS(aK,"circle");az(bJ,{id:"pathpointgrip_"+bI,display:"none",r:4,fill:"#0FF",stroke:"#00F","stroke-width":2,cursor:"move",style:"pointer-events:all","xlink:title":aB.pathNodeTooltip});bJ=bK.appendChild(bJ);var bH=$("#pathpointgrip_"+bI);bH.dblclick(function(){if(bt){bt.setSegType()}})}if(bG&&bL){az(bJ,{cx:bG,cy:bL,display:"inline"})}return bJ};var bA=function(bG,bK){var bH=bG.index;var bI=br(bH);if(bK){var bJ=bk(bG);az(bI,{cx:bJ.x,cy:bJ.y,display:"inline"})}return bI};var bw=function(bI,bH){var bL=bI.index;var bM=b("segline_"+bL);if(!bM){var bK=bo();bM=document.createElementNS(aK,"path");az(bM,{id:"segline_"+bL,display:"none",fill:"none",stroke:"#0FF","stroke-width":2,style:"pointer-events:none",d:"M0,0 0,0"});bK.appendChild(bM)}if(bH){var bG=bI.prev;if(!bG){bM.setAttribute("display","none");return bM}var bO=bk(bG);bj(2,0,[bO.x,bO.y],bM);var bN=bp(bI.type,bI.item,true);for(var bJ=0;bJ<bN.length;bJ+=2){var bO=bk(bI,{x:bN[bJ],y:bN[bJ+1]});bN[bJ]=bO.x;bN[bJ+1]=bO.y}bj(bI.type,1,bN,bM)}return bM};var bh=function(bK){var bQ=bK.item;var bO=bK.index;if(!("x1" in bQ)||!("x2" in bQ)){return null}var bM={};var bN=bo();var bH=bt.segs[bO-1].item;var bJ=[bH,bQ];for(var bL=1;bL<3;bL++){var bG=bO+"c"+bL;var bS=bM["c"+bL+"_line"]=b("ctrlLine_"+bG);if(!bS){bS=document.createElementNS(aK,"line");az(bS,{id:"ctrlLine_"+bG,stroke:"#555","stroke-width":1,style:"pointer-events:none"});bN.appendChild(bS)}var bR=bk(bK,{x:bQ["x"+bL],y:bQ["y"+bL]});var bI=bk(bK,{x:bJ[bL-1].x,y:bJ[bL-1].y});az(bS,{x1:bR.x,y1:bR.y,x2:bI.x,y2:bI.y,display:"inline"});bM["c"+bL+"_line"]=bS;var bP=bM["c"+bL]=b("ctrlpointgrip_"+bG);if(!bP){bP=document.createElementNS(aK,"circle");az(bP,{id:"ctrlpointgrip_"+bG,display:"none",r:4,fill:"#0FF",stroke:"#55F","stroke-width":1,cursor:"move",style:"pointer-events:all","xlink:title":aB.pathCtrlPtTooltip});bN.appendChild(bP)}az(bP,{cx:bR.x,cy:bR.y,display:"inline"});bM["c"+bL]=bP}return bM};function bk(bG,bK){var bH={x:bK?bK.x:bG.item.x,y:bK?bK.y:bG.item.y},bJ=bG.path;if(bJ.matrix){var bI=P(bH.x,bH.y,bJ.matrix);bH=bI}bH.x*=ac;bH.y*=ac;return bH}function by(bI,bH){var bG={x:bI.x,y:bI.y};if(bH.matrix){var bI=P(bG.x,bG.y,bH.imatrix);bG.x=bI.x;bG.y=bI.y}bG.x/=ac;bG.y/=ac;return bG}function bu(bH,bJ){var bI=this;bI.index=bH;bI.selected=false;bI.type=bJ.pathSegType;var bG;bI.addGrip=function(){bG=bI.ptgrip=bA(bI,true);bI.ctrlpts=bh(bI,true);bI.segsel=bw(bI,true)};bI.item=bJ;bI.show=function(bK){if(bG){bG.setAttribute("display",bK?"inline":"none");bI.segsel.setAttribute("display",bK?"inline":"none");bI.showCtrlPts(bK)}};bI.select=function(bK){if(bG){bG.setAttribute("stroke",bK?"#0FF":"#00F");bI.segsel.setAttribute("display",bK?"inline":"none");if(bI.ctrlpts){bI.selectCtrls(bK)}bI.selected=bK}};bI.selectCtrls=function(bK){$("#ctrlpointgrip_"+bI.index+"c1, #ctrlpointgrip_"+bI.index+"c2").attr("fill",bK?"#0FF":"#EEE")};bI.update=function(bK){bJ=bI.item;if(bG){var bL=bk(bI);az(bG,{cx:bL.x,cy:bL.y});bw(bI,true);if(bI.ctrlpts){if(bK){bI.item=bt.elem.pathSegList.getItem(bI.index);bI.type=bI.item.pathSegType}bh(bI)}}};bI.move=function(bM,bL){var bO=bI.item;var bR=bI;if(bR.ctrlpts){var bK=[bO.x+=bM,bO.y+=bL,bO.x1,bO.y1,bO.x2+=bM,bO.y2+=bL]}else{var bK=[bO.x+=bM,bO.y+=bL]}bj(bR.type,bR.index,bK);if(bI.next&&bI.next.ctrlpts){var bN=bI.next.item;var bP=[bN.x,bN.y,bN.x1+=bM,bN.y1+=bL,bN.x2,bN.y2];bj(bI.next.type,bI.next.index,bP)}if(bI.mate){var bO=bI.mate.item;var bQ=[bO.x+=bM,bO.y+=bL];bj(bI.mate.type,bI.mate.index,bQ)}bI.update(true);if(bI.next){bI.next.update(true)}};bI.setLinked=function(bL){var bK,bP,bN;if(bL==2){bP=1;bK=bI.next;if(!bK){return}bN=bI.item}else{bP=2;bK=bI.prev;if(!bK){return}bN=bK.item}var bM=bK.item;bM["x"+bP]=bN.x+(bN.x-bI.item["x"+bL]);bM["y"+bP]=bN.y+(bN.y-bI.item["y"+bL]);var bO=[bM.x,bM.y,bM.x1,bM.y1,bM.x2,bM.y2];bj(bK.type,bK.index,bO);bK.update(true)};bI.moveCtrl=function(bM,bL,bK){var bN=bI.item;bN["x"+bM]+=bL;bN["y"+bM]+=bK;var bO=[bN.x,bN.y,bN.x1,bN.y1,bN.x2,bN.y2];bj(bI.type,bI.index,bO);bI.update(true)};bI.setType=function(bL,bK){bj(bL,bH,bK);bI.type=bL;bI.item=bt.elem.pathSegList.getItem(bH);bI.showCtrlPts(bL===6);bI.ctrlpts=bh(bI);bI.update(true)};bI.showCtrlPts=function(bL){if(bI.ctrlpts){for(var bK in bI.ctrlpts){bI.ctrlpts[bK].setAttribute("display",bL?"inline":"none")}}}}function bC(bG){if(!bG||bG.tagName!=="path"){return false}var bH=bt=this;this.elem=bG;this.segs=[];this.selected_pts=[];this.init=function(){$(bo()).find("*").attr("display","none");var bL=bG.pathSegList;var bR=bL.numberOfItems;bH.segs=[];bH.selected_pts=[];bH.first_seg=null;for(var bO=0;bO<bR;bO++){var bS=bL.getItem(bO);var bP=new bu(bO,bS);bP.path=bH;bH.segs.push(bP)}var bJ=bH.segs;var bQ=null;for(var bO=0;bO<bR;bO++){var bN=bJ[bO];var bM=(bO+1)>=bR?null:bJ[bO+1];var bI=(bO-1)<0?null:bJ[bO-1];if(bN.type===2){if(bI&&bI.type!==1){var bK=bJ[bQ];bK.next=bJ[bQ+1];bK.next.prev=bK;bK.addGrip()}bQ=bO}else{if(bM&&bM.type===1){bN.next=bJ[bQ+1];bN.next.prev=bN;bN.mate=bJ[bQ];bN.addGrip();if(bH.first_seg==null){bH.first_seg=bN}}else{if(!bM){if(bN.type!==1){var bK=bJ[bQ];bK.next=bJ[bQ+1];bK.next.prev=bK;bK.addGrip();bN.addGrip();if(!bH.first_seg){bH.first_seg=bJ[bQ]}}}else{if(bN.type!==1){bN.addGrip();if(bM&&bM.type!==2){bN.next=bM;bN.next.prev=bN}}}}}}return bH};this.init();this.update=function(){if(aq(bH.elem)){bH.matrix=B(bt.elem);bH.imatrix=bH.matrix.inverse()}bH.eachSeg(function(bI){this.item=bG.pathSegList.getItem(bI);this.update()});return bH};this.eachSeg=function(bL){var bI=bH.segs.length;for(var bK=0;bK<bI;bK++){var bJ=bL.call(bH.segs[bK],bK);if(bJ===false){break}}};this.addSeg=function(bT){var bS=bH.segs[bT];if(!bS.prev){return}var bP=bS.prev;var bO;switch(bS.item.pathSegType){case 4:var bV=(bS.item.x+bP.item.x)/2;var bU=(bS.item.y+bP.item.y)/2;bO=bG.createSVGPathSegLinetoAbs(bV,bU);break;case 6:var bX=(bP.item.x+bS.item.x1)/2;var bN=(bS.item.x1+bS.item.x2)/2;var bR=(bS.item.x2+bS.item.x)/2;var bM=(bX+bN)/2;var bK=(bN+bR)/2;var bV=(bM+bK)/2;var bW=(bP.item.y+bS.item.y1)/2;var bL=(bS.item.y1+bS.item.y2)/2;var bQ=(bS.item.y2+bS.item.y)/2;var bJ=(bW+bL)/2;var bI=(bL+bQ)/2;var bU=(bJ+bI)/2;bO=bG.createSVGPathSegCurvetoCubicAbs(bV,bU,bX,bW,bM,bJ);var bY=[bS.item.x,bS.item.y,bK,bI,bR,bQ];bj(bS.type,bT,bY);break}bq(bG,bO,bT)};this.deleteSeg=function(bJ){var bI=bH.segs[bJ];var bM=bG.pathSegList;bI.show(false);var bK=bI.next;if(bI.mate){var bN=[bK.item.x,bK.item.y];bj(2,bK.index,bN);bj(4,bI.index,bN);bM.removeItem(bI.mate.index)}else{if(!bI.prev){var bL=bI.item;var bN=[bK.item.x,bK.item.y];bj(2,bI.next.index,bN);bM.removeItem(bJ)}else{bM.removeItem(bJ)}}};this.endChanges=function(bJ){if(aC){bm(bH.elem)}var bI=new av(bG,{d:bH.last_d},bJ);aT(bI);call("changed",[bG])};this.subpathIsClosed=function(bJ){var bI=false;bt.eachSeg(function(bK){if(bK<=bJ){return true}if(this.type===2){return false}else{if(this.type===1){bI=true;return false}}});return bI};this.addPtsToSelection=function(bK){if(!$.isArray(bK)){bK=[bK]}for(var bL=0;bL<bK.length;bL++){var bJ=bK[bL];var bI=bH.segs[bJ];if(bI.ptgrip){if($.inArray(bJ,bH.selected_pts)==-1&&bJ>=0){bH.selected_pts.push(bJ)}}}bH.selected_pts.sort();var bL=bH.selected_pts.length,bN=new Array(bL);while(bL--){var bM=bH.selected_pts[bL];var bI=bH.segs[bM];bI.select(true);bN[bL]=bI.ptgrip}z.canDeleteNodes=true;z.closed_subpath=bH.subpathIsClosed(bH.selected_pts[0]);call("selected",bN)};this.removePtFromSelection=function(bI){var bJ=$.inArray(bI,bH.selected_pts);if(bJ==-1){return}bH.segs[bI].select(false);bH.selected_pts.splice(bJ,1)};this.clearSelection=function(){bH.eachSeg(function(bI){this.select(false)});bH.selected_pts=[]};this.selectPt=function(bJ,bI){bH.clearSelection();if(bJ==null){bH.eachSeg(function(bK){if(this.prev){bJ=bK}})}bH.addPtsToSelection(bJ);if(bI){bH.dragctrl=bI;if(bs){bH.segs[bJ].setLinked(bI)}}};this.storeD=function(){this.last_d=bG.getAttribute("d")};this.show=function(bI){bH.eachSeg(function(){this.show(bI)});if(bI){bH.selectPt(bH.first_seg.index)}return bH};this.movePts=function(bL,bK){var bJ=bH.selected_pts.length;while(bJ--){var bI=bH.segs[bH.selected_pts[bJ]];bI.move(bL,bK)}};this.moveCtrl=function(bK,bJ){var bI=bH.segs[bH.selected_pts[0]];bI.moveCtrl(bH.dragctrl,bK,bJ);if(bs){bI.setLinked(bH.dragctrl)}};this.setSegType=function(bP){bH.storeD();var bY=bH.selected_pts.length;var bU;while(bY--){var bW=bH.selected_pts[bY];var bJ=bH.segs[bW];var bV=bJ.prev;if(!bV){continue}if(!bP){bU="Toggle Path Segment Type";var bT=bJ.type;bP=(bT==6)?4:6}bP=bP-0;var bQ=bJ.item.x;var bO=bJ.item.y;var bL=bV.item.x;var bK=bV.item.y;var bX;switch(bP){case 6:if(bJ.olditem){var bI=bJ.olditem;bX=[bQ,bO,bI.x1,bI.y1,bI.x2,bI.y2]}else{var bS=bQ-bL;var bR=bO-bK;var bN=(bL+(bS/3));var bM=(bK+(bR/3));var b0=(bQ-(bS/3));var bZ=(bO-(bR/3));bX=[bQ,bO,bN,bM,b0,bZ]}break;case 4:bX=[bQ,bO];bJ.olditem=bJ.item;break}bJ.setType(bP,bX)}bt.endChanges(bU);return}}function bi(bG){var bH=bz[bG.id];if(!bH){bH=bz[bG.id]=new bC(bG)}return bH}var bx=[],bv=null,bD=[],bs=false,bB=false;var bn=function(bJ){var bP=bJ.points;var bN=bP.numberOfItems;if(bN>=4){var bH=bP.getItem(0),bL=null;var bO=[];bO.push(["M",bH.x,",",bH.y," C"].join(""));for(var bK=1;bK<=(bN-4);bK+=3){var bG=bP.getItem(bK);var bS=bP.getItem(bK+1);var bI=bP.getItem(bK+2);if(bL){var bQ=X(bL,bG,bH);if(bQ&&bQ.length==2){var bM=bO[bO.length-1].split(",");bM[2]=bQ[0].x;bM[3]=bQ[0].y;bO[bO.length-1]=bM.join(",");bG=bQ[1]}}bO.push([bG.x,bG.y,bS.x,bS.y,bI.x,bI.y].join(","));bH=bI;bL=bS}bO.push("L");for(;bK<bN;++bK){var bR=bP.getItem(bK);bO.push([bR.x,bR.y].join(","))}bO=bO.join(" ");bJ=c({element:"path",curStyles:true,attr:{id:C(),d:bO,fill:"none"}});call("changed",[bJ])}return bJ};var bj=function(bP,bO,bQ,bG){var bR=bG||bE().elem;var bH="createSVGPathSeg"+bx[bP];var bK=bR[bH].apply(bR,bQ);if(a0.pathReplaceItem){bR.pathSegList.replaceItem(bK,bO)}else{var bI=bR.pathSegList;var bN=bI.numberOfItems;var bM=[];for(var bL=0;bL<bN;bL++){var bJ=bI.getItem(bL);bM.push(bJ)}bI.clear();for(var bL=0;bL<bN;bL++){if(bL==bO){bI.appendItem(bK)}else{bI.appendItem(bM[bL])}}}};var bF=function(){var bR=bt.elem;var bW=aq(bR,true);if(!bW){return}u[0]=bt.oldbbox;var bM=au(bR),bQ=u[0],bH=bQ.x+bQ.width/2,bG=bQ.y+bQ.height/2,b0=bM.x+bM.width/2,bY=bM.y+bM.height/2,bO=b0-bH,bN=bY-bG,bP=Math.sqrt(bO*bO+bN*bN),bK=Math.atan2(bN,bO)+bW;b0=bP*Math.cos(bK)+bH;bY=bP*Math.sin(bK)+bG;var bU=function(b1,b2){bO=b1-bH;bN=b2-bG;bP=Math.sqrt(bO*bO+bN*bN);bK=Math.atan2(bN,bO)+bW;bO=bP*Math.cos(bK)+bH;bN=bP*Math.sin(bK)+bG;bO-=b0;bN-=bY;bP=Math.sqrt(bO*bO+bN*bN);bK=Math.atan2(bN,bO)-bW;return{x:(bP*Math.cos(bK)+b0)/1,y:(bP*Math.sin(bK)+bY)/1}};var bX=bR.pathSegList,bT=bX.numberOfItems;while(bT){bT-=1;var bV=bX.getItem(bT),bJ=bV.pathSegType;if(bJ==1){continue}var bZ=bU(bV.x,bV.y),bS=[bZ.x,bZ.y];if(bV.x1!=null&&bV.x2!=null){c_vals1=bU(bV.x1,bV.y1);c_vals2=bU(bV.x2,bV.y2);bS.splice(bS.length,0,c_vals1.x,c_vals1.y,c_vals2.x,c_vals2.y)}bj(bJ,bT,bS)}bM=au(bR);u[0].x=bM.x;u[0].y=bM.y;u[0].width=bM.width;u[0].height=bM.height;var bI=G.createSVGTransform(),bL=aQ(bR);bI.setRotate((bW*180/Math.PI),b0,bY);bL.replaceItem(bI,0)};return{init:function(){bx=[0,"ClosePath"];var bG=["Moveto","Lineto","CurvetoCubic","CurvetoQuadratic","Arc","LinetoHorizontal","LinetoVertical","CurvetoCubicSmooth","CurvetoQuadraticSmooth"];$.each(bG,function(bH,bI){bx.push(bI+"Abs");bx.push(bI+"Rel")})},getPath:function(){return bt},mouseDown:function(bO,bI,bN,bM){if(a1=="path"){return}if(!bt){return}bt.storeD();var bG=bO.target.id;if(bG.substr(0,14)=="pathpointgrip_"){var bH=bt.cur_pt=parseInt(bG.substr(14));bt.dragging=[bN,bM];var bL=bt.segs[bH];if(!bO.shiftKey){if(bt.selected_pts.length<=1||!bL.selected){bt.clearSelection()}bt.addPtsToSelection(bH)}else{if(bL.selected){bt.removePtFromSelection(bH)}else{bt.addPtsToSelection(bH)}}}else{if(bG.indexOf("ctrlpointgrip_")==0){bt.dragging=[bN,bM];var bK=bG.split("_")[1].split("c");var bH=bK[0]-0;var bJ=bK[1]-0;bt.selectPt(bH,bJ)}}if(!bt.dragging){if(j==null){j=F.getRubberBandBox()}az(j,{x:bN*ac,y:bM*ac,width:0,height:0,display:"inline"},100)}},mouseMove:function(bJ,bG){bB=true;if(a1=="path"){var bI=b("path_stretch_line");if(bI){bI.setAttribute("x2",bJ);bI.setAttribute("y2",bG)}return}if(bt.dragging){var bM=by({x:bt.dragging[0],y:bt.dragging[1]},bt);var bH=by({x:bJ,y:bG},bt);var bL=bH.x-bM.x;var bK=bH.y-bM.y;bt.dragging=[bJ,bG];if(bt.dragctrl){bt.moveCtrl(bL,bK)}else{bt.movePts(bL,bK)}}else{bt.selected_pts=[];bt.eachSeg(function(bP){var bN=this;if(!bN.next&&!bN.prev){return}var bQ=bN.item;var bO=j.getBBox();var bT=bk(bN);var bS={x:bT.x,y:bT.y,width:0,height:0};var bR=aw.rectsIntersect(bO,bS);this.select(bR);if(bR){bt.selected_pts.push(bN.index)}})}},mouseUp:function(bR,bI,bH,bG){if(a1=="path"){var bO=bH/ac,bN=bG/ac,bJ=b("path_stretch_line");if(!bJ){bJ=document.createElementNS(aK,"line");az(bJ,{id:"path_stretch_line",stroke:"#22C","stroke-width":"0.5"});bJ=b("selectorParentGroup").appendChild(bJ)}bJ.setAttribute("display","inline");var b1=null;if(bD.length==0){bD.push(bO);bD.push(bN);d_attr="M"+bO+","+bN+" ";c({element:"path",curStyles:true,attr:{d:d_attr,id:a7(),opacity:aN.opacity/2,}});az(bJ,{x1:bH,y1:bG,x2:bH,y2:bG});var bL=bg?bt.segs.length:0;br(bL,bH,bG)}else{var bX=bD.length;var bK=6/ac;var bW=false;while(bX){bX-=2;var bS=bD[bX],bQ=bD[bX+1];if(bO>=(bS-bK)&&bO<=(bS+bK)&&bN>=(bQ-bK)&&bN<=(bQ+bK)){bW=true;break}}var bU=C();if(bU in bz){delete bz[bU]}var b0=b(bU);var bZ=bD.length;if(bW){if(bX==0&&bZ>=6){var b3=bD[0];var b2=bD[1];d_attr+=["L",b3,",",b2,"z"].join("");b0.setAttribute("d",d_attr)}else{if(bZ<3){b1=false;return b1}}$(bJ).remove();bI=b0;bD=[];aG=false;if(bg){if(bt.matrix){D(b0,{},bt.matrix.inverse())}var b4=b0.getAttribute("d");var bY=$(bt.elem).attr("d");$(bt.elem).attr("d",bY+b4);$(b0).remove();if(bt.matrix){bF()}bt.init();z.toEditMode(bt.elem);bt.selectPt();return false}}else{if(!$.contains(aL,Z(bR))){console.log("Clicked outside canvas");return false}var bV=bD[bZ-2],bT=bD[bZ-1];if(bR.shiftKey){var bP=aw.snapToAngle(bV,bT,bO,bN);bO=bP.x;bN=bP.y}bD.push(bO);bD.push(bN);d_attr+="L"+Q(bO)+","+Q(bN)+" ";b0.setAttribute("d",d_attr);bO*=ac;bN*=ac;az(bJ,{x1:bO,y1:bN,x2:bO,y2:bN});var bL=(bD.length/2-1);if(bg){bL+=bt.segs.length}br(bL,bO,bN)}b1=true}return{keep:b1,element:bI}}if(bt.dragging){var bM=bt.cur_pt;bt.dragging=false;bt.dragctrl=false;bt.update();if(bB){bt.endChanges("Move path point(s)")}if(!bR.shiftKey&&!bB){bt.selectPt(bM)}}else{if(j&&j.getAttribute("display")!="none"){j.setAttribute("display","none");if(j.getAttribute("width")<=2&&j.getAttribute("height")<=2){z.toSelectMode(bR.target)}}else{z.toSelectMode(bR.target)}}bB=false},clearData:function(){bz={}},toEditMode:function(bG){bt=bi(bG);a1="pathedit";aZ();bt.show(true).update();bt.oldbbox=au(bt.elem);bg=false},toSelectMode:function(bG){var bH=(bG==bt.elem);a1="select";bt.show(false);bv=false;aZ();if(bt.matrix){bF()}if(bH){call("selected",[bG]);a5([bG],true)}},addSubPath:function(bG){if(bG){a1="path";bg=true}else{z.clear(true);z.toEditMode(bt.elem)}},select:function(bG){if(bv==bG){z.toEditMode(bG);a1="pathedit"}else{bv=bG}},reorient:function(){var bI=aR[0];if(!bI){return}var bJ=aq(bI);if(bJ==0){return}var bG=new aA("Reorient path");var bH={d:bI.getAttribute("d"),transform:bI.getAttribute("transform")};bG.addSubCommand(new av(bI,bH));aZ();this.resetOrientation(bI);aT(bG);bi(bI).show(false).matrix=null;this.clear();a5([bI],true);call("changed",aR)},clear:function(bG){bv=null;if(a1=="path"&&bD.length>0){var bH=b(C());$(b("path_stretch_line")).remove();$(bH).remove();$(b("pathpointgrip_container")).find("*").attr("display","none");bD=[];aG=false}else{if(a1=="pathedit"){this.toSelectMode()}}if(bt){bt.init().show(false)}},resetOrientation:function(bO){if(bO==null||bO.nodeName!="path"){return false}var bK=aQ(bO);var bG=s(bK).matrix;bK.clear();bO.removeAttribute("transform");var bH=bO.pathSegList;var bL=bH.numberOfItems;for(var bJ=0;bJ<bL;++bJ){var bI=bH.getItem(bJ);var bM=bI.pathSegType;if(bM==1){continue}var bN=[];$.each(["",1,2],function(bQ,bT){var bP=bI["x"+bT],bS=bI["y"+bT];if(bP&&bS){var bR=P(bP,bS,bG);bN.splice(bN.length,0,bR.x,bR.y)}});bj(bM,bJ,bN,bO)}},zoomChange:function(){if(a1=="pathedit"){bt.update()}},getNodePoint:function(){var bH=bt.selected_pts.length?bt.selected_pts[0]:1;var bG=bt.segs[bH];return{x:bG.item.x,y:bG.item.y,type:bG.type}},linkControlPoints:function(bG){bs=bG},clonePathNode:function(){bt.storeD();var bH=bt.selected_pts;var bG=bt.segs;var bI=bH.length;var bK=[];while(bI--){var bJ=bH[bI];bt.addSeg(bJ);bK.push(bJ+bI);bK.push(bJ+bI+1)}bt.init().addPtsToSelection(bK);bt.endChanges("Clone path node(s)")},opencloseSubPath:function(){var bG=bt.selected_pts;if(bG.length!==1){return}var bJ=bt.elem;var bQ=bJ.pathSegList;var bP=bQ.numberOfItems;var bO=bG[0];var bR=null;var bI=null;bt.eachSeg(function(bW){if(this.type===2&&bW<=bO){bI=this.item}if(bW<=bO){return true}if(this.type===2){bR=bW;return false}else{if(this.type===1){bR=false;return false}}});if(bR==null){bR=bt.segs.length-1}if(bR!==false){var bK=bJ.createSVGPathSegLinetoAbs(bI.x,bI.y);var bT=bJ.createSVGPathSegClosePath();if(bR==bt.segs.length-1){bQ.appendItem(bK);bQ.appendItem(bT)}else{bq(bJ,bT,bR);bq(bJ,bK,bR)}bt.init().selectPt(bR+1);return}var bL=bt.segs[bO];if(bL.mate){bQ.removeItem(bO);bQ.removeItem(bO);bt.init().selectPt(bO-1);return}var bH,bV;for(var bM=0;bM<bQ.numberOfItems;bM++){var bS=bQ.getItem(bM);if(bS.pathSegType===2){bH=bM}else{if(bM===bO){bQ.removeItem(bH)}else{if(bS.pathSegType===1&&bO<bM){bV=bM-1;bQ.removeItem(bM);break}}}}var bN=(bO-bH)-1;while(bN--){bq(bJ,bQ.getItem(bH),bV)}var bU=bQ.getItem(bH);bj(2,bH,[bU.x,bU.y]);var bM=bO;bt.init().selectPt(0)},deletePathNode:function(){if(!z.canDeleteNodes){return}bt.storeD();var bG=bt.selected_pts;var bH=bG.length;while(bH--){var bK=bG[bH];bt.deleteSeg(bK)}var bI=function(){var bN=bt.elem.pathSegList;var bM=bN.numberOfItems;var bL=function(bT,bS){while(bS--){bN.removeItem(bT)}};if(bM<=1){return true}while(bM--){var bQ=bN.getItem(bM);if(bQ.pathSegType===1){var bP=bN.getItem(bM-1);var bO=bN.getItem(bM-2);if(bP.pathSegType===2){bL(bM-1,2);bI();break}else{if(bO.pathSegType===2){bL(bM-2,3);bI();break}}}else{if(bQ.pathSegType===2){if(bM>0){var bR=bN.getItem(bM-1).pathSegType;if(bR===2){bL(bM-1,1);bI();break}else{if(bR===1&&bN.numberOfItems-1===bM){bL(bM,1);bI();break}}}}}}return false};bI();if(bt.elem.pathSegList.numberOfItems<=1){z.toSelectMode(bt.elem);bc.deleteSelectedElements();return}bt.init();bt.clearSelection();if(window.opera){var bJ=$(bt.elem);bJ.attr("d",bJ.attr("d"))}bt.endChanges("Delete path node(s)")},smoothPolylineIntoPath:bn,setSegType:function(bG){bt.setSegType(bG)},moveNode:function(bG,bK){var bI=bt.selected_pts;if(!bI.length){return}bt.storeD();var bH=bt.segs[bI[0]];var bJ={x:0,y:0};bJ[bG]=bK-bH.item[bG];bH.move(bJ.x,bJ.y);bt.endChanges("Move path point")},fixEnd:function(bM){var bI=bM.pathSegList;var bH=bI.numberOfItems;var bG;for(var bJ=0;bJ<bH;++bJ){var bL=bI.getItem(bJ);if(bL.pathSegType===2){bG=bL}if(bL.pathSegType===1){var bK=bI.getItem(bJ-1);if(bK.x!=bG.x||bK.y!=bG.y){var bN=bM.createSVGPathSegLinetoAbs(bG.x,bG.y);bq(bM,bN,bJ);z.fixEnd(bM);break}}}if(aC){bm(bM)}},convertPath:function(bP,bO){var bG=bP.pathSegList;var bT=bG.numberOfItems;var bR=0,bQ=0;var bX="";var bL=null;for(var bS=0;bS<bT;++bS){var bV=bG.getItem(bS);var bN=bV.x||0,bM=bV.y||0,bW=bV.x1||0,bI=bV.y1||0,bU=bV.x2||0,bH=bV.y2||0;var bJ=bV.pathSegType;var bY=E[bJ]["to"+(bO?"Lower":"Upper")+"Case"]();var bK=function(bZ,b0,b1){var b2="";var b0=b0?" "+b0.join(" "):"";var b1=b1?a3(b1):"";$.each(bZ,function(b3,b4){bZ[b3]=a3(b4)});bX+=bY+bZ.join(" ")+b0+b1};switch(bJ){case 1:bX+="z";break;case 12:bN-=bR;case 13:if(bO){bR+=bN}else{bN+=bR;bR=bN}bK([[bN]]);break;case 14:bM-=bQ;case 15:if(bO){bQ+=bM}else{bM+=bQ;bQ=bM}bK([[bM]]);break;case 2:case 4:case 18:bN-=bR;bM-=bQ;case 5:case 3:if(bL&&bG.getItem(bS-1).pathSegType===1&&!bO){bR=bL[0];bQ=bL[1]}case 19:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bM+=bQ;bR=bN;bQ=bM}if(bJ===3){bL=[bR,bQ]}bK([[bN,bM]]);break;case 6:bN-=bR;bW-=bR;bU-=bR;bM-=bQ;bI-=bQ;bH-=bQ;case 7:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bW+=bR;bU+=bR;bM+=bQ;bI+=bQ;bH+=bQ;bR=bN;bQ=bM}bK([[bW,bI],[bU,bH],[bN,bM]]);break;case 8:bN-=bR;bW-=bR;bM-=bQ;bI-=bQ;case 9:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bW+=bR;bM+=bQ;bI+=bQ;bR=bN;bQ=bM}bK([[bW,bI],[bN,bM]]);break;case 10:bN-=bR;bM-=bQ;case 11:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bM+=bQ;bR=bN;bQ=bM}bK([[bV.r1,bV.r2]],[bV.angle,(bV.largeArcFlag?1:0),(bV.sweepFlag?1:0)],[bN,bM]);break;case 16:bN-=bR;bU-=bR;bM-=bQ;bH-=bQ;case 17:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bU+=bR;bM+=bQ;bH+=bQ;bR=bN;bQ=bM}bK([[bU,bH],[bN,bM]]);break}}return bX}}}();z.init();var v=this.removeUnusedDefElems=function(){var bp=ai.getElementsByTagNameNS(aK,"defs");if(!bp||!bp.length){return 0}var bt=[],br=0;var bu=["fill","stroke","filter","marker-start","marker-mid","marker-end"];var bn=bu.length;var bv=ai.getElementsByTagNameNS(aK,"*");var bi=bv.length;for(var bq=0;bq<bi;bq++){var bk=bv[bq];for(var bo=0;bo<bn;bo++){var bl=ak(bk.getAttribute(bu[bo]));if(bl){bt.push(bl.substr(1))}}var bg=bk.getAttributeNS(aE,"href");if(bg&&bg.indexOf("#")==0){bt.push(bg.substr(1))}}var bm=$(ai).find("linearGradient, radialGradient, filter, marker");defelem_ids=[],bq=bm.length;while(bq--){var bs=bm[bq];var bh=bs.id;if($.inArray(bh,bt)==-1){bs.parentNode.removeChild(bs);br++}}var bq=bp.length;while(bq--){var bj=bp[bq];if(!bj.getElementsByTagNameNS(aK,"*").length){bj.parentNode.removeChild(bj)}}return br};var i=this.svgCanvasToString=function(){while(v()>0){}z.clear(true);$.each(ai.childNodes,function(bh,bi){if(bh&&bi.nodeType==8&&bi.data.indexOf("Created with")!=-1){ai.insertBefore(bi,ai.firstChild)}});var bg=aU(ai,0);return bg};var aU=this.svgToString=function(bi,bh){var bj=new Array(),bn=aw.toXml;if(bi){ar(bi);var bu=bi.attributes,bq,bl,bs=bi.childNodes;for(var bl=0;bl<bh;bl++){bj.push(" ")}bj.push("<");bj.push(bi.nodeName);if(bi.id=="svgcontent"){var br=d();bj.push(' width="'+br.w+'" height="'+br.h+'" xmlns="'+aK+'"');var bm={};$(bi).find("*").andSelf().each(function(){var bv=this;$.each(this.attributes,function(bx,bw){var by=bw.namespaceURI;if(by&&!bm[by]&&am[by]!=="xmlns"&&am[by]!=="xml"){bm[by]=true;bj.push(" xmlns:"+am[by]+'="'+by+'"')}})});var bl=bu.length;while(bl--){bq=bu.item(bl);var bp=bn(bq.nodeValue);if(bq.nodeName.indexOf("xmlns:")===0){continue}if(bp!=""&&$.inArray(bq.localName,["width","height","xmlns","x","y","viewBox","id","overflow"])==-1){if(!bq.namespaceURI||am[bq.namespaceURI]){bj.push(" ");bj.push(bq.nodeName);bj.push('="');bj.push(bp);bj.push('"')}}}}else{for(var bl=bu.length-1;bl>=0;bl--){bq=bu.item(bl);var bp=bn(bq.nodeValue);if($.inArray(bq.localName,["-moz-math-font-style","_moz-math-font-style"])!==-1){continue}if(bp!=""){if(bp.indexOf("pointer-events")==0){continue}if(bq.localName=="class"&&bp.indexOf("se_")==0){continue}bj.push(" ");if(bq.localName=="d"){bp=z.convertPath(bi,true)}if(!isNaN(bp)){bp=a3(bp)}if(ah.apply&&bi.nodeName=="image"&&bq.localName=="href"&&ah.images&&ah.images=="embed"){var bk=aX[bp];if(bk){bp=bk}}if(!bq.namespaceURI||bq.namespaceURI==aK||am[bq.namespaceURI]){bj.push(bq.nodeName);bj.push('="');bj.push(bp);bj.push('"')}}}}if(bi.hasChildNodes()){bj.push(">");bh++;var bo=false;for(var bl=0;bl<bs.length;bl++){var bg=bs.item(bl);switch(bg.nodeType){case 1:bj.push("\n");bj.push(aU(bs.item(bl),bh));break;case 3:var bt=bg.nodeValue.replace(/^\s+|\s+$/g,"");if(bt!=""){bo=true;bj.push(bn(bt)+"")}break;case 8:bj.push("\n");bj.push(new Array(bh+1).join(" "));bj.push("<!--");bj.push(bg.data);bj.push("-->");break}}bh--;if(!bo){bj.push("\n");for(var bl=0;bl<bh;bl++){bj.push(" ")}}bj.push("</");bj.push(bi.nodeName);bj.push(">")}else{bj.push("/>")}}return bj.join("")};this.embedImage=function(bg,bh){$(new Image()).load(function(){var bi=document.createElement("canvas");bi.width=this.width;bi.height=this.height;bi.getContext("2d").drawImage(this,0,0);try{var bj=";svgedit_url="+encodeURIComponent(bg);bj=bi.toDataURL().replace(";base64",bj+";base64");aX[bg]=bj}catch(bk){aX[bg]=false}ad=bg;if(bh){bh(aX[bg])}}).attr("src",bg)};this.setGoodImage=function(bg){ad=bg};this.open=function(){};this.save=function(bg){aZ();if(bg){$.extend(ah,bg)}ah.apply=true;var bh=i();call("saved",bh)};this.rasterExport=function(){aZ();var bh=[];var bg={feGaussianBlur:aB.exportNoBlur,image:aB.exportNoImage,foreignObject:aB.exportNoforeignObject,"[stroke-dasharray]":aB.exportNoDashArray};var bi=$(ai);if(!("font" in $("<canvas>")[0].getContext("2d"))){bg.text=aB.exportNoText}$.each(bg,function(bk,bl){if(bi.find(bk).length){bh.push(bl)}});var bj=i();call("exported",{svg:bj,issues:bh})};this.getSvgString=function(){ah.apply=false;return i()};this.randomizeIds=function(){if(arguments.length>0&&arguments[0]==false){q=false;if(e.Arrows){call("unsetarrownonce")}}else{q=true;if(!ai.getAttributeNS(al,"nonce")){ai.setAttributeNS(al,"se:nonce",m);if(e.Arrows){call("setarrownonce",m)}}}};this.setSvgString=function(bk){try{var bn=aw.text2xml(bk);M(bn.documentElement);var bg=new aA("Change Source");var bj=G.removeChild(ai);bg.addSubCommand(new R(bj,G));ai=G.appendChild(aM.importNode(bn.documentElement,true));n=ai.getAttributeNS(al,"nonce");if(n){q=true;m=n;if(e.Arrows){call("setarrownonce",n)}}else{if(q){ai.setAttributeNS(bf,"xmlns:se",al);ai.setAttributeNS(al,"se:nonce",m);if(e.Arrows){call("setarrownonce",m)}}}$(ai).find("image").each(function(){var br=this;aV(br);var bs=this.getAttributeNS(aE,"href");if(bs.indexOf("data:")===0){var bp=bs.match(/svgedit_url=(.*?);/);if(bp){var bq=decodeURIComponent(bp[1]);$(new Image()).load(function(){br.setAttributeNS(aE,"xlink:href",bq)}).attr("src",bq)}}bc.embedImage(bs)});$(ai).find("linearGradient, radialGradient").each(function(){var bs=this;if($(bs).attr("gradientUnits")==="userSpaceOnUse"){var bp=$(ai).find("[fill=url(#"+bs.id+")],[stroke=url(#"+bs.id+")]");if(!bp.length){return}var br=bp[0].getBBox();if(bs.tagName==="linearGradient"){var bq=$(bs).attr(["x1","y1","x2","y2"]);$(bs).attr({x1:(bq.x1-br.x)/br.width,y1:(bq.y1-br.y)/br.height,x2:(bq.x2-br.x)/br.width,y2:(bq.y1-br.y)/br.height});bs.removeAttribute("gradientUnits")}else{}}});a9(ai,function(bq){try{l(bq)}catch(bp){console.log(bp)}});var bi=$(ai);var bo={id:"svgcontent",overflow:J.show_outside_canvas?"visible":"hidden"};if(bi.attr("viewBox")){var bl=bi.attr("viewBox").split(" ");bo.width=bl[2];bo.height=bl[3]}else{$.each(["width","height"],function(bp,bq){var br=bi.attr(bq)||100;if((br+"").substr(-1)==="%"){bo[bq]=parseInt(br)}else{bo[bq]=a2(bq,br)}})}bi.attr(bo);this.contentW=bo.width;this.contentH=bo.height;bg.addSubCommand(new a(ai));var bm=bi.attr(["width","height"]);bg.addSubCommand(new av(G,bm));ac=1;Y();T={};aZ();z.clearData();G.appendChild(F.selectorParentGroup);aT(bg);call("changed",[ai])}catch(bh){console.log(bh);return false}return true};this.importSvgString=function(bp){try{var bz=aw.text2xml(bp);M(bz.documentElement);var bn=new aA("Change Source");var bh=aM.importNode(bz.documentElement,true);if(V){var bj=bh.getAttribute("width"),bo=bh.getAttribute("height"),bk=bh.getAttribute("viewBox"),bi=bk?bk.split(" "):[0,0,bj,bo];for(var bw=0;bw<4;++bw){bi[bw]=Number(bi[bw])}var br=Number(ai.getAttribute("width")),bC=Number(ai.getAttribute("height"));if(bo>bj){var bg="scale("+(bC/3)/bi[3]+")"}else{var bg="scale("+(bC/3)/bi[2]+")"}bg="translate(0) "+bg+" translate(0)";var by=aM.createElementNS(aK,"g");while(bh.hasChildNodes()){by.appendChild(bh.firstChild)}if(bg){by.setAttribute("transform",bg)}var bu={};at(by,function(bF){if(bF.nodeType==1){if(bF.id){if(!(bF.id in bu)){bu[bF.id]={elem:null,attrs:[],hrefs:[]}}bu[bF.id]["elem"]=bF}$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(bI,bG){var bK=bF.getAttributeNode(bG);if(bK){var bH=ak(bK.value),bJ=bH?bH.substr(1):null;if(bJ){if(!(bJ in bu)){bu[bJ]={elem:null,attrs:[],hrefs:[]}}bu[bJ]["attrs"].push(bK)}}});var bD=bF.getAttributeNS(aE,"href");if(bD&&$.inArray(bF.nodeName,["filter","linearGradient","pattern","radialGradient","textPath","use"])!=-1){var bE=bD.substr(1);if(!(bE in bu)){bu[bE]={elem:null,attrs:[],hrefs:[]}}bu[bE]["hrefs"].push(bF)}}});for(var bm in bu){var bB=bu[bm]["elem"];if(bB){var bl=a7();a4++;bB.id=bl;var bq=bu[bm]["attrs"];var bw=bq.length;while(bw--){var bt=bq[bw];bt.ownerElement.setAttribute(bt.name,"url(#"+bl+")")}var bx=bu[bm]["hrefs"];var bv=bx.length;while(bv--){var bs=bx[bv];bs.setAttributeNS(aE,"xlink:href","#"+bl)}}}by.id=a7();a4++;V.appendChild(by)}a9(ai,function(bE){try{l(bE)}catch(bD){console.log(bD)}});bn.addSubCommand(new a(ai));T={};aZ();aT(bn);call("changed",[ai])}catch(bA){console.log(bA);return false}return true};var Y=function(){aS=[];var bo=ai.childNodes.length;var bi=[],bp=[];for(var bl=0;bl<bo;++bl){var bh=ai.childNodes.item(bl);if(bh&&bh.nodeType==1){if(bh.tagName=="g"){var bg=$("title",bh).text();if(!bg&&k&&bh.querySelectorAll){bg=$(bh.querySelectorAll("title")).text()}if(bg){bp.push(bg);aS.push([bg,bh]);V=bh;at(bh,function(bq){bq.setAttribute("style","pointer-events:inherit")});V.setAttribute("style","pointer-events:none")}else{bi.push(bh)}}else{if(au(bh)&&bh.nodeName!="defs"){var bn=au(bh);bi.push(bh)}}}}if(bi.length>0){var bl=1;while($.inArray(("Layer "+bl),bp)!=-1){bl++}var bj="Layer "+bl;V=aM.createElementNS(aK,"g");var bm=aM.createElementNS(aK,"title");bm.textContent=bj;V.appendChild(bm);for(var bk=0;bk<bi.length;++bk){V.appendChild(bi[bk])}V=ai.appendChild(V);aS.push([bj,V])}at(V,function(bq){bq.setAttribute("style","pointer-events:inherit")});V.setAttribute("style","pointer-events:all")};this.createLayer=function(bi){var bh=new aA("Create Layer");var bg=aM.createElementNS(aK,"g");var bj=aM.createElementNS(aK,"title");bj.textContent=bi;bg.appendChild(bj);bg=ai.appendChild(bg);bh.addSubCommand(new a(bg));aT(bh);aZ();Y();bc.setCurrentLayer(bi);call("changed",[bg])};this.deleteCurrentLayer=function(){if(V&&aS.length>1){var bg=new aA("Delete Layer");var bh=V.parentNode;bg.addSubCommand(new R(V,bh));bh.removeChild(V);aT(bg);aZ();Y();bc.setCurrentLayer(aS[aS.length-1][0]);call("changed",[ai]);return true}return false};this.getNumLayers=function(){return aS.length};this.getLayer=function(bg){if(bg>=0&&bg<bc.getNumLayers()){return aS[bg][0]}return""};this.getCurrentLayer=function(){for(var bg=0;bg<aS.length;++bg){if(aS[bg][1]==V){return aS[bg][0]}}return""};this.setCurrentLayer=function(bg){bg=aw.toXml(bg);for(var bh=0;bh<aS.length;++bh){if(bg==aS[bh][0]){if(V!=aS[bh][1]){aZ();V.setAttribute("style","pointer-events:none");V=aS[bh][1];V.setAttribute("style","pointer-events:all")}return true}}return false};this.renameCurrentLayer=function(bk){if(V){var bh=V;if(!bc.setCurrentLayer(bk)){var bi=new aA("Rename Layer");for(var bj=0;bj<aS.length;++bj){if(aS[bj][1]==bh){break}}var bl=aS[bj][0];aS[bj][0]=aw.toXml(bk);var bg=bh.childNodes.length;for(var bj=0;bj<bg;++bj){var bm=bh.childNodes.item(bj);if(bm&&bm.tagName=="title"){while(bm.firstChild){bm.removeChild(bm.firstChild)}bm.textContent=bk;bi.addSubCommand(new av(bm,{"#text":bl}));aT(bi);call("changed",[bh]);return true}}}V=bh}return false};this.setCurrentLayerPosition=function(bi){if(V&&bi>=0&&bi<aS.length){for(var bg=0;bg<aS.length;++bg){if(aS[bg][1]==V){break}}if(bg==aS.length){return false}if(bg!=bi){var bj=null;var bh=V.nextSibling;if(bi>bg){if(bi<aS.length-1){bj=aS[bi+1][1]}}else{bj=aS[bi][1]}ai.insertBefore(V,bj);aT(new S(V,bh,ai));Y();bc.setCurrentLayer(aS[bi][0]);return true}}return false};this.getLayerVisibility=function(bi){var bh=null;for(var bg=0;bg<aS.length;++bg){if(aS[bg][0]==bi){bh=aS[bg][1];break}}if(!bh){return false}return(bh.getAttribute("display")!="none")};this.setLayerVisibility=function(bj,bg){var bi=null;for(var bh=0;bh<aS.length;++bh){if(aS[bh][0]==bj){bi=aS[bh][1];break}}if(!bi){return false}var bk=bi.getAttribute("display");if(!bk){bk="inline"}bi.setAttribute("display",bg?"inline":"none");aT(new av(bi,{display:bk},"Layer Visibility"));if(bi==V){aZ();z.clear()}return true};this.moveSelectedToLayer=function(bm){var bk=null;for(var bj=0;bj<aS.length;++bj){if(aS[bj][0]==bm){bk=aS[bj][1];break}}if(!bk){return false}var bi=new aA("Move Elements to Layer");var bh=aR;var bj=bh.length;while(bj--){var bl=bh[bj];if(!bl){continue}var bn=bl.nextSibling;var bg=bl.parentNode;bk.appendChild(bl);bi.addSubCommand(new S(bl,bn,bg))}aT(bi);return true};this.getLayerOpacity=function(bj){for(var bh=0;bh<aS.length;++bh){if(aS[bh][0]==bj){var bi=aS[bh][1];var bg=bi.getAttribute("opacity");if(!bg){bg="1.0"}return parseFloat(bg)}}return null};this.setLayerOpacity=function(bj,bg){if(bg<0||bg>1){return}for(var bh=0;bh<aS.length;++bh){if(aS[bh][0]==bj){var bi=aS[bh][1];bi.setAttribute("opacity",bg);break}}};this.clear=function(){z.clear();var bh=ai.childNodes;var bg=ai.childNodes.length;var bi=0;aZ();for(var bj=0;bj<bg;bj++){if(bh[bi].nodeType==1){ai.removeChild(bh[bi])}else{bi++}}aS=[];bc.createLayer("Layer 1");aJ();F.initGroup();j=F.getRubberBandBox();call("cleared")};this.linkControlPoints=z.linkControlPoints;this.getContentElem=function(){return ai};this.getRootElem=function(){return G};this.getSelectedElems=function(){return aR};var d=this.getResolution=function(){return{w:ai.getAttribute("width")/ac,h:ai.getAttribute("height")/ac,zoom:ac}};this.getZoom=function(){return ac};this.getVersion=function(){return"svgcanvas.js ($Rev: 1738 $)"};this.setUiStrings=function(bg){$.extend(aB,bg)};this.setConfig=function(bg){$.extend(J,bg)};this.getDocumentTitle=function(){var bh=ai.childNodes;for(var bg=0;bg<bh.length;bg++){if(bh[bg].nodeName=="title"){return bh[bg].textContent}}return""};this.setDocumentTitle=function(bj){var bk=ai.childNodes,bl=false,bi="";var bg=new aA("Change Image Title");for(var bh=0;bh<bk.length;bh++){if(bk[bh].nodeName=="title"){bl=bk[bh];bi=bl.textContent;break}}if(!bl){bl=aM.createElementNS(aK,"title");ai.insertBefore(bl,ai.firstChild)}if(bj.length){bl.textContent=bj}else{bl.parentNode.removeChild(bl)}bg.addSubCommand(new av(bl,{"#text":bi}));aT(bg)};this.getEditorNS=function(bg){if(bg){ai.setAttribute("xmlns:se",al)}return al};this.setResolution=function(bn,bm){var bl=d();var bo=bl.w,bi=bl.h;var bh;if(bn=="fit"){var bp=ag();if(bp){bh=new aA("Fit Canvas to Content");var bj=aO();a5(bj);var br=[],bq=[];$.each(bj,function(bs,bt){br.push(bp.x*-1);bq.push(bp.y*-1)});var bg=bc.moveSelectedElements(br,bq,true);bh.addSubCommand(bg);aZ();bn=Math.round(bp.width);bm=Math.round(bp.height)}else{return false}}if(bn!=bo||bm!=bi){var bk=G.suspendRedraw(1000);if(!bh){bh=new aA("Change Image Dimensions")}bn=a2("width",bn);bm=a2("height",bm);ai.setAttribute("width",bn);ai.setAttribute("height",bm);this.contentW=bn;this.contentH=bm;bh.addSubCommand(new av(ai,{width:bo,height:bi}));ai.setAttribute("viewBox",[0,0,bn/ac,bm/ac].join(" "));bh.addSubCommand(new av(ai,{viewBox:["0 0",bo,bi].join(" ")}));aT(bh);G.unsuspendRedraw(bk);call("changed",[ai])}return true};this.getOffset=function(){return $(ai).attr(["x","y"])};this.setBBoxZoom=function(bh,bo,bi){var bn=0.85;var bm;var bk=function(bs){if(!bs){return false}var br=Math.round((bo/bs.width)*100*bn)/100;var bp=Math.round((bi/bs.height)*100*bn)/100;var bq=Math.min(br,bp);bc.setZoom(bq);return{zoom:bq,bbox:bs}};if(typeof bh=="object"){bm=bh;if(bm.width==0||bm.height==0){var bg=bm.zoom?bm.zoom:ac*bm.factor;bc.setZoom(bg);return{zoom:ac,bbox:bm}}return bk(bm)}switch(bh){case"selection":if(!aR[0]){return}var bj=$.map(aR,function(bp){if(bp){return bp}});bm=ag(bj);break;case"canvas":var bl=d();bn=0.95;bm={width:bl.w,height:bl.h,x:0,y:0};break;case"content":bm=ag();break;case"layer":bm=ag(aO(V));break;default:return}return bk(bm)};this.setZoom=function(bg){var bh=d();ai.setAttribute("viewBox","0 0 "+bh.w/bg+" "+bh.h/bg);ac=bg;$.each(aR,function(bi,bj){if(!bj){return}F.requestSelector(bj).resize()});z.zoomChange();aI("zoomChanged",bg)};this.getMode=function(){return a1};this.setMode=function(bg){z.clear(true);L.clear();r=(aR[0]&&aR[0].nodeName=="text")?a6:aN;a1=bg};this.getColor=function(bg){return r[bg]};this.setColor=function(bj,bl,bh){aN[bj]=bl;r[bj+"_paint"]={type:"solidColor"};var bg=[];var bi=aR.length;while(bi--){var bk=aR[bi];if(bk){if(bk.tagName=="g"){at(bk,function(bm){if(bm.nodeName!="g"){bg.push(bm)}})}else{if(bj=="fill"){if(bk.tagName!="polyline"&&bk.tagName!="line"){bg.push(bk)}}else{bg.push(bk)}}}}if(bg.length>0){if(!bh){A(bj,bl,bg);call("changed",bg)}else{o(bj,bl,bg)}}};var aD=function(){var bg=ai.getElementsByTagNameNS(aK,"defs");if(bg.length>0){bg=bg[0]}else{bg=ai.insertBefore(aM.createElementNS(aK,"defs"),ai.firstChild.nextSibling)}return bg};var ae=this.setGradient=function(bh){if(!r[bh+"_paint"]||r[bh+"_paint"].type=="solidColor"){return}var bk=bc[bh+"Grad"];var bj=t(bk);var bg=aD();if(!bj){var bi=bk;bk=bg.appendChild(aM.importNode(bk,true));bk.id=a7()}else{bk=bj}bc.setColor(bh,"url(#"+bk.id+")")};var t=function(bo){var bk=aD();var bq=$(bk).find("linearGradient, radialGradient");var bl=bq.length;var bh=["r","cx","cy","fx","fy"];while(bl--){var bs=bq[bl];if(bo.tagName=="linearGradient"){if(bo.getAttribute("x1")!=bs.getAttribute("x1")||bo.getAttribute("y1")!=bs.getAttribute("y1")||bo.getAttribute("x2")!=bs.getAttribute("x2")||bo.getAttribute("y2")!=bs.getAttribute("y2")){continue}}else{var bi=$(bo).attr(bh);var bp=$(bs).attr(bh);var bn=false;$.each(bh,function(bv,bu){if(bi[bu]!=bp[bu]){bn=true}});if(bn){continue}}var br=bo.getElementsByTagNameNS(aK,"stop");var bt=bs.getElementsByTagNameNS(aK,"stop");if(br.length!=bt.length){continue}var bj=br.length;while(bj--){var bm=br[bj];var bg=bt[bj];if(bm.getAttribute("offset")!=bg.getAttribute("offset")||bm.getAttribute("stop-opacity")!=bg.getAttribute("stop-opacity")||bm.getAttribute("stop-color")!=bg.getAttribute("stop-color")){break}}if(bj==-1){return bs}}return null};this.setPaint=function(bg,bi){var bh=new $.jGraduate.Paint(bi);this.setPaintOpacity(bg,bh.alpha/100,true);r[bg+"_paint"]=bh;switch(bh.type){case"solidColor":this.setColor(bg,bh.solidColor!="none"?"#"+bh.solidColor:"none");break;case"linearGradient":case"radialGradient":bc[bg+"Grad"]=bh[bh.type];ae(bg);break;default:}};this.getStrokeWidth=function(){return r.stroke_width};this.setStrokeWidth=function(bj){if(bj==0&&$.inArray(a1,["line","path"])!=-1){bc.setStrokeWidth(1);return}r.stroke_width=bj;var bg=[];var bh=aR.length;while(bh--){var bi=aR[bh];if(bi){if(bi.tagName=="g"){at(bi,function(bk){if(bk.nodeName!="g"){bg.push(bk)}})}else{bg.push(bi)}}}if(bg.length>0){A("stroke-width",bj,bg);call("changed",aR)}};this.setStrokeAttr=function(bg,bk){aN[bg.replace("-","_")]=bk;var bh=[];var bi=aR.length;while(bi--){var bj=aR[bi];if(bj){if(bj.tagName=="g"){at(bj,function(bl){if(bl.nodeName!="g"){bh.push(bl)}})}else{bh.push(bj)}}}if(bh.length>0){A(bg,bk,bh);call("changed",aR)}};this.getOpacity=function(){return aN.opacity};this.setOpacity=function(bg){aN.opacity=bg;A("opacity",bg)};this.getFillOpacity=function(){return aN.fill_opacity};this.getStrokeOpacity=function(){return aN.stroke_opacity};this.setPaintOpacity=function(bh,bi,bg){aN[bh+"_opacity"]=bi;if(!bg){A(bh+"-opacity",bi)}else{o(bh+"-opacity",bi)}};this.getBlur=function(bg){var bj=0;if(bg){var bh=bg.getAttribute("filter");if(bh){var bi=b(bg.id+"_blur");if(bi){bj=bi.firstChild.getAttribute("stdDeviation")}}}return bj};(function(){var bi=null;var bj=null;var bg=false;bc.setBlurNoUndo=function(bk){if(!bj){bc.setBlur(bk);return}if(bk===0){o("filter","");bg=true}else{if(bg){o("filter","url(#"+aR[0].id+"_blur)")}o("stdDeviation",bk,[bj.firstChild]);bc.setBlurOffsets(bj,bk)}};function bh(){var bk=bc.finishUndoableChange();bi.addSubCommand(bk);aT(bi);bi=null;bj=null}bc.setBlurOffsets=function(bk,bl){if(bl>3){az(bk,{x:"-50%",y:"-50%",width:"200%",height:"200%",},100)}else{bk.removeAttribute("x");bk.removeAttribute("y");bk.removeAttribute("width");bk.removeAttribute("height")}};bc.setBlur=function(bp,bl){if(bi){bh();return}var bo=aR[0];var bk=bo.id;bj=b(bk+"_blur");bp-=0;var bm=new aA();if(bj){if(bp===0){bj=null}}else{var bq=c({element:"feGaussianBlur",attr:{"in":"SourceGraphic",stdDeviation:bp}});bj=c({element:"filter",attr:{id:bk+"_blur"}});bj.appendChild(bq);aD().appendChild(bj);bm.addSubCommand(new a(bj))}var bn={filter:bo.getAttribute("filter")};if(bp===0){bo.removeAttribute("filter");bm.addSubCommand(new av(bo,bn));return}else{A("filter","url(#"+bk+"_blur)");bm.addSubCommand(new av(bo,bn));bc.setBlurOffsets(bj,bp)}bi=bm;bc.beginUndoableChange("stdDeviation",[bj?bj.firstChild:null]);if(bl){bc.setBlurNoUndo(bp);bh()}}}());this.getBold=function(){var bg=aR[0];if(bg!=null&&bg.tagName=="text"&&aR[1]==null){return(bg.getAttribute("font-weight")=="bold")}return false};this.setBold=function(bg){var bh=aR[0];if(bh!=null&&bh.tagName=="text"&&aR[1]==null){A("font-weight",bg?"bold":"normal")}};this.getItalic=function(){var bg=aR[0];if(bg!=null&&bg.tagName=="text"&&aR[1]==null){return(bg.getAttribute("font-style")=="italic")}return false};this.setItalic=function(bg){var bh=aR[0];if(bh!=null&&bh.tagName=="text"&&aR[1]==null){A("font-style",bg?"italic":"normal")}};this.getFontFamily=function(){return a6.font_family};this.setFontFamily=function(bg){a6.font_family=bg;A("font-family",bg)};this.getFontSize=function(){return a6.font_size};this.setFontSize=function(bg){a6.font_size=bg;L.toSelectMode();A("font-size",bg)};this.getText=function(){var bg=aR[0];if(bg==null){return""}return bg.textContent};this.setTextContent=function(bg){A("#text",bg);L.init(bg);L.setCursor()};this.setImageURL=function(bl){var bk=aR[0];if(!bk){return}var bi=$(bk).attr(["width","height"]);var bg=(!bi.width||!bi.height);var bj=bk.getAttributeNS(aE,"href");if(bj!==bl){bg=true}else{if(!bg){return}}var bh=new aA("Change Image URL");bk.setAttributeNS(aE,"xlink:href",bl);bh.addSubCommand(new av(bk,{"#href":bj}));if(bg){$(new Image()).load(function(){var bm=$(bk).attr(["width","height"]);$(bk).attr({width:this.width,height:this.height});F.requestSelector(bk).resize();bh.addSubCommand(new av(bk,bm));aT(bh);call("changed",bk)}).attr("src",bl)}else{aT(bh)}};this.setRectRadius=function(bi){var bg=aR[0];if(bg!=null&&bg.tagName=="rect"){var bh=bg.getAttribute("rx");if(bh!=bi){bg.setAttribute("rx",bi);bg.setAttribute("ry",bi);aT(new av(bg,{rx:bh,ry:bh},"Radius"));call("changed",[bg])}}};this.setSegType=function(bg){z.setSegType(bg)};this.convertToPath=function(bz,bA){if(bz==null){var bF=aR;$.each(aR,function(bG,bH){if(bH){bc.convertToPath(bH)}});return}if(!bA){var bs=new aA("Convert element to Path")}var bw=bA?{}:{fill:aN.fill,"fill-opacity":aN.fill_opacity,stroke:aN.stroke,"stroke-width":aN.stroke_width,"stroke-dasharray":aN.stroke_dasharray,"stroke-linejoin":aN.stroke_linejoin,"stroke-linecap":aN.stroke_linecap,"stroke-opacity":aN.stroke_opacity,opacity:aN.opacity,visibility:"hidden"};$.each(["marker-start","marker-end","marker-mid","filter","clip-path"],function(){if(bz.getAttribute(this)){bw[this]=bz.getAttribute(this)}});var bu=c({element:"path",attr:bw});var bD=bz.getAttribute("transform");if(bD){bu.setAttribute("transform",bD)}var bv=bz.id;var bp=bz.parentNode;if(bz.nextSibling){bp.insertBefore(bu,bz)}else{bp.appendChild(bu)}var bB="";var bl=function(bG){$.each(bG,function(bJ,bI){var bH=bI[0],bL=bI[1];bB+=bH;for(var bK=0;bK<bL.length;bK+=2){bB+=(bL[bK]+","+bL[bK+1])+" "}})};var bm=1.81;switch(bz.tagName){case"ellipse":case"circle":var bE=$(bz).attr(["rx","ry","cx","cy"]);var bh=bE.cx,bg=bE.cy,bj=bE.rx,bi=bE.ry;if(bz.tagName=="circle"){bj=bi=$(bz).attr("r")}bl([["M",[(bh-bj),(bg)]],["C",[(bh-bj),(bg-bi/bm),(bh-bj/bm),(bg-bi),(bh),(bg-bi)]],["C",[(bh+bj/bm),(bg-bi),(bh+bj),(bg-bi/bm),(bh+bj),(bg)]],["C",[(bh+bj),(bg+bi/bm),(bh+bj/bm),(bg+bi),(bh),(bg+bi)]],["C",[(bh-bj/bm),(bg+bi),(bh-bj),(bg+bi/bm),(bh-bj),(bg)]],["Z",[]]]);break;case"path":bB=bz.getAttribute("d");break;case"line":var bE=$(bz).attr(["x1","y1","x2","y2"]);bB="M"+bE.x1+","+bE.y1+"L"+bE.x2+","+bE.y2;break;case"polyline":case"polygon":bB="M"+bz.getAttribute("points");break;case"rect":var bt=$(bz).attr(["rx","ry"]);var bj=bt.rx,bi=bt.ry;var bC=bz.getBBox();var bq=bC.x,bo=bC.y,br=bC.width,bx=bC.height;var bm=4-bm;if(!bj&&!bi){bl([["M",[bq,bo]],["L",[bq+br,bo]],["L",[bq+br,bo+bx]],["L",[bq,bo+bx]],["L",[bq,bo]],["Z",[]]])}else{bl([["M",[bq,bo+bi]],["C",[bq,bo+bi/bm,bq+bj/bm,bo,bq+bj,bo]],["L",[bq+br-bj,bo]],["C",[bq+br-bj/bm,bo,bq+br,bo+bi/bm,bq+br,bo+bi]],["L",[bq+br,bo+bx-bi]],["C",[bq+br,bo+bx-bi/bm,bq+br-bj/bm,bo+bx,bq+br-bj,bo+bx]],["L",[bq+bj,bo+bx]],["C",[bq+bj/bm,bo+bx,bq,bo+bx-bi/bm,bq,bo+bx-bi]],["L",[bq,bo+bi]],["Z",[]]])}break;default:bu.parentNode.removeChild(bu);break}if(bB){bu.setAttribute("d",bB)}if(!bA){if(bD){var bn=aQ(bu);if(aP(bn)){z.resetOrientation(bu)}}bs.addSubCommand(new R(bz,bp));bs.addSubCommand(new a(bu));aZ();bz.parentNode.removeChild(bz);bu.setAttribute("id",bv);bu.removeAttribute("visibility");a5([bu],true);aT(bs)}else{z.resetOrientation(bu);var bk=false;try{bk=bu.getBBox()}catch(by){}bu.parentNode.removeChild(bu);return bk}};var o=function(br,bp,bz){var bw=G.suspendRedraw(1000);if(a1=="pathedit"){z.moveNode(br,bp)}var bz=bz||aR;var bt=bz.length;while(bt--){var bv=bz[bt];if(bv==null){continue}if(a1==="textedit"&&br!=="#text"){L.toSelectMode(bv)}if((br=="x"||br=="y")&&$.inArray(bv.tagName,["g","polyline","path"])!=-1){var bg=ag([bv]);var bm=br=="x"?bp-bg.x:0;var bl=br=="y"?bp-bg.y:0;bc.moveSelectedElements(bm*ac,bl*ac,true);continue}if(bv.tagName=="g"&&$.inArray(br,["transform","opacity","filter"])!==-1){}var bk=br=="#text"?bv.textContent:bv.getAttribute(br);if(bk==null){bk=""}if(bk!=String(bp)){if(br=="#text"){var bs=au(bv).width;bv.textContent=bp;bv=g(bv)}else{if(br=="#href"){bv.setAttributeNS(aE,"xlink:href",bp)}else{bv.setAttribute(br,bp)}}if(bt==0){u[bt]=au(bv)}if(bv.nodeName=="text"){if((bp+"").indexOf("url")==0||$.inArray(br,["font-size","font-family","x","y"])!=-1){bv=g(bv)}}if($.inArray(bv,aR)!=-1){setTimeout(function(){if(!bv.parentNode){return}F.requestSelector(bv).resize()},0)}var bu=aq(bv);if(bu!=0&&br!="transform"){var bn=aQ(bv);var bq=bn.numberOfItems;while(bq--){var bi=bn.getItem(bq);if(bi.type==4){bn.removeItem(bq);var bo=au(bv);var by=P(bo.x+bo.width/2,bo.y+bo.height/2,s(bn).matrix);var bj=by.x,bh=by.y;var bx=G.createSVGTransform();bx.setRotate(bu,bj,bh);bn.insertItemBefore(bx,bq);break}}}}}G.unsuspendRedraw(bw)};var A=this.changeSelectedAttribute=function(bg,bk,bi){var bi=bi||aR;bc.beginUndoableChange(bg,bi);var bj=bi.length;o(bg,bk,bi);var bh=bc.finishUndoableChange();if(!bh.isEmpty()){aT(bh)}};this.deleteSelectedElements=function(){var bi=new aA("Delete Elements");var bh=aR.length;var bg=[];for(var bk=0;bk<bh;++bk){var bm=aR[bk];if(bm==null){break}var bl=bm.parentNode;var bj=bm;F.releaseSelector(bj);var bn=bl.removeChild(bj);bg.push(bm);aR[bk]=null;bi.addSubCommand(new R(bn,bl))}if(!bi.isEmpty()){aT(bi)}call("changed",bg);aZ()};this.groupSelectedElements=function(){var bg=new aA("Group Elements");var bk=c({element:"g",attr:{id:a7()}});bg.addSubCommand(new a(bk));var bi=aR.length;while(bi--){var bj=aR[bi];if(bj==null){continue}var bl=bj.nextSibling;var bh=bj.parentNode;bk.appendChild(bj);bg.addSubCommand(new S(bj,bl,bh))}if(!bg.isEmpty()){aT(bg)}aZ();a5([bk],true)};this.ungroupSelectedElement=function(){var bO=aR[0];if(bO.tagName=="g"){var bg=new aA("Ungroup Elements");var bo=bO.parentNode;var bj=bO.previousSibling;var bv=new Array(bO.childNodes.length);var bI=bO.getAttribute("transform");var bp=aQ(bO);var bK=s(bp).matrix;var bN=0;var bB=aq(bO);var bw=$(bO).attr(["filter","opacity"]);var bM,bk;while(bO.firstChild){var bJ=bO.firstChild;var bC=bJ.nextSibling;var bE=bJ.parentNode;bv[bN++]=bJ=bo.insertBefore(bJ,bj);bg.addSubCommand(new S(bJ,bC,bE));if(bw.opacity!==null&&bw.opacity!==1){var bR=bJ.getAttribute("opacity")||1;var bl=Math.round((bJ.getAttribute("opacity")||1)*bw.opacity*100)/100;A("opacity",bl,[bJ])}if(bw.filter){var bq=this.getBlur(bJ);var bu=bq;if(!bk){bk=this.getBlur(bO)}if(bq){bq=(bk-0)+(bq-0)}else{if(bq===0){bq=bk}}if(!bu){if(!bM){bM=b(ak(bw.filter).substr(1))}else{bM=ap(bM);aD().appendChild(bM)}}else{bM=b(ak(bJ.getAttribute("filter")).substr(1))}var bL=(bM.firstChild.tagName==="feGaussianBlur")?"blur":"filter";bM.id=bJ.id+"_"+bL;A("filter","url(#"+bM.id+")",[bJ]);if(bq){A("stdDeviation",bq,[bM.firstChild]);bc.setBlurOffsets(bM,bq)}}var bD=aQ(bJ);if(bp.numberOfItems){if(bB&&bp.numberOfItems==1){var bh=bp.getItem(0).matrix;var bt=G.createSVGMatrix();var bA=aq(bJ);if(bA){bt=bD.getItem(0).matrix}var bH=au(bJ);var bP=s(bD).matrix;var bs=P(bH.x+bH.width/2,bH.y+bH.height/2,bP);var bF=bB+bA;var br=G.createSVGTransform();br.setRotate(bF,bs.x,bs.y);var bm=af(bh,bt,br.matrix.inverse());if(bA){bD.removeItem(0)}if(bF){bD.insertItemBefore(br,0)}if(bm.e||bm.f){var bQ=G.createSVGTransform();bQ.setTranslate(bm.e,bm.f);bD.insertItemBefore(bQ,0)}}else{var bx=bJ.getAttribute("transform");var by={};by.transform=bx?bx:"";var bi=G.createSVGTransform();var bz=s(bD).matrix,bG=bz.inverse();var bn=af(bG,bK,bz);bi.setMatrix(bn);bD.appendItem(bi)}bg.addSubCommand(l(bJ))}}if(bI){var by={};by.transform=bI;bO.setAttribute("transform","");bO.removeAttribute("transform");bg.addSubCommand(new av(bO,by))}aZ();bO=bo.removeChild(bO);bg.addSubCommand(new R(bO,bo));if(!bg.isEmpty()){aT(bg)}a5(bv)}};this.moveToTopSelectedElement=function(){var bi=aR[0];if(bi!=null){var bh=bi;var bg=bh.parentNode;var bj=bh.nextSibling;bh=bh.parentNode.appendChild(bh);aT(new S(bh,bj,bg,"top"))}};this.moveToBottomSelectedElement=function(){var bi=aR[0];if(bi!=null){var bh=bi;var bg=bh.parentNode;var bk=bh.nextSibling;var bj=bh.parentNode.firstChild;if(bj.tagName=="title"){bj=bj.nextSibling}if(bj.tagName=="defs"){bj=bj.nextSibling}bh=bh.parentNode.insertBefore(bh,bj);aT(new S(bh,bk,bg,"bottom"))}};this.moveSelectedElements=function(bo,bn,bl){if(bo.constructor!=Array){bo/=ac;bn/=ac}var bl=bl||true;var bh=new aA("position");var bj=aR.length;while(bj--){var bi=aR[bj];if(bi!=null){if(bj==0){u[bj]=au(bi)}var bm=G.createSVGTransform();var bk=aQ(bi);if(bo.constructor==Array){if(bj==0){u[bj].x+=bo[bj];u[bj].y+=bn[bj]}bm.setTranslate(bo[bj],bn[bj])}else{if(bj==0){u[bj].x+=bo;u[bj].y+=bn}bm.setTranslate(bo,bn)}bk.insertItemBefore(bm,0);var bg=l(bi);if(bg){bh.addSubCommand(bg)}F.requestSelector(bi).resize()}}if(!bh.isEmpty()){if(bl){aT(bh)}call("changed",aR);return bh}};this.cloneSelectedElements=function(){var bh=new aA("Clone Elements");var bg=aR.length;for(var bi=0;bi<bg;++bi){var bk=aR[bi];if(bk==null){break}}var bj=aR.slice(0,bi);this.clearSelection();var bi=bj.length;while(bi--){var bk=bj[bi]=ap(bj[bi]);V.appendChild(bk);bh.addSubCommand(new a(bk))}if(!bh.isEmpty()){a5(bj.reverse());this.moveSelectedElements(20,20,false);aT(bh);call("selected",aR)}};this.alignSelectedElements=function(bo,bu){var bj=[],bm=[];var bs=Number.MAX_VALUE,bn=Number.MIN_VALUE,bq=Number.MAX_VALUE,bl=Number.MIN_VALUE;var bp=Number.MIN_VALUE,bk=Number.MIN_VALUE;var bi=aR.length;if(!bi){return}for(var bh=0;bh<bi;++bh){if(aR[bh]==null){break}var bg=aR[bh];bj[bh]=ag([bg]);switch(bu){case"smallest":if((bo=="l"||bo=="c"||bo=="r")&&(bp==Number.MIN_VALUE||bp>bj[bh].width)||(bo=="t"||bo=="m"||bo=="b")&&(bk==Number.MIN_VALUE||bk>bj[bh].height)){bs=bj[bh].x;bq=bj[bh].y;bn=bj[bh].x+bj[bh].width;bl=bj[bh].y+bj[bh].height;bp=bj[bh].width;bk=bj[bh].height}break;case"largest":if((bo=="l"||bo=="c"||bo=="r")&&(bp==Number.MIN_VALUE||bp<bj[bh].width)||(bo=="t"||bo=="m"||bo=="b")&&(bk==Number.MIN_VALUE||bk<bj[bh].height)){bs=bj[bh].x;bq=bj[bh].y;bn=bj[bh].x+bj[bh].width;bl=bj[bh].y+bj[bh].height;bp=bj[bh].width;bk=bj[bh].height}break;default:if(bj[bh].x<bs){bs=bj[bh].x}if(bj[bh].y<bq){bq=bj[bh].y}if(bj[bh].x+bj[bh].width>bn){bn=bj[bh].x+bj[bh].width}if(bj[bh].y+bj[bh].height>bl){bl=bj[bh].y+bj[bh].height}break}}if(bu=="page"){bs=0;bq=0;bn=bc.contentW;bl=bc.contentH}var bv=new Array(bi);var bt=new Array(bi);for(var bh=0;bh<bi;++bh){if(aR[bh]==null){break}var bg=aR[bh];var br=bj[bh];bv[bh]=0;bt[bh]=0;switch(bo){case"l":bv[bh]=bs-br.x;break;case"c":bv[bh]=(bs+bn)/2-(br.x+br.width/2);break;case"r":bv[bh]=bn-(br.x+br.width);break;case"t":bt[bh]=bq-br.y;break;case"m":bt[bh]=(bq+bl)/2-(br.y+br.height/2);break;case"b":bt[bh]=bl-(br.y+br.height);break}}this.moveSelectedElements(bv,bt)};this.contentW=d().w;this.contentH=d().h;this.updateCanvas=function(bj,bl){G.setAttribute("width",bj);G.setAttribute("height",bl);var bk=$("#canvasBackground")[0];var bi=ai.getAttribute("x");var bn=ai.getAttribute("y");var bh=(bj/2-this.contentW*ac/2);var bm=(bl/2-this.contentH*ac/2);az(ai,{width:this.contentW*ac,height:this.contentH*ac,x:bh,y:bm,viewBox:"0 0 "+this.contentW+" "+this.contentH});az(bk,{width:ai.getAttribute("width"),height:ai.getAttribute("height"),x:bh,y:bm});F.selectorParentGroup.setAttribute("transform","translate("+bh+","+bm+")");return{x:bh,y:bm,old_x:bi,old_y:bn,d_x:bh-bi,d_y:bm-bn}};this.setBackground=function(bh,bj){var bk=b("canvasBackground");var bi=$(bk).find("rect")[0];var bl=b("background_image");bi.setAttribute("fill",bh);if(bj){if(!bl){bl=aM.createElementNS(aK,"image");az(bl,{id:"background_image",width:"100%",height:"100%",preserveAspectRatio:"xMinYMin",style:"pointer-events:none"})}bl.setAttributeNS(aE,"xlink:href",bj);bk.appendChild(bl)}else{if(bl){bl.parentNode.removeChild(bl)}}};this.cycleElement=function(bi){var bl=aR[0];var bj=false;var bk=aO(V);if(bl==null){var bg=bi?bk.length-1:0;bj=bk[bg]}else{var bh=bk.length;while(bh--){if(bk[bh]==bl){var bg=bi?bh-1:bh+1;if(bg>=bk.length){bg=0}else{if(bg<0){bg=bk.length-1}}bj=bk[bg];break}}}aZ();a5([bj],true);call("selected",aR)};this.clear();this.getPrivateMethods=function(){var bg={addCommandToHistory:aT,setGradient:ae,addSvgElementFromJson:c,assignAttributes:az,BatchCommand:aA,call:call,ChangeElementCommand:av,cleanupElement:ar,copyElem:ap,ffClone:g,findDefs:aD,findDuplicateGradient:t,getElem:b,getId:C,getIntersectionList:aW,getMouseTarget:Z,getNextId:a7,getPathBBox:bb,getUrlFromAttr:ak,hasMatrixTransform:aP,identifyLayers:Y,InsertElementCommand:a,isIdentity:a8,logMatrix:ax,matrixMultiply:af,MoveElementCommand:S,preventClickDefault:aV,recalculateAllSelectedDimensions:aY,recalculateDimensions:l,remapElement:D,RemoveElementCommand:R,removeUnusedDefElems:v,round:Q,runExtensions:aI,sanitizeSvg:M,SelectorManager:bd,shortFloat:a3,svgCanvasToString:i,SVGEditTransformList:H,svgToString:aU,toString:toString,transformBox:be,transformListToTransform:s,transformPoint:P,walkTree:at};return bg};(function(){var bl=document.createElementNS(aK,"path");bl.setAttribute("d","M0,0 10,10");var bh=bl.pathSegList;var bg=bl.createSVGPathSegLinetoAbs(5,5);try{bh.replaceItem(bg,0);a0.pathReplaceItem=true}catch(bk){a0.pathReplaceItem=false}try{bh.insertItemBefore(bg,0);a0.pathInsertItemBefore=true}catch(bk){a0.pathInsertItemBefore=false}a0.editableText=k;var bj=document.createElementNS(aK,"rect");bj.setAttribute("x",0.1);var bi=bj.cloneNode(false);a0.goodDecimals=(bi.getAttribute("x").indexOf(",")==-1);if(!a0.goodDecimals){$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n Please upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.")}var bj=document.createElementNS(aK,"rect");bj.setAttribute("width","1em");bj.setAttribute("height","1ex");ai.appendChild(bj);var bm=bj.getBBox();I.em=bm.width;I.ex=bm.height;ai.removeChild(bj)}())};
\ No newline at end of file diff --git a/files_svgedit/js/svgicons/jquery.svgicons.js b/files_svgedit/js/svgicons/jquery.svgicons.js deleted file mode 100644 index 2db257ea1..000000000 --- a/files_svgedit/js/svgicons/jquery.svgicons.js +++ /dev/null @@ -1,457 +0,0 @@ -/* - * SVG Icon Loader 2.0 - * - * jQuery Plugin for loading SVG icons from a single file - * - * Copyright (c) 2009 Alexis Deveria - * http://a.deveria.com - * - * Apache 2 License - -How to use: - -1. Create the SVG master file that includes all icons: - -The master SVG icon-containing file is an SVG file that contains -<g> elements. Each <g> element should contain the markup of an SVG -icon. The <g> element has an ID that should -correspond with the ID of the HTML element used on the page that should contain -or optionally be replaced by the icon. Additionally, one empty element should be -added at the end with id "svg_eof". - -2. Optionally create fallback raster images for each SVG icon. - -3. Include the jQuery and the SVG Icon Loader scripts on your page. - -4. Run $.svgIcons() when the document is ready: - -$.svgIcons( file [string], options [object literal]); - -File is the location of a local SVG or SVGz file. - -All options are optional and can include: - -- 'w (number)': The icon widths - -- 'h (number)': The icon heights - -- 'fallback (object literal)': List of raster images with each - key being the SVG icon ID to replace, and the value the image file name. - -- 'fallback_path (string)': The path to use for all images - listed under "fallback" - -- 'replace (boolean)': If set to true, HTML elements will be replaced by, - rather than include the SVG icon. - -- 'placement (object literal)': List with selectors for keys and SVG icon ids - as values. This provides a custom method of adding icons. - -- 'resize (object literal)': List with selectors for keys and numbers - as values. This allows an easy way to resize specific icons. - -- 'callback (function)': A function to call when all icons have been loaded. - Includes an object literal as its argument with as keys all icon IDs and the - icon as a jQuery object as its value. - -- 'id_match (boolean)': Automatically attempt to match SVG icon ids with - corresponding HTML id (default: true) - -- 'no_img (boolean)': Prevent attempting to convert the icon into an <img> - element (may be faster, help for browser consistency) - -- 'svgz (boolean)': Indicate that the file is an SVGZ file, and thus not to - parse as XML. SVGZ files add compression benefits, but getting data from - them fails in Firefox 2 and older. - -5. To access an icon at a later point without using the callback, use this: - $.getSvgIcon(id (string)); - -This will return the icon (as jQuery object) with a given ID. - -6. To resize icons at a later point without using the callback, use this: - $.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter) - - -Example usage #1: - -$(function() { - $.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons - // No options have been set, so all icons will automatically be inserted - // into HTML elements that match the same IDs. -}); - -Example usage #2: - -$(function() { - $.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons - callback: function(icons) { // Custom callback function that sets click - // events for each icon - $.each(icons, function(id, icon) { - icon.click(function() { - alert('You clicked on the icon with id ' + id); - }); - }); - } - }); //The SVG file that contains all icons -}); - -Example usage #3: - -$(function() { - $.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons - w: 32, // All icons will be 32px wide - h: 32, // All icons will be 32px high - fallback_path: 'icons/', // All fallback files can be found here - fallback: { - '#open_icon': 'open.png', // The "open.png" will be appended to the - // HTML element with ID "open_icon" - '#close_icon': 'close.png', - '#save_icon': 'save.png' - }, - placement: {'.open_icon','open'}, // The "open" icon will be added - // to all elements with class "open_icon" - resize: function() { - '#save_icon .svg_icon': 64 // The "save" icon will be resized to 64 x 64px - }, - - callback: function(icons) { // Sets background color for "close" icon - icons['close'].css('background','red'); - }, - - svgz: true // Indicates that an SVGZ file is being used - - }) -}); - -*/ - - -(function($) { - var svg_icons = {}; - - $.svgIcons = function(file, opts) { - var svgns = "http://www.w3.org/2000/svg", - xlinkns = "http://www.w3.org/1999/xlink", - icon_w = opts.w?opts.w : 24, - icon_h = opts.h?opts.h : 24, - elems, svgdoc, testImg, - icons_made = false, data_loaded = false, load_attempts = 0, - ua = navigator.userAgent, isOpera = !!window.opera, isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/')==-1), - data_pre = 'data:image/svg+xml;charset=utf-8;base64,'; - - if(opts.svgz) { - var data_el = $('<object data="' + file + '" type=image/svg+xml>').appendTo('body').hide(); - try { - svgdoc = data_el[0].contentDocument; - // TODO: IE still loads this, shouldn't even bother. - data_el.load(getIcons); - getIcons(0, true); // Opera will not run "load" event if file is already cached - } catch(err1) { - useFallback(); - } - } else { - $.ajax({ - url: file, - dataType: 'xml', - success: function(data) { - svgdoc = data; - $(function() { - getIcons('ajax'); - }); - }, - error: function(err) { - // TODO: Fix Opera widget icon bug - if(window.opera) { - $(function() { - useFallback(); - }); - } else { - if(err.responseXML) { - svgdoc = err.responseXML; - $(function() { - getIcons('ajax'); - }); - } - } - } - }); - } - - function getIcons(evt, no_wait) { - if(evt !== 'ajax') { - if(data_loaded) return; - // Webkit sometimes says svgdoc is undefined, other times - // it fails to load all nodes. Thus we must make sure the "eof" - // element is loaded. - svgdoc = data_el[0].contentDocument; // Needed again for Webkit - var isReady = (svgdoc && svgdoc.getElementById('svg_eof')); - if(!isReady && !(no_wait && isReady)) { - load_attempts++; - if(load_attempts < 50) { - setTimeout(getIcons, 20); - } else { - useFallback(); - data_loaded = true; - } - return; - } - data_loaded = true; - } - // Clean source SVGs (mostly for Inkscape files) - // TODO: Find a way to do this without crashing Safari (when converting to IMG) - $(svgdoc).find('metadata').remove().end() - .find('*').each(function(i, el) { - if(el.nodeName.indexOf(':') != -1) { - $(el).remove(); - } - var attrs = $.extend(false, el.attributes, {}); - for(i in attrs) { - var attr = attrs[i]; - var fullattr = attr.prefix?attr.prefix + ':' + attr.localName:''; - if(attr.prefix) { - el.removeAttribute(attr.localName); // for Opera - el.removeAttribute(fullattr); // for Webkit - } - if(fullattr == 'xlink:href') { - el.setAttribute('xlink:href', attr.nodeValue); - } - } - }); - elems = $(svgdoc.firstChild).children(); //.getElementsByTagName('foreignContent'); - var testSrc = data_pre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D'; - - testImg = $(new Image()).attr({ - src: testSrc, - width: 0, - height: 0 - }).appendTo('body') - .load(function () { - // Safari 4 crashes, Opera and Chrome don't - makeIcons(!isSafari); - }).error(function () { - makeIcons(); - }); - } - - function makeIcons(toImage, fallback) { - if(icons_made) return; - if(opts.no_img) toImage = false; - var holder; - - var setIcon = function(target, icon, id, setID) { - if(isOpera) icon.css('visibility','hidden'); - if(opts.replace) { - if(setID) icon.attr('id',id); - var cl = target.attr('class'); - if(cl) icon.attr('class','svg_icon '+cl); - target.replaceWith(icon); - } else { - - target.append(icon); - } - if(isOpera) { - setTimeout(function() { - icon.attr('style','visibility:visible;'); - },1); - } - } - - var addIcon = function(icon, id) { - if(opts.id_match === undefined || opts.id_match !== false) { - setIcon(holder, icon, id, true); - } - svg_icons[id] = icon; - } - - if(toImage) { - var temp_holder = $(document.createElement('div')); - temp_holder.hide().appendTo('body'); - } - if(fallback) { - var path = opts.fallback_path?opts.fallback_path:''; - $.each(fallback, function(id, imgsrc) { - holder = $('#' + id); - var icon = $(new Image()) - .attr({ - 'class':'svg_icon', - src: path + imgsrc, - 'width': icon_w, - 'height': icon_h, - 'alt': 'icon' - }); - - addIcon(icon, id); - }); - } else { - $.each(elems, function(i, elem) { - var id = elem.getAttribute('id'); - if(id == 'svg_eof') return; - holder = $('#' + id); - - var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0]; - var svgroot = svgdoc.createElementNS(svgns, "svg"); - svgroot.setAttributeNS(svgns, 'viewBox', [0,0,icon_w,icon_h].join(' ')); - - // Make flexible by converting width/height to viewBox - var w = svg.getAttribute('width'); - var h = svg.getAttribute('height'); - svg.removeAttribute('width'); - svg.removeAttribute('height'); - - var vb = svg.getAttribute('viewBox'); - if(!vb) { - svg.setAttribute('viewBox', [0,0,w,h].join(' ')); - } - - $(svgroot).attr({ - "xmlns": svgns, - "width": icon_w, - "height": icon_h, - "xmlns:xlink": xlinkns, - "class": 'svg_icon' - }); - - // Without cloning, Firefox will make another GET request. - // With cloning, causes issue in Opera/Win/Non-EN - if(!isOpera) svg = svg.cloneNode(true); - - svgroot.appendChild(svg); - - if(toImage) { - // Without cloning, Safari will crash - // With cloning, causes issue in Opera/Win/Non-EN - var svgcontent = isOpera?svgroot:svgroot.cloneNode(true); - temp_holder.empty().append(svgroot); - var str = data_pre + encode64(temp_holder.html()); - var icon = $(new Image()) - .attr({'class':'svg_icon', src:str}); - } else { - var icon = fixIDs($(svgroot), i); - } - addIcon(icon, id); - }); - } - - if(opts.placement) { - $.each(opts.placement, function(sel, id) { - if(!svg_icons[id]) return; - $(sel).each(function(i) { - var copy = svg_icons[id].clone(); - if(i > 0 && !toImage) copy = fixIDs(copy, i, true); - setIcon($(this), copy, id); - }) - }); - } - if(!fallback) { - if(toImage) temp_holder.remove(); - if(data_el) data_el.remove(); - testImg.remove(); - } - - if(opts.resize) $.resizeSvgIcons(opts.resize); - - icons_made = true; - - if(opts.callback) opts.callback(svg_icons); - - } - - function fixIDs(svg_el, svg_num, force) { - var defs = svg_el.find('defs'); - if(!defs.length) return svg_el; - - defs.find('[id]').each(function(i) { - var id = this.id; - var no_dupes = ($(svgdoc).find('#' + id).length <= 1); - if(isOpera) no_dupes = false; // Opera didn't clone svg_el, so not reliable - // if(!force && no_dupes) return; - var new_id = 'x' + id + svg_num + i; - $(this).attr('id', new_id); - - svg_el.find('[fill="url(#' + id + ')"]').each(function() { - $(this).attr('fill', 'url(#' + new_id + ')'); - }).end().find('[stroke="url(#' + id + ')"]').each(function() { - $(this).attr('stroke', 'url(#' + new_id + ')'); - }).end().find('use').each(function() { - if(this.getAttribute('xlink:href') == '#' + id) { - this.setAttributeNS(xlinkns,'href','#' + new_id); - } - }).end().find('[filter="url(#' + id + ')"]').each(function() { - $(this).attr('filter', 'url(#' + new_id + ')'); - }); - }); - return svg_el; - } - - function useFallback() { - if(file.indexOf('.svgz') != -1) { - var reg_file = file.replace('.svgz','.svg'); - if(window.console) { - console.log('.svgz failed, trying with .svg'); - } - $.svgIcons(reg_file, opts); - } else if(opts.fallback) { - makeIcons(false, opts.fallback); - } - } - - function encode64(input) { - // base64 strings are 4/3 larger than the original string - if(window.btoa) return window.btoa(input); - var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 ); - var chr1, chr2, chr3; - var enc1, enc2, enc3, enc4; - var i = 0, p = 0; - - do { - chr1 = input.charCodeAt(i++); - chr2 = input.charCodeAt(i++); - chr3 = input.charCodeAt(i++); - - enc1 = chr1 >> 2; - enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); - enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); - enc4 = chr3 & 63; - - if (isNaN(chr2)) { - enc3 = enc4 = 64; - } else if (isNaN(chr3)) { - enc4 = 64; - } - - output[p++] = _keyStr.charAt(enc1); - output[p++] = _keyStr.charAt(enc2); - output[p++] = _keyStr.charAt(enc3); - output[p++] = _keyStr.charAt(enc4); - } while (i < input.length); - - return output.join(''); - } - } - - $.getSvgIcon = function(id) { return svg_icons[id]; } - - $.resizeSvgIcons = function(obj) { - // FF2 and older don't detect .svg_icon, so we change it detect svg elems instead - var change_sel = !$('.svg_icon:first').length; - $.each(obj, function(sel, size) { - var arr = $.isArray(size); - var w = arr?size[0]:size, - h = arr?size[1]:size; - if(change_sel) { - sel = sel.replace(/\.svg_icon/g,'svg'); - } - $(sel).each(function() { - this.setAttribute('width', w); - this.setAttribute('height', h); - if(window.opera && window.widget) { - this.parentNode.style.width = w + 'px'; - this.parentNode.style.height = h + 'px'; - } - }); - }); - } - -})(jQuery); diff --git a/files_svgedit/js/svgicons/jquery.svgicons.min.js b/files_svgedit/js/svgicons/jquery.svgicons.min.js deleted file mode 100644 index 4857b97af..000000000 --- a/files_svgedit/js/svgicons/jquery.svgicons.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(b){var a={};b.svgIcons=function(t,m){var l="http://www.w3.org/2000/svg",q="http://www.w3.org/1999/xlink",d=m.w?m.w:24,k=m.h?m.h:24,w,f,j,u=false,g=false,h=0,o=navigator.userAgent,v=!!window.opera,s=(o.indexOf("Safari/")>-1&&o.indexOf("Chrome/")==-1),c="data:image/svg+xml;charset=utf-8;base64,";if(m.svgz){var n=b('<object data="'+t+'" type=image/svg+xml>').appendTo("body").hide();try{f=n[0].contentDocument;n.load(i);i(0,true)}catch(r){p()}}else{b.ajax({url:t,dataType:"xml",success:function(z){f=z;b(function(){i("ajax")})},error:function(z){if(window.opera){b(function(){p()})}else{if(z.responseXML){f=z.responseXML;b(function(){i("ajax")})}}}})}function i(z,C){if(z!=="ajax"){if(g){return}f=n[0].contentDocument;var B=(f&&f.getElementById("svg_eof"));if(!B&&!(C&&B)){h++;if(h<50){setTimeout(i,20)}else{p();g=true}return}g=true}b(f).find("metadata").remove().end().find("*").each(function(F,G){if(G.nodeName.indexOf(":")!=-1){b(G).remove()}var E=b.extend(false,G.attributes,{});for(F in E){var D=E[F];var H=D.prefix?D.prefix+":"+D.localName:"";if(D.prefix){G.removeAttribute(D.localName);G.removeAttribute(H)}if(H=="xlink:href"){G.setAttribute("xlink:href",D.nodeValue)}}});w=b(f.firstChild).children();var A=c+"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D";j=b(new Image()).attr({src:A,width:0,height:0}).appendTo("body").load(function(){y(!s)}).error(function(){y()})}function y(z,F){if(u){return}if(m.no_img){z=false}var A;var E=function(J,I,K,G){if(v){I.css("visibility","hidden")}if(m.replace){if(G){I.attr("id",K)}var H=J.attr("class");if(H){I.attr("class","svg_icon "+H)}J.replaceWith(I)}else{J.append(I)}if(v){setTimeout(function(){I.attr("style","visibility:visible;")},1)}};var D=function(G,H){if(m.id_match===undefined||m.id_match!==false){E(A,G,H,true)}a[H]=G};if(z){var C=b(document.createElement("div"));C.hide().appendTo("body")}if(F){var B=m.fallback_path?m.fallback_path:"";b.each(F,function(I,H){A=b("#"+I);var G=b(new Image()).attr({"class":"svg_icon",src:B+H,width:d,height:k,alt:"icon"});D(G,I)})}else{b.each(w,function(I,H){var G=H.getAttribute("id");if(G=="svg_eof"){return}A=b("#"+G);var M=H.getElementsByTagNameNS(l,"svg")[0];var L=f.createElementNS(l,"svg");L.setAttributeNS(l,"viewBox",[0,0,d,k].join(" "));var Q=M.getAttribute("width");var K=M.getAttribute("height");M.removeAttribute("width");M.removeAttribute("height");var O=M.getAttribute("viewBox");if(!O){M.setAttribute("viewBox",[0,0,Q,K].join(" "))}b(L).attr({xmlns:l,width:d,height:k,"xmlns:xlink":q,"class":"svg_icon"});if(!v){M=M.cloneNode(true)}L.appendChild(M);if(z){var J=v?L:L.cloneNode(true);C.empty().append(L);var N=c+x(C.html());var P=b(new Image()).attr({"class":"svg_icon",src:N})}else{var P=e(b(L),I)}D(P,G)})}if(m.placement){b.each(m.placement,function(G,H){if(!a[H]){return}b(G).each(function(I){var J=a[H].clone();if(I>0&&!z){J=e(J,I,true)}E(b(this),J,H)})})}if(!F){if(z){C.remove()}if(n){n.remove()}j.remove()}if(m.resize){b.resizeSvgIcons(m.resize)}u=true;if(m.callback){m.callback(a)}}function e(C,B,A){var z=C.find("defs");if(!z.length){return C}z.find("[id]").each(function(F){var G=this.id;var D=(b(f).find("#"+G).length<=1);if(v){D=false}var E="x"+G+B+F;b(this).attr("id",E);C.find('[fill="url(#'+G+')"]').each(function(){b(this).attr("fill","url(#"+E+")")}).end().find('[stroke="url(#'+G+')"]').each(function(){b(this).attr("stroke","url(#"+E+")")}).end().find("use").each(function(){if(this.getAttribute("xlink:href")=="#"+G){this.setAttributeNS(q,"href","#"+E)}}).end().find('[filter="url(#'+G+')"]').each(function(){b(this).attr("filter","url(#"+E+")")})});return C}function p(){if(t.indexOf(".svgz")!=-1){var z=t.replace(".svgz",".svg");if(window.console){console.log(".svgz failed, trying with .svg")}b.svgIcons(z,m)}else{if(m.fallback){y(false,m.fallback)}}}function x(D){if(window.btoa){return window.btoa(D)}var C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var A=new Array(Math.floor((D.length+2)/3)*4);var K,I,G;var J,H,F,E;var B=0,z=0;do{K=D.charCodeAt(B++);I=D.charCodeAt(B++);G=D.charCodeAt(B++);J=K>>2;H=((K&3)<<4)|(I>>4);F=((I&15)<<2)|(G>>6);E=G&63;if(isNaN(I)){F=E=64}else{if(isNaN(G)){E=64}}A[z++]=C.charAt(J);A[z++]=C.charAt(H);A[z++]=C.charAt(F);A[z++]=C.charAt(E)}while(B<D.length);return A.join("")}};b.getSvgIcon=function(c){return a[c]};b.resizeSvgIcons=function(d){var c=!b(".svg_icon:first").length;b.each(d,function(j,g){var e=b.isArray(g);var f=e?g[0]:g,i=e?g[1]:g;if(c){j=j.replace(/\.svg_icon/g,"svg")}b(j).each(function(){this.setAttribute("width",f);this.setAttribute("height",i);if(window.opera&&window.widget){this.parentNode.style.width=f+"px";this.parentNode.style.height=i+"px"}})})}})(jQuery);
\ No newline at end of file |