Merge branch 'bzr/golem' of /Users/distler/Sites/code/instiki
This commit is contained in:
commit
ecf54415eb
|
@ -10,12 +10,14 @@ module Sanitizer
|
|||
require 'stringsupport'
|
||||
require 'set'
|
||||
|
||||
acceptable_elements = Set.new %w[a abbr acronym address area audio b big blockquote br
|
||||
button caption center cite code col colgroup dd del dfn dir div dl dt
|
||||
em fieldset font form h1 h2 h3 h4 h5 h6 hr i img input ins kbd label
|
||||
legend li map menu ol optgroup option p pre q s samp select small span
|
||||
strike strong sub sup table tbody td textarea tfoot th thead tr tt u
|
||||
ul var video]
|
||||
acceptable_elements = Set.new %w[a abbr acronym address area article aside
|
||||
audio b big blockquote br button canvas caption center cite code
|
||||
col colgroup command dd del details dfn dialog dir div dl dt
|
||||
em fieldset figcaption figure font footer form h1 h2 h3 h4 h5 h6 header
|
||||
hgroup hr i img input ins kbd label legend li map mark menu meter nav
|
||||
ol optgroup option p pre progress q rp rt ruby s samp section select small
|
||||
source span strike strong sub summary sup table tbody td textarea tfoot
|
||||
th thead time tr tt u ul var video wbr]
|
||||
|
||||
mathml_elements = Set.new %w[annotation annotation-xml maction math merror mfrac
|
||||
mfenced mi mmultiscripts mn mo mover mpadded mphantom mprescripts mroot
|
||||
|
@ -28,15 +30,15 @@ module Sanitizer
|
|||
line marker mask metadata missing-glyph mpath path pattern polygon
|
||||
polyline radialGradient rect set stop svg switch text textPath title tspan use]
|
||||
|
||||
acceptable_attributes = Set.new %w[abbr accept accept-charset accesskey action
|
||||
align alt axis border cellpadding cellspacing char charoff charset
|
||||
checked cite class clear cols colspan color compact controls coords datetime
|
||||
dir disabled enctype for frame headers height href hreflang hspace id
|
||||
ismap label lang longdesc loop loopcount loopend loopstart
|
||||
maxlength media method multiple name nohref
|
||||
noshade nowrap poster prompt readonly rel rev rows rowspan rules scope
|
||||
selected shape size span src start style summary tabindex target title
|
||||
type usemap valign value vspace width xml:lang]
|
||||
acceptable_attributes = Set.new %w[accept accept-charset accesskey action
|
||||
align alt autocomplete axis border cellpadding cellspacing char charoff
|
||||
checked cite class clear cols colspan color compact contenteditable contextmenu
|
||||
controls coords datetime dir disabled draggable enctype for formaction frame
|
||||
headers height href hreflang hspace icon id ismap label lang longdesc loop low
|
||||
max maxlength media method min multiple name nohref open optimum pattern placeholder
|
||||
poster preload pubdate readonly rel required reversed rows rowspan spellcheck scope
|
||||
selected shape size span src start step style summary tabindex target title
|
||||
type usemap valign value vspace width wrap xml:lang]
|
||||
|
||||
mathml_attributes = Set.new %w[actiontype align close
|
||||
columnalign columnlines columnspacing columnspan depth display
|
||||
|
@ -73,7 +75,7 @@ module Sanitizer
|
|||
xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type
|
||||
xml:base xml:lang xml:space xmlns xmlns:xlink xmlns:se y y1 y2 zoomAndPan]
|
||||
|
||||
attr_val_is_uri = Set.new %w[href src cite action longdesc xlink:href xml:base]
|
||||
attr_val_is_uri = Set.new %w[href src cite action formaction longdesc xlink:href xml:base]
|
||||
|
||||
svg_attr_val_allows_ref = Set.new %w[clip-path color-profile cursor fill
|
||||
filter marker marker-start marker-mid marker-end mask stroke]
|
||||
|
|
BIN
public/svg-edit/editor/images/node_clone.png
Executable file
BIN
public/svg-edit/editor/images/node_clone.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 571 B |
BIN
public/svg-edit/editor/images/node_delete.png
Executable file
BIN
public/svg-edit/editor/images/node_delete.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 589 B |
|
@ -946,6 +946,30 @@
|
|||
</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>
|
||||
</svg>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
{"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": "No arrow"},
|
||||
{"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"},
|
||||
|
@ -23,6 +23,7 @@
|
|||
{"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 "},
|
||||
|
@ -40,14 +41,14 @@
|
|||
{"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": "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": "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"},
|
||||
|
@ -66,7 +67,7 @@
|
|||
{"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"},
|
||||
{"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"},
|
||||
|
@ -78,8 +79,8 @@
|
|||
{"id": "svginfo_title", "textContent": "Titre"},
|
||||
{"id": "svginfo_width", "textContent": "Largeur:"},
|
||||
{"id": "text", "title": "Changer le contenu du texte"},
|
||||
{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
|
||||
{"id": "tool_add_subpath", "title": "Add sub-path"},
|
||||
{"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"},
|
||||
|
@ -87,7 +88,7 @@
|
|||
{"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": "Change gaussian blur value"},
|
||||
{"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"},
|
||||
|
@ -99,15 +100,15 @@
|
|||
{"id": "tool_docprops_cancel", "textContent": "Annuler"},
|
||||
{"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_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": "Taille de la police"},
|
||||
{"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": "Import SVG"},
|
||||
{"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"},
|
||||
|
@ -115,9 +116,11 @@
|
|||
{"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"},
|
||||
{"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"},
|
||||
|
@ -133,7 +136,7 @@
|
|||
{"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: This image cannot be embedded. It will depend on this path to be displayed"},
|
||||
{"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"},
|
||||
{
|
||||
|
@ -143,16 +146,16 @@
|
|||
"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: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
|
||||
"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": "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",
|
||||
"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.",
|
||||
|
@ -161,13 +164,13 @@
|
|||
"key_up": "Haut",
|
||||
"layer": "Calque",
|
||||
"layerHasThatName": "Le calque porte déjà ce nom",
|
||||
"loadingImage": "Loading image, please wait...",
|
||||
"loadingImage": "Chargement de l'image, veuillez patienter...",
|
||||
"noContentToFitTo": "Il n'y a pas de contenu auquel ajuster",
|
||||
"noteTheseIssues": "Also note the following issues: ",
|
||||
"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": "Select \"Save As...\" in your browser to save this image as a %s file."
|
||||
"saveFromBrowser": "Selectionner \"Enregistrer sous...\" dans votre navigateur pour sauvegarder l'image en tant que fichier %s."
|
||||
}
|
||||
}
|
||||
]
|
|
@ -4,8 +4,8 @@
|
|||
{"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": "No arrow"},
|
||||
{"id": "copyrightLabel", "textContent": "Powered by"},
|
||||
{"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"},
|
||||
|
@ -23,6 +23,7 @@
|
|||
{"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"},
|
||||
|
@ -40,14 +41,14 @@
|
|||
{"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": "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": "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"},
|
||||
|
@ -78,8 +79,8 @@
|
|||
{"id": "svginfo_title", "textContent": "Titel"},
|
||||
{"id": "svginfo_width", "textContent": "Breedte:"},
|
||||
{"id": "text", "title": "Wijzig tekst"},
|
||||
{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
|
||||
{"id": "tool_add_subpath", "title": "Add sub-path"},
|
||||
{"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"},
|
||||
|
@ -87,7 +88,7 @@
|
|||
{"id": "tool_alignright", "title": "Rechts uitlijnen"},
|
||||
{"id": "tool_aligntop", "title": "Boven uitlijnen"},
|
||||
{"id": "tool_angle", "title": "Draai"},
|
||||
{"id": "tool_blur", "title": "Change gaussian blur value"},
|
||||
{"id": "tool_blur", "title": "Verander Gaussische vervaging waarde"},
|
||||
{"id": "tool_bold", "title": "Vet"},
|
||||
{"id": "tool_circle", "title": "Cirkel"},
|
||||
{"id": "tool_clear", "textContent": "Nieuwe afbeelding"},
|
||||
|
@ -99,15 +100,15 @@
|
|||
{"id": "tool_docprops_cancel", "textContent": "Annuleren"},
|
||||
{"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_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": "Import SVG"},
|
||||
{"id": "tool_import", "textContent": "Importeer SVG"},
|
||||
{"id": "tool_italic", "title": "Cursief"},
|
||||
{"id": "tool_line", "title": "Lijn"},
|
||||
{"id": "tool_move_bottom", "title": "Naar achtergrond"},
|
||||
|
@ -117,7 +118,9 @@
|
|||
{"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"},
|
||||
|
@ -133,7 +136,7 @@
|
|||
{"id": "tool_ungroup", "title": "Groepering opheffen"},
|
||||
{"id": "tool_wireframe", "title": "Draadmodel"},
|
||||
{"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": "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"},
|
||||
{
|
||||
|
@ -143,16 +146,16 @@
|
|||
"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": "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.",
|
||||
"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": "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",
|
||||
"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",
|
||||
|
@ -161,13 +164,13 @@
|
|||
"key_up": "omhoog",
|
||||
"layer": "Laag",
|
||||
"layerHasThatName": "Laag heeft al die naam",
|
||||
"loadingImage": "Loading image, please wait...",
|
||||
"loadingImage": "Laden van het plaatje, even geduld aub...",
|
||||
"noContentToFitTo": "Geen inhoud om omheen te passen",
|
||||
"noteTheseIssues": "Also note the following issues: ",
|
||||
"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": "Select \"Save As...\" in your browser to save this image as a %s file."
|
||||
"saveFromBrowser": "Kies \"Save As...\" in je browser om dit plaatje op te slaan als een %s bestand."
|
||||
}
|
||||
}
|
||||
]
|
|
@ -246,7 +246,9 @@
|
|||
'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',
|
||||
|
@ -300,8 +302,10 @@
|
|||
'#tool_image':'image',
|
||||
'#tool_zoom':'zoom',
|
||||
|
||||
'#tool_clone,#tool_clone_multi,#tool_node_clone':'clone',
|
||||
'#layer_delete,#tool_delete,#tool_delete_multi,#tool_node_delete':'delete',
|
||||
'#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',
|
||||
|
@ -1823,15 +1827,6 @@
|
|||
|
||||
*/
|
||||
|
||||
// var setIcon = function(holder_sel, id) {
|
||||
// var icon = $.getSvgIcon(id).clone();
|
||||
// var holder = $(holder_sel);
|
||||
// icon[0].setAttribute('width',holder.width());
|
||||
// icon[0].setAttribute('height',holder.height());
|
||||
// holder.empty().append(icon)
|
||||
// .attr('data-curopt', holder_sel.replace('_show','')); // This sets the current mode
|
||||
// }
|
||||
|
||||
// Unfocus text input when workarea is mousedowned.
|
||||
(function() {
|
||||
var inp;
|
||||
|
@ -2296,7 +2291,7 @@
|
|||
var icon = $.getSvgIcon(icon_id).clone();
|
||||
$(elem).empty().append(icon);
|
||||
var size = curPrefs.iconsize;
|
||||
if(size !== 'm') {
|
||||
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);
|
||||
|
@ -3464,7 +3459,7 @@
|
|||
updateCanvas(true);
|
||||
// });
|
||||
|
||||
// var revnums = "svg-editor.js ($Rev: 1569 $) ";
|
||||
// var revnums = "svg-editor.js ($Rev: 1574 $) ";
|
||||
// revnums += svgCanvas.getVersion();
|
||||
// $('#copyright')[0].setAttribute("title", revnums);
|
||||
|
||||
|
|
|
@ -961,7 +961,6 @@ function BatchCommand(text) {
|
|||
'</svg>').documentElement, true);
|
||||
|
||||
$(svgroot).appendTo(container);
|
||||
|
||||
var opac_ani = document.createElementNS(svgns, 'animate');
|
||||
$(opac_ani).attr({
|
||||
attributeName: 'opacity',
|
||||
|
@ -1777,7 +1776,9 @@ function BatchCommand(text) {
|
|||
|
||||
var i = selectedElements.length;
|
||||
while(i--) {
|
||||
var cmd = recalculateDimensions(selectedElements[i]);
|
||||
var elem = selectedElements[i];
|
||||
// if(canvas.getRotationAngle(elem) && !hasMatrixTransform(canvas.getTransformList(elem))) continue;
|
||||
var cmd = recalculateDimensions(elem);
|
||||
if (cmd) {
|
||||
batchCmd.addSubCommand(cmd);
|
||||
}
|
||||
|
@ -2052,6 +2053,8 @@ function BatchCommand(text) {
|
|||
}
|
||||
}
|
||||
}
|
||||
// End here if all it has is a rotation
|
||||
if(tlist.numberOfItems == 1 && canvas.getRotationAngle(selected)) return null;
|
||||
}
|
||||
|
||||
// if this element had no transforms, we are done
|
||||
|
@ -2132,6 +2135,7 @@ function BatchCommand(text) {
|
|||
transformListToTransform(tlist).matrix),
|
||||
m = svgroot.createSVGMatrix();
|
||||
|
||||
|
||||
// temporarily strip off the rotate and save the old center
|
||||
var gangle = canvas.getRotationAngle(selected);
|
||||
if (gangle) {
|
||||
|
@ -2157,7 +2161,11 @@ function BatchCommand(text) {
|
|||
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)
|
||||
|
@ -2359,6 +2367,11 @@ function BatchCommand(text) {
|
|||
// 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);
|
||||
|
@ -2550,8 +2563,12 @@ function BatchCommand(text) {
|
|||
// 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);
|
||||
newRot.setRotate(angle, newcenter.x, newcenter.y);
|
||||
tlist.insertItemBefore(newRot, 0);
|
||||
}
|
||||
}
|
||||
|
@ -3447,50 +3464,15 @@ function BatchCommand(text) {
|
|||
var y2 = y;
|
||||
|
||||
if(evt.shiftKey) {
|
||||
var snap = Math.PI/4; // 45 degrees
|
||||
var diff_x = x - start_x;
|
||||
var diff_y = y - start_y;
|
||||
|
||||
var angle = ((Math.atan2(start_y-y,start_x-x) * (180/Math.PI))-90) % 360;
|
||||
angle = angle<0?(360+angle):angle
|
||||
|
||||
// TODO: Write all this more efficiently
|
||||
var angle = Math.atan2(diff_y,diff_x);
|
||||
var dist = Math.sqrt(diff_x * diff_x + diff_y * diff_y);
|
||||
var val = Math.sqrt((dist*dist)/2);
|
||||
var diagonal = false;
|
||||
|
||||
if(angle >= 360-22.5 || angle < 22.5) {
|
||||
x2 = start_x;
|
||||
} else if(angle >= 22.5 && angle < 22.5 + 45) {
|
||||
diagonal = true;
|
||||
} else if(angle >= 22.5 + 45 && angle < 22.5 + 90) {
|
||||
y2 = start_y;
|
||||
} else if(angle >= 22.5 + 90 && angle < 22.5 + 135) {
|
||||
diagonal = true;
|
||||
} else if(angle >= 22.5 + 135 && angle < 22.5 + 180) {
|
||||
x2 = start_x;
|
||||
} else if(angle >= 22.5 + 180 && angle < 22.5 + 225) {
|
||||
diagonal = true;
|
||||
} else if(angle >= 22.5 + 225 && angle < 22.5 + 270) {
|
||||
y2 = start_y;
|
||||
} else if(angle >= 22.5 + 270 && angle < 22.5 + 315) {
|
||||
diagonal = true;
|
||||
}
|
||||
|
||||
if(diagonal) {
|
||||
if(y2 < start_y) {
|
||||
y2 = start_y - val;
|
||||
} else {
|
||||
y2 = start_y + val;
|
||||
}
|
||||
|
||||
if(x2 < start_x) {
|
||||
x2 = start_x - val;
|
||||
} else {
|
||||
x2 = start_x + val;
|
||||
}
|
||||
}
|
||||
var snapangle= Math.round(angle/snap)*snap;
|
||||
x2 = start_x + dist*Math.cos(snapangle);
|
||||
y2 = start_y + dist*Math.sin(snapangle);
|
||||
}
|
||||
|
||||
|
||||
shape.setAttributeNS(null, "x2", x2);
|
||||
shape.setAttributeNS(null, "y2", y2);
|
||||
|
@ -4831,16 +4813,36 @@ function BatchCommand(text) {
|
|||
this.addSeg = function(index) {
|
||||
// Adds a new segment
|
||||
var seg = p.segs[index];
|
||||
|
||||
if(!seg.prev) return;
|
||||
|
||||
var prev = seg.prev;
|
||||
|
||||
var new_x = (seg.item.x + prev.item.x) / 2;
|
||||
var new_y = (seg.item.y + prev.item.y) / 2;
|
||||
|
||||
var list = elem.pathSegList;
|
||||
var newseg = elem.createSVGPathSegLinetoAbs(new_x, new_y);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -5030,10 +5032,17 @@ function BatchCommand(text) {
|
|||
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;
|
||||
|
@ -9038,7 +9047,7 @@ function BatchCommand(text) {
|
|||
// Function: getVersion
|
||||
// Returns a string which describes the revision number of SvgCanvas.
|
||||
this.getVersion = function() {
|
||||
return "svgcanvas.js ($Rev: 1569 $)";
|
||||
return "svgcanvas.js ($Rev: 1573 $)";
|
||||
};
|
||||
|
||||
this.setUiStrings = function(strs) {
|
||||
|
|
|
@ -410,7 +410,9 @@ It is copied as a standard HTML attribute.
|
|||
[['pre'], attrs],
|
||||
[['q', 'blockquote'], attrs+[:cite]],
|
||||
[['ins','del'], attrs+[:cite,:datetime]],
|
||||
[['ol','ul','li'], attrs],
|
||||
[['ol'], attrs+[:reversed, :start]],
|
||||
[['ul'], attrs],
|
||||
[['li'], attrs+[:value]],
|
||||
['table',attrs+[:summary, :width, :frame, :rules, :border, :cellspacing, :cellpadding]],
|
||||
['caption',attrs],
|
||||
[['colgroup','col'],attrs+[:span, :width]+cellhalign+cellvalign],
|
||||
|
|
Loading…
Reference in a new issue