Applying recent 2.4 branch changes to trunk

git-svn-id: http://svg-edit.googlecode.com/svn/trunk@1174 eee81c28-f429-11dd-99c0-75d572ba1ddd
master
Alexis Deveria 2010-01-08 20:36:39 +00:00
parent bb0d190b4a
commit 4313c95d7e
5 changed files with 271 additions and 123 deletions

View File

@ -1,110 +1,157 @@
[
{"id":"layer_new","title":"لایه جدید"},
{"id":"layer_delete","title":"حذف لایه"},
{"id":"layer_rename","title":"تغییر نام لایه"},
{"id":"layer_up","title":"لایه انتقال بالا"},
{"id":"layer_down","title":"حرکت لایه پایین"},
{"id":"tool_clear","title":"تصویر جدید [N]"},
{"id":"tool_open","title":"تصویر را باز [O]"},
{"id":"tool_save","title":"ذخیره تصویر [S]"},
{"id":"tool_docprops","title":"خواص و سند [I]"},
{"id":"tool_source","title":"ویرایش منبع [U]"},
{"id":"tool_undo","title":"واگرد [Z]"},
{"id":"tool_redo","title":"ازنو [Y]"},
{"id":"tool_clone","title":"کلون عنصر [C]"},
{"id":"tool_delete","title":"حذف عنصر [Delete/Backspace]"},
{"id":"tool_move_top","title":"انتقال به بالا [Shift Up]"},
{"id":"tool_move_bottom","title":"انتقال به پایین [Shift Down]"},
{"id":"group_opacity","title":"تغییر قلم دوم از اقلام انتخاب شده تاری"},
{"id":"angle","title":"تغییر زاویه چرخش"},
{"id":"tool_clone_multi","title":"عناصر کلون [C]"},
{"id":"tool_delete_multi","title":"حذف المان ها انتخاب شده [Delete/Backspace]"},
{"id":"tool_alignleft","title":"چپ چین"},
{"id":"tool_aligncenter","title":"چین مرکز"},
{"id":"tool_alignright","title":"راست چین"},
{"id":"tool_aligntop","title":"ترازبالا"},
{"id":"tool_alignmiddle","title":"تراز میانه"},
{"id":"tool_alignbottom","title":"ترازپایین"},
{"id":"align_relative_to","title":"چین نسبت به ..."},
{"id":"tool_group","title":"عناصر گروه [G]"},
{"id":"tool_ungroup","title":"عناصر Ungroup [G]"},
{"id":"rect_x","title":"تغییر مستطیل اکس مختصات"},
{"id":"rect_y","title":"تغییر ý مستطیل مختصات"},
{"id":"rect_width","title":"تغییر عرض مستطیل"},
{"id":"rect_height","title":"تغییر ارتفاع مستطیل"},
{"id":"rect_rx","title":"تغییر مستطیل گوشه شعاع"},
{"id":"image_x","title":"تغییر تصویر اکس مختصات"},
{"id":"image_y","title":"تغییر تصویر هماهنگ ý"},
{"id":"image_width","title":"تغییر عرض تصویر"},
{"id":"image_height","title":"تغییر ارتفاع با مزه"},
{"id":"image_url","title":"تغییر آدرس"},
{"id":"circle_cx","title":"cx 'sدایره تغییر مختصات"},
{"id":"circle_cy","title":"دایره تغییر 'scy مختصات"},
{"id":"circle_r","title":"شعاع دایره را تغییر"},
{"id":"ellipse_cx","title":"تغییر مختصات بیضی 'scx"},
{"id":"ellipse_cy","title":"بیضی تغییر 'scy مختصات"},
{"id":"ellipse_rx","title":"x بیضی تغییر 'sشعاع"},
{"id":"ellipse_ry","title":"ý شعاع بیضی تغییر 's"},
{"id":"line_x1","title":"خط شروع را تغییر مختصات x"},
{"id":"line_y1","title":"تغییر خط را هماهنگ با شروع ý"},
{"id":"line_x2","title":"خط پایان را تغییر مختصات x"},
{"id":"line_y2","title":"تغییر خط را پایان دادن به مختصات ý"},
{"id":"text_x","title":"تغییر متن اکس مختصات"},
{"id":"text_y","title":"تغییر ý متن مختصات"},
{"id":"tool_bold","title":"متن پررنگ [B]"},
{"id":"tool_italic","title":"متن ایتالیک [I]"},
{"id":"font_family","title":"تغییر فونت خانواده"},
{"id":"font_size","title":"تغییر اندازه فونت"},
{"id":"text","title":"مطالب تغییر متن"},
{"id":"tool_select","title":"انتخاب ابزار [1]"},
{"id":"tool_path","title":"ابزار مداد [2]"},
{"id":"tool_line","title":"خط ابزار [3]"},
{"id":"tools_rect_show","title":"میدان / Rect ابزار [4/Shift 4]"},
{"id":"tools_ellipse_show","title":"بیضی / دایره ابزار [5/Shift 5]"},
{"id":"tool_text","title":"ابزار متن [6]"},
{"id":"tool_poly","title":"پلی ابزار [7]"},
{"id":"tool_image","title":"ابزار تصویر [8]"},
{"id":"tool_zoom","title":"زوم ابزار [Ctrl Up/Down]"},
{"id":"zoom","title":"تغییر سطح زوم"},
{"id":"fill_color","title":"تغییر رنگ را پر کنید"},
{"id":"stroke_color","title":"تغییر رنگ سکته مغزی"},
{"id":"stroke_width","title":"تغییر عرض سکته مغزی"},
{"id":"stroke_style","title":"سکته مغزی تغییر شیوه خط تیره"},
{"id":"palette","title":"کلیک کنید ، برای تغییر پر رنگ ، تغییر مکان کلیک کنید برای تغییر رنگ سکته مغزی"},
{"id":"tool_square","title":"میدان"},
{"id":"tool_rect","title":"مستطیل"},
{"id":"tool_fhrect","title":"رایگان دست مستطیل"},
{"id":"tool_circle","title":"دایره"},
{"id":"tool_ellipse","title":"بیضی"},
{"id":"tool_fhellipse","title":"رایگان دست بیضی"},
{"id":"bkgnd_color","title":"تغییر رنگ پس زمینه / تاری"},
{"id":"rwidthLabel","textContent":"عرض :"},
{"id":"rheightLabel","textContent":"قد :"},
{"id":"cornerRadiusLabel","textContent":"شعاع گوشه :"},
{"id":"iwidthLabel","textContent":"عرض:"},
{"id":"iheightLabel","textContent":"ارتفاع:"},
{"id":"svginfo_width","textContent":"عرض:"},
{"id":"svginfo_height","textContent":"قد:"},
{"id":"angleLabel","textContent":"زاویه:"},
{"id":"relativeToLabel","textContent":"نسبت به:"},
{"id":"zoomLabel","textContent":"زوم:"},
{"id":"svninfo_change_background","textContent":"بوم سابقه و هدف"},
{"id":"layersLable","textContent":"لایه:"},
{"id":"selectedPredefined","textContent":"از پیش تعریف شده را انتخاب کنید:"},
{"id":"fitToContent","textContent":"جا به محتوا"},
{"id":"tool_source_save","textContent":"ذخیره"},
{"id":"tool_docprops_save","textContent":"ذخیره"},
{"id":"tool_docprops_cancel","textContent":"انصراف"},
{"id":"tool_source_cancel","textContent":"انصراف"},
{"id":"fit_to_all","textContent":"مناسب برای همه مطالب"},
{"id":"fit_to_layer_content","textContent":"جا به محتوا لایه"},
{"id":"fit_to_sel","textContent":"به انتخاب مناسب"},
{"id":"fit_to_canvas","textContent":"متناسببا بوم"},
{"id":"selected_objects","textContent":"انتخاب اشیاء"},
{"id":"largest_object","textContent":"بزرگترین شی"},
{"id":"smallest_object","textContent":"کوچکترین شی"},
{"id":"page","textContent":"صفحه"},
{"id":"fill_tool_bottom","textContent":"پر:"},
{"id":"stroke_tool_bottom","textContent":"سکته مغزی:"},
{"id":"svninfo_dim","textContent":"ابعاد بوم"}
{"id":"layer_new","title":"‫لایه جدید‬"},
{"id":"layer_delete","title":"‫حذف لایه‬"},
{"id":"layer_rename","title":"‫تغییر نام لایه‬"},
{"id":"layer_up","title":"‫انتقال لایه به بالا‬"},
{"id":"layer_down","title":"‫انتقال لایه به پایین‬"},
{"id":"tool_clear","title":"‫تصویر جدید "},
{"id":"tool_open","title":"‫باز کردن تصویر "},
{"id":"tool_save","title":"‫ذخیره تصویر "},
{"id":"tool_docprops","title":"‫مشخصات سند "},
{"id":"tool_source","title":"‫ویرایش منبع "},
{"id":"tool_undo","title":"‫واگرد "},
{"id":"tool_redo","title":"‫ازنو "},
{"id":"tool_clone","title":"‫ایجاد کپی از عنصر "},
{"id":"tool_delete","title":"‫حذف عنصر "},
{"id":"tool_move_top","title":"‫انتقال به بالاترین "},
{"id":"tool_move_bottom","title":"‫انتقال به پایین ترین "},
{"id":"group_opacity","title":"‫تغییر تاری عنصر انتخاب شده‬"},
{"id":"angle","title":"‫تغییر زاویه چرخش‬"},
{"id":"tool_clone_multi","title":"‫ایجاد کپی از عناصر "},
{"id":"tool_delete_multi","title":"‫حذف عناصر انتخاب شده "},
{"id":"tool_alignleft","title":"‫چپ چین‬"},
{"id":"tool_aligncenter","title":"‫وسط چین‬"},
{"id":"tool_alignright","title":"‫راست چین‬"},
{"id":"tool_aligntop","title":"‫تراز بالا‬"},
{"id":"tool_alignmiddle","title":"‫تراز میانه‬"},
{"id":"tool_alignbottom","title":"‫تراز پایین‬"},
{"id":"align_relative_to","title":"‫تراز نسبت به ..."},
{"id":"tool_group","title":"‫قرار دادن عناصر در گروه "},
{"id":"tool_ungroup","title":"‫خارج کردن عناصر از گروه "},
{"id":"rect_width","title":"‫تغییر عرض مستطیل‬"},
{"id":"rect_height","title":"‫تغییر ارتفاع مستطیل‬"},
{"id":"rect_rx","title":"‫تغییر شعاع گوشه مستطیل‬"},
{"id":"image_width","title":"‫تغییر عرض تصویر‬"},
{"id":"image_height","title":"‫تغییر ارتفاع تصویر‬"},
{"id":"image_url","title":"‫تغییر نشانی وب (url)"},
{"id":"circle_cx","title":"‫تغییر مختصات cx دایره‬"},
{"id":"circle_cy","title":"‫تغییر مختصات cy دایره‬"},
{"id":"circle_r","title":"‫تغییر شعاع دایره‬"},
{"id":"ellipse_cx","title":"‫تغییر مختصات cx بیضی‬"},
{"id":"ellipse_cy","title":"‫تغییر مختصات cy بیضی‬"},
{"id":"ellipse_rx","title":"‫تغییر شعاع rx بیضی‬"},
{"id":"ellipse_ry","title":"‫تغییر شعاع ry بیضی‬"},
{"id":"line_x1","title":"‫تغییر مختصات x آغاز خط‬"},
{"id":"line_y1","title":"‫تغییر مختصات y آغاز خط‬"},
{"id":"line_x2","title":"‫تغییر مختصات x پایان خط‬"},
{"id":"line_y2","title":"‫تغییر مختصات y پایان خط‬"},
{"id":"tool_bold","title":"‫متن توپر "},
{"id":"tool_italic","title":"‫متن کج "},
{"id":"font_family","title":"‫تغییر خانواده قلم‬"},
{"id":"font_size","title":"‫تغییر اندازه قلم‬"},
{"id":"text","title":"‫تغییر محتویات متن‬"},
{"id":"tool_select","title":"‫ابزار انتخاب "},
{"id":"tool_fhpath","title":"‫ابزار مداد "},
{"id":"tool_line","title":"‫ابزار خط "},
{"id":"tools_rect_show","title":"‫ابزار مستطیل/مربع "},
{"id":"tools_ellipse_show","title":"‫ابزار بیضی/دایره "},
{"id":"tool_text","title":"‫ابزار متن "},
{"id":"tool_path","title":"‫ابزار مسیر "},
{"id":"tool_image","title":"‫ابزار تصویر "},
{"id":"tool_zoom","title":"‫ابزار بزرگ نمایی "},
{"id":"zoom","title":"‫تغییر بزرگ نمایی‬"},
{"id":"fill_color","title":"‫تغییر رنگ‬"},
{"id":"stroke_color","title":"‫تغییر رنگ لبه‬"},
{"id":"stroke_width","title":"‫تغییر عرض لبه‬"},
{"id":"stroke_style","title":"‫تغییر نقطه چین لبه‬"},
{"id":"palette","title":"‫برای تغییر رنگ، کلیک کنید. برای تغییر رنگ لبه، کلید تبدیل (shift) را فشرده و کلیک کنید‬"},
{"id":"tool_square","title":"‫مربع‬"},
{"id":"tool_rect","title":"‫مستطیل‬"},
{"id":"tool_fhrect","title":"‫مستطیل با قابلیت تغییر پویا‬"},
{"id":"tool_circle","title":"‫دایره‬"},
{"id":"tool_ellipse","title":"‫بیضی‬"},
{"id":"tool_fhellipse","title":"‫بیضی با قابلیت تغییر پویا‬"},
{"id":"bkgnd_color","title":"‫تغییر رنگ پس زمینه / تاری‬"},
{"id":"rwidthLabel","textContent":"‫عرض:"},
{"id":"rheightLabel","textContent":"‫ارتفاع:"},
{"id":"cornerRadiusLabel","textContent":"‫شعاع گوشه:"},
{"id":"iwidthLabel","textContent":"‫عرض:"},
{"id":"iheightLabel","textContent":"‫ارتفاع:"},
{"id":"svginfo_width","textContent":"‫عرض:"},
{"id":"svginfo_height","textContent":"‫ارتفاع:"},
{"id":"angleLabel","textContent":"‫زاویه:"},
{"id":"relativeToLabel","textContent":"‫نسبت به:"},
{"id":"zoomLabel","textContent":"‫بزرگ نمایی:"},
{"id":"layersLabel","textContent":"‫لایه:"},
{"id":"selectedPredefined","textContent":"‫از پیش تعریف شده را انتخاب کنید:"},
{"id":"fitToContent","textContent":"‫هم اندازه شدن با محتوا‬"},
{"id":"tool_source_save","textContent":"‫اعمال تغییرات‬"},
{"id":"tool_docprops_save","textContent":"‫تأیید‬"},
{"id":"tool_docprops_cancel","textContent":"‫لغو‬"},
{"id":"tool_source_cancel","textContent":"‫لغو‬"},
{"id":"fit_to_all","textContent":"‫هم اندازه شدن با همه محتویات‬"},
{"id":"fit_to_layer_content","textContent":"‫هم اندازه شدن با محتوای لایه‬"},
{"id":"fit_to_sel","textContent":"‫هم اندازه شدن با اشیاء انتخاب شده‬"},
{"id":"fit_to_canvas","textContent":"‫هم اندازه شدن با صفحه مجازی (بوم)"},
{"id":"selected_objects","textContent":"‫اشیاء انتخاب شده‬"},
{"id":"largest_object","textContent":"‫بزرگترین شئ‬"},
{"id":"smallest_object","textContent":"‫کوچکترین شئ‬"},
{"id":"page","textContent":"‫صفحه‬"},
{"id":"fill_tool_bottom","textContent":"‫رنگ:"},
{"id":"stroke_tool_bottom","textContent":"‫لبه:"},
{"id":"path_node_x","title":"‫تغییر مختصات x نقطه‬"},
{"id":"path_node_y","title":"‫تغییر مختصات y نقطه‬"},
{"id":"seg_type","title":"‫تغییر نوع قطعه (segment)"},
{"id":"straight_segments","textContent":"‫مستقیم‬"},
{"id":"curve_segments","textContent":"‫منحنی‬"},
{"id":"tool_node_clone","title":"‫ایجاد کپی از نقطه‬"},
{"id":"tool_node_delete","title":"‫حذف نقطه‬"},
{"id":"selLayerLabel","textContent":"‫انتقال عناصر به:"},
{"id":"selLayerNames","title":"‫انتقال عناصر انتخاب شده به یک لایه متفاوت‬"},
{"id":"sidepanel_handle","title":"‫برای تغییر اندازه منوی کناری، آن را به سمت راست/چپ بکشید ","textContent":"‫لایه ها"},
{"id":"tool_wireframe","title":"‫حالت نمایش لبه ها "},
{"id":"svginfo_image_props","textContent":"‫مشخصات تصویر‬"},
{"id":"svginfo_title","textContent":"‫عنوان‬"},
{"id":"svginfo_dim","textContent":"‫ابعاد صفحه مجازی (بوم)"},
{"id":"includedImages","textContent":"‫تصاویر گنجانده شده‬"},
{"id":"image_opt_embed","textContent":"‫داده های جای داده شده (پرونده های محلی)"},
{"id":"image_opt_ref","textContent":"‫استفاده از ارجاع به پرونده‬"},
{"id":"svginfo_editor_prefs","textContent":"‫تنظیمات ویراستار‬"},
{"id":"svginfo_lang","textContent":"‫زبان‬"},
{"id":"svginfo_change_background","textContent":"‫پس زمینه ویراستار‬"},
{"id":"svginfo_bg_note","textContent":"‫توجه: پس زمینه همراه تصویر ذخیره نخواهد شد."},
{"id":"svginfo_icons","textContent":"‫اندازه شمایل‬"},
{"id":"icon_small","textContent":"‫کوچک‬"},
{"id":"icon_medium","textContent":"‫متوسط‬"},
{"id":"icon_large","textContent":"‫بزرگ‬"},
{"id":"icon_xlarge","textContent":"‫خیلی بزرگ‬"},
{"id":"selected_x","title":"‫تغییر مختصات X"},
{"id":"selected_y","title":"‫تغییر مختصات Y"},
{"id":"tool_topath","title":"‫تبدیل به مسیر‬"},
{"id":"tool_reorient","title":"‫جهت دهی مجدد مسیر‬"},
{"id":"tool_node_link","title":"‫پیوند دادن نقاط کنترل‬"},
{"js_strings": {
"invalidAttrValGiven":"‫مقدار داده شده نامعتبر است‬",
"noContentToFitTo":"‫محتوایی برای هم اندازه شدن وجود ندارد‬",
'layer':"‫لایه‬",
"dupeLayerName":"‫لایه ای با آن نام وجود دارد!",
"enterUniqueLayerName":"‫لطفا یک نام لایه یکتا انتخاب کنید‬",
"enterNewLayerName":"‫لطفا نام لایه جدید را وارد کنید‬",
"layerHasThatName":"‫لایه از قبل آن نام را دارد‬",
"QmoveElemsToLayer":"‫عناصر انتخاب شده به لایه '%s' منتقل شوند؟‬",
"QwantToClear":"‫آیا مطمئن هستید که می خواهید نقاشی را پاک کنید؟\nاین عمل باعث حذف تاریخچه واگرد شما خواهد شد!",
"QerrorsRevertToSource":"‫در منبع SVG شما خطاهای تجزیه (parse) وجود داشت.\nبه منبع SVG اصلی بازگردانده شود؟‬",
"QignoreSourceChanges":"‫تغییرات اعمال شده در منبع SVG نادیده گرفته شوند؟‬",
"featNotSupported":"‫این ویژگی پشتیبانی نشده است‬",
"enterNewImgURL":"‫نشانی وب (url) تصویر جدید را وارد کنید‬",
"ok":"‫تأیید‬",
"cancel":"‫لغو‬",
"pathNodeTooltip":"‫برای جابه جا کردن نقطه، آن را بکشید. برای تغییر قطعه (segment)، روی نقطه دوبار کلیک کنید‬",
"pathCtrlPtTooltip":"‫برای تنظیم مشخصات منحنی، نقطه کنترل را بکشید‬",
"key_up":"‫بالا ",
"key_down":"‫پایین ",
"key_backspace":"‫پس بر ",
"key_del":"‫حذف "
}
}
]

View File

@ -8,7 +8,8 @@
*/
var put_locale = function(svgCanvas, given_param){
var lang_param;
var good_langs = ['cs','de','en','es','fr','nl','ro','sk'];
// TODO: Make this array be based on entries in svg-editor.html
var good_langs = ['cs','de','en','es','fa','fr','nl','ro','sk'];
if(given_param) {
lang_param = given_param;
} else {

View File

@ -15,9 +15,9 @@
<script type="text/javascript" src="jgraduate/jquery.jgraduate.js"></script>
<script type="text/javascript" src="svgicons/jquery.svgicons.js"></script>
<script type="text/javascript" src="spinbtn/JQuerySpinBtn.js"></script>
<script type="text/javascript" src="locale/locale.js"></script>
<script type="text/javascript" src="svgcanvas.js"></script>
<script type="text/javascript" src="svg-editor.js"></script>
<script type="text/javascript" src="locale/locale.js"></script>
<!-- Release version of script tags: >
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
@ -240,8 +240,10 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
</div>
<div id="text_panel">
<div class="tool_button" id="tool_bold" title="Bold Text [B]"><span></span>B</div>
<div class="tool_button" id="tool_italic" title="Italic Text [I]"><span></span>i</div>
<div class="toolset">
<div class="tool_button" id="tool_bold" title="Bold Text [B]"><span></span>B</div>
<div class="tool_button" id="tool_italic" title="Italic Text [I]"><span></span>i</div>
</div>
<div class="toolset">
<input id="font_family" class="text_tool" type="text" title="Change Font Family" size="12"/>
@ -438,6 +440,7 @@ script type="text/javascript" src="locale/locale.min.js"></script-->
<option id="lang_de" value="de">Deutsch</option>
<option id="lang_en" value="en" selected="selected">English</option>
<option id="lang_es" value="es">Español</option>
<option id="lang_fa" value="fa">فارسی</option>
<option id="lang_fr" value="fr">Français</option>
<option id="lang_nl" value="nl">Nederlands</option>
<option id="lang_ro" value="ro">Româneşte</option>

View File

@ -216,7 +216,7 @@ function svg_edit_setup() {
selectedElement = elem;
}
}
// 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)
@ -347,8 +347,11 @@ function svg_edit_setup() {
// 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);
@ -366,7 +369,6 @@ function svg_edit_setup() {
$('#angle').val(angle);
if(svgCanvas.addedNew) {
console.log(elname)
if(elname == 'image') {
promptImgURL();
} else if(elname == 'text') {

View File

@ -8,6 +8,7 @@
* Copyright(c) 2010 Jeff Schiller
*
*/
if(!window.console) {
window.console = {};
window.console.log = function(str) {};
@ -213,7 +214,7 @@ function RemoveElementCommand(elem, parent, text) {
if (svgTransformLists[elem.id]) {
delete svgTransformLists[elem.id];
}
}
function MoveElementCommand(elem, oldNextSibling, oldParent, text) {
@ -2268,6 +2269,7 @@ function BatchCommand(text) {
aabox: {x:minx, y:miny, width:(maxx-minx), height:(maxy-miny)} };
};
// Mouse events
(function() {
var d_attr = null;
@ -3218,21 +3220,27 @@ function BatchCommand(text) {
$('#ctrlpointgrip_container *').attr('display','none');
};
var addNodeToSelection = function(point) {
var addNodeToSelection = function(point) {
// Currently only one node can be selected at a time, should allow more later
// Should point be the index or the grip element?
var is_closed = pathIsClosed();
var last_pt = current_path_pts.length/2 - 1;
if(is_closed && point == current_path_pts.length/2 - 1) {
if(is_closed && point == last_pt) {
current_path_pt = 0;
} else {
current_path_pt = point;
}
$('#pathpointgrip_container circle').attr('stroke','#00F');
var grip = $('#pathpointgrip_' + point).attr('stroke','#0FF');
var sel_point = (current_path_pt == 0 && is_closed)?last_pt:point;
$('#pathpointgrip_' + sel_point).attr('stroke','#0FF');
var grip = $('#pathpointgrip_' + point);
$('#ctrlpointgrip_container circle').attr('fill', '#EEE');
$('#ctrlpointgrip_' + current_path_pt + 'c1, #ctrlpointgrip_' + current_path_pt + 'c2').attr('fill','#0FF');
updateSegLine();
@ -4123,6 +4131,8 @@ function BatchCommand(text) {
zoomChange: function() {
if(current_mode == "pathedit") {
resetPointGrips();
updateSegLine(true);
updateSegLine();
}
},
modeChange: function() {
@ -4140,7 +4150,7 @@ function BatchCommand(text) {
},
getNodePoint: function() {
if(current_path_pt != -1) {
var pt = getPathPoint(current_path_pt, true);
var pt = getPathPoint(current_path_pt);
var list = current_path.pathSegList;
var segtype;
if(list.numberOfItems > current_path_pt+1) {
@ -4329,6 +4339,7 @@ function BatchCommand(text) {
call("changed", [current_path]);
},
moveNode: function(attr, newValue) {
newValue *= current_zoom;
var num = (attr == 'x')?0:1;
var old_path_pts = $.map(current_path_pts, function(n){return n/current_zoom;});
@ -5647,6 +5658,8 @@ function BatchCommand(text) {
ret = newg.getBBox();
while (newg.firstChild) { selected.appendChild(newg.firstChild); }
selected.parentNode.removeChild(newg);
} else if(elem.nodeName == 'path' && isWebkit) {
ret = getPathBBox(selected);
} else {
try { ret = selected.getBBox(); }
catch(e) { ret = null; }
@ -5988,7 +6001,7 @@ function BatchCommand(text) {
addCommandToHistory(batchCmd);
}
};
this.deleteSelectedElements = function() {
var batchCmd = new BatchCommand("Delete Elements");
var len = selectedElements.length;
@ -6190,8 +6203,12 @@ function BatchCommand(text) {
var oldParent = t.parentNode;
var oldNextSibling = t.nextSibling;
if (oldNextSibling == selectorManager.selectorParentGroup) oldNextSibling = null;
// first child is a comment, so call nextSibling
var firstChild = t.parentNode.firstChild.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;
}
@ -6251,6 +6268,82 @@ function BatchCommand(text) {
}
};
var getPathBBox = function(path) {
// 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
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.getStrokedBBox = function(elems) {
if(!elems) elems = canvas.getVisibleElements();
if(!elems.length) return false;
@ -6264,7 +6357,8 @@ function BatchCommand(text) {
// fine in FF, but not in other browsers (same problem mentioned
// in Issue 339 comment #2).
var bb = elem.getBBox();
var bb = canvas.getBBox(elem);
var angle = canvas.getRotationAngle(elem);
if ((angle && angle % 90) || hasMatrixTransform(canvas.getTransformList(elem))) {
// Accurate way to get BBox of rotated element in Firefox:
@ -6337,6 +6431,7 @@ function BatchCommand(text) {
var full_bb;
$.each(elems, function() {
if(full_bb) return;
if(!this.parentNode) return;
full_bb = getCheckedBBox(this);
});