From b48657cc52aa7f506ea3173e213a68e6789e8f24 Mon Sep 17 00:00:00 2001 From: performance Date: Thu, 16 Nov 2023 19:03:21 -0800 Subject: [PATCH] Adds Bulgarian support. Auto formatted by vs code. --- examples.js | 330 ++++ ...21\201\321\202\320\265\320\275\320\260.js" | 46 + ...20\260\320\264\321\200\320\260\321\202.js" | 23 + ...20\262\320\260\320\273\320\275\320\260.js" | 23 + ...21\203\321\201\321\202\320\262\320\276.js" | 28 + .../\321\200\320\270\320\261\320\260.js" | 41 + ...20\266\320\270\320\275\320\272\320\270.js" | 51 + ...20\276\320\262\320\275\320\270\320\272.js" | 102 ++ index.html | 3 +- scripts/bulgarian/bulgarian.js | 48 + scripts/bulgarian/keymap.sed | 75 + ..._\340\244\246\340\244\270\340\244\260.sed" | 79 - ...02\340\260\232\340\260\277\340\260\225.js" | 1508 +++++++++------- ...260\232\340\260\277\340\260\225Console.js" | 1563 +++++++++-------- 14 files changed, 2458 insertions(+), 1462 deletions(-) create mode 100644 "examples/Bulgarian/\320\242\321\203\321\205\320\273\320\265\320\275\320\260_\321\201\321\202\320\265\320\275\320\260.js" create mode 100644 "examples/Bulgarian/\320\272\320\262\320\260\320\264\321\200\320\260\321\202.js" create mode 100644 "examples/Bulgarian/\320\276\320\262\320\260\320\273\320\275\320\260.js" create mode 100644 "examples/Bulgarian/\320\277\321\217\321\201\321\212\321\207\320\275\320\276_\320\270\320\267\320\272\321\203\321\201\321\202\320\262\320\276.js" create mode 100644 "examples/Bulgarian/\321\200\320\270\320\261\320\260.js" create mode 100644 "examples/Bulgarian/\321\201\320\275\320\265\320\266\320\270\320\275\320\272\320\270.js" create mode 100644 "examples/Bulgarian/\321\207\320\260\321\201\320\276\320\262\320\275\320\270\320\272.js" create mode 100644 scripts/bulgarian/bulgarian.js create mode 100644 scripts/bulgarian/keymap.sed delete mode 100644 "scripts/marathi/keymap_\340\244\246\340\244\270\340\244\260.sed" diff --git a/examples.js b/examples.js index 5616118..52468d7 100644 --- a/examples.js +++ b/examples.js @@ -336,6 +336,336 @@ _працэдура_ паказаць() {\n\ }\n\ ' // End Belarusian +// Begin Bulgarian +риба ='\ +квадратен_корен = Math.sqrt;\n\ +\n\ +показване = () => {\n\ + начално_състояние();\n\ + четката_скрий();\n\ +\n\ + риба = (వ) => {\n\ + кръг(వ);\n\ + надясно(90);\n\ +\n\ + четката_нагоре();\n\ + напред(వ);\n\ + четката_надолу();\n\ +\n\ + четката_покажи();\n\ +\n\ + наляво(45);\n\ + напред(2 * వ);\n\ + надясно(90 + 45);\n\ +\n\ + напред(квадратен_корен(2 * వ * 2 * వ * 2));\n\ +\n\ + надясно(90 + 45);\n\ + напред(2 * వ);\n\ + наляво(45);\n\ +\n\ + // четката_скрий();\n\ +\n\ + четката_нагоре();\n\ + напред(వ);\n\ + четката_надолу();\n\ +\n\ + надясно(90);\n\ + };\n\ +\n\ + цвят_риба = (номер_на_цвета) => {\n\ + цвят_промени(номер_на_цвета);\n\ + риба(40 + номер_на_цвета * 1);\n\ + };\n\ + броиш_и_повтаряш(16, (క) => цвят_риба(క));\n\ +};\n\ +' +овална ='\ +// източник: https://pythonturtle.academy/tutorial-drawing-egg-shape-with-python-turtle/\n\ +\n\ +овална = (x, y, размер, наклон) => {\n\ + четката_нагоре();\n\ + позицията_промени(x, y);\n\ + четката_надолу();\n\ + посоката_промени(270 + наклон);\n\ + цвят_промени(4); // червено\n\ + надясно_кликни(размер, 180);\n\ + цвят_промени(1); // синьо\n\ + надясно_кликни(2 * размер, 45);\n\ + цвят_промени("зелено");\n\ + надясно_кликни(0.586 * размер, 90);\n\ + цвят_промени(1); // синьо\n\ + надясно_кликни(2 * размер, 45);\n\ +};\n\ +\n\ +показване = () => {\n\ + начално_състояние();\n\ + четката_скрий();\n\ + овална(90, 90, 40, 0);\n\ + овална(0, 0, 90, 45);\n\ +};\n\ +' +квадрат ='\ +/* Тук можете да напишете своите процеси. Например: */\n\ +\n\ +квадрат = ( страна ) => {\n\ + повтаряй(4, () => {\n\ + напред( страна );\n\ + надясно(90);\n\ + });\n\ +}\n\ +\n\ +показване = () => {\n\ + начално_състояние();\n\ + четката_скрий();\n\ + цвят_промени( 1 );\n\ + _тук_ страна = 100;\n\ + _тук_ номер_на_цвета = 0;\n\ + целия_цикъл( () => страна > 0, ()=> {\n\ + квадрат( страна );\n\ + надясно(36);\n\ + страна = страна - 10;\n\ + номер_на_цвета = ( номер_на_цвета + 1 ) % 16;\n\ + цвят_промени( номер_на_цвета );\n\ + } );\n\ +}\n\ +' +Тухлена_стена ='\ +// Тухлена ప్రస్తారము \n\ +\n\ +_винаги_ височина = 15\n\ +_винаги_ ширина = 2* височина \n\ +\n\ +// Тухлена == ఇటుక \n\ +\n\ +Тухлена = ( височина, ширина, предпочитан_цвят) => {\n\ + формата_започва()\n\ + повтаряй (2, () => {\n\ + напред( ширина)\n\ + надясно(90)\n\ + напред( височина)\n\ + надясно(90)\n\ + })\n\ + формата_свършва( предпочитан_цвят)\n\ + напред( ширина)\n\ +}\n\ +\n\ +показване = () => {\n\ + начално_състояние()\n\ + \n\ + yB = максимална_Y()\n\ + xB = минимална_X()\n\ + не_обикаляй()\n\ + надясно( 90)\n\ + цвят_промени( 7 ) // бяло\n\ +\n\ + целия_цикъл( () => కుంచిక.స్థానము.y > минимална_Y(), () => {\n\ + позицията_промени(xB, yB)\n\ + целия_цикъл( () => కుంచిక.స్థానము.x < максимална_X(), () => {\n\ + четката_надолу()\n\ + Тухлена(височина, ширина, "darkred")\n\ + четката_нагоре()\n\ + } )\n\ + yB = yB - височина\n\ +\n\ + позицията_промени(xB - ширина/2, yB)\n\ + целия_цикъл( () => కుంచిక.స్థానము.x < максимална_X(), () => {\n\ + четката_надолу()\n\ + Тухлена(височина, ширина, "darkred")\n\ + четката_нагоре()\n\ + } )\n\ + yB = yB - височина\n\ + } )\n\ +}\n\ +' +пясъчно_изкуство ='\ +\n\ +показване = () => {\n\ + начално_състояние();\n\ + четката_скрий();\n\ + повтаряй(6, () => {\n\ + цвят_промени( 0 );\n\ + надясно(180);\n\ + _тук_ страна = 100;\n\ + _тук_ номер_на_цвета = 0;\n\ + целия_цикъл( () => страна > 0, ()=> {\n\ + \n\ + надясно_кликни(страна, 30 );\n\ + \n\ + надясно(30);\n\ + страна = страна - 10;\n\ + номер_на_цвета = ( номер_на_цвета + 15 ) % 16;\n\ + цвят_промени( номер_на_цвета );\n\ + } );\n\ + });\n\ +\n\ + надясно(310);\n\ + четката_нагоре();\n\ + напред(60 );\n\ + четката_надолу()\n\ + цвят_промени( 13 );\n\ + пълен_кръг(5 );\n\ + кръг(10);\n\ +}\n\ +' +снежинки ='\ +\n\ +\n\ +минимална_стойност = Math.min\n\ +\n\ +_метод_ кох_път (дължина, дълбочина) {\n\ + ако_иначе( () => (дълбочина == 0),\n\ + () => { напред(дължина); },\n\ + () => {\n\ + // ఎడమ వైపు బుడిప \n\ + кох_път (дължина/3, дълбочина-1);\n\ + наляво(60); \n\ + кох_път (дължина/3, дълбочина-1);\n\ + надясно(120); \n\ + кох_път (дължина/3, дълбочина-1);\n\ + наляво(60); \n\ + кох_път (дължина/3, дълбочина-1);\n\ + } )\n\ +}\n\ +\n\ +\n\ +_метод_ кох_химера (дължина, дълбочина) {\n\ + ъгъл (30);\n\ + позицията_промени(-дължина/2,-.3 * дължина);\n\ + кох_път (дължина, дълбочина);\n\ + надясно(120);\n\ + кох_път (дължина, дълбочина);\n\ + надясно(120);\n\ + кох_път (дължина, дълбочина);\n\ + надясно(120);\n\ +}\n\ + \n\ +химера = ()=> {\n\ + път_цветове.push(произволно_число(15) );\n\ + път_цветове.shift();\n\ + броиш_и_повтаряш (6, ( క ) => {\n\ + цвят_промени( път_цветове [క] );\n\ + кох_химера( дължина * (క+1) * (క+1), క)\n\ + } );\n\ +}\n\ +\n\ +_метод_ показване() {\n\ + начално_състояние();\n\ + дължина = .045* минимална_стойност(максимална_X(), максимална_Y())\n\ + път_цветове = [];\n\ + броиш_и_повтаряш (6, ( క ) => {\n\ + път_цветове[క] = произволно_число(6);\n\ + } );\n\ +\n\ + четката_скрий();\n\ + играй(химера,1)\n\ +}\n\ +' +часовник ='\ +// గోడ часовник\n\ +\n\ +_навсякъде_ కొలత;\n\ +\n\ +// часовник చుట్టూ క్షణముల గీతలు గీయుటకు\n\ +_метод_ క్షణముల_గీతలు(x, y, వ్యాసార్థము) {\n\ + _тук_ గీత_дължина = 7;\n\ + _тук_ ఖాళీ = వ్యాసార్థము - గీత_дължина;\n\ + цвят_промени( 1 ) ; // синьо ;\n\ + ширина(1);\n\ + броиш_и_повтаряш( 60, ( కో ) => {\n\ + _тук_ థీటా = కో * 6;\n\ + // ప్రతి ఐదవది దళసరి గా వేయవలెను\n\ + ширина( ( ( కో % 5 ) ? 1 : 3)/130* కొలత)\n\ + четката_нагоре();\n\ + позицията_промени(0,0);\n\ + ъгъл(థీటా);\n\ + напред(ఖాళీ);\n\ + четката_надолу();\n\ + напред(గీత_дължина);\n\ + });\n\ + \n\ +}\n\ +\n\ +\n\ +// గంటలు, నిమిషాలూ సూచించే అంకెలు\n\ +_метод_ అంకెలు(x, y, వ్యాసార్థము) {\n\ + четката_нагоре();\n\ + _тук_ అక్షర_размер = 20/130 * కొలత\n\ + шрифт_установи(అక్షర_размер+"px sans-serif");\n\ + цвят_промени("నలుపు");\n\ + броиш_и_повтаряш( 12, ( గంట ) =>{\n\ + позицията_промени(x,y);\n\ + ъгъл(గంట * 30);\n\ + напред(వ్యాసార్థము); // to center of digit\n\ + ъгъл(180);\n\ + напред(10/130 * కొలత); // vertical correction to baseline\n\ + надясно(90);\n\ + // క్రింది, ఎడమ భాగమునకు అనుప్రస్థ సరదుబాటు\n\ + напред( ( (గంట < 10 ) ? 6 : 10 )/130 * కొలత)\n\ + // if (గంట < 10) {\n\ + // напред(6/130 * కొలత); // horizontal correction to lower left corner\n\ + // } else {\n\ + // напред(10/130 * కొలత)\n\ + // }\n\ + надясно(180);\n\ + пиши(గంట);\n\ + })\n\ + четката_надолу();\n\ +}\n\ +\n\ +// చేతులు గీయుటకు \n\ +_метод_ చెయ్యి (థీటా, చెయ్యి_ширина, дължина, цвят) {\n\ + _тук_ కూచి_తగ్గింపు = 5;\n\ + _тук_ కూచి_తగ్గింపులు = (дължина / కూచి_తగ్గింపు);\n\ + _тук_ ширина_సర్దుబాటు = చెయ్యి_ширина / కూచి_తగ్గింపులు;\n\ + позицията_промени(0, 0);\n\ + ъгъл(థీటా);\n\ + цвят_промени(цвят);\n\ + // for (_навсякъде_ step = 0; step < дължина; step = step + కూచి_తగ్గింపు) \n\ + броиш_и_повтаряш( కూచి_తగ్గింపులు, ( అడుగు) => \n\ + {\n\ + ширина( చెయ్యి_ширина ); // కుంచిక ширина\n\ + напред(కూచి_తగ్గింపు);\n\ + చెయ్యి_ширина = చెయ్యి_ширина - ширина_సర్దుబాటు;\n\ + }\n\ + );\n\ +}\n\ +\n\ +_метод_ చేతులు(గంటలు, నిమిషములు, క్షణములు) {\n\ + // క్షణముల చెయ్యి\n\ + _тук_ క్షణముకెన్ని_డిగ్రీలు = 6; // = 360 degrees/60 క్షణములు\n\ + చెయ్యి(క్షణములు * క్షణముకెన్ని_డిగ్రీలు, 4, 100/130 * కొలత, "red");\n\ + // నిమిషముల చెయ్యి \n\ + _тук_ నిమిషానికెన్ని_డిగ్రీలు = 0.1; // = 360 degrees /3600 క్షణములు /గంట\n\ + _тук_ నిమిషములుInక్షణములు = నిమిషములు * 60 + క్షణములు;\n\ + చెయ్యి(నిమిషములుInక్షణములు * నిమిషానికెన్ని_డిగ్రీలు, 10, 100/130 * కొలత, "blue");\n\ + // గంటల చెయ్యి\n\ + _тук_ గంటకెన్ని_డిగ్రీలు = .1/12; // = నిమిషానికెన్ని_డిగ్రీలు / 12 గంటలు \n\ + _тук_ గంటలుInక్షణములు = ((గంటలు % 12) * 3600) + నిమిషములుInక్షణములు;\n\ + చెయ్యి(గంటలుInక్షణములు * గంటకెన్ని_డిగ్రీలు, 10, 60/130 * కొలత, "green");\n\ +}\n\ +\n\ +// часовникను పునరావృతము చేయుటకు\n\ +_метод_ часовник() {\n\ + изтрий();\n\ + కొలత = .9 * Math.min( максимална_X(), максимална_Y())\n\ + అంకెలు(0, 0, 110/130 * కొలత);\n\ + цвят_промени("lightgreen");\n\ + позицията_промени(0,0);\n\ + ширина(1/130* కొలత)\n\ + кръг(130/130 * కొలత );\n\ + క్షణముల_గీతలు(0, 0, 130/130 * కొలత );\n\ + _тук_ సమయము = new Date();\n\ + చేతులు(సమయము.getHours(), సమయము.getMinutes(), సమయము.getSeconds());\n\ +}\n\ +\n\ +_метод_ показване() {\n\ + начално_състояние();\n\ + четката_скрий();\n\ + играй(часовник,1000); // часовникను ప్రతి క్షణము పునరావృతము చేయ వలెను.\n\ +}\n\ +' +// End Bulgarian // Begin English square ='\ /* Define helper functions here\n\ diff --git "a/examples/Bulgarian/\320\242\321\203\321\205\320\273\320\265\320\275\320\260_\321\201\321\202\320\265\320\275\320\260.js" "b/examples/Bulgarian/\320\242\321\203\321\205\320\273\320\265\320\275\320\260_\321\201\321\202\320\265\320\275\320\260.js" new file mode 100644 index 0000000..0f51593 --- /dev/null +++ "b/examples/Bulgarian/\320\242\321\203\321\205\320\273\320\265\320\275\320\260_\321\201\321\202\320\265\320\275\320\260.js" @@ -0,0 +1,46 @@ +// Тухлена ప్రస్తారము + +_винаги_ височина = 15 +_винаги_ ширина = 2* височина + +// Тухлена == ఇటుక + +Тухлена = ( височина, ширина, предпочитан_цвят) => { + формата_започва() + повтаряй (2, () => { + напред( ширина) + надясно(90) + напред( височина) + надясно(90) + }) + формата_свършва( предпочитан_цвят) + напред( ширина) +} + +показване = () => { + начално_състояние() + + yB = максимална_Y() + xB = минимална_X() + не_обикаляй() + надясно( 90) + цвят_промени( 7 ) // бяло + + целия_цикъл( () => కుంచిక.స్థానము.y > минимална_Y(), () => { + позицията_промени(xB, yB) + целия_цикъл( () => కుంచిక.స్థానము.x < максимална_X(), () => { + четката_надолу() + Тухлена(височина, ширина, "darkred") + четката_нагоре() + } ) + yB = yB - височина + + позицията_промени(xB - ширина/2, yB) + целия_цикъл( () => కుంచిక.స్థానము.x < максимална_X(), () => { + четката_надолу() + Тухлена(височина, ширина, "darkred") + четката_нагоре() + } ) + yB = yB - височина + } ) +} diff --git "a/examples/Bulgarian/\320\272\320\262\320\260\320\264\321\200\320\260\321\202.js" "b/examples/Bulgarian/\320\272\320\262\320\260\320\264\321\200\320\260\321\202.js" new file mode 100644 index 0000000..c3b522e --- /dev/null +++ "b/examples/Bulgarian/\320\272\320\262\320\260\320\264\321\200\320\260\321\202.js" @@ -0,0 +1,23 @@ +/* Тук можете да напишете своите процеси. Например: */ + +квадрат = ( страна ) => { + повтаряй(4, () => { + напред( страна ); + надясно(90); + }); +} + +показване = () => { + начално_състояние(); + четката_скрий(); + цвят_промени( 1 ); + _тук_ страна = 100; + _тук_ номер_на_цвета = 0; + целия_цикъл( () => страна > 0, ()=> { + квадрат( страна ); + надясно(36); + страна = страна - 10; + номер_на_цвета = ( номер_на_цвета + 1 ) % 16; + цвят_промени( номер_на_цвета ); + } ); +} diff --git "a/examples/Bulgarian/\320\276\320\262\320\260\320\273\320\275\320\260.js" "b/examples/Bulgarian/\320\276\320\262\320\260\320\273\320\275\320\260.js" new file mode 100644 index 0000000..28781be --- /dev/null +++ "b/examples/Bulgarian/\320\276\320\262\320\260\320\273\320\275\320\260.js" @@ -0,0 +1,23 @@ +// източник: https://pythonturtle.academy/tutorial-drawing-egg-shape-with-python-turtle/ + +овална = (x, y, размер, наклон) => { + четката_нагоре(); + позицията_промени(x, y); + четката_надолу(); + посоката_промени(270 + наклон); + цвят_промени(4); // червено + надясно_кликни(размер, 180); + цвят_промени(1); // синьо + надясно_кликни(2 * размер, 45); + цвят_промени("зелено"); + надясно_кликни(0.586 * размер, 90); + цвят_промени(1); // синьо + надясно_кликни(2 * размер, 45); +}; + +показване = () => { + начално_състояние(); + четката_скрий(); + овална(90, 90, 40, 0); + овална(0, 0, 90, 45); +}; diff --git "a/examples/Bulgarian/\320\277\321\217\321\201\321\212\321\207\320\275\320\276_\320\270\320\267\320\272\321\203\321\201\321\202\320\262\320\276.js" "b/examples/Bulgarian/\320\277\321\217\321\201\321\212\321\207\320\275\320\276_\320\270\320\267\320\272\321\203\321\201\321\202\320\262\320\276.js" new file mode 100644 index 0000000..d9a576b --- /dev/null +++ "b/examples/Bulgarian/\320\277\321\217\321\201\321\212\321\207\320\275\320\276_\320\270\320\267\320\272\321\203\321\201\321\202\320\262\320\276.js" @@ -0,0 +1,28 @@ + +показване = () => { + начално_състояние(); + четката_скрий(); + повтаряй(6, () => { + цвят_промени( 0 ); + надясно(180); + _тук_ страна = 100; + _тук_ номер_на_цвета = 0; + целия_цикъл( () => страна > 0, ()=> { + + надясно_кликни(страна, 30 ); + + надясно(30); + страна = страна - 10; + номер_на_цвета = ( номер_на_цвета + 15 ) % 16; + цвят_промени( номер_на_цвета ); + } ); + }); + + надясно(310); + четката_нагоре(); + напред(60 ); + четката_надолу() + цвят_промени( 13 ); + пълен_кръг(5 ); + кръг(10); +} diff --git "a/examples/Bulgarian/\321\200\320\270\320\261\320\260.js" "b/examples/Bulgarian/\321\200\320\270\320\261\320\260.js" new file mode 100644 index 0000000..0fe273e --- /dev/null +++ "b/examples/Bulgarian/\321\200\320\270\320\261\320\260.js" @@ -0,0 +1,41 @@ +квадратен_корен = Math.sqrt; + +показване = () => { + начално_състояние(); + четката_скрий(); + + риба = (వ) => { + кръг(వ); + надясно(90); + + четката_нагоре(); + напред(వ); + четката_надолу(); + + четката_покажи(); + + наляво(45); + напред(2 * వ); + надясно(90 + 45); + + напред(квадратен_корен(2 * వ * 2 * వ * 2)); + + надясно(90 + 45); + напред(2 * వ); + наляво(45); + + // четката_скрий(); + + четката_нагоре(); + напред(వ); + четката_надолу(); + + надясно(90); + }; + + цвят_риба = (номер_на_цвета) => { + цвят_промени(номер_на_цвета); + риба(40 + номер_на_цвета * 1); + }; + броиш_и_повтаряш(16, (క) => цвят_риба(క)); +}; diff --git "a/examples/Bulgarian/\321\201\320\275\320\265\320\266\320\270\320\275\320\272\320\270.js" "b/examples/Bulgarian/\321\201\320\275\320\265\320\266\320\270\320\275\320\272\320\270.js" new file mode 100644 index 0000000..72797e7 --- /dev/null +++ "b/examples/Bulgarian/\321\201\320\275\320\265\320\266\320\270\320\275\320\272\320\270.js" @@ -0,0 +1,51 @@ + + +минимална_стойност = Math.min + +_метод_ кох_път (дължина, дълбочина) { + ако_иначе( () => (дълбочина == 0), + () => { напред(дължина); }, + () => { + // ఎడమ వైపు బుడిప + кох_път (дължина/3, дълбочина-1); + наляво(60); + кох_път (дължина/3, дълбочина-1); + надясно(120); + кох_път (дължина/3, дълбочина-1); + наляво(60); + кох_път (дължина/3, дълбочина-1); + } ) +} + + +_метод_ кох_химера (дължина, дълбочина) { + ъгъл (30); + позицията_промени(-дължина/2,-.3 * дължина); + кох_път (дължина, дълбочина); + надясно(120); + кох_път (дължина, дълбочина); + надясно(120); + кох_път (дължина, дълбочина); + надясно(120); +} + +химера = ()=> { + път_цветове.push(произволно_число(15) ); + път_цветове.shift(); + броиш_и_повтаряш (6, ( క ) => { + цвят_промени( път_цветове [క] ); + кох_химера( дължина * (క+1) * (క+1), క) + } ); +} + +_метод_ показване() { + начално_състояние(); + дължина = .045* минимална_стойност(максимална_X(), максимална_Y()) + път_цветове = []; + броиш_и_повтаряш (6, ( క ) => { + път_цветове[క] = произволно_число(6); + } ); + + четката_скрий(); + играй(химера,1) +} diff --git "a/examples/Bulgarian/\321\207\320\260\321\201\320\276\320\262\320\275\320\270\320\272.js" "b/examples/Bulgarian/\321\207\320\260\321\201\320\276\320\262\320\275\320\270\320\272.js" new file mode 100644 index 0000000..2f7e0a7 --- /dev/null +++ "b/examples/Bulgarian/\321\207\320\260\321\201\320\276\320\262\320\275\320\270\320\272.js" @@ -0,0 +1,102 @@ +// గోడ часовник + +_навсякъде_ కొలత; + +// часовник చుట్టూ క్షణముల గీతలు గీయుటకు +_метод_ క్షణముల_గీతలు(x, y, వ్యాసార్థము) { + _тук_ గీత_дължина = 7; + _тук_ ఖాళీ = వ్యాసార్థము - గీత_дължина; + цвят_промени( 1 ) ; // синьо ; + ширина(1); + броиш_и_повтаряш( 60, ( కో ) => { + _тук_ థీటా = కో * 6; + // ప్రతి ఐదవది దళసరి గా వేయవలెను + ширина( ( ( కో % 5 ) ? 1 : 3)/130* కొలత) + четката_нагоре(); + позицията_промени(0,0); + ъгъл(థీటా); + напред(ఖాళీ); + четката_надолу(); + напред(గీత_дължина); + }); + +} + + +// గంటలు, నిమిషాలూ సూచించే అంకెలు +_метод_ అంకెలు(x, y, వ్యాసార్థము) { + четката_нагоре(); + _тук_ అక్షర_размер = 20/130 * కొలత + шрифт_установи(అక్షర_размер+"px sans-serif"); + цвят_промени("నలుపు"); + броиш_и_повтаряш( 12, ( గంట ) =>{ + позицията_промени(x,y); + ъгъл(గంట * 30); + напред(వ్యాసార్థము); // to center of digit + ъгъл(180); + напред(10/130 * కొలత); // vertical correction to baseline + надясно(90); + // క్రింది, ఎడమ భాగమునకు అనుప్రస్థ సరదుబాటు + напред( ( (గంట < 10 ) ? 6 : 10 )/130 * కొలత) + // if (గంట < 10) { + // напред(6/130 * కొలత); // horizontal correction to lower left corner + // } else { + // напред(10/130 * కొలత) + // } + надясно(180); + пиши(గంట); + }) + четката_надолу(); +} + +// చేతులు గీయుటకు +_метод_ చెయ్యి (థీటా, చెయ్యి_ширина, дължина, цвят) { + _тук_ కూచి_తగ్గింపు = 5; + _тук_ కూచి_తగ్గింపులు = (дължина / కూచి_తగ్గింపు); + _тук_ ширина_సర్దుబాటు = చెయ్యి_ширина / కూచి_తగ్గింపులు; + позицията_промени(0, 0); + ъгъл(థీటా); + цвят_промени(цвят); + // for (_навсякъде_ step = 0; step < дължина; step = step + కూచి_తగ్గింపు) + броиш_и_повтаряш( కూచి_తగ్గింపులు, ( అడుగు) => + { + ширина( చెయ్యి_ширина ); // కుంచిక ширина + напред(కూచి_తగ్గింపు); + చెయ్యి_ширина = చెయ్యి_ширина - ширина_సర్దుబాటు; + } + ); +} + +_метод_ చేతులు(గంటలు, నిమిషములు, క్షణములు) { + // క్షణముల చెయ్యి + _тук_ క్షణముకెన్ని_డిగ్రీలు = 6; // = 360 degrees/60 క్షణములు + చెయ్యి(క్షణములు * క్షణముకెన్ని_డిగ్రీలు, 4, 100/130 * కొలత, "red"); + // నిమిషముల చెయ్యి + _тук_ నిమిషానికెన్ని_డిగ్రీలు = 0.1; // = 360 degrees /3600 క్షణములు /గంట + _тук_ నిమిషములుInక్షణములు = నిమిషములు * 60 + క్షణములు; + చెయ్యి(నిమిషములుInక్షణములు * నిమిషానికెన్ని_డిగ్రీలు, 10, 100/130 * కొలత, "blue"); + // గంటల చెయ్యి + _тук_ గంటకెన్ని_డిగ్రీలు = .1/12; // = నిమిషానికెన్ని_డిగ్రీలు / 12 గంటలు + _тук_ గంటలుInక్షణములు = ((గంటలు % 12) * 3600) + నిమిషములుInక్షణములు; + చెయ్యి(గంటలుInక్షణములు * గంటకెన్ని_డిగ్రీలు, 10, 60/130 * కొలత, "green"); +} + +// часовникను పునరావృతము చేయుటకు +_метод_ часовник() { + изтрий(); + కొలత = .9 * Math.min( максимална_X(), максимална_Y()) + అంకెలు(0, 0, 110/130 * కొలత); + цвят_промени("lightgreen"); + позицията_промени(0,0); + ширина(1/130* కొలత) + кръг(130/130 * కొలత ); + క్షణముల_గీతలు(0, 0, 130/130 * కొలత ); + _тук_ సమయము = new Date(); + చేతులు(సమయము.getHours(), సమయము.getMinutes(), సమయము.getSeconds()); +} + +_метод_ показване() { + начално_състояние(); + четката_скрий(); + играй(часовник,1000); // часовникను ప్రతి క్షణము పునరావృతము చేయ వలెను. +} diff --git a/index.html b/index.html index 172b330..327e211 100644 --- a/index.html +++ b/index.html @@ -717,6 +717,7 @@

+ @@ -909,4 +910,4 @@

- \ No newline at end of file + diff --git a/scripts/bulgarian/bulgarian.js b/scripts/bulgarian/bulgarian.js new file mode 100644 index 0000000..a9aad9b --- /dev/null +++ b/scripts/bulgarian/bulgarian.js @@ -0,0 +1,48 @@ +const да = అవును; +const не = కాదు; +const има = ఉంది; +const няма = లేదు; +const рисувай = చిత్రీకరించు; +const изтрий = చెరిపి_వేయి; +const начално_състояние = ఆది_స్థితి; +const ядрото = కేంద్రకమునకు_వెళ్ళు; +const играта_свърши = ఆట_ఆపు; +const около = చుట్టు; +const не_обикаляй = చుట్టొద్దు; +const формата_започва = ఆకారము_ప్రారంభించు; +const формата_свършва = ఆకారము_ముగించు; +const напред = ముందుకు_జరుగు; +const назад = వెనుకకు_జరుగు; +const надясно = కుడి_వైపు_తిరుగు; +const наляво = ఎడమ_వైపు_తిరుగు; +const наляво_кликни = ఎడమవైపు_చాపాము; +const надясно_кликни = కుడివైపు_చాపాము; +const пълен_кръг = నిండు_వృత్తము; +const кръг = వృత్తము; +const четката_нагоре = కుంచికను_పైకి_ఎత్తు; +const четката_надолу = కుంచికను_కింద_పెట్టు; +const четката_скрий = కుంచికను_దాచు; +const четката_покажи = కుంచికను_చూపు; +const позицията_промени = స్థానము_మార్చు; +const x_използвай = xనియోగించు; +const y_използвай = yనియోగించు; +const ъгъл = కోణము; +const посоката_промени = దిశ_మార్చు; +const пиши = వ్రాయి; +const произволно_число = యాదృచ్ఛిక_సంఖ్య; +const ширина = వెడల్పు; +const цвят_промени = రంగు_మార్చు; +const шрифт_установи = అక్షరరూపము_స్థాపించు; +const максимална_X = గరిష్ఠX; +const минимална_X = కనిష్ఠX; +const максимална_Y = గరిష్ఠY; +const минимална_Y = కనిష్ఠY; +const в_клетката = గాడిలో_పెట్టు; +const броиш_и_повтаряш = లెక్క_పెడుతూ_ఆవర్తించు; +const повтаряй = ఆవర్తించు; +const целия_цикъл = యావత్_పరిక్రమ; +const ако_иначе = యది_తర్హి_అన్యథా; +const ако = యది_తర్హి; +const пауза = విరామము; +const играй = ఆడించు; +const забави = విలంబించు; diff --git a/scripts/bulgarian/keymap.sed b/scripts/bulgarian/keymap.sed new file mode 100644 index 0000000..9bd9f44 --- /dev/null +++ b/scripts/bulgarian/keymap.sed @@ -0,0 +1,75 @@ +s/_అత్ర_/_тук_/g +s/_సర్వత్ర_/_навсякъде_/g +s/_సర్వదా_/_винаги_/g +s/_విధానము_/_метод_/g +s/_ఫలము_/_резултат_/g +s/అవును/да/g +s/కాదు/не/g +s/ఉంది/има/g +s/లేదు/няма/g +s/చిత్రీకరించు/рисувай/g +s/చెరిపి_వేయి/изтрий/g +s/ఆది_స్థితి/начално_състояние/g +s/కేంద్రకమునకు_వెళ్ళు/ядрото/g +s/ఆట_ఆపు/играта_свърши/g +s/చుట్టు/около/g +s/చుట్టొద్దు/не_обикаляй/g +s/ఆకారము_ప్రారంభించు/формата_започва/g +s/ఆకారము_ముగించు/формата_свършва/g +s/ముందుకు_జరుగు/напред/g +s/వెనుకకు_జరుగు/назад/g +s/కుడి_వైపు_తిరుగు/надясно/g +s/ఎడమ_వైపు_తిరుగు/наляво/g +s/ఎడమవైపు_చాపాము/наляво_кликни/g +s/కుడివైపు_చాపాము/надясно_кликни/g +s/నిండు_వృత్తము/пълен_кръг/g +s/వృత్తము/кръг/g +s/కుంచికను_పైకి_ఎత్తు/четката_нагоре/g +s/కుంచికను_కింద_పెట్టు/четката_надолу/g +s/కుంచికను_దాచు/четката_скрий/g +s/కుంచికను_చూపు/четката_покажи/g +s/స్థానము_మార్చు/позицията_промени/g +s/xనియోగించు/x_използвай/g +s/yనియోగించు/y_използвай/g +s/కోణము/ъгъл/g +s/దిశ_మార్చు/посоката_промени/g +s/వ్రాయి/пиши/g +s/యాదృచ్ఛిక_సంఖ్య/произволно_число/g +s/వెడల్పు/ширина/g +s/రంగు_మార్చు/цвят_промени/g +s/అక్షరరూపము_స్థాపించు/шрифт_установи/g +s/గరిష్ఠX/максимална_X/g +s/కనిష్ఠX/минимална_X/g +s/గరిష్ఠY/максимална_Y/g +s/కనిష్ఠY/минимална_Y/g +s/గాడిలో_పెట్టు/в_клетката/g +s/లెక్క_పెడుతూ_ఆవర్తించు/броиш_и_повтаряш/g +s/ఆవర్తించు/повтаряй/g +s/యావత్_పరిక్రమ/целия_цикъл/g +s/యది_తర్హి_అన్యథా/ако_иначе/g +s/యది_తర్హి/ако/g +s/విరామము/пауза/g +s/ఆడించు/играй/g +s/విలంబించు/забави/g +s/ప్రదర్శన/показване/g +s/చేప/риба/g +s/అండాకారము/овална/g +s/పరిమాణము/размер/g +s/వాలు/наклон/g +s/ఎత్తు/височина/g +s/ఇష్టిక_రంగు/предпочитан_цвят/g +s/ఇష్టికా/куб/g +s/సమ_చతురస్రము/квадрат/g +s/భుజము/страна/g +s/రంగు_సంఖ్య/номер_на_цвета/g +s/పొడవు/дължина/g +s/లోతు/дълбочина/g +s/కోఖ్_రేఖ/кох_път/g +s/కోఖ్_హిమ_రేకు/кох_химера/g +s/రేకు_రంగులు/път_цветове/g +s/హిమ_రేకులు/химера/g +s/గడియారము/часовник/g +s/వర్గమూలము/квадратен_корен/g +s/కనిష్ఠ_విలువ/минимална_стойност/g +s/రంగు/цвят/g +s/మూలము/източник/g diff --git "a/scripts/marathi/keymap_\340\244\246\340\244\270\340\244\260.sed" "b/scripts/marathi/keymap_\340\244\246\340\244\270\340\244\260.sed" deleted file mode 100644 index 57e9477..0000000 --- "a/scripts/marathi/keymap_\340\244\246\340\244\270\340\244\260.sed" +++ /dev/null @@ -1,79 +0,0 @@ -s/_అత్ర_/_येथे_/g -s/_సర్వత్ర_/_सर्वत्र_/g -s/_సర్వదా_/_सर्वदा_/g -s/_విధానము_/_प्रक्रिया_/g -s/_ఫలము_/_फलितम_/g -s/అవును/होय/g -s/కాదు/नाही/g -s/ఉంది/असते/g -s/లేదు/नसते/g -s/చిత్రీకరించు/चित्रित/g -s/చెరిపి_వేయి/मिटवा/g -s/ఆది_స్థితి/प्रारंभिक_स्थिती/g -s/కేంద్రకమునకు_వెళ్ళు/केंद्रात_जा/g -s/ఆట_ఆపు/खेळ_थांबा/g -s/చుట్టు/चार/g -s/చుట్టొద్దు/बांधा/g -s/ఆకారము_ప్రారంభించు/रिक्त_स्थानात_सुरुवात/g -s/ఆకారము_ముగించు/रिक्त_स्थानात_समाप्त/g -s/ముందుకు_జరుగు/मुशीत_आगा/g -s/వెనుకకు_జరుగు/मुशीत_आगा/g -s/కుడి_వైపు_తిరుగు/दाहिणे_मोड/g -s/ఎడమ_వైపు_తిరుగు/डावा_मोड/g -s/ఎడమవైపు_చాపాము/बांध_डावा_वक्र/g -s/కుడివైపు_చాపాము/दाहिणे_वक्र/g -s/నిండు_వృత్తము/पूर्ण_वृत्त/g -s/వృత్తము/वृत्त/g -s/కుంచికను_పైకి_ఎత్తు/पेंटिल_वर_उच्च_करा/g -s/కుంచికను_కింద_పెట్టు/पेंटिल_खाली_राहता/g -s/కుంచికను_దాచు/पेंटिल_काढा/g -s/కుంచికను_చూపు/पेंटिल_दाखवा/g -s/స్థానము_మార్చు/स्थान_बदला/g -s/xనియోగించు/x_वापरा/g -s/yనియోగించు/y_वापरा/g -s/కోణము/कोन/g -s/దిశ_మార్చు/दिशा_बदला/g -s/వ్రాయి/लिहा/g -s/యాదృచ్ఛిక_సంఖ్య/यादृच्छिक_संख्या/g -s/వెడల్పు/चौडाई/g -s/రంగు_మార్చు/रंग_बदला/g -s/అక్షరరూపము_స్థాపించు/फॉन्ट_स्थापित_करा/g -s/గరిష్ఠX/अधिकतम_X/g -s/కనిష్ఠX/न्यूनतम_X/g -s/గరిష్ఠY/अधिकतम_Y/g -s/కనిష్ఠY/न्यूनतम_Y/g -s/గాడిలో_పెట్టు/रेंज_मध्ये_कसा/g -s/లెక్క_పెడుతూ_ఆవర్తించు/गणना_केल्यानंतर_पुनरावलोक/g -s/ఆవర్తించు/आवर्तीत/g -s/యావత్_పరిక్రమ/यावत्तेच/g -s/యది_తర్హి_అన్యథా/यदि_तरी_नको/g -s/యది_తర్హి/यदि_तरी/g -s/విరామము/रुका/g -s/ఆడించు/खेळ/g -s/విలంబించు/स्थगित/g - -s/ప్రదర్శన/प्रदर्शन/g -s/చేప/मासे/g -s/అండాకారము/अंडाची_आकृती/g -s/పరిమాణము/किंमत/g -s/వాలు/ढिंग/g -s/ఎత్తు/ऊच/g -s/ఇష్టిక_రంగు/इटला_रंग/g -s/ఇష్టికా/इटले/g -s/సమ_చతురస్రము/चौरस/g -s/భుజము/साइड/g -s/రంగు_సంఖ్య/रंग_क्रमांक/g -s/నీలము/नील/g -s/ఎరుపు/लाल/g -s/తెలుపు/पांढरा/g -s/ఆకుపచ్చ/हिरवा/g -s/పొడవు/लांबाई/g -s/లోతు/गहिराई/g -s/కోఖ్_రేఖ/कोख_रेखा/g -s/కోఖ్_హిమ_రేకు/कोख_हिम_रेखा/g -s/రేకు_రంగులు/पुष्पांच्या_रंग/g -s/హిమ_రేకులు/हिम_फ्लेक्स/g -s/గడియారము/घड्याळ/g -s/వర్గమూలము/वर्गमूळ/g -s/కనిష్ఠ_విలువ/न्यूनतम_मूल्य/g -s/రంగు/रंग/g diff --git "a/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225.js" "b/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225.js" index 3dc4db5..d1364c9 100644 --- "a/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225.js" +++ "b/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225.js" @@ -1,12 +1,12 @@ /************************************************************************ -* కుంచిక.js -- javascript for the కుంచిక graphic language extensions -* -* Copyright (c) 2015-2019 Kirk Carlson -* MIT license -* -* would like to allow optional animation of each line drawn -* see jsfiddle.net/epistemex/c85cmy0z/ for example of how to do this -************************************************************************/ + * కుంచిక.js -- javascript for the కుంచిక graphic language extensions + * + * Copyright (c) 2015-2019 Kirk Carlson + * MIT license + * + * would like to allow optional animation of each line drawn + * see jsfiddle.net/epistemex/c85cmy0z/ for example of how to do this + ************************************************************************/ /************************************************************************************* Coordinate systems... @@ -43,7 +43,6 @@ the png for the canvas. Turtle moves are accumulated and then exported enmass. *************************************************************************************/ - // get a handle for the canvases in the document var imageCanvas = document.getElementById("imagecanvas"); var imageContext = imageCanvas.getContext("2d"); @@ -70,33 +69,31 @@ const లేదు = false; // const ಇದೆ = ఉంది; // const ಇಲ್ಲ = లేదు; - //////RENDERING FUNCTIONS - -function Pos (x,y) { - this.x = x - this.y = y +function Pos(x, y) { + this.x = x; + this.y = y; } -function Turtle () { - this.mouse_స్థానము = new Pos(0,0) - this.mousedown_handled = true - this.స్థానము = new Pos(0,0) - this.కోణము = 0 - this.penDown = true - this.వెడల్పు = 1 - this.visible = true // controls కుంచిక visibility - this.redraw = true // controls redrawing కుంచిక every move - this.ఆకారాము = false // controls inclusion of segments from a filled shape - this.wrap = true // controls wraping at the edge - this.font = "10pt normal Helvetica, sans-serif" - this.రంగు = "నలుపు" -}; +function Turtle() { + this.mouse_స్థానము = new Pos(0, 0); + this.mousedown_handled = true; + this.స్థానము = new Pos(0, 0); + this.కోణము = 0; + this.penDown = true; + this.వెడల్పు = 1; + this.visible = true; // controls కుంచిక visibility + this.redraw = true; // controls redrawing కుంచిక every move + this.ఆకారాము = false; // controls inclusion of segments from a filled shape + this.wrap = true; // controls wraping at the edge + this.font = "10pt normal Helvetica, sans-serif"; + this.రంగు = "నలుపు"; +} // initialize the state of the కుంచిక var కుంచిక = new Turtle(); -console.log("కుంచిక కోణము: " + కుంచిక.కోణము + ", అక్షర రూపము: "+ కుంచిక.font) +console.log("కుంచిక కోణము: " + కుంచిక.కోణము + ", అక్షర రూపము: " + కుంచిక.font); /******************************************************************************* * initialize -- initialize the కుంచిక graphics system @@ -106,21 +103,21 @@ console.log("కుంచిక కోణము: " + కుంచిక.కో * returns: None ******************************************************************************/ function initialize() { - కుంచిక.mouse_స్థానము.x = 0 - కుంచిక.mouse_స్థానము.y = 0 - కుంచిక.mousedown_handled = true - కుంచిక.స్థానము.x = 0 - కుంచిక.స్థానము.y = 0 - కుంచిక.కోణము = 0 - కుంచిక.penDown = true - కుంచిక.వెడల్పు = 1 - కుంచిక.visible = true - కుంచిక.redraw = true - కుంచిక.ఆకారాము = false - కుంచిక.wrap = true - కుంచిక.font = "10pt normal Helvetica, sans-serif" - కుంచిక.రంగు = "నలుపు" -/* + కుంచిక.mouse_స్థానము.x = 0; + కుంచిక.mouse_స్థానము.y = 0; + కుంచిక.mousedown_handled = true; + కుంచిక.స్థానము.x = 0; + కుంచిక.స్థానము.y = 0; + కుంచిక.కోణము = 0; + కుంచిక.penDown = true; + కుంచిక.వెడల్పు = 1; + కుంచిక.visible = true; + కుంచిక.redraw = true; + కుంచిక.ఆకారాము = false; + కుంచిక.wrap = true; + కుంచిక.font = "10pt normal Helvetica, sans-serif"; + కుంచిక.రంగు = "నలుపు"; + /* కుంచిక = { pos: { x: 0, y: 0 @@ -142,47 +139,45 @@ function initialize() { imageContext.strokeStyle = కుంచిక.రంగు; imageContext.globalAlpha = 1; - svgInitialize() + svgInitialize(); } - -function round( n, digits) { - // round n to the digits number of digits - // n is the number to be rounded - // digits is the number of digits - if (digits === undefined) { - digits = 0 - } - magnitude = Math.pow( 10, digits) - return Math.round( n * magnitude) / magnitude +function round(n, digits) { + // round n to the digits number of digits + // n is the number to be rounded + // digits is the number of digits + if (digits === undefined) { + digits = 0; + } + magnitude = Math.pow(10, digits); + return Math.round(n * magnitude) / magnitude; } - // **** SVG VARIABLES **** -const svgPrecision = 3 -var svgBlob = "" -var svgD = "" +const svgPrecision = 3; +var svgBlob = ""; +var svgD = ""; var svgLastMove = undefined; var svgPath = ""; var svgBackground = ""; -var pathCount = 0 -var svgXHighWater = 0 -var svgXLowWater = 0 -var svgYHighWater = 0 -var svgYLowWater = 0 +var pathCount = 0; +var svgXHighWater = 0; +var svgXLowWater = 0; +var svgYHighWater = 0; +var svgYLowWater = 0; function svgInitialize() { -// వెడల్పు and height are problemmatic here as not all or more of the canvas may be used. - svgBlob = "" - svgD = "" + // వెడల్పు and height are problemmatic here as not all or more of the canvas may be used. + svgBlob = ""; + svgD = ""; svgPath = ""; svgBackground = ""; - pathCount = 0 - svgXHighWater = 0 - svgXLowWater = 0 - svgYHighWater = 0 - svgYLowWater = 0 + pathCount = 0; + svgXHighWater = 0; + svgXLowWater = 0; + svgYHighWater = 0; + svgYLowWater = 0; } /* ***SAMPLE SVG*** @@ -212,106 +207,134 @@ function svgInitialize() { */ - // what calls this? // forward only when a path isn't already open? // might be the easiest // then it can Close a path because it just appends -function svgOpenPath( x, y) { - // TODO(DSR) : uncomment this. - // console.log( "sOP:", x, y, svgD) - if (svgPath == "") { // no path open - svgPath = ' svgXHighWater) { - svgXHighWater = x + radx + if (x + radx > svgXHighWater) { + svgXHighWater = x + radx; } if (x - radx < svgXLowWater) { - svgXLowWater = x - radx + svgXLowWater = x - radx; } if (y + rady > svgYHighWater) { - svgYHighWater = y + rady + svgYHighWater = y + rady; } if (y - rady < svgYLowWater) { - svgYLowWater = y - rady + svgYLowWater = y - rady; } } - -function svgAppendPath( rx, ry) { +function svgAppendPath(rx, ry) { // TODO(DSR) : uncomment this. // console.log( "sAP:",rx, ry, కుంచిక.penDown, "last:", svgLastMove) - updateHighWater( కుంచిక.స్థానము.x, కుంచిక.స్థానము.y) + updateHighWater(కుంచిక.స్థానము.x, కుంచిక.స్థానము.y); - if (కుంచిక.penDown) { // pen down - if (svgPath === "") { // path not open, putting off as long as possible - svgOpenPath( కుంచిక.స్థానము.x - rx, కుంచిక.స్థానము.y - ry); // position of where కుంచిక started line segment + if (కుంచిక.penDown) { + // pen down + if (svgPath === "") { + // path not open, putting off as long as possible + svgOpenPath(కుంచిక.స్థానము.x - rx, కుంచిక.స్థానము.y - ry); // position of where కుంచిక started line segment svgLastMove = undefined; // since the open was absolute, don't need lead in - updateHighWater( కుంచిక.స్థానము.x - rx, కుంచిక.స్థానము.y - ry) + updateHighWater(కుంచిక.స్థానము.x - rx, కుంచిక.స్థానము.y - ry); } - if (svgLastMove !== undefined) { // move the accumulated movement - svgD = svgD + " m " + round( svgLastMove[0], svgPrecision) + " " + round( svgLastMove[1], svgPrecision) - svgLastMove = undefined + if (svgLastMove !== undefined) { + // move the accumulated movement + svgD = + svgD + + " m " + + round(svgLastMove[0], svgPrecision) + + " " + + round(svgLastMove[1], svgPrecision); + svgLastMove = undefined; } - svgD = svgD + " l " + round( rx, svgPrecision) + " " + round( ry, svgPrecision) - } else { // pen up + svgD = + svgD + " l " + round(rx, svgPrecision) + " " + round(ry, svgPrecision); + } else { + // pen up if (svgLastMove !== undefined) { - svgLastMove[0] = svgLastMove[0] + rx - svgLastMove[1] = svgLastMove[1] + ry + svgLastMove[0] = svgLastMove[0] + rx; + svgLastMove[1] = svgLastMove[1] + ry; } else { - svgLastMove = [rx, ry] + svgLastMove = [rx, ry]; } } // TODO(DSR) : uncomment this. // console.log( "sAP svgD:",svgD) } - // assuming on రంగు change, వెడల్పు change or shape begin or shape end, the current path is closed // really should not close path if nothing has marked... can this be done in the open path? function svgClosePath() { - if (svgPath !== "") { // something to close + if (svgPath !== "") { + // something to close //if (svgLastMove !== undefined) { // output accumulated movement // svgD = svgD + " m " + round( svgLastMove[0], svgPrecision) + " " + round( svgLastMove[1], svgPrecision) //} //else no move accumulated, nothing to do, but close the stroke - svgPath = svgPath + '"' + svgD + '" fill="none" vector-effect="non-scaling-stroke" />\n' - svgBlob = svgBlob + svgPath - svgD = "" - svgPath = "" + svgPath = + svgPath + + '"' + + svgD + + '" fill="none" vector-effect="non-scaling-stroke" />\n'; + svgBlob = svgBlob + svgPath; + svgD = ""; + svgPath = ""; } // else no path open, nothing to close or add. - svgLastMove = undefined // just toss it out + svgLastMove = undefined; // just toss it out } function svgClose() { -//really want to set the size of the blob here and provide a transform -// so svgBlog = preamble + svgBlob + '\n' + let svgOpenBlob = + '\n'; if (svgBackground !== "") { - svgOpenBlob = svgOpenBlob + '\n'; + svgOpenBlob = + svgOpenBlob + + '\n'; } - svgOpenBlob = svgOpenBlob + '\n' - svgBlob = svgOpenBlob + svgBlob - svgBlob = svgBlob + '\n'; - svgBlob = svgBlob + ''; + svgOpenBlob = + svgOpenBlob + + '\n'; + svgBlob = svgOpenBlob + svgBlob; + svgBlob = svgBlob + "\n"; + svgBlob = svgBlob + ""; } - /******************************************************************************* * drawIf -- draw the కుంచిక and the current image if redraw is true * Complicated drawings render faster if redraw is false @@ -321,12 +344,11 @@ function svgClose() { * returns: None ******************************************************************************/ function drawIf() { - if (కుంచిక.redraw) { - చిత్రీకరించు(); - } + if (కుంచిక.redraw) { + చిత్రీకరించు(); + } } - /******************************************************************************* * draw -- draw the కుంచిక and the current image * @@ -335,40 +357,47 @@ function drawIf() { * returns: None ******************************************************************************/ function చిత్రీకరించు() { - clearContext(కుంచికContext); - // draw the కుంచిక, if it is visible - if (కుంచిక.visible) { - let x = కుంచిక.స్థానము.x; - let y = కుంచిక.స్థానము.y; - let w = 10; - let h = 15; - కుంచికContext.save(); - // use canvas centered coordinates facing upwards - centerCoords(కుంచికContext); - // move the origin to the కుంచిక center - కుంచికContext.translate(x, y); - // rotate about the center of the కుంచిక - కుంచికContext.rotate(-కుంచిక.కోణము); - // move the కుంచిక back to its position - కుంచికContext.translate(-x, -y); - // draw the కుంచిక icon - కుంచికContext.beginPath(); - కుంచికContext.moveTo(x - w/2, y); - కుంచికContext.lineTo(x + w/2, y); - కుంచికContext.lineTo(x, y + h); - కుంచికContext.closePath(); - కుంచికContext.fillStyle = "green"; - కుంచికContext.fill(); - కుంచికContext.restore(); - } - // now draw the background - కుంచికContext.drawImage(imageCanvas, 0, 0, కుంచికContext.canvas.width, - కుంచికContext.canvas.height, 0, 0, కుంచికContext.canvas.width, - కుంచికContext.canvas.height); + clearContext(కుంచికContext); + // draw the కుంచిక, if it is visible + if (కుంచిక.visible) { + let x = కుంచిక.స్థానము.x; + let y = కుంచిక.స్థానము.y; + let w = 10; + let h = 15; + కుంచికContext.save(); + // use canvas centered coordinates facing upwards + centerCoords(కుంచికContext); + // move the origin to the కుంచిక center + కుంచికContext.translate(x, y); + // rotate about the center of the కుంచిక + కుంచికContext.rotate(-కుంచిక.కోణము); + // move the కుంచిక back to its position + కుంచికContext.translate(-x, -y); + // draw the కుంచిక icon + కుంచికContext.beginPath(); + కుంచికContext.moveTo(x - w / 2, y); + కుంచికContext.lineTo(x + w / 2, y); + కుంచికContext.lineTo(x, y + h); + కుంచికContext.closePath(); + కుంచికContext.fillStyle = "green"; + కుంచికContext.fill(); + కుంచికContext.restore(); + } + // now draw the background + కుంచికContext.drawImage( + imageCanvas, + 0, + 0, + కుంచికContext.canvas.width, + కుంచికContext.canvas.height, + 0, + 0, + కుంచికContext.canvas.width, + కుంచికContext.canvas.height + ); } // const ಚಿತ್ರಿಸಿ = చిత్రీకరించు; // ಕನ್ನಡ - /******************************************************************************* * centerCoords -- center the coordinates on a given canvas context * @@ -378,14 +407,13 @@ function చిత్రీకరించు() { * returns: None ******************************************************************************/ // use canvas centered coordinates facing upwards -function centerCoords (context) { - let వెడల్పు = context.canvas.width; - let height = context.canvas.height; - context.translate(వెడల్పు/2, height/2); - context.transform(1, 0, 0, -1, 0, 0); +function centerCoords(context) { + let వెడల్పు = context.canvas.width; + let height = context.canvas.height; + context.translate(వెడల్పు / 2, height / 2); + context.transform(1, 0, 0, -1, 0, 0); } - /******************************************************************************* * చెరిపి_వేయి -- చెరిపి_వేయి the display, don't move the కుంచిక * @@ -394,8 +422,8 @@ function centerCoords (context) { * returns: None ******************************************************************************/ function చెరిపి_వేయి() { - clearContext(imageContext); - drawIf(); + clearContext(imageContext); + drawIf(); } clear = చెరిపి_వేయి; // ತೆರವುಗೊಳಿಸಿ = చెరిపి_వేయి; // ಕನ್ನಡ @@ -408,27 +436,26 @@ clear = చెరిపి_వేయి; * returns: None ******************************************************************************/ function clearContext(context) { - context.save(); - context.setTransform(1,0,0,1,0,0); - context.clearRect(0,0,context.canvas.width,context.canvas.height); - context.restore(); + context.save(); + context.setTransform(1, 0, 0, 1, 0, 0); + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + context.restore(); } - /******************************************************************************* * ఆది_స్థితి -- reset the కుంచిక graphics and move కుంచిక to center facing North - * ఆది_స్థితి + * ఆది_స్థితి * arguments: None * * returns: None ******************************************************************************/ function ఆది_స్థితి() { - //console.log(document.getElementById("stopButton").onClick) - initialize(); - చెరిపి_వేయి(); - చిత్రీకరించు(); - ఆట_ఆపు(); - కుంచిక.ఆకారాము = false; + //console.log(document.getElementById("stopButton").onClick) + initialize(); + చెరిపి_వేయి(); + చిత్రీకరించు(); + ఆట_ఆపు(); + కుంచిక.ఆకారాము = false; } reset = ఆది_స్థితి; // ಆದಿ_ಸ್ಥಿತಿ = ఆది_స్థితి; // ಕನ್ನಡ @@ -442,8 +469,8 @@ reset = ఆది_స్థితి; ******************************************************************************/ // move the కుంచిక to the origin and set heading to 0 function కేంద్రకమునకు_వెళ్ళు() { - స్థానము_మార్చు(0,0); - దిశ_మార్చు(0); + స్థానము_మార్చు(0, 0); + దిశ_మార్చు(0); } home = కేంద్రకమునకు_వెళ్ళు; go_home = కేంద్రకమునకు_వెళ్ళు; @@ -452,18 +479,24 @@ goHome = కేంద్రకమునకు_వెళ్ళు; /******************************************************************************* * ఆట_ఆపు -- stop all animations in progress - * ఆట_ఆపు + * ఆట_ఆపు * arguments: None * * returns: None ******************************************************************************/ function ఆట_ఆపు() { - యావత్_పరిక్రమ( () => (intervals.length > 0), () => { - clearInterval(intervals.pop()); - } ); - యావత్_పరిక్రమ( () => (timeouts.length > 0), () => { - clearTimeout(timeouts.pop()); - } ); + యావత్_పరిక్రమ( + () => intervals.length > 0, + () => { + clearInterval(intervals.pop()); + } + ); + యావత్_పరిక్రమ( + () => timeouts.length > 0, + () => { + clearTimeout(timeouts.pop()); + } + ); document.getElementById("stopButton").hidden = true; } stopAnimation = ఆట_ఆపు; @@ -471,7 +504,7 @@ stopAnimation = ఆట_ఆపు; /******************************************************************************* * కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు -- set the state of the redraw flag - * కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు + * కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు * arguments: * bool: desired state of redraw flag * @@ -479,30 +512,29 @@ stopAnimation = ఆట_ఆపు; ******************************************************************************/ // turn on/off redrawing function కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు(bool) { - కుంచిక.redraw = bool; + కుంచిక.redraw = bool; } // ಕುಂಚಿಕ_ಚಲಿಸುದಾಗಲೂ_ಚಿತ್ರಿಸಿ = కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు; // ಕನ್ನಡ - /******************************************************************************* * wrap -- set the desired state of the boundary wrapping function - * wrap + * wrap * arguments: * bool: desired state of boundary wrapping function * * returns: None ******************************************************************************/ function wrap(bool) { - కుంచిక.wrap = bool; + కుంచిక.wrap = bool; } -చుట్టు = () => wrap( true ); -చుట్టొద్దు = () => wrap( false ); +చుట్టు = () => wrap(true); +చుట్టొద్దు = () => wrap(false); // ಸುತ್ತು = చుట్టు; // ಕನ್ನಡ // ಸುತ್ತಬೇಡಿ = చుట్టొద్దు; // ಕನ್ನಡ /******************************************************************************* * ఆకారము_ప్రారంభించు -- mark the beginning of a filled shape - * ఆకారము_ప్రారంభించు + * ఆకారము_ప్రారంభించు * arguments: None * * returns: None @@ -517,31 +549,33 @@ beginShape = ఆకారము_ప్రారంభించు; /******************************************************************************* * ఆకారము_ముగించు -- fill shape - * ఆకారము_ముగించు + * ఆకారము_ముగించు * arguments: * styl: fill style (రంగు, gradient, or pattern), defaulting to కుంచిక రంగు * * returns: None ******************************************************************************/ -function ఆకారము_ముగించు( styl) { +function ఆకారము_ముగించు(styl) { if (కుంచిక.ఆకారాము) { if (styl == undefined) { - styl = కుంచిక.రంగు; + styl = కుంచిక.రంగు; } - if (typeof(styl) === "number") { - if (styl < 16) { // assume standard logo కుంచిక రంగు - styl = logoColors [styl]; + if (typeof styl === "number") { + if (styl < 16) { + // assume standard logo కుంచిక రంగు + styl = logoColors[styl]; } //else { - //రంగు is assumed to be a 32-bit రంగు value + //రంగు is assumed to be a 32-bit రంగు value //} - } else if (typeof(styl) != "string") { // col is not a supported type + } else if (typeof styl != "string") { + // col is not a supported type styl = "నలుపు"; } //imageContext.save() imageContext.closePath(); - imageContext.fillStyle=styl; - imageContext.strokeStyle=కుంచిక.రంగు; //stroke and fill can be different + imageContext.fillStyle = styl; + imageContext.strokeStyle = కుంచిక.రంగు; //stroke and fill can be different if (కుంచిక.penDown) { imageContext.stroke(); imageContext.fill(); @@ -559,77 +593,77 @@ fillShape = ఆకారము_ముగించు; /******************************************************************************* * forward -- move the కుంచిక forward, allowing for possible wrap-around - * ముందుకు_జరుగు + * ముందుకు_జరుగు * arguments: * distance: number of pixels to move ముందుకు_జరుగు * * returns: None ******************************************************************************/ -function ముందుకు_జరుగు( ఎన్ని_బిందువులు) { - // define some local variables and functions - let cosAngle = Math.cos(కుంచిక.కోణము); - let sinAngle = Math.sin(కుంచిక.కోణము); - let newX; - let newY; - let distance = ఎన్ని_బిందువులు; - let entryX = కుంచిక.స్థానము.x; - let entryY = కుంచిక.స్థానము.y; - let x = కుంచిక.స్థానము.x; - let y = కుంచిక.స్థానము.y; - - // get the boundaries of the canvas - let గరిష్ఠ_X = imageContext.canvas.width / 2; - let కనిష్ఠ_X = -imageContext.canvas.width / 2; - let గరిష్ఠ_Y = imageContext.canvas.height / 2; - let కనిష్ఠ_Y = -imageContext.canvas.height / 2; - - - // wrap on the X boundary - function xWrap(cutBound, otherBound) { - let distanceToEdge = Math.abs((cutBound - x) / sinAngle); - let edgeY = cosAngle * distanceToEdge + y; - imageContext.lineTo(cutBound, edgeY); - distance -= distanceToEdge; - x = otherBound; - y = edgeY; - కుంచిక.స్థానము.x = x; - కుంచిక.స్థానము.y = y; - svgAppendPath( x - entryX, y - entryY) - } - - // wrap on the Y boundary - function yWrap(cutBound, otherBound) { - let distanceToEdge = Math.abs((cutBound - y) / cosAngle); - let edgeX = sinAngle * distanceToEdge + x; - imageContext.lineTo(edgeX, cutBound); - distance -= distanceToEdge; - x = edgeX; - y = otherBound; - కుంచిక.స్థానము.x = x; - కుంచిక.స్థానము.y = y; - svgAppendPath( x - entryX, y - entryY) - } - - // don't wrap the కుంచిక on any boundary - function noWrap(x, y) { - imageContext.lineTo(x, y); - కుంచిక.స్థానము.x = x; - కుంచిక.స్థానము.y = y; - distance = 0; - svgAppendPath( x - entryX, y - entryY) - } - - - imageContext.save(); - centerCoords(imageContext); - if (! కుంచిక.ఆకారాము) { - imageContext.beginPath(); - } - - // trace out the forward steps - యావత్_పరిక్రమ( () => (distance > 0),() => { +function ముందుకు_జరుగు(ఎన్ని_బిందువులు) { + // define some local variables and functions + let cosAngle = Math.cos(కుంచిక.కోణము); + let sinAngle = Math.sin(కుంచిక.కోణము); + let newX; + let newY; + let distance = ఎన్ని_బిందువులు; + let entryX = కుంచిక.స్థానము.x; + let entryY = కుంచిక.స్థానము.y; + let x = కుంచిక.స్థానము.x; + let y = కుంచిక.స్థానము.y; + + // get the boundaries of the canvas + let గరిష్ఠ_X = imageContext.canvas.width / 2; + let కనిష్ఠ_X = -imageContext.canvas.width / 2; + let గరిష్ఠ_Y = imageContext.canvas.height / 2; + let కనిష్ఠ_Y = -imageContext.canvas.height / 2; + + // wrap on the X boundary + function xWrap(cutBound, otherBound) { + let distanceToEdge = Math.abs((cutBound - x) / sinAngle); + let edgeY = cosAngle * distanceToEdge + y; + imageContext.lineTo(cutBound, edgeY); + distance -= distanceToEdge; + x = otherBound; + y = edgeY; + కుంచిక.స్థానము.x = x; + కుంచిక.స్థానము.y = y; + svgAppendPath(x - entryX, y - entryY); + } + + // wrap on the Y boundary + function yWrap(cutBound, otherBound) { + let distanceToEdge = Math.abs((cutBound - y) / cosAngle); + let edgeX = sinAngle * distanceToEdge + x; + imageContext.lineTo(edgeX, cutBound); + distance -= distanceToEdge; + x = edgeX; + y = otherBound; + కుంచిక.స్థానము.x = x; + కుంచిక.స్థానము.y = y; + svgAppendPath(x - entryX, y - entryY); + } + + // don't wrap the కుంచిక on any boundary + function noWrap(x, y) { + imageContext.lineTo(x, y); + కుంచిక.స్థానము.x = x; + కుంచిక.స్థానము.y = y; + distance = 0; + svgAppendPath(x - entryX, y - entryY); + } + + imageContext.save(); + centerCoords(imageContext); + if (!కుంచిక.ఆకారాము) { + imageContext.beginPath(); + } + + // trace out the forward steps + యావత్_పరిక్రమ( + () => distance > 0, + () => { // move the to current location of the కుంచిక - if (! కుంచిక.ఆకారాము) { + if (!కుంచిక.ఆకారాము) { imageContext.moveTo(x, y); } // calculate the new location of the కుంచిక after doing the forward movement @@ -637,34 +671,32 @@ function ముందుకు_జరుగు( ఎన్ని_బిందు newY = y + cosAngle * distance; // if wrap is on, trace a part segment of the path and wrap on boundary if necessary - if (! కుంచిక.ఆకారాము && కుంచిక.wrap) { - if (newX > గరిష్ఠ_X) { - xWrap(గరిష్ఠ_X, కనిష్ఠ_X); - } - else if (newX < కనిష్ఠ_X) { - xWrap(కనిష్ఠ_X, గరిష్ఠ_X); - } - else if (newY > గరిష్ఠ_Y) { - yWrap(గరిష్ఠ_Y, కనిష్ఠ_Y); - } - else if (newY < కనిష్ఠ_Y) { - yWrap(కనిష్ఠ_Y, గరిష్ఠ_Y); - } - else { - noWrap(newX, newY); - } - } else { // wrap is not on. - noWrap(newX, newY); + if (!కుంచిక.ఆకారాము && కుంచిక.wrap) { + if (newX > గరిష్ఠ_X) { + xWrap(గరిష్ఠ_X, కనిష్ఠ_X); + } else if (newX < కనిష్ఠ_X) { + xWrap(కనిష్ఠ_X, గరిష్ఠ_X); + } else if (newY > గరిష్ఠ_Y) { + yWrap(గరిష్ఠ_Y, కనిష్ఠ_Y); + } else if (newY < కనిష్ఠ_Y) { + yWrap(కనిష్ఠ_Y, గరిష్ఠ_Y); + } else { + noWrap(newX, newY); + } + } else { + // wrap is not on. + noWrap(newX, newY); } - }); - // draw only if the pen is currently down. - if (! కుంచిక.ఆకారాము && కుంచిక.penDown) { - imageContext.stroke(); - } - imageContext.restore(); - if (! కుంచిక.ఆకారాము) { - drawIf(); - } + } + ); + // draw only if the pen is currently down. + if (!కుంచిక.ఆకారాము && కుంచిక.penDown) { + imageContext.stroke(); + } + imageContext.restore(); + if (!కుంచిక.ఆకారాము) { + drawIf(); + } } fd = ముందుకు_జరుగు; @@ -694,15 +726,15 @@ backward = వెనుకకు_జరుగు; /******************************************************************************* * కుడి_వైపు_తిరుగు -- turn the కుంచిక right a number of degrees - * కుడి_వైపు_తిరుగు + * కుడి_వైపు_తిరుగు * arguments: * కోణము: కోణము in degrees to turn * * returns: None ******************************************************************************/ function కుడి_వైపు_తిరుగు(కోణము) { - కుంచిక.కోణము += degToRad(కోణము); - drawIf(); + కుంచిక.కోణము += degToRad(కోణము); + drawIf(); } turn = కుడి_వైపు_తిరుగు; @@ -721,33 +753,31 @@ turn_right = కుడి_వైపు_తిరుగు; * returns: None ******************************************************************************/ function ఎడమ_వైపు_తిరుగు(కోణము) { - కుంచిక.కోణము -= degToRad(కోణము); - drawIf(); + కుంచిక.కోణము -= degToRad(కోణము); + drawIf(); } lt = ఎడమ_వైపు_తిరుగు; // ಎಡಕ್ಕೆ_ತಿರುಗಿ = ఎడమ_వైపు_తిరుగు; // ಕನ್ನಡ - - /******************************************************************************* * ఎడమవైపు_చాపాము -- move the కుంచిక forward along a path curving to the left - * ఎడమవైపు_చాపాము + * ఎడమవైపు_చాపాము * arguments: * వ్యాసార్థము: వ్యాసార్థము of the curve * extent: number of degrees in the curve * * returns: None ******************************************************************************/ -function ఎడమవైపు_చాపాము (వ్యాసార్థము, extent) { +function ఎడమవైపు_చాపాము(వ్యాసార్థము, extent) { if (extent == undefined) { extent = 359.9999; // this doesn't work if closer to 360, don't know why } let startAngle = కుంచిక.కోణము; // in radians from 12 o'clock .. heading is same as start let counterclockwise = true; - let centerX = కుంచిక.స్థానము.x - వ్యాసార్థము * Math.cos (కుంచిక.కోణము); // left of కుంచిక - let centerY = కుంచిక.స్థానము.y + వ్యాసార్థము * Math.sin (కుంచిక.కోణము); - stopAngle = constrain( (startAngle - degToRad(extent)), 0, 2*Math.PI); // in radians CCW + let centerX = కుంచిక.స్థానము.x - వ్యాసార్థము * Math.cos(కుంచిక.కోణము); // left of కుంచిక + let centerY = కుంచిక.స్థానము.y + వ్యాసార్థము * Math.sin(కుంచిక.కోణము); + stopAngle = constrain(startAngle - degToRad(extent), 0, 2 * Math.PI); // in radians CCW కుంచిక.కోణము = stopAngle; కుంచిక.స్థానము.x = centerX + వ్యాసార్థము * Math.cos(stopAngle); కుంచిక.స్థానము.y = centerY - వ్యాసార్థము * Math.sin(stopAngle); @@ -760,7 +790,14 @@ function ఎడమవైపు_చాపాము (వ్యాసార్థ imageContext.save(); centerCoords(imageContext); imageContext.beginPath(); - imageContext.arc (centerX, centerY, వ్యాసార్థము, startAngle, stopAngle, counterclockwise); + imageContext.arc( + centerX, + centerY, + వ్యాసార్థము, + startAngle, + stopAngle, + counterclockwise + ); // draw it if (కుంచిక.penDown) { imageContext.stroke(); @@ -789,7 +826,7 @@ curveleft = ఎడమవైపు_చాపాము; /******************************************************************************* * కుడివైపు_చాపాము -- move the కుంచిక forward along a path curving to the right - * కుడివైపు_చాపాము + * కుడివైపు_చాపాము * arguments: * వ్యాసార్థము: వ్యాసార్థము of the curve * extent: number of degrees in the curve @@ -802,9 +839,9 @@ function కుడివైపు_చాపాము(వ్యాసార్థ } let startAngle = Math.PI + కుంచిక.కోణము; // in radians .. heading is same as start let counterclockwise = false; - let centerX = కుంచిక.స్థానము.x + వ్యాసార్థము * Math.cos (కుంచిక.కోణము); // right of కుంచిక - let centerY = కుంచిక.స్థానము.y - వ్యాసార్థము * Math.sin (కుంచిక.కోణము); - stopAngle = constrain( startAngle + degToRad(extent), 0, 2*Math.PI); // in radians CW + let centerX = కుంచిక.స్థానము.x + వ్యాసార్థము * Math.cos(కుంచిక.కోణము); // right of కుంచిక + let centerY = కుంచిక.స్థానము.y - వ్యాసార్థము * Math.sin(కుంచిక.కోణము); + stopAngle = constrain(startAngle + degToRad(extent), 0, 2 * Math.PI); // in radians CW కుంచిక.కోణము = stopAngle + Math.PI; కుంచిక.స్థానము.x = centerX + వ్యాసార్థము * Math.cos(stopAngle); కుంచిక.స్థానము.y = centerY - వ్యాసార్థము * Math.sin(stopAngle); @@ -813,11 +850,18 @@ function కుడివైపు_చాపాము(వ్యాసార్థ counterclockwise = !counterclockwise; startAngle = -startAngle; stopAngle = -stopAngle; - //వ్రాయి(startAngle + " " + stopAngle + " " + startAngle+degToRad(extent)) + //వ్రాయి(startAngle + " " + stopAngle + " " + startAngle+degToRad(extent)) imageContext.save(); centerCoords(imageContext); imageContext.beginPath(); - imageContext.arc (centerX, centerY, వ్యాసార్థము, startAngle, stopAngle, counterclockwise); + imageContext.arc( + centerX, + centerY, + వ్యాసార్థము, + startAngle, + stopAngle, + counterclockwise + ); // draw it if (కుంచిక.penDown) { imageContext.stroke(); @@ -827,7 +871,7 @@ function కుడివైపు_చాపాము(వ్యాసార్థ } curveRight = కుడివైపు_చాపాము; -curveright = కుడివైపు_చాపాము; +curveright = కుడివైపు_చాపాము; // ಬಲಕ್ಕೆ_ಚಾಪ = కుడివైపు_చాపాము; // ಕನ್ನಡ /******************************************************************************* @@ -844,25 +888,60 @@ function వృత్తము(వ్యాసార్థము, extent, CW) { if (CW === undefined) { CW = true; } - startAngle = కుంచిక.కోణము - Math.PI/2; // translate కుంచిక to normal canvas coordinate + startAngle = కుంచిక.కోణము - Math.PI / 2; // translate కుంచిక to normal canvas coordinate imageContext.save(); centerCoords(imageContext); imageContext.beginPath(); - imageContext.strokeStyle=కుంచిక.రంగు; + imageContext.strokeStyle = కుంచిక.రంగు; //imageContext.fillStyle=కుంచిక.రంగు; // negate angles and CW due to context translation if (extent === undefined) { - imageContext.arc (కుంచిక.స్థానము.x, కుంచిక.స్థానము.y, వ్యాసార్థము, 0, 2*Math.PI); - svgClosePath() - svgBlob = svgBlob + '\n'; - updateHighWater( కుంచిక.స్థానము.x, కుంచిక.స్థానము.y, వ్యాసార్థము + కుంచిక.వెడల్పు, వ్యాసార్థము + కుంచిక.వెడల్పు) - + imageContext.arc( + కుంచిక.స్థానము.x, + కుంచిక.స్థానము.y, + వ్యాసార్థము, + 0, + 2 * Math.PI + ); + svgClosePath(); + svgBlob = + svgBlob + + '\n'; + updateHighWater( + కుంచిక.స్థానము.x, + కుంచిక.స్థానము.y, + వ్యాసార్థము + కుంచిక.వెడల్పు, + వ్యాసార్థము + కుంచిక.వెడల్పు + ); } else if (CW) { - imageContext.arc (కుంచిక.స్థానము.x, కుంచిక.స్థానము.y, వ్యాసార్థము, -startAngle, -(startAngle+degToRad(extent)), CW); + imageContext.arc( + కుంచిక.స్థానము.x, + కుంచిక.స్థానము.y, + వ్యాసార్థము, + -startAngle, + -(startAngle + degToRad(extent)), + CW + ); } else { - imageContext.arc (కుంచిక.స్థానము.x, కుంచిక.స్థానము.y, వ్యాసార్థము, -startAngle, -(startAngle-degToRad(extent)), CW); + imageContext.arc( + కుంచిక.స్థానము.x, + కుంచిక.స్థానము.y, + వ్యాసార్థము, + -startAngle, + -(startAngle - degToRad(extent)), + CW + ); } // draw it regardless of pen up or down imageContext.stroke(); @@ -905,7 +984,7 @@ arc = వృత్తము; /******************************************************************************* * నిండు_వృత్తము -- draw a filled వృత్తము at the కుంచిక position - * నిండు_వృత్తము + * నిండు_వృత్తము * arguments: * size: వ్యాసార్థము of నిండు_వృత్తము in pixels (optional defaults to గరిష్ఠ of pensize+4, 2*pensize) * @@ -913,22 +992,35 @@ arc = వృత్తము; ******************************************************************************/ function నిండు_వృత్తము(size) { if (size == undefined) { - size = Math.max(కుంచిక.వెడల్పు+4, కుంచిక.వెడల్పు*2); + size = Math.max(కుంచిక.వెడల్పు + 4, కుంచిక.వెడల్పు * 2); } imageContext.save(); centerCoords(imageContext); imageContext.beginPath(); - imageContext.fillStyle=కుంచిక.రంగు; - imageContext.strokeStyle=కుంచిక.రంగు; - imageContext.arc (కుంచిక.స్థానము.x, కుంచిక.స్థానము.y, size, 0, 2*Math.PI); + imageContext.fillStyle = కుంచిక.రంగు; + imageContext.strokeStyle = కుంచిక.రంగు; + imageContext.arc(కుంచిక.స్థానము.x, కుంచిక.స్థానము.y, size, 0, 2 * Math.PI); // draw it regardless of pen up or down imageContext.stroke(); imageContext.fill(); imageContext.restore(); - svgClosePath() - svgBlob = svgBlob + '\n'; + svgClosePath(); + svgBlob = + svgBlob + + '\n'; drawIf(); } dot = నిండు_వృత్తము; @@ -939,7 +1031,7 @@ dot = నిండు_వృత్తము; /******************************************************************************* * కుంచికను_పైకి_ఎత్తు -- lift the కుంచిక pen up (set marking state to false) - * కుంచికను_పైకి_ఎత్తు + * కుంచికను_పైకి_ఎత్తు * arguments: None * * returns: None @@ -956,7 +1048,7 @@ penUp = కుంచికను_పైకి_ఎత్తు; /******************************************************************************* * కుంచికను_కింద_పెట్టు -- drop the కుంచిక pen (set marking state to true) - * కుంచికను_కింద_పెట్టు + * కుంచికను_కింద_పెట్టు * arguments: None * * returns: None @@ -973,14 +1065,14 @@ penDown = కుంచికను_కింద_పెట్టు; /******************************************************************************* * కుంచికను_దాచు -- do not draw the కుంచిక - * కుంచికను_దాచు + * కుంచికను_దాచు * arguments: None * * returns: None ******************************************************************************/ function కుంచికను_దాచు() { - కుంచిక.visible = false; - drawIf(); + కుంచిక.visible = false; + drawIf(); } ht = కుంచికను_దాచు; @@ -995,8 +1087,8 @@ hideTurtle = కుంచికను_దాచు; * returns: None ******************************************************************************/ function కుంచికను_చూపు() { - కుంచిక.visible = true; - drawIf(); + కుంచిక.visible = true; + drawIf(); } st = కుంచికను_చూపు; @@ -1005,7 +1097,7 @@ showTurtle = కుంచికను_చూపు; /******************************************************************************* * ప్రస్తుత_స్థానము -- return the current location of the కుంచిక - * ప్రస్తుత_స్థానము + * ప్రస్తుత_స్థానము * arguments: * * returns: None @@ -1014,21 +1106,19 @@ function ప్రస్తుత_స్థానము() { return కుంచిక.స్థానము; } - - /******************************************************************************* * స్థానము_మార్చు -- move the కుంచిక to an x,y position without leaving a mark - * స్థానము_మార్చు + * స్థానము_మార్చు * arguments: * x: x coordinate * y: y coordinate * * returns: None ******************************************************************************/ -function స్థానము_మార్చు(x,y) { - కుంచిక.స్థానము.x = x; - కుంచిక.స్థానము.y = y; - drawIf(); +function స్థానము_మార్చు(x, y) { + కుంచిక.స్థానము.x = x; + కుంచిక.స్థానము.y = y; + drawIf(); } setposition = స్థానము_మార్చు; @@ -1047,8 +1137,8 @@ goto = స్థానము_మార్చు; * returns: None ******************************************************************************/ function xనియోగించు(x) { - కుంచిక.స్థానము.x = x; - drawIf(); + కుంచిక.స్థానము.x = x; + drawIf(); } setX = xనియోగించు; @@ -1065,8 +1155,8 @@ setx = xనియోగించు; * returns: None ******************************************************************************/ function yనియోగించు(y) { - కుంచిక.స్థానము.y = y; - drawIf(); + కుంచిక.స్థానము.y = y; + drawIf(); } sety = yనియోగించు; @@ -1074,7 +1164,6 @@ setY = yనియోగించు; // ಲಂಬವಾದ_ಸ್ಥಾಪಿಸಿ = yనియోగించు; // ಕನ್ನಡ // yಸ್ಥಾಪಿಸಿ = yనియోగించు; // ಕನ್ನಡ - /******************************************************************************* * కోణము -- set the కోణము of the కుంచిక in degrees * @@ -1084,8 +1173,8 @@ setY = yనియోగించు; * returns: None ******************************************************************************/ function కోణము(కోణము) { - కుంచిక.కోణము = degToRad(కోణము); - drawIf(); + కుంచిక.కోణము = degToRad(కోణము); + drawIf(); } setheading = కోణము; @@ -1104,53 +1193,54 @@ seth = కోణము; * returns: None ******************************************************************************/ -function background( styl) { - if (styl == undefined) { - styl = కుంచిక.రంగు; - } - if (typeof(styl) === "number") { - if (styl < 16) { // assume standard logo కుంచిక రంగు - styl = logoColors [styl]; - } //else { - //రంగు is assumed to be a 32-bit రంగు value - //} - } else if (typeof(styl) != "string") { // col is not a supported type - styl = "నలుపు"; - } - imageContext.fillStyle = styl; - imageContext.fillRect(0, 0, imageCanvas.width, imageCanvas.height); - svgBackground = styl; - //imageContext.fill; +function background(styl) { + if (styl == undefined) { + styl = కుంచిక.రంగు; + } + if (typeof styl === "number") { + if (styl < 16) { + // assume standard logo కుంచిక రంగు + styl = logoColors[styl]; + } //else { + //రంగు is assumed to be a 32-bit రంగు value + //} + } else if (typeof styl != "string") { + // col is not a supported type + styl = "నలుపు"; + } + imageContext.fillStyle = styl; + imageContext.fillRect(0, 0, imageCanvas.width, imageCanvas.height); + svgBackground = styl; + //imageContext.fill; } - /******************************************************************************* * write -- print some text along path of కుంచిక, కుంచిక does not move - * వ్రాయి + * వ్రాయి * arguments: * msg: text to be printed * * returns: None ******************************************************************************/ function వ్రాయి(msg) { - imageContext.save(); - centerCoords(imageContext); - imageContext.translate(కుంచిక.స్థానము.x, కుంచిక.స్థానము.y); - imageContext.transform(1, 0, 0, -1, 0, 0); - imageContext.rotate(కుంచిక.కోణము - Math.PI/2); - imageContext.textAlign = "left"; - imageContext.textBaseline = "bottom"; - imageContext.fillStyle = కుంచిక.రంగు; - imageContext.fillText(msg, 0, 0); - imageContext.restore(); - drawIf(); + imageContext.save(); + centerCoords(imageContext); + imageContext.translate(కుంచిక.స్థానము.x, కుంచిక.స్థానము.y); + imageContext.transform(1, 0, 0, -1, 0, 0); + imageContext.rotate(కుంచిక.కోణము - Math.PI / 2); + imageContext.textAlign = "left"; + imageContext.textBaseline = "bottom"; + imageContext.fillStyle = కుంచిక.రంగు; + imageContext.fillText(msg, 0, 0); + imageContext.restore(); + drawIf(); } write = వ్రాయి; // ಬರೆ = వ్రాయి; // ಕನ್ನಡ /******************************************************************************* * యాదృచ్ఛిక_సంఖ్య -- generate a యాదృచ్ఛిక_సంఖ్య integer between low (or 0 if unspecified) and high - * యాదృచ్ఛిక_సంఖ్య + * యాదృచ్ఛిక_సంఖ్య * arguments: * low: low limit of the యాదృచ్ఛిక_సంఖ్య number (0, if only one parameter is used) * high: high limit of the యాదృచ్ఛిక_సంఖ్య number @@ -1159,16 +1249,15 @@ write = వ్రాయి; * (int) generated యాదృచ్ఛిక_సంఖ్య number ******************************************************************************/ function యాదృచ్ఛిక_సంఖ్య(low, high) { - if (high == undefined) { - return Math.floor( (low + 1) * Math.random ()); - } else { - return Math.floor(Math.random() * (high - low + 1) + low); - } + if (high == undefined) { + return Math.floor((low + 1) * Math.random()); + } else { + return Math.floor(Math.random() * (high - low + 1) + low); + } } random = యాదృచ్ఛిక_సంఖ్య; // ಯಾದೃಚ್ಛಿಕ_ಸಂಖ್ಯೆ = యాదృచ్ఛిక_సంఖ్య; // ಕನ್ನಡ - /******************************************************************************* * ఆవర్తించు -- repeat an action n times * @@ -1179,12 +1268,15 @@ random = యాదృచ్ఛిక_సంఖ్య; * returns: None ******************************************************************************/ function ఆవర్తించు(ఎన్ని_సార్లు_చేయాలి, క్రియ) { - let ఎన్ని_సార్లు_చేసింది = 0; - for (ఎన్ని_సార్లు_చేసింది = 0; ఎన్ని_సార్లు_చేసింది < ఎన్ని_సార్లు_చేయాలి; ఎన్ని_సార్లు_చేసింది += 1) { - క్రియ(); - if (errorFound) - break; - } + let ఎన్ని_సార్లు_చేసింది = 0; + for ( + ఎన్ని_సార్లు_చేసింది = 0; + ఎన్ని_సార్లు_చేసింది < ఎన్ని_సార్లు_చేయాలి; + ఎన్ని_సార్లు_చేసింది += 1 + ) { + క్రియ(); + if (errorFound) break; + } } repeat = ఆవర్తించు; @@ -1199,16 +1291,17 @@ repeat = ఆవర్తించు; ******************************************************************************/ లెక్క_పెడుతూ_ఆవర్తించు = (ఎన్ని_సార్లు_చేయాలి, క్రియ) => { let ఎన్ని_సార్లు_చేసింది = 0; - for (ఎన్ని_సార్లు_చేసింది = 0; ఎన్ని_సార్లు_చేసింది < ఎన్ని_సార్లు_చేయాలి; ఎన్ని_సార్లు_చేసింది += 1) { - క్రియ(ఎన్ని_సార్లు_చేసింది); - if (errorFound) - break; + for ( + ఎన్ని_సార్లు_చేసింది = 0; + ఎన్ని_సార్లు_చేసింది < ఎన్ని_సార్లు_చేయాలి; + ఎన్ని_సార్లు_చేసింది += 1 + ) { + క్రియ(ఎన్ని_సార్లు_చేసింది); + if (errorFound) break; } -} +}; // repeat = ఆవర్తించు; - - /******************************************************************************* * యావత్_పరిక్రమ -- సంసక్త నిజమయ్యే వరుకు కార్యము చేస్తూ ఉంటుంది * @@ -1219,12 +1312,14 @@ repeat = ఆవర్తించు; * returns: None ******************************************************************************/ యావత్_పరిక్రమ = (సంసక్త, కార్యము) => { - while ( సంసక్త() ) { కార్యము(); } + while (సంసక్త()) { + కార్యము(); + } }; /******************************************************************************* * యది_తర్హి_అన్యథా -- సంసక్త నిజమైతే, యది_కార్యము చేస్తుంది. కాకపోతే అన్యథ_కార్యము చేస్తుంది. - * + * * * arguments: * సంసక్త: పరీక్షించ వలసినది @@ -1233,13 +1328,12 @@ repeat = ఆవర్తించు; * * returns: None ******************************************************************************/ - యది_తర్హి_అన్యథా = (సంసక్త, యది_కార్యము, అన్యథ_కార్యము) => - ( సంసక్త() ) ? యది_కార్యము() : అన్యథ_కార్యము(); - +యది_తర్హి_అన్యథా = (సంసక్త, యది_కార్యము, అన్యథ_కార్యము) => + సంసక్త() ? యది_కార్యము() : అన్యథ_కార్యము(); /******************************************************************************* * యది_తర్హి -- సంసక్త నిజమైతే, కార్యము చేస్తుంది. - * + * * * arguments: * సంసక్త: పరీక్షించ వలసినది @@ -1247,8 +1341,7 @@ repeat = ఆవర్తించు; * * returns: None ******************************************************************************/ -యది_తర్హి = (సంసక్త, కార్యము) => యది_తర్హి_అన్యథా(సంసక్త, కార్యము, ()=>{}); - +యది_తర్హి = (సంసక్త, కార్యము) => యది_తర్హి_అన్యథా(సంసక్త, కార్యము, () => {}); /******************************************************************************* * విరామము -- just wait in place for a number of milliseconds @@ -1267,7 +1360,7 @@ function విరామము(ms) { let limit = 1000 * 60 * 1; // set గరిష్ఠ time to 1 minute let i = 0; for (i = 0; i < limit; i += 1) { - if ((new Date().getTime() - start) > ms) { + if (new Date().getTime() - start > ms) { break; } } @@ -1275,21 +1368,19 @@ function విరామము(ms) { pause = విరామము; sleep = విరామము; - ///////ATTRIBUTE FUNCTIONS - /******************************************************************************* * వెడల్పు -- set the వెడల్పు of the line - * వెడల్పు + * వెడల్పు * arguments: * w: (int) వెడల్పు of the line * * returns: None ******************************************************************************/ function వెడల్పు(w) { - కుంచిక.వెడల్పు = w; - imageContext.lineWidth = w; + కుంచిక.వెడల్పు = w; + imageContext.lineWidth = w; } pensize = వెడల్పు; @@ -1314,7 +1405,7 @@ width = వెడల్పు; const నలుపు = "నలుపు"; const నీలము = "నీలము"; const నిమ్మ = "నిమ్మ"; -// "cyan", +// "cyan", const ఎరుపు = "ఎరుపు"; // "magenta" const పసుపు = "పసుపు"; @@ -1324,37 +1415,71 @@ const కపిలము = "కపిలము"; const ఆకుపచ్చ = "ఆకుపచ్చ"; const సముద్రము = "సముద్రము"; // "salmon", -// "purple", +// "purple", const నారింజ = "నారింజ"; const బూడిద = "బూడిద"; -రంగుల_పేర్లు = ["నలుపు", "నీలము", "నిమ్మ", "cyan", "ఎరుపు", "magenta", "పసుపు", "తెలుపు", -"కపిలము", "tan", "ఆకుపచ్చ", "సముద్రము", "salmon", "purple", "నారింజ", "బూడిద"] -logoColors = ["black", "blue", "lime", "cyan", "red", "magenta", "yellow", "white", - "brown", "tan", "green", "aqua", "salmon", "purple", "orange", "gray"] +రంగుల_పేర్లు = [ + "నలుపు", + "నీలము", + "నిమ్మ", + "cyan", + "ఎరుపు", + "magenta", + "పసుపు", + "తెలుపు", + "కపిలము", + "tan", + "ఆకుపచ్చ", + "సముద్రము", + "salmon", + "purple", + "నారింజ", + "బూడిద", +]; +logoColors = [ + "black", + "blue", + "lime", + "cyan", + "red", + "magenta", + "yellow", + "white", + "brown", + "tan", + "green", + "aqua", + "salmon", + "purple", + "orange", + "gray", +]; /* * returns: None ******************************************************************************/ -function రంగు_మార్చు( col ) { +function రంగు_మార్చు(col) { svgClosePath(); - if (typeof(col) === "number") { - if (col < 16) { // assume standard logo కుంచిక రంగు - col = logoColors [col]; + if (typeof col === "number") { + if (col < 16) { + // assume standard logo కుంచిక రంగు + col = logoColors[col]; // console.log( "col, logoColors [col] = ", col, logoColors [col] ); } //else { - //రంగు is assumed to be a 32-bit రంగు value + //రంగు is assumed to be a 32-bit రంగు value //} - } else if (typeof(col) != "string") { // col is not a supported type + } else if (typeof col != "string") { + // col is not a supported type col = "నలుపు"; - } - + } + const idx = రంగుల_పేర్లు.indexOf(col); // TODO(DSR) : uncomment this. - console.log( "col, idx = ", col, idx ); - if ( idx >= 0 ) { + console.log("col, idx = ", col, idx); + if (idx >= 0) { // console.log( " రంగు = ", logoColors[idx] ); col = logoColors[idx]; - } + } కుంచిక.రంగు = col; imageContext.strokeStyle = col; @@ -1371,7 +1496,7 @@ setcolor = రంగు_మార్చు; /******************************************************************************* * అక్షరరూపము_స్థాపించు -- set the font used by the write function - * అక్షరరూపము_స్థాపించు + * అక్షరరూపము_స్థాపించు * arguments: * font: string defining the font characteristics (style, variant, weight, size, * and font-family for fi ads a subsequent writes. @@ -1380,8 +1505,8 @@ setcolor = రంగు_మార్చు; * returns: None ******************************************************************************/ function అక్షరరూపము_స్థాపించు(font) { - కుంచిక.font = font; - imageContext.font = font; + కుంచిక.font = font; + imageContext.font = font; } setFont = అక్షరరూపము_స్థాపించు; @@ -1396,8 +1521,8 @@ setfont = అక్షరరూపము_స్థాపించు; * returns: * (int) the గరిష్ఠ X value for the current canvas ******************************************************************************/ -function గరిష్ఠX () { - return (imageContext.canvas.width / 2); +function గరిష్ఠX() { + return imageContext.canvas.width / 2; } maxx = గరిష్ఠX; @@ -1412,8 +1537,8 @@ maxX = గరిష్ఠX; * returns: * (int) the కనిష్ఠ X value for the current canvas ******************************************************************************/ -function కనిష్ఠX () { - return (-imageContext.canvas.width / 2); +function కనిష్ఠX() { + return -imageContext.canvas.width / 2; } minx = కనిష్ఠX; @@ -1428,8 +1553,8 @@ minX = కనిష్ఠX; * returns: * (int) the గరిష్ఠ Y value for the current canvas ******************************************************************************/ -function గరిష్ఠY () { - return (imageContext.canvas.height / 2); +function గరిష్ఠY() { + return imageContext.canvas.height / 2; } maxy = గరిష్ఠY; @@ -1438,21 +1563,20 @@ maxY = గరిష్ఠY; /******************************************************************************* * కనిష్ఠY -- get the కనిష్ఠ Y value - * కనిష్ఠY + * కనిష్ఠY * arguments: None * * returns: * (int) the కనిష్ఠ Y value for the current canvas ******************************************************************************/ -function కనిష్ఠY () { - return (-imageContext.canvas.height / 2); +function కనిష్ఠY() { + return -imageContext.canvas.height / 2; } miny = కనిష్ఠY; minY = కనిష్ఠY; // ಕನಿಷ್ಠY = కనిష్ఠY; // ಕನ್ನಡ - ///////ANIMATION SUB-MODULE //This maybe should be broken out as a separate module sometime @@ -1460,7 +1584,6 @@ minY = కనిష్ఠY; let intervals = []; //array of inteval IDs started with the animate function let timeouts = []; //array of time out IDs started with the delay function - /******************************************************************************* * ఆడించు -- repeat an action every ms millisecond to animate drawing * @@ -1471,19 +1594,19 @@ let timeouts = []; //array of time out IDs started with the delay function * returns: None ******************************************************************************/ function ఆడించు(f, ms) { - intervals.push (setInterval( function (){ - f() - if (errorFound) - stop() - }, ms)); - document.getElementById("stopButton").hidden=false; + intervals.push( + setInterval(function () { + f(); + if (errorFound) stop(); + }, ms) + ); + document.getElementById("stopButton").hidden = false; } animate = ఆడించు; - /******************************************************************************* * delay -- delay an action for ms milliseconds to animate drawing - * విలంబించు + * విలంబించు * arguments: * f: a reference to a function * ms: number of milliseconds of delay before executing function f @@ -1491,33 +1614,33 @@ animate = ఆడించు; * returns: None ******************************************************************************/ function విలంబించు(f, ms) { - timeouts.push (setTimeout(function () { - timeouts.pop(); // pop the current timer - if (timeouts.length == 0) { - document.getElementById("stopButton").hidden=true; - } - f(); - if (errorFound) - stop() - }, ms)); - document.getElementById("stopButton").hidden=false; + timeouts.push( + setTimeout(function () { + timeouts.pop(); // pop the current timer + if (timeouts.length == 0) { + document.getElementById("stopButton").hidden = true; + } + f(); + if (errorFound) stop(); + }, ms) + ); + document.getElementById("stopButton").hidden = false; } delay = విలంబించు; -కుంచికCanvas.addEventListener( "mousedown", function(e){ +కుంచికCanvas.addEventListener("mousedown", function (e) { let rect = కుంచికCanvas.getBoundingClientRect(); - let old_pos = కుంచికState.mouse_స్థానము - కుంచికState.mouse_స్థానము.x = e.clientX - rect.x - కుంచికState.mouse_స్థానము.y = e.clientY - rect.y - కుంచికState.mousedown_handled = false -} ) - + let old_pos = కుంచికState.mouse_స్థానము; + కుంచికState.mouse_స్థానము.x = e.clientX - rect.x; + కుంచికState.mouse_స్థానము.y = e.clientY - rect.y; + కుంచికState.mousedown_handled = false; +}); function waitForMouseDown(f) { let tick = 0; while (కుంచికState.mousedown_handled) { - విలంబించు(()=>{ - console.log("Waiting for mouse click" + tick) + విలంబించు(() => { + console.log("Waiting for mouse click" + tick); }, 1000); tick = tick + 1; sleep(1000); @@ -1528,7 +1651,6 @@ function waitForMouseDown(f) { ///////SUPPORT FUNCTIONS - /******************************************************************************* * degToRad -- convert angular degress into radians * @@ -1539,10 +1661,9 @@ function waitForMouseDown(f) { * (int) number of radians ******************************************************************************/ function degToRad(deg) { - return deg / 180 * Math.PI; + return (deg / 180) * Math.PI; } - /******************************************************************************* * radToDeg -- convert radians into angular degrees * @@ -1553,14 +1674,13 @@ function degToRad(deg) { * (int) number of degrees ******************************************************************************/ function radToDeg(rad) { - return rad * 180 / Math.PI; + return (rad * 180) / Math.PI; } - /******************************************************************************* * గాడిలో_పెట్టు -- constrain an కోణము to between high and low limits * - * arguments: + * arguments: * n: (int or float) number which may be contrained * low: (int or float) lowest possible return value * high: (int or float) highest possible return value @@ -1570,12 +1690,18 @@ function radToDeg(rad) { ******************************************************************************/ function గాడిలో_పెట్టు(n, low, high) { let modulo = high - low; - యావత్_పరిక్రమ( () => (n < low), () => { - n = n + modulo; - } ); - యావత్_పరిక్రమ( () => (n > high), () => { - n = n - modulo; - } ); + యావత్_పరిక్రమ( + () => n < low, + () => { + n = n + modulo; + } + ); + యావత్_పరిక్రమ( + () => n > high, + () => { + n = n - modulo; + } + ); return n; } constrain = గాడిలో_పెట్టు; @@ -1583,61 +1709,84 @@ constrain = గాడిలో_పెట్టు; var కుంచికState = new Turtle(); - function saveTurtleState(tState) { // tState is an object defining the state of a కుంచిక // కుంచిక is an object defining the current state of the కుంచిక //what about the font - tState.mouse_స్థానము.x = కుంచిక.mouse_స్థానము.x - tState.mouse_స్థానము.y = కుంచిక.mouse_స్థానము.y - tState.స్థానము.x = కుంచిక.స్థానము.x - tState.స్థానము.y = కుంచిక.స్థానము.y - tState.కోణము = కుంచిక.కోణము - tState.penDown = కుంచిక.penDown - tState.వెడల్పు = కుంచిక.వెడల్పు - tState.visible = కుంచిక.visible - tState.redraw = కుంచిక.redraw - tState.ఆకారాము = కుంచిక.ఆకారాము - tState.wrap = కుంచిక.wrap - tState.font = కుంచిక.font - tState.రంగు = కుంచిక.రంగు - console.log("sTS font: "+ tState.font + " రంగు:" + tState.రంగు) + tState.mouse_స్థానము.x = కుంచిక.mouse_స్థానము.x; + tState.mouse_స్థానము.y = కుంచిక.mouse_స్థానము.y; + tState.స్థానము.x = కుంచిక.స్థానము.x; + tState.స్థానము.y = కుంచిక.స్థానము.y; + tState.కోణము = కుంచిక.కోణము; + tState.penDown = కుంచిక.penDown; + tState.వెడల్పు = కుంచిక.వెడల్పు; + tState.visible = కుంచిక.visible; + tState.redraw = కుంచిక.redraw; + tState.ఆకారాము = కుంచిక.ఆకారాము; + tState.wrap = కుంచిక.wrap; + tState.font = కుంచిక.font; + tState.రంగు = కుంచిక.రంగు; + console.log("sTS font: " + tState.font + " రంగు:" + tState.రంగు); } - function restoreTurtleState(tState) { // tState is an object defining the state of a కుంచిక // కుంచిక is an object defining the current state of the కుంచిక //what about the font - కుంచిక.mouse_స్థానము.x = tState.mouse_స్థానము.x - కుంచిక.mouse_స్థానము.y = tState.mouse_స్థానము.y - కుంచిక.స్థానము.x = tState.స్థానము.x - కుంచిక.స్థానము.y = tState.స్థానము.y - కుంచిక.కోణము = tState.కోణము - కుంచిక.penDown = tState.penDown - కుంచిక.వెడల్పు = tState.వెడల్పు - కుంచిక.visible = tState.visible - కుంచిక.redraw = tState.redraw - కుంచిక.ఆకారాము = tState.ఆకారాము - కుంచిక.wrap = tState.wrap - కుంచిక.font = tState.font - కుంచిక.రంగు = tState.రంగు + కుంచిక.mouse_స్థానము.x = tState.mouse_స్థానము.x; + కుంచిక.mouse_స్థానము.y = tState.mouse_స్థానము.y; + కుంచిక.స్థానము.x = tState.స్థానము.x; + కుంచిక.స్థానము.y = tState.స్థానము.y; + కుంచిక.కోణము = tState.కోణము; + కుంచిక.penDown = tState.penDown; + కుంచిక.వెడల్పు = tState.వెడల్పు; + కుంచిక.visible = tState.visible; + కుంచిక.redraw = tState.redraw; + కుంచిక.ఆకారాము = tState.ఆకారాము; + కుంచిక.wrap = tState.wrap; + కుంచిక.font = tState.font; + కుంచిక.రంగు = tState.రంగు; imageContext.font = tState.font; imageContext.lineWidth = tState.వెడల్పు; imageContext.strokeStyle = tState.రంగు; - console.log("rTS font: "+ కుంచిక.font + " రంగు:" + కుంచిక.రంగు) - console.log("rTS font: "+ imageContext.font + " రంగు:" + imageContext.strokeStyle) + console.log("rTS font: " + కుంచిక.font + " రంగు:" + కుంచిక.రంగు); + console.log( + "rTS font: " + imageContext.font + " రంగు:" + imageContext.strokeStyle + ); } - -function logTurtle( where) { +function logTurtle(where) { // t is an object defining the state of a కుంచిక - if (where === undefined) where = "???" - console.log (where + " x:" + కుంచిక.స్థానము.x + " y:" + కుంచిక.స్థానము.y + " కోణము:" + కుంచిక.కోణము + " రంగు:" + కుంచిక.రంగు) - console.log (" penDown:" + కుంచిక.penDown + " వెడల్పు:" + కుంచిక.వెడల్పు + " visible:" + కుంచిక.visible) - console.log (" redraw:" + కుంచిక.redraw + " shape:" + కుంచిక.ఆకారాము + " wrap:" + కుంచిక.wrap) - console.log (" font:" + కుంచిక.font) + if (where === undefined) where = "???"; + console.log( + where + + " x:" + + కుంచిక.స్థానము.x + + " y:" + + కుంచిక.స్థానము.y + + " కోణము:" + + కుంచిక.కోణము + + " రంగు:" + + కుంచిక.రంగు + ); + console.log( + " penDown:" + + కుంచిక.penDown + + " వెడల్పు:" + + కుంచిక.వెడల్పు + + " visible:" + + కుంచిక.visible + ); + console.log( + " redraw:" + + కుంచిక.redraw + + " shape:" + + కుంచిక.ఆకారాము + + " wrap:" + + కుంచిక.wrap + ); + console.log(" font:" + కుంచిక.font); } const ಹೌದು = అవును; @@ -1646,7 +1795,7 @@ const ಅಲ್ಲ = కాదు; const ಇದೆ = ఉంది; const ಇಲ್ಲ = లేదు; -const ಚಿತ್ರಿಸಿ = చిత్రీకరించు; +const ಚಿತ್ರಿಸಿ = చిత్రీకరించు; const ತೆರವುಗೊಳಿಸಿ = చెరిపి_వేయి; const ಆದಿ_ಸ್ಥಿತಿ = ఆది_స్థితి; const ಕೇಂದ್ರಕ್ಕೆ_ಹೋಗಿ = కేంద్రకమునకు_వెళ్ళు; @@ -1656,32 +1805,32 @@ const ಸುತ್ತು = చుట్టు; const ಸುತ್ತಬೇಡಿ = చుట్టొద్దు; const ಆಕಾರವನ್ನು_ಪ್ರಾರಂಭಿಸಿ = ఆకారము_ప్రారంభించు; const ಆಕಾರವನ್ನು_ಮುಗಿಸಿ = ఆకారము_ముగించు; -const ಮುಂದೆ_ಹೋಗಿ = ముందుకు_జరుగు; +const ಮುಂದೆ_ಹೋಗಿ = ముందుకు_జరుగు; const ಹಿಂದೆ_ಹೋಗಿ = వెనుకకు_జరుగు; const ಬಲಕ್ಕೆ_ತಿರುಗಿ = కుడి_వైపు_తిరుగు; const ಎಡಕ್ಕೆ_ತಿರುಗಿ = ఎడమ_వైపు_తిరుగు; -const ಎಡಕ್ಕೆ_ಚಾಪ = ఎడమవైపు_చాపాము; -const ಬಲಕ್ಕೆ_ಚಾಪ = కుడివైపు_చాపాము; +const ಎಡಕ್ಕೆ_ಚಾಪ = ఎడమవైపు_చాపాము; +const ಬಲಕ್ಕೆ_ಚಾಪ = కుడివైపు_చాపాము; const ವೃತ್ತ = వృత్తము; const ಚಾಪ = వృత్తము; const ತುಂಬಿದ_ವೃತ್ತ = నిండు_వృత్తము; -const ಕುಂಚಿಕವನ್ನು_ಎತ್ತಿ = కుంచికను_పైకి_ఎత్తు; +const ಕುಂಚಿಕವನ್ನು_ಎತ್ತಿ = కుంచికను_పైకి_ఎత్తు; const ಕುಂಚಿಕವನ್ನು_ಕೆಳಗೆ_ಇರಿಸಿ = కుంచికను_కింద_పెట్టు; const ಕುಂಚಿಕವನ್ನು_ಮರೆಮಾಡಿ = కుంచికను_దాచు; const ಕುಂಚಿಕವನ್ನು_ತೋರಿಸಿ = కుంచికను_చూపు; const ಸ್ಥಾನ_ಬದಿಲಿಸಿ = స్థానము_మార్చు; const xಸ್ಥಾಪಿಸಿ = xనియోగించు; const ಅಡ್ಡಗೆರೆ_ಸ್ಥಾಪಿಸಿ = xనియోగించు; -const ಲಂಬವಾದ_ಸ್ಥಾಪಿಸಿ = yనియోగించు; -const yಸ್ಥಾಪಿಸಿ = yనియోగించు; -const ಕೋಣ = కోణము; -const ದಿಕ್ಕನ್ನು_ಬದಲಿಸಿ = కోణము; +const ಲಂಬವಾದ_ಸ್ಥಾಪಿಸಿ = yనియోగించు; +const yಸ್ಥಾಪಿಸಿ = yనియోగించు; +const ಕೋಣ = కోణము; +const ದಿಕ್ಕನ್ನು_ಬದಲಿಸಿ = కోణము; -const ಬರೆ = వ్రాయి; +const ಬರೆ = వ్రాయి; const ಯಾದೃಚ್ಛಿಕ_ಸಂಖ್ಯೆ = యాదృచ్ఛిక_సంఖ్య; -const ಅಗಲ = వెడల్పు; -const ವರ್ಣ_ಸ್ಥಾಪಿಸಿ = రంగు_మార్చు; -const ವರ್ಣ_ಬದಲಿಸಿ = రంగు_మార్చు; +const ಅಗಲ = వెడల్పు; +const ವರ್ಣ_ಸ್ಥಾಪಿಸಿ = రంగు_మార్చు; +const ವರ್ಣ_ಬದಲಿಸಿ = రంగు_మార్చు; const ಅಕ್ಷರರೂಪವನ್ನು_ಸ್ಥಾಪಿಸಿ = అక్షరరూపము_స్థాపించు; const ಗರಿಷ್ಠX = గరిష్ఠX; const ಕನಿಷ್ಠX = కనిష్ఠX; @@ -1699,7 +1848,6 @@ const ವಿರಾಮ = విరామము; const ಆಡಿಸಿ = ఆడించు; const ವಿಲಂಬಿಸಿ = విలంబించు; - /////////////////// const आम् = అవును; @@ -1708,48 +1856,48 @@ const न = కాదు; const अस्ति = ఉంది; const नास्ति = లేదు; -const चित्रय = చిత్రీకరించు; +const चित्रय = చిత్రీకరించు; const मार्जय = చెరిపి_వేయి; // ?? -const आदिस्थितिः = ఆది_స్థితి; -const केन्द्रं_गच्छ = కేంద్రకమునకు_వెళ్ళు; -const केलीं_रुन्धि = ఆట_ఆపు; +const आदिस्थितिः = ఆది_స్థితి; +const केन्द्रं_गच्छ = కేంద్రకమునకు_వెళ్ళు; +const केलीं_रुन्धि = ఆట_ఆపు; const कूर्चे_चालिते_विलिख = కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు; -const परिवर्तस्व = చుట్టు; -const न_परिवर्तस्व = చుట్టొద్దు; -const आकारम्_प्रारभस्व = ఆకారము_ప్రారంభించు; -const आकारम्_पूरय = ఆకారము_ముగించు; -const अग्रे_गच्छतु = ముందుకు_జరుగు; -const पृष्ठतो_गच्छतु = వెనుకకు_జరుగు; -const दक्षिणं_वर्तस्व = కుడి_వైపు_తిరుగు; -const वामं_वर्तस्व = ఎడమ_వైపు_తిరుగు; -const वामतश्चापः = ఎడమవైపు_చాపాము; -const दक्षिणतश्चापः = కుడివైపు_చాపాము; -const वृत्तम् = వృత్తము; -const चापः = వృత్తము; -const पूरितं_वृत्तम् = నిండు_వృత్తము; -const कुंचिकं_उन्नय = కుంచికను_పైకి_ఎత్తు; -const कुंचिकं_अवतार = కుంచికను_కింద_పెట్టు; -const कुंचिकं_गोपाय = కుంచికను_దాచు; -const कुंचिकं_दर्शय = కుంచికను_చూపు; -const स्थानम्_परिवर्तय = స్థానము_మార్చు; -const x_स्थापय = xనియోగించు; -const तिर्यग्रेखे_स्थापय = xనియోగించు; -const y_स्थापय = yనియోగించు; -const ऊर्ध्वरेखे_स्थापय = yనియోగించు; -const कोणः = కోణము; -const दिशाम्_परिवर्तय = కోణము; - -const लिख = వ్రాయి; -const यादृच्छिकसङ्ख्या = యాదృచ్ఛిక_సంఖ్య; -const दीर्घता = వెడల్పు; -const वर्णं_स्थापय = రంగు_మార్చు; -const वर्णं_परिवर्तय = రంగు_మార్చు; +const परिवर्तस्व = చుట్టు; +const न_परिवर्तस्व = చుట్టొద్దు; +const आकारम्_प्रारभस्व = ఆకారము_ప్రారంభించు; +const आकारम्_पूरय = ఆకారము_ముగించు; +const अग्रे_गच्छतु = ముందుకు_జరుగు; +const पृष्ठतो_गच्छतु = వెనుకకు_జరుగు; +const दक्षिणं_वर्तस्व = కుడి_వైపు_తిరుగు; +const वामं_वर्तस्व = ఎడమ_వైపు_తిరుగు; +const वामतश्चापः = ఎడమవైపు_చాపాము; +const दक्षिणतश्चापः = కుడివైపు_చాపాము; +const वृत्तम् = వృత్తము; +const चापः = వృత్తము; +const पूरितं_वृत्तम् = నిండు_వృత్తము; +const कुंचिकं_उन्नय = కుంచికను_పైకి_ఎత్తు; +const कुंचिकं_अवतार = కుంచికను_కింద_పెట్టు; +const कुंचिकं_गोपाय = కుంచికను_దాచు; +const कुंचिकं_दर्शय = కుంచికను_చూపు; +const स्थानम्_परिवर्तय = స్థానము_మార్చు; +const x_स्थापय = xనియోగించు; +const तिर्यग्रेखे_स्थापय = xనియోగించు; +const y_स्थापय = yనియోగించు; +const ऊर्ध्वरेखे_स्थापय = yనియోగించు; +const कोणः = కోణము; +const दिशाम्_परिवर्तय = కోణము; + +const लिख = వ్రాయి; +const यादृच्छिकसङ्ख्या = యాదృచ్ఛిక_సంఖ్య; +const दीर्घता = వెడల్పు; +const वर्णं_स्थापय = రంగు_మార్చు; +const वर्णं_परिवर्तय = రంగు_మార్చు; const अक्षररूपं_स्थापय = అక్షరరూపము_స్థాపించు; const गरिष्ठ_X = గరిష్ఠX; const कनिष्ठ_X = కనిష్ఠX; const गरिष्ठ_Y = గరిష్ఠY; const कनिष्ठ_Y = కనిష్ఠY; -const निर्बध्नाहि = గాడిలో_పెట్టు; +const निर्बध्नाहि = గాడిలో_పెట్టు; const आवर्तय = ఆవర్తించు; const गणयन्_आवर्तय = లెక్క_పెడుతూ_ఆవర్తించు; @@ -1760,51 +1908,50 @@ const विरामः = విరామము; const चालय = ఆడించు; const विलंबय = విలంబించు; - // Belarusian const так = అవును; const няма = కాదు; const існуе = ఉంది; const не_існуе = లేదు; -const маляваць = చిత్రీకరించు; +const маляваць = చిత్రీకరించు; const сціраць = చెరిపి_వేయి; // ?? -const пачатковы_стан = ఆది_స్థితి; -const ісці_ў_цэнтр = కేంద్రకమునకు_వెళ్ళు; -const спыніць_гульню = ఆట_ఆపు; -const вакол = చుట్టు; -const Не_абмотваць = చుట్టొద్దు; -const пачніце_маляваць_форму = ఆకారము_ప్రారంభించు; +const пачатковы_стан = ఆది_స్థితి; +const ісці_ў_цэнтр = కేంద్రకమునకు_వెళ్ళు; +const спыніць_гульню = ఆట_ఆపు; +const вакол = చుట్టు; +const Не_абмотваць = చుట్టొద్దు; +const пачніце_маляваць_форму = ఆకారము_ప్రారంభించు; const спыніць_маляваць_форму = ఆకారము_ముగించు; //хопіць -const ісці_наперад = ముందుకు_జరుగు; -const ісці_назад = వెనుకకు_జరుగు; -const павярнуць_направа = కుడి_వైపు_తిరుగు; -const павярнуць_налева = ఎడమ_వైపు_తిరుగు; -const дуга_налева = ఎడమవైపు_చాపాము; -const дуга_направа = కుడివైపు_చాపాము; -const круг = వృత్తము; -const дуга = వృత్తము; -const запоўнены_круг = నిండు_వృత్తము; -const падніміце_пэндзаль = కుంచికను_పైకి_ఎత్తు; -const пакладзеце_пэндзаль = కుంచికను_కింద_పెట్టు; -const схавайце_пэндзаль = కుంచికను_దాచు; -const выявіць_пэндзаль = కుంచికను_చూపు; -const змяніць_становішча = స్థానము_మార్చు; -const змяніць_X = xనియోగించు; -const змяніць_гарызанталь = xనియోగించు; -const змяніць_Y = yనియోగించు; -const змяніць_вертыкаль = yనియోగించు; -const вугал = కోణము; -const змінниць_кіруна = కోణము; -const запісаць = వ్రాయి; -const выпадковы_лік = యాదృచ్ఛిక_సంఖ్య; -const усталяваць_шырыню = వెడల్పు; -const змяніць_колер_на = రంగు_మార్చు; +const ісці_наперад = ముందుకు_జరుగు; +const ісці_назад = వెనుకకు_జరుగు; +const павярнуць_направа = కుడి_వైపు_తిరుగు; +const павярнуць_налева = ఎడమ_వైపు_తిరుగు; +const дуга_налева = ఎడమవైపు_చాపాము; +const дуга_направа = కుడివైపు_చాపాము; +const круг = వృత్తము; +const дуга = వృత్తము; +const запоўнены_круг = నిండు_వృత్తము; +const падніміце_пэндзаль = కుంచికను_పైకి_ఎత్తు; +const пакладзеце_пэндзаль = కుంచికను_కింద_పెట్టు; +const схавайце_пэндзаль = కుంచికను_దాచు; +const выявіць_пэндзаль = కుంచికను_చూపు; +const змяніць_становішча = స్థానము_మార్చు; +const змяніць_X = xనియోగించు; +const змяніць_гарызанталь = xనియోగించు; +const змяніць_Y = yనియోగించు; +const змяніць_вертыкаль = yనియోగించు; +const вугал = కోణము; +const змінниць_кіруна = కోణము; +const запісаць = వ్రాయి; +const выпадковы_лік = యాదృచ్ఛిక_సంఖ్య; +const усталяваць_шырыню = వెడల్పు; +const змяніць_колер_на = రంగు_మార్చు; const ўсталяваць_шрыфт = అక్షరరూపము_స్థాపించు; const максімум_X = గరిష్ఠX; const мінімум_X = కనిష్ఠX; const максімум_Y = గరిష్ఠY; const мінімум_Y = కనిష్ఠY; -const абмежаваць_у_дыяпазоне = గాడిలో_పెట్టు; +const абмежаваць_у_дыяпазоне = గాడిలో_పెట్టు; const паўтараць = ఆవర్తించు; const паўтарыць_лічачы = లెక్క_పెడుతూ_ఆవర్తించు; const Паўтараць_пакуль = యావత్_పరిక్రమ; @@ -1815,6 +1962,57 @@ const гуляць = ఆడించు; const адкласці = విలంబించు; // +// Bulgarian + +const да = అవును; +const не = కాదు; +const има = ఉంది; +// const няма = లేదు; // already defiend +const рисувай = చిత్రీకరించు; +const изтрий = చెరిపి_వేయి; +const начално_състояние = ఆది_స్థితి; +const ядрото = కేంద్రకమునకు_వెళ్ళు; +const играта_свърши = ఆట_ఆపు; +const около = చుట్టు; +const не_обикаляй = చుట్టొద్దు; +const формата_започва = ఆకారము_ప్రారంభించు; +const формата_свършва = ఆకారము_ముగించు; +const напред = ముందుకు_జరుగు; +const назад = వెనుకకు_జరుగు; +const надясно = కుడి_వైపు_తిరుగు; +const наляво = ఎడమ_వైపు_తిరుగు; +const наляво_кликни = ఎడమవైపు_చాపాము; +const надясно_кликни = కుడివైపు_చాపాము; +const пълен_кръг = నిండు_వృత్తము; +const кръг = వృత్తము; +const четката_нагоре = కుంచికను_పైకి_ఎత్తు; +const четката_надолу = కుంచికను_కింద_పెట్టు; +const четката_скрий = కుంచికను_దాచు; +const четката_покажи = కుంచికను_చూపు; +const позицията_промени = స్థానము_మార్చు; +const x_използвай = xనియోగించు; +const y_използвай = yనియోగించు; +const ъгъл = కోణము; +const посоката_промени = దిశ_మార్చు; +const пиши = వ్రాయి; +const произволно_число = యాదృచ్ఛిక_సంఖ్య; +const ширина = వెడల్పు; +const цвят_промени = రంగు_మార్చు; +const шрифт_установи = అక్షరరూపము_స్థాపించు; +const максимална_X = గరిష్ఠX; +const минимална_X = కనిష్ఠX; +const максимална_Y = గరిష్ఠY; +const минимална_Y = కనిష్ఠY; +const в_клетката = గాడిలో_పెట్టు; +const броиш_и_повтаряш = లెక్క_పెడుతూ_ఆవర్తించు; +const повтаряй = ఆవర్తించు; +const целия_цикъл = యావత్_పరిక్రమ; +const ако_иначе = యది_తర్హి_అన్యథా; +const ако = యది_తర్హి; +const пауза = విరామము; +const играй = ఆడించు; +const забави = విలంబించు; + //////// // . French @@ -1868,8 +2066,7 @@ const si_alors = యది_తర్హి; const jouer = ఆడించు; const différer = విలంబించు; - -//// Marathi +//// Marathi const हो = అవును; const नाही = కాదు; @@ -1921,7 +2118,7 @@ const चालू_करा = ఆడించు; const विलंब_करा = విలంబించు; ////////// -// Spanish +// Spanish const sí = అవును; const no = కాదు; @@ -1972,10 +2169,9 @@ const pausa = విరామము; const jugar = ఆడించు; const aplazar = విలంబించు; - ///////////// -// Korean +// Korean /////////////////// @@ -1985,53 +2181,53 @@ const 아니요 = కాదు; const 있다 = ఉంది; const 없는 = లేదు; -const 그려주세요 = చిత్రీకరించు; +const 그려주세요 = చిత్రీకరించు; const 초기화 = చెరిపి_వేయి; // ?? reset vs 지워주세요 == "please erase" -const 초기상태 = ఆది_స్థితి; -const 중심로가주세요 = కేంద్రకమునకు_వెళ్ళు; -const 그만살려 = ఆట_ఆపు; +const 초기상태 = ఆది_స్థితి; +const 중심로가주세요 = కేంద్రకమునకు_వెళ్ళు; +const 그만살려 = ఆట_ఆపు; // const कूर्चे_चालिते_विलिख = కుంచిక_కదిలిన_ప్రతి_సారీ_చిత్రీకరించు; -const 포장하다 = చుట్టు; -const 포장하지_마십시오 = చుట్టొద్దు; -const 모양을_시작 = ఆకారము_ప్రారంభించు; -const 모양을_완성하다 = ఆకారము_ముగించు; -const 나아가다 = ముందుకు_జరుగు; -const 뒤로가다 = వెనుకకు_జరుగు; -const 우회전 = కుడి_వైపు_తిరుగు; -const 왼쪽으로돌아 = ఎడమ_వైపు_తిరుగు; - -const 시계반대방향 = ఎడమవైపు_చాపాము; -const 시계방향 = కుడివైపు_చాపాము; -const 원 = వృత్తము; -const 곡선 = వృత్తము; -const 완전한원 = నిండు_వృత్తము; - -const 솔질하다 = కుంచికను_పైకి_ఎత్తు; -const 브러시를_사용 = కుంచికను_కింద_పెట్టు; -const 브러시_숨기기 = కుంచికను_దాచు; -const 브러시를_보여 = కుంచికను_చూపు; +const 포장하다 = చుట్టు; +const 포장하지_마십시오 = చుట్టొద్దు; +const 모양을_시작 = ఆకారము_ప్రారంభించు; +const 모양을_완성하다 = ఆకారము_ముగించు; +const 나아가다 = ముందుకు_జరుగు; +const 뒤로가다 = వెనుకకు_జరుగు; +const 우회전 = కుడి_వైపు_తిరుగు; +const 왼쪽으로돌아 = ఎడమ_వైపు_తిరుగు; + +const 시계반대방향 = ఎడమవైపు_చాపాము; +const 시계방향 = కుడివైపు_చాపాము; +const 원 = వృత్తము; +const 곡선 = వృత్తము; +const 완전한원 = నిండు_వృత్తము; + +const 솔질하다 = కుంచికను_పైకి_ఎత్తు; +const 브러시를_사용 = కుంచికను_కింద_పెట్టు; +const 브러시_숨기기 = కుంచికను_దాచు; +const 브러시를_보여 = కుంచికను_చూపు; const 현재_위치 = ప్రస్తుత_స్థానము; -const 위치_변경 = స్థానము_మార్చు; -const 변경_x = xనియోగించు; -const 수평_변경 = xనియోగించు; -const 변경_y = yనియోగించు; -const 세로_변경 = yనియోగించు; -const 각도 = కోణము; -const 방향전환 = కోణము; - -const 쓰다 = వ్రాయి; -const 난수 = యాదృచ్ఛిక_సంఖ్య; -const 너비 = వెడల్పు; -const 색상을설정 = రంగు_మార్చు; -const 색상변경 = రంగు_మార్చు; +const 위치_변경 = స్థానము_మార్చు; +const 변경_x = xనియోగించు; +const 수평_변경 = xనియోగించు; +const 변경_y = yనియోగించు; +const 세로_변경 = yనియోగించు; +const 각도 = కోణము; +const 방향전환 = కోణము; + +const 쓰다 = వ్రాయి; +const 난수 = యాదృచ్ఛిక_సంఖ్య; +const 너비 = వెడల్పు; +const 색상을설정 = రంగు_మార్చు; +const 색상변경 = రంగు_మార్చు; const 편지얼굴 = అక్షరరూపము_స్థాపించు; const 최고_X = గరిష్ఠX; const 최소한도_X = కనిష్ఠX; const 최고_Y = గరిష్ఠY; const 최소한도_Y = కనిష్ఠY; -const 억누르다 = గాడిలో_పెట్టు; +const 억누르다 = గాడిలో_పెట్టు; const 반복하다 = ఆవర్తించు; const 계산하는동안반복 = లెక్క_పెడుతూ_ఆవర్తించు; @@ -2044,12 +2240,8 @@ const 미루다 = విలంబించు; // const 데모 = ప్రదర్శన; ////////////////// - ఆది_స్థితి(); - ////////////////// - - ఆది_స్థితి(); diff --git "a/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225Console.js" "b/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225Console.js" index f8b36b1..ff3660c 100644 --- "a/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225Console.js" +++ "b/\340\260\225\340\261\201\340\260\202\340\260\232\340\260\277\340\260\225Console.js" @@ -10,7 +10,6 @@ var helpTextActive = true; var errorFound = false; - //SUPPORT FUNCTIONS /************************************************************************ * cmd -- put text into the command box @@ -21,18 +20,16 @@ var errorFound = false; * returns: * None ************************************************************************/ -function cmd (text) { - document.getElementById("command").value=text; +function cmd(text) { + document.getElementById("command").value = text; } - if (window.addEventListener) { - window.addEventListener("resize", fixDragButton); + window.addEventListener("resize", fixDragButton); } else if (window.attachEvent) { - window.attachEvent("onresize", fixDragButton); + window.attachEvent("onresize", fixDragButton); } - /************************************************************************* * onWindowLoad -- handler for when window loads * @@ -43,88 +40,88 @@ if (window.addEventListener) { * None *************************************************************************/ function onWindowLoad() { - fixDragButton() - // check if an example was requested in the URL - let కుంచికభాషా = document.getElementById('kuncikaBhaShaa').value; - const ప్రదర్శన_విధానము= ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ); - let queryString = window.location.search; // was "?..." specified - if (queryString != undefined && queryString != "") { - let exampleValue = "" - let command = "" - let pos = 0 - //queryString = queryString.substr(1) // get rid of leading '?'... simple case - // want to (queryStrint + "&").search (/[?&]example=[^=]&/) - // no want to split string up into separate queries... divide on & - queries = queryString.split('&') - console.log("queries was: " + queries + ", " + typeof(queries)) - // check specific queries like - if (queries != undefined && queries.length > 0) { - for (let i=0; i=0) { - console.log( "ind: " + queries[i] + ", " + typeof(queries[i])) - pos = queries[i].indexOf('=') - if (pos > 0 && pos < queries[i].length) { - exampleValue = queries[i].substr(pos + 1) - console.log("example query was: " + exampleValue + ".") - } else { - console.log("example query was null") - } - } - pos = queries[i].search(/^\??command=/) - if (pos >=0) { - pos = queries[i].indexOf('=') - if (pos > 0 && pos < queries[i].length) { - command = queries[i].substr(pos + 1) - console.log("command query was: " + command + ".") - } else { - console.log("command query was null") - } - } - pos = queries[i].search(/^\??codeblock=/) - if (pos >=0) { - pos = queries[i].indexOf('=') - if (pos > 0 && pos < queries[i].length) { - codeBlock = queries[i].substr(pos + 1) - codeBlock = decodeURIComponent(codeBlock) - codeBlock = he.decode(codeBlock) - document.getElementById('codeArea').value = codeBlock - } else { - console.log("command query was null") - } - } - } - - if (exampleValue != undefined && exampleValue != "") { - sel = document.getElementById('examples') // post to examples selector - sel.value = exampleValue; // set selector to requested string - //... onchange hander should take over - - console.log("sel.value: " + sel.value + ".") - if (sel.value !== undefined && sel.value !== "") { - console.log("almost in it now") - try { - document.getElementById('codeArea').value = eval(examples.value); - } catch (e) { - showError(e) - } - - if (command !== undefined || command !== "") { // good enough validation?? - console.log("in it now") - cmd (ప్రదర్శన_విధానము); - } - console.log("passed it") - commandChanged() - } - } + fixDragButton(); + // check if an example was requested in the URL + let కుంచికభాషా = document.getElementById("kuncikaBhaShaa").value; + const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు(కుంచికభాషా); + let queryString = window.location.search; // was "?..." specified + if (queryString != undefined && queryString != "") { + let exampleValue = ""; + let command = ""; + let pos = 0; + //queryString = queryString.substr(1) // get rid of leading '?'... simple case + // want to (queryStrint + "&").search (/[?&]example=[^=]&/) + // no want to split string up into separate queries... divide on & + queries = queryString.split("&"); + console.log("queries was: " + queries + ", " + typeof queries); + // check specific queries like + if (queries != undefined && queries.length > 0) { + for (let i = 0; i < queries.length; i = i + 1) { + pos = queries[i].search(/^\??example=/); + //want to change 'code' to 'exampleValue' + // exampleOption ...name that is displayed + // exampleValue ... example string name ,,, its value is the string itself + if (pos >= 0) { + console.log("ind: " + queries[i] + ", " + typeof queries[i]); + pos = queries[i].indexOf("="); + if (pos > 0 && pos < queries[i].length) { + exampleValue = queries[i].substr(pos + 1); + console.log("example query was: " + exampleValue + "."); + } else { + console.log("example query was null"); + } + } + pos = queries[i].search(/^\??command=/); + if (pos >= 0) { + pos = queries[i].indexOf("="); + if (pos > 0 && pos < queries[i].length) { + command = queries[i].substr(pos + 1); + console.log("command query was: " + command + "."); + } else { + console.log("command query was null"); + } } + pos = queries[i].search(/^\??codeblock=/); + if (pos >= 0) { + pos = queries[i].indexOf("="); + if (pos > 0 && pos < queries[i].length) { + codeBlock = queries[i].substr(pos + 1); + codeBlock = decodeURIComponent(codeBlock); + codeBlock = he.decode(codeBlock); + document.getElementById("codeArea").value = codeBlock; + } else { + console.log("command query was null"); + } + } + } + + if (exampleValue != undefined && exampleValue != "") { + sel = document.getElementById("examples"); // post to examples selector + sel.value = exampleValue; // set selector to requested string + //... onchange hander should take over + + console.log("sel.value: " + sel.value + "."); + if (sel.value !== undefined && sel.value !== "") { + console.log("almost in it now"); + try { + document.getElementById("codeArea").value = eval(examples.value); + } catch (e) { + showError(e); + } + + if (command !== undefined || command !== "") { + // good enough validation?? + console.log("in it now"); + cmd(ప్రదర్శన_విధానము); + } + console.log("passed it"); + commandChanged(); + } + } } + } } - var draggingleft = false; var draggingright = false; @@ -138,116 +135,200 @@ var draggingright = false; * None *************************************************************************/ function fixDragButton() { - //console.log("fixDragButton") - - let w = window.innerWidth - || document.documentElement.clientWidth - || document.body.clientWidth; // variations for cross browser support - - let h = window.innerHeight - || document.documentElement.clientHeight - || document.body.clientHeight; // variations for cross browser support - - let overallWidth = 1200; - if (w < 12000) { - overallWidth = w; - } - - // work area height - let overallHeight = h /* guessed margin */; - let workAreaHeight = h -4 ; /* - 50 /*top displacement* / - 17 /* guessed margin? */; - if (workAreaHeight < 400) { - let canvasHeight = 300; - } else { - let canvasHeight = workAreaHeight - 140 /* APPROXIMATION space for controls */; - } - - let wrapWidth = overallWidth - 2; //leftcolWidth + midcolWidth + rightcolWidth; - - - // let referencewidth, refLeftPadding , dragleft, containertop, dropbarwidthleft, dropbarwidthright - - let containertop = Number(getStyleValue(document.getElementById("container"), "top").replace("px", "")); - - let wrapElement = document.getElementById("wrap"); - wrapElement.style.width = wrapWidth + "px"; - wrapElement.style.height = overallHeight + "px"; - - /* dragbar setup*/ - - /* left setup */ - let refElement = document.getElementById("reference"); - let leftcolElement = document.getElementById("leftcolumn") - - let referenceWidth = Number(getStyleValue(document.getElementById("referencewrapper"), "width").replace("px", "")); - let refTitleHeight = Number(getStyleValue(document.getElementById("referenceTitle"), "height").replace("px", "")); - let refLeftPadding = Number(getStyleValue(document.getElementById("reference"), "padding-left").replace("px", "")); - - /* center setup */ - midWidth = getStyleValue(document.getElementById("canvaswrapper"), "width").replace("px",""); - midContainerHeight = getStyleValue(document.getElementById("midcolumncontainer"), "height").replace("px",""); - midLeftPadding = getStyleValue(document.getElementById("canvaswrapper"), "padding-left").replace("px",""); - midRightPadding = getStyleValue(document.getElementById("canvaswrapper"), "padding-right").replace("px",""); - canvasTitleHeight = getStyleValue(document.getElementById("canvastitle"), "height").replace("px",""); - commandWrapperHeight = getStyleValue(document.getElementById("commandwrapper"), "height").replace("px",""); - let canvasHeight = midContainerHeight - canvasTitleHeight - commandWrapperHeight -25; - let canvasWidth = midWidth - midLeftPadding - midRightPadding; - - /* right setup */ - exampleWidth = Number(getStyleValue(document.getElementById("examplewrapper"), "width").replace("px", "")); - examplesHeight = Number(getStyleValue(document.getElementById("examples"), "height").replace("px", "")); // basically the select height - examplesMarginTop = Number(getStyleValue(document.getElementById("examples"), "margin-top").replace("px", "")); // around select height - examplesMarginBottom = Number(getStyleValue(document.getElementById("examples"), "margin-bottom").replace("px", "")); // around select height - - let rightcolElement = document.getElementById("rightcolumn"); - let codeAreaElement = document.getElementById("codeArea"); - let codeAreaRightPadding = Number(getStyleValue(document.getElementById("codeArea"), "padding-right").replace("px", "")); - - /* dragbar attribute setting */ - document.getElementById("dragbarleft").style.width = "5px"; - document.getElementById("dragbarright").style.width = "5px"; - - let dropbarwidthleft = Number(getStyleValue(document.getElementById("dragbarleft"), "width").replace("px", "")); - let dropbarwidthright = Number(getStyleValue(document.getElementById("dragbarright"), "width").replace("px", "")); - - let dragleft = referenceWidth + refLeftPadding + (refLeftPadding / 2) - (dropbarwidthleft / 2); - let dragright = exampleWidth + codeAreaRightPadding + (codeAreaRightPadding / 2) + (dropbarwidthright / 2); - - document.getElementById("dragbarleft").style.top = containertop + "px"; - document.getElementById("dragbarleft").style.left = dragleft + "px"; - document.getElementById("dragbarleft").style.height = workAreaHeight + "px";/*referenceheight;*/ - document.getElementById("dragbarleft").style.cursor = "col-resize"; - - document.getElementById("dragbarright").style.top = containertop + "px"; - document.getElementById("dragbarright").style.right = dragright + "px"; - document.getElementById("dragbarright").style.height = workAreaHeight + "px";/*referenceheight;*/ - document.getElementById("dragbarright").style.cursor = "col-resize"; - - - /* left attribute setting */ + //console.log("fixDragButton") - refElement.style.height = workAreaHeight - refTitleHeight -10 + "px"; - leftcolElement.style.height = workAreaHeight + "px"; - //console.log ("overallheight",overallHeight, "workAreaHeight", workAreaHeight) + let w = + window.innerWidth || + document.documentElement.clientWidth || + document.body.clientWidth; // variations for cross browser support + let h = + window.innerHeight || + document.documentElement.clientHeight || + document.body.clientHeight; // variations for cross browser support - /* center attribute setting */ - imagecanvas.width = canvasWidth; - imagecanvas.height = canvasHeight; - కుంచికcanvas.width = canvasWidth; - కుంచికcanvas.height = canvasHeight; - document.getElementById("canvaswrapper").style.height = canvasHeight +8+ "px"; - //console.log("midWidth:", midWidth, midLeftPadding, midRightPadding); - - let midcolElement = document.getElementById("midcolumn") - midcolElement.style.height = workAreaHeight + "px"; - - - /* right attribute setting */ + let overallWidth = 1200; + if (w < 12000) { + overallWidth = w; + } - rightcolElement.style.height = workAreaHeight + "px"; - codeAreaElement.style.height = (workAreaHeight - examplesHeight - examplesMarginTop - examplesMarginBottom - 45) + "px"; + // work area height + let overallHeight = h; /* guessed margin */ + let workAreaHeight = + h - 4; /* - 50 /*top displacement* / - 17 /* guessed margin? */ + if (workAreaHeight < 400) { + let canvasHeight = 300; + } else { + let canvasHeight = + workAreaHeight - 140; /* APPROXIMATION space for controls */ + } + let wrapWidth = overallWidth - 2; //leftcolWidth + midcolWidth + rightcolWidth; + + // let referencewidth, refLeftPadding , dragleft, containertop, dropbarwidthleft, dropbarwidthright + + let containertop = Number( + getStyleValue(document.getElementById("container"), "top").replace("px", "") + ); + + let wrapElement = document.getElementById("wrap"); + wrapElement.style.width = wrapWidth + "px"; + wrapElement.style.height = overallHeight + "px"; + + /* dragbar setup*/ + + /* left setup */ + let refElement = document.getElementById("reference"); + let leftcolElement = document.getElementById("leftcolumn"); + + let referenceWidth = Number( + getStyleValue(document.getElementById("referencewrapper"), "width").replace( + "px", + "" + ) + ); + let refTitleHeight = Number( + getStyleValue(document.getElementById("referenceTitle"), "height").replace( + "px", + "" + ) + ); + let refLeftPadding = Number( + getStyleValue(document.getElementById("reference"), "padding-left").replace( + "px", + "" + ) + ); + + /* center setup */ + midWidth = getStyleValue( + document.getElementById("canvaswrapper"), + "width" + ).replace("px", ""); + midContainerHeight = getStyleValue( + document.getElementById("midcolumncontainer"), + "height" + ).replace("px", ""); + midLeftPadding = getStyleValue( + document.getElementById("canvaswrapper"), + "padding-left" + ).replace("px", ""); + midRightPadding = getStyleValue( + document.getElementById("canvaswrapper"), + "padding-right" + ).replace("px", ""); + canvasTitleHeight = getStyleValue( + document.getElementById("canvastitle"), + "height" + ).replace("px", ""); + commandWrapperHeight = getStyleValue( + document.getElementById("commandwrapper"), + "height" + ).replace("px", ""); + let canvasHeight = + midContainerHeight - canvasTitleHeight - commandWrapperHeight - 25; + let canvasWidth = midWidth - midLeftPadding - midRightPadding; + + /* right setup */ + exampleWidth = Number( + getStyleValue(document.getElementById("examplewrapper"), "width").replace( + "px", + "" + ) + ); + examplesHeight = Number( + getStyleValue(document.getElementById("examples"), "height").replace( + "px", + "" + ) + ); // basically the select height + examplesMarginTop = Number( + getStyleValue(document.getElementById("examples"), "margin-top").replace( + "px", + "" + ) + ); // around select height + examplesMarginBottom = Number( + getStyleValue(document.getElementById("examples"), "margin-bottom").replace( + "px", + "" + ) + ); // around select height + + let rightcolElement = document.getElementById("rightcolumn"); + let codeAreaElement = document.getElementById("codeArea"); + let codeAreaRightPadding = Number( + getStyleValue(document.getElementById("codeArea"), "padding-right").replace( + "px", + "" + ) + ); + + /* dragbar attribute setting */ + document.getElementById("dragbarleft").style.width = "5px"; + document.getElementById("dragbarright").style.width = "5px"; + + let dropbarwidthleft = Number( + getStyleValue(document.getElementById("dragbarleft"), "width").replace( + "px", + "" + ) + ); + let dropbarwidthright = Number( + getStyleValue(document.getElementById("dragbarright"), "width").replace( + "px", + "" + ) + ); + + let dragleft = + referenceWidth + refLeftPadding + refLeftPadding / 2 - dropbarwidthleft / 2; + let dragright = + exampleWidth + + codeAreaRightPadding + + codeAreaRightPadding / 2 + + dropbarwidthright / 2; + + document.getElementById("dragbarleft").style.top = containertop + "px"; + document.getElementById("dragbarleft").style.left = dragleft + "px"; + document.getElementById("dragbarleft").style.height = + workAreaHeight + "px"; /*referenceheight;*/ + document.getElementById("dragbarleft").style.cursor = "col-resize"; + + document.getElementById("dragbarright").style.top = containertop + "px"; + document.getElementById("dragbarright").style.right = dragright + "px"; + document.getElementById("dragbarright").style.height = + workAreaHeight + "px"; /*referenceheight;*/ + document.getElementById("dragbarright").style.cursor = "col-resize"; + + /* left attribute setting */ + + refElement.style.height = workAreaHeight - refTitleHeight - 10 + "px"; + leftcolElement.style.height = workAreaHeight + "px"; + //console.log ("overallheight",overallHeight, "workAreaHeight", workAreaHeight) + + /* center attribute setting */ + imagecanvas.width = canvasWidth; + imagecanvas.height = canvasHeight; + కుంచికcanvas.width = canvasWidth; + కుంచికcanvas.height = canvasHeight; + document.getElementById("canvaswrapper").style.height = + canvasHeight + 8 + "px"; + //console.log("midWidth:", midWidth, midLeftPadding, midRightPadding); + + let midcolElement = document.getElementById("midcolumn"); + midcolElement.style.height = workAreaHeight + "px"; + + /* right attribute setting */ + + rightcolElement.style.height = workAreaHeight + "px"; + codeAreaElement.style.height = + workAreaHeight - + examplesHeight - + examplesMarginTop - + examplesMarginBottom - + 45 + + "px"; } /************************************************************************* @@ -260,8 +341,8 @@ function fixDragButton() { * None *************************************************************************/ function dragstartleft(e) { - e.preventDefault(); - draggingleft = true; + e.preventDefault(); + draggingleft = true; } /************************************************************************* @@ -274,8 +355,8 @@ function dragstartleft(e) { * None *************************************************************************/ function dragstartright(e) { - e.preventDefault(); - draggingright = true; + e.preventDefault(); + draggingright = true; } /************************************************************************* @@ -288,45 +369,46 @@ function dragstartright(e) { * None *************************************************************************/ function dragmove(e) { - if (draggingleft) - { - let rect = document.getElementById("dragbarright").getBoundingClientRect(); - //console.log("dragBarRight:", rect.top, rect.right, rect.bottom, rect.left); - //console.log("window width:", window.innerWidth); - let rightPercentage = 100 - (rect.left / window.innerWidth) * 100; - - leftPercentage = (e.pageX / window.innerWidth) * 100; - if (leftPercentage > 1 && leftPercentage < 98) { - let centerPercentage = 100-leftPercentage-rightPercentage; - //console.log("left:", leftPercentage, centerPercentage, rightPercentage); - document.getElementById("leftcolumncontainer").style.width = leftPercentage + "%"; - document.getElementById("midcolumncontainer").style.width = centerPercentage + "%"; - fixDragButton(); - } + if (draggingleft) { + let rect = document.getElementById("dragbarright").getBoundingClientRect(); + //console.log("dragBarRight:", rect.top, rect.right, rect.bottom, rect.left); + //console.log("window width:", window.innerWidth); + let rightPercentage = 100 - (rect.left / window.innerWidth) * 100; + + leftPercentage = (e.pageX / window.innerWidth) * 100; + if (leftPercentage > 1 && leftPercentage < 98) { + let centerPercentage = 100 - leftPercentage - rightPercentage; + //console.log("left:", leftPercentage, centerPercentage, rightPercentage); + document.getElementById("leftcolumncontainer").style.width = + leftPercentage + "%"; + document.getElementById("midcolumncontainer").style.width = + centerPercentage + "%"; + fixDragButton(); } + } - if (draggingright) - { - let rect = document.getElementById("dragbarleft").getBoundingClientRect(); - //console.log("dragBarLeft:", rect.top, rect.right, rect.bottom, rect.left); - //console.log("width:", window.innerWidth); - let leftPercentage = (rect.right / window.innerWidth) * 100; - //console.log("leftPercentage:", leftPercentage); - - let rightPercentage = 100 - (e.pageX / window.innerWidth) * 100; - //console.log("rightPercentage:", rightPercentage); - - if (rightPercentage > 1 && rightPercentage < 98 - leftPercentage) { - let centerPercentage = 100-rightPercentage-leftPercentage; - //console.log("right:", leftPercentage, centerPercentage, rightPercentage); - document.getElementById("rightcolumncontainer").style.width = rightPercentage + "%"; - document.getElementById("midcolumncontainer").style.width = centerPercentage + "%"; - fixDragButton(); - } + if (draggingright) { + let rect = document.getElementById("dragbarleft").getBoundingClientRect(); + //console.log("dragBarLeft:", rect.top, rect.right, rect.bottom, rect.left); + //console.log("width:", window.innerWidth); + let leftPercentage = (rect.right / window.innerWidth) * 100; + //console.log("leftPercentage:", leftPercentage); + + let rightPercentage = 100 - (e.pageX / window.innerWidth) * 100; + //console.log("rightPercentage:", rightPercentage); + + if (rightPercentage > 1 && rightPercentage < 98 - leftPercentage) { + let centerPercentage = 100 - rightPercentage - leftPercentage; + //console.log("right:", leftPercentage, centerPercentage, rightPercentage); + document.getElementById("rightcolumncontainer").style.width = + rightPercentage + "%"; + document.getElementById("midcolumncontainer").style.width = + centerPercentage + "%"; + fixDragButton(); } + } } - /************************************************************************* * dragEnd -- handler for ending a drag move * @@ -337,27 +419,45 @@ function dragmove(e) { * None *************************************************************************/ function dragend() { - draggingleft = false; - draggingright = false; - if (window.editor) { - window.editor.refresh(); - } + draggingleft = false; + draggingright = false; + if (window.editor) { + window.editor.refresh(); + } } - if (window.addEventListener) { - document.getElementById("dragbarleft").addEventListener("mousedown", function(e) {dragstartleft(e);}); - document.getElementById("dragbarleft").addEventListener("touchstart", function(e) {dragstartleft(e);}); - document.getElementById("dragbarright").addEventListener("mousedown", function(e) {dragstartright(e);}); - document.getElementById("dragbarright").addEventListener("touchstart", function(e) {dragstartright(e);}); - window.addEventListener("mousemove", function(e) {dragmove(e);}); - window.addEventListener("touchmove", function(e) {dragmove(e);}); - window.addEventListener("mouseup", dragend); - window.addEventListener("touchend", dragend); - window.addEventListener("load", onWindowLoad); + document + .getElementById("dragbarleft") + .addEventListener("mousedown", function (e) { + dragstartleft(e); + }); + document + .getElementById("dragbarleft") + .addEventListener("touchstart", function (e) { + dragstartleft(e); + }); + document + .getElementById("dragbarright") + .addEventListener("mousedown", function (e) { + dragstartright(e); + }); + document + .getElementById("dragbarright") + .addEventListener("touchstart", function (e) { + dragstartright(e); + }); + window.addEventListener("mousemove", function (e) { + dragmove(e); + }); + window.addEventListener("touchmove", function (e) { + dragmove(e); + }); + window.addEventListener("mouseup", dragend); + window.addEventListener("touchend", dragend); + window.addEventListener("load", onWindowLoad); } - /************************************************************************* * getStyleValue -- function * @@ -368,15 +468,14 @@ if (window.addEventListener) { * returns: * element style (string) *************************************************************************/ -function getStyleValue(elmnt,style) { - if (window.getComputedStyle) { - return window.getComputedStyle(elmnt,null).getPropertyValue(style); - } else { - return elmnt.currentStyle[style]; - } +function getStyleValue(elmnt, style) { + if (window.getComputedStyle) { + return window.getComputedStyle(elmnt, null).getPropertyValue(style); + } else { + return elmnt.currentStyle[style]; + } } - //EVENT PROCESSING FUNCTIONS /************************************************************************* @@ -389,29 +488,32 @@ function getStyleValue(elmnt,style) { * None *************************************************************************/ function stopClicked() { - //console.log("stop clicked") - ఆట_ఆపు() + //console.log("stop clicked") + ఆట_ఆపు(); } - // set up command field to accept an ENTER without field modification (() => { - let command = document.getElementById("command"); - if (command.addEventListener) { - command.addEventListener("keypress", function(e) { - if (e.keyCode === 13) { - commandChanged(); - e.preventDefault(); - } - }, false); - } else if (command.attachEvent) { - command.attachEvent("onkeypress", function(e) { - if (e.keyCode === 13) { - commandChanged(); - return e.returnValue = false; - } - }); - } + let command = document.getElementById("command"); + if (command.addEventListener) { + command.addEventListener( + "keypress", + function (e) { + if (e.keyCode === 13) { + commandChanged(); + e.preventDefault(); + } + }, + false + ); + } else if (command.attachEvent) { + command.attachEvent("onkeypress", function (e) { + if (e.keyCode === 13) { + commandChanged(); + return (e.returnValue = false); + } + }); + } })(); /************************************************************************* @@ -424,10 +526,10 @@ function stopClicked() { * None *************************************************************************/ function resetClicked() { - let కుంచికభాషా = document.getElementById('kuncikaBhaShaa').value; - const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ); - cmd (ప్రదర్శన_విధానము); - ఆది_స్థితి() + let కుంచికభాషా = document.getElementById("kuncikaBhaShaa").value; + const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు(కుంచికభాషా); + cmd(ప్రదర్శన_విధానము); + ఆది_స్థితి(); } /************************************************************************* @@ -440,13 +542,12 @@ function resetClicked() { * None *************************************************************************/ function runClicked() { - let కుంచికభాషా = document.getElementById('kuncikaBhaShaa').value; - const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ); - cmd (ప్రదర్శన_విధానము); - commandChanged(); + let కుంచికభాషా = document.getElementById("kuncikaBhaShaa").value; + const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు(కుంచికభాషా); + cmd(ప్రదర్శన_విధానము); + commandChanged(); } - /************************************************************************* * uploadChanged(e) -- handler for when the upload file name changes * @@ -457,18 +558,17 @@ function runClicked() { * None *************************************************************************/ function uploadChanged(e) { - let file = e.target.files[0]; - if (!file) { - return; - } - let reader = new FileReader(); - reader.onload = function(e) { - document.getElementById('codeArea').value = e.target.result; - }; - reader.readAsText(file); + let file = e.target.files[0]; + if (!file) { + return; + } + let reader = new FileReader(); + reader.onload = function (e) { + document.getElementById("codeArea").value = e.target.result; + }; + reader.readAsText(file); } - let get_blob = () => Blob; /************************************************************************* @@ -481,19 +581,17 @@ let get_blob = () => Blob; * false to prevent further processing *************************************************************************/ function downloadClicked(e) { - e.preventDefault(); - let BB = get_blob(); - saveAs( - new BB( - [codeArea.value || codeArea.placeholder] - , {type: "text/plain;charset=" + document.characterSet} - ) - , (downloadFilename.value || downloadFilename.placeholder) + ".js" - ); - return false; + e.preventDefault(); + let BB = get_blob(); + saveAs( + new BB([codeArea.value || codeArea.placeholder], { + type: "text/plain;charset=" + document.characterSet, + }), + (downloadFilename.value || downloadFilename.placeholder) + ".js" + ); + return false; } - /************************************************************************* * svgDownloadClicked -- handler for when the SVG download button is clicked * @@ -504,19 +602,16 @@ function downloadClicked(e) { * false to prevent further processing *************************************************************************/ function svgDownloadClicked(e) { - e.preventDefault(); - svgClose(); - let BB = get_blob(); - saveAs( - new BB( - svgBlob, {type: "text/plain;charset=" + document.characterSet} - ) - , (downloadFilename.value || downloadFilename.placeholder) + ".svg" - ); - return false; + e.preventDefault(); + svgClose(); + let BB = get_blob(); + saveAs( + new BB(svgBlob, { type: "text/plain;charset=" + document.characterSet }), + (downloadFilename.value || downloadFilename.placeholder) + ".svg" + ); + return false; } - /************************************************************************* * saveCanvasClicked -- handler for when the save canvas button is clicked * @@ -527,19 +622,17 @@ function svgDownloadClicked(e) { * false to prevent further processing *************************************************************************/ function saveCanvasClicked(e) { - e.preventDefault(); - let BB = get_blob(); - saveAs( - new BB( - [codeArea.value || codeArea.placeholder] - , {type: "text/plain;charset=" + document.characterSet} - ) - , "కుంచిక_చిత్రము.png" - ); - return false; + e.preventDefault(); + let BB = get_blob(); + saveAs( + new BB([codeArea.value || codeArea.placeholder], { + type: "text/plain;charset=" + document.characterSet, + }), + "కుంచిక_చిత్రము.png" + ); + return false; } - /************************************************************************* * clearClicked -- handler for when the చెరిపి_వేయి button is clicked * @@ -550,8 +643,8 @@ function saveCanvasClicked(e) { * None *************************************************************************/ function clearClicked() { - //console.log("చెరిపి_వేయి clicked") - document.getElementById("codeArea").value = ""; + //console.log("చెరిపి_వేయి clicked") + document.getElementById("codeArea").value = ""; } /************************************************************************* @@ -564,37 +657,36 @@ function clearClicked() { * None *************************************************************************/ function infoClicked() { - helpTextActive = !helpTextActive; - if (helpTextActive) { - document.getElementById("infoButton").style.color = "blue"; - document.getElementById("infoButton").style.borderColor = "blue"; - } else { - document.getElementById("infoButton").style.color = "lightgray"; - document.getElementById("infoButton").style.borderColor = "lightgray"; - } + helpTextActive = !helpTextActive; + if (helpTextActive) { + document.getElementById("infoButton").style.color = "blue"; + document.getElementById("infoButton").style.borderColor = "blue"; + } else { + document.getElementById("infoButton").style.color = "lightgray"; + document.getElementById("infoButton").style.borderColor = "lightgray"; + } } // Set up all reference code elements to be linked and have onclick functionality -let codeElements = document.querySelectorAll ("#reference code"); -for (let i=0; i< codeElements.length; i++) { - codeElements[i].className = "linked"; - codeElements[i].onclick = function () { - cmd (this.innerHTML + ";"); - commandChanged(); - } +let codeElements = document.querySelectorAll("#reference code"); +for (let i = 0; i < codeElements.length; i++) { + codeElements[i].className = "linked"; + codeElements[i].onclick = function () { + cmd(this.innerHTML + ";"); + commandChanged(); + }; } // Set up all color button elements to be linked and have onclick functionality -let colorCodeElements = document.querySelectorAll ("#reference button"); -for (let i=0; i< colorCodeElements.length; i++) { - //console.log(colorCodeElements[i].id) - colorCodeElements[i].onclick = function () { - cmd ("రంగు_మార్చు(\"" + this.id +"\");"); - commandChanged(); - } +let colorCodeElements = document.querySelectorAll("#reference button"); +for (let i = 0; i < colorCodeElements.length; i++) { + //console.log(colorCodeElements[i].id) + colorCodeElements[i].onclick = function () { + cmd('రంగు_మార్చు("' + this.id + '");'); + commandChanged(); + }; } - //INITITALIZATION FUNCTIONS // load the example code when the corresponding demo menu item is clicked @@ -626,32 +718,32 @@ kirk */ -function ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ) { - const demo_names = { - "telugu": "ప్రదర్శన()", - "korean": "데모()", - "kannada": "ಪ್ರದರ್ಶನೆ()", - "samskrutam":"प्रदर्शन()", - "hindi":"प्रदर्शन()", - "marathi":"प्रदर्शन()", - "english": "demo()", - "belarusian":"паказаць()", - "spanish": "mostrar()", - "french": "afficher()" - }; - let demo_name = demo_names[కుంచికభాషా] || "ప్రదర్శన()"; - return demo_name; +function ప్రదర్శన_విధానము_పేరు(కుంచికభాషా) { + const demo_names = { + telugu: "ప్రదర్శన()", + korean: "데모()", + kannada: "ಪ್ರದರ್ಶನೆ()", + samskrutam: "प्रदर्शन()", + hindi: "प्रदर्शन()", + marathi: "प्रदर्शन()", + english: "demo()", + belarusian: "паказаць()", + bulgarian: "показване()", + spanish: "mostrar()", + french: "afficher()", + }; + let demo_name = demo_names[కుంచికభాషా] || "ప్రదర్శన()"; + return demo_name; } - -const telugu_labels= { - 'referenceTitle' : "కుంచిక భాషావలోకనము", - 'canvastitle' : "చిత్రపటము", - 'codeAreaName' : "విధి లేఖ", - 'resetButton' : "ఆది స్థితి", - 'runButton' : "ఆడించు", - 'downloadFilename' : "కుంచిక_చిత్రము", - 'examples' : ` +const telugu_labels = { + referenceTitle: "కుంచిక భాషావలోకనము", + canvastitle: "చిత్రపటము", + codeAreaName: "విధి లేఖ", + resetButton: "ఆది స్థితి", + runButton: "ఆడించు", + downloadFilename: "కుంచిక_చిత్రము", + examples: ` @@ -659,17 +751,17 @@ const telugu_labels= { - ` + `, }; -const spanish_labels= { - 'referenceTitle' : "idioma descripción", - 'canvastitle' : "cañamazo", - 'codeAreaName' : "guión", - 'resetButton' : "estado inicial", - 'runButton' : "jugar", - 'downloadFilename' : "cuadro_pintado", - 'examples' : ` +const spanish_labels = { + referenceTitle: "idioma descripción", + canvastitle: "cañamazo", + codeAreaName: "guión", + resetButton: "estado inicial", + runButton: "jugar", + downloadFilename: "cuadro_pintado", + examples: ` @@ -677,17 +769,17 @@ const spanish_labels= { - ` + `, }; -const french_labels= { - 'referenceTitle' : "Description de la langue", - 'canvastitle' : "Canevas", - 'codeAreaName' : "Code", - 'resetButton' : "Restaurer", - 'runButton' : "Exécuter", - 'downloadFilename' : "Image générée", - 'examples' : ` +const french_labels = { + referenceTitle: "Description de la langue", + canvastitle: "Canevas", + codeAreaName: "Code", + resetButton: "Restaurer", + runButton: "Exécuter", + downloadFilename: "Image générée", + examples: ` @@ -695,76 +787,91 @@ const french_labels= { - ` + `, }; - - -const korean_labels= { - 'referenceTitle' : "개요", - 'canvastitle' : "범포", - 'codeAreaName' : "조리법", - 'resetButton' : "초기 상태", - 'runButton' : "생명있는", - 'downloadFilename' : "붓그림", - 'examples' : ` +const korean_labels = { + referenceTitle: "개요", + canvastitle: "범포", + codeAreaName: "조리법", + resetButton: "초기 상태", + runButton: "생명있는", + downloadFilename: "붓그림", + examples: ` - ` + `, }; -const belarusian_labels= { - 'referenceTitle' : "агляд", - 'canvastitle' : "палатно", - 'codeAreaName' : "сцэнар", - 'resetButton' : "пачатковы_стан", - 'runButton' : "гуляць", - 'downloadFilename' : "спампаваць", - 'examples' : ` +const belarusian_labels = { + referenceTitle: "агляд", + canvastitle: "палатно", + codeAreaName: "сцэнар", + resetButton: "пачатковы_стан", + runButton: "гуляць", + downloadFilename: "спампаваць", + examples: ` - ` + `, +}; + +const bulgarian_labels = { + referenceTitle: "агляд", + canvastitle: "палатно", + codeAreaName: "сцэнар", + resetButton: "пачатковы_стан", + runButton: "гуляць", + downloadFilename: "спампаваць", + examples: ` + + + + + + + `, }; -const kannada_labels= { - 'referenceTitle' : "ಕುಂಚಿಕ ಭಾಷಾವಲೋಕನ", - 'canvastitle' : "ಚಿತ್ರಪಟ", - 'codeAreaName' : "ವಿಧಿ ಲೇಖೆ", - 'resetButton' : "ಆದಿ ಸ್ಥಿತಿ", - 'runButton' : "ಆಡಿಸಿ", - 'downloadFilename' : "ಕುಂಚಿಕೆದ_ಚಿತ್ರ", - 'examples' : ` - ` +const kannada_labels = { + referenceTitle: "ಕುಂಚಿಕ ಭಾಷಾವಲೋಕನ", + canvastitle: "ಚಿತ್ರಪಟ", + codeAreaName: "ವಿಧಿ ಲೇಖೆ", + resetButton: "ಆದಿ ಸ್ಥಿತಿ", + runButton: "ಆಡಿಸಿ", + downloadFilename: "ಕುಂಚಿಕೆದ_ಚಿತ್ರ", + examples: ` + `, }; -const samskrutam_labels= { - 'referenceTitle' : "कुंचिक भाषावलोकनम्", - 'canvastitle' : "चित्रपटम्", - 'codeAreaName' : "विधि लेख", - 'resetButton' : "आदि स्थिति", - 'runButton' : "चालय", - 'downloadFilename' : "कुंचिकाया:_चित्रम्", - 'examples' : ` +const samskrutam_labels = { + referenceTitle: "कुंचिक भाषावलोकनम्", + canvastitle: "चित्रपटम्", + codeAreaName: "विधि लेख", + resetButton: "आदि स्थिति", + runButton: "चालय", + downloadFilename: "कुंचिकाया:_चित्रम्", + examples: ` - ` + `, }; -const marathi_labels= { - 'referenceTitle' : "भाषेचे अवलोकन", - 'canvastitle' : "चित्रषेत्र", - 'codeAreaName' : "लेखनक्षेत्र", - 'resetButton' : "प्रथम_स्थिति", - 'runButton' : "चालवा", - 'downloadFilename' : "लघुप्रतिमा", - 'examples' : ` +const marathi_labels = { + referenceTitle: "भाषेचे अवलोकन", + canvastitle: "चित्रषेत्र", + codeAreaName: "लेखनक्षेत्र", + resetButton: "प्रथम_स्थिति", + runButton: "चालवा", + downloadFilename: "लघुप्रतिमा", + examples: ` @@ -772,30 +879,31 @@ const marathi_labels= { - ` + `, }; -const english_labels= { - 'referenceTitle' : "Kuncika language overview", - 'canvastitle' : "Canvas", - 'codeAreaName' : "Code", - 'resetButton' : "Initial State", - 'runButton' : "Run the code", - 'downloadFilename' : "Kuncika_picture", - 'examples' : ` - ` +const english_labels = { + referenceTitle: "Kuncika language overview", + canvastitle: "Canvas", + codeAreaName: "Code", + resetButton: "Initial State", + runButton: "Run the code", + downloadFilename: "Kuncika_picture", + examples: ` + `, }; const localized_labels = { - 'telugu' : telugu_labels, - 'korean' : korean_labels, - 'kannada' : kannada_labels, - 'samskrutam' : samskrutam_labels, - 'marathi' : marathi_labels, - 'english' : english_labels, - 'belarusian': belarusian_labels, - 'spanish' : spanish_labels, - 'french' : french_labels + telugu: telugu_labels, + korean: korean_labels, + kannada: kannada_labels, + samskrutam: samskrutam_labels, + marathi: marathi_labels, + english: english_labels, + belarusian: belarusian_labels, + bulgarian: bulgarian_labels, + spanish: spanish_labels, + french: french_labels, }; /************************************************************************* @@ -807,40 +915,38 @@ const localized_labels = { * returns: * None *************************************************************************/ - function languageChanged () { - let codeArea = document.getElementById('codeArea') - let examples = document.getElementById('examples') - // get selected language - let కుంచికభాషా = document.getElementById('kuncikaBhaShaa').value; - const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ); - console.log("languageChanged ::", కుంచికభాషా, ప్రదర్శన_విధానము ); - cmd (ప్రదర్శన_విధానము); - // Stop currently playing example/ code. - ఆట_ఆపు(); - ఆది_స్థితి(); - // change all visible labels to that language - - const language_specific_labels = localized_labels[కుంచికభాషా] - for (const key in language_specific_labels) { - if (Object.hasOwnProperty.call(language_specific_labels, key)) { - const local_label = language_specific_labels[key]; - let element = document.getElementById(key); - if ( key === `downloadFilename` ) { - element.placeholder = `${local_label}`; - } else { - element.innerHTML = `${local_label}` - } - console.log( కుంచికభాషా, ' :: ', key , " => ", local_label); - } +function languageChanged() { + let codeArea = document.getElementById("codeArea"); + let examples = document.getElementById("examples"); + // get selected language + let కుంచికభాషా = document.getElementById("kuncikaBhaShaa").value; + const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు(కుంచికభాషా); + console.log("languageChanged ::", కుంచికభాషా, ప్రదర్శన_విధానము); + cmd(ప్రదర్శన_విధానము); + // Stop currently playing example/ code. + ఆట_ఆపు(); + ఆది_స్థితి(); + // change all visible labels to that language + + const language_specific_labels = localized_labels[కుంచికభాషా]; + for (const key in language_specific_labels) { + if (Object.hasOwnProperty.call(language_specific_labels, key)) { + const local_label = language_specific_labels[key]; + let element = document.getElementById(key); + if (key === `downloadFilename`) { + element.placeholder = `${local_label}`; + } else { + element.innerHTML = `${local_label}`; + } + console.log(కుంచికభాషా, " :: ", key, " => ", local_label); } - - - // TODO(sdurbha): - examplesChanged (); + } - // change visible example to that language. - // Change documentation to the selected language. + // TODO(sdurbha): + examplesChanged(); + // change visible example to that language. + // Change documentation to the selected language. } // eye simulator @@ -854,7 +960,6 @@ const localized_labels = { // Startburst // Triangle Tunnel - //************************************** //***** ****** //***** BEWARE THE EVIL EVAL!!! ****** @@ -878,119 +983,129 @@ const localized_labels = { *************************************************************************/ // korean debug // "춤추는_눈송이" default koch -// - -// - -function examplesChanged () { - ఆట_ఆపు() - let codeArea = document.getElementById('codeArea') - let examples = document.getElementById('examples') - let కుంచికభాషా = document.getElementById('kuncikaBhaShaa').value; - console.log( "examplesChanged ::", examples, examples.value, కుంచికభాషా ) - try { - codeArea.value = eval(examples.value); - } catch (e) { - showError(e) - } - const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ); - cmd (ప్రదర్శన_విధానము); - commandChanged() +// + +// + +function examplesChanged() { + ఆట_ఆపు(); + let codeArea = document.getElementById("codeArea"); + let examples = document.getElementById("examples"); + let కుంచికభాషా = document.getElementById("kuncikaBhaShaa").value; + console.log("examplesChanged ::", examples, examples.value, కుంచికభాషా); + try { + codeArea.value = eval(examples.value); + } catch (e) { + showError(e); + } + const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు(కుంచికభాషా); + cmd(ప్రదర్శన_విధానము); + commandChanged(); } /// keyword mappings const kannada_kw_map = { - // ಕನ್ನಡ -> Kannada - "_ಇಲ್ಲಿ_" : "let", - "_ಸರ್ವತ್ರ_" : "var", - "_ಸರ್ವದಾ_" : "const", - "_ವಿಧಾನ_" : "function", - "_ಫಲ_" : "return" + // ಕನ್ನಡ -> Kannada + _ಇಲ್ಲಿ_: "let", + _ಸರ್ವತ್ರ_: "var", + _ಸರ್ವದಾ_: "const", + _ವಿಧಾನ_: "function", + _ಫಲ_: "return", }; - // తెలుగు -> Telugu +// తెలుగు -> Telugu const telugu_kw_map = { - "_ఇక్కడ_" : "let", - "_అత్ర_" : "let", - "_సర్వత్ర_" : "var", - "_సర్వదా_" : "const", - "_విధానము_" : "function", - "_ఫలము_" : "return" + _ఇక్కడ_: "let", + _అత్ర_: "let", + _సర్వత్ర_: "var", + _సర్వదా_: "const", + _విధానము_: "function", + _ఫలము_: "return", }; - // Spanish +// Spanish const spanish_kw_map = { - "_aquí_" : "let", - "_en_todas_partes_" : "var", - "_siempre_" : "const", - "_método_" : "function", - "_resultado_" : "return" + _aquí_: "let", + _en_todas_partes_: "var", + _siempre_: "const", + _método_: "function", + _resultado_: "return", }; // Spanish const french_kw_map = { - "_ici_" : "let", - "_partout_" : "var", - "_toujours_" : "const", - "_méthode_" : "function", - "_résultat_" : "return" + _ici_: "let", + _partout_: "var", + _toujours_: "const", + _méthode_: "function", + _résultat_: "return", }; - + // संस्कृतम् -> Samskrutam const samskrutam_kw_map = { - "_अत्र_" : "let", - "_सर्वत्र_" : "var", - "_सर्वदा_" : "const", - "_विधानम्_" : "function", - "_फलम्_" : "return" + _अत्र_: "let", + _सर्वत्र_: "var", + _सर्वदा_: "const", + _विधानम्_: "function", + _फलम्_: "return", }; // मराठी -> Marathi const marathi_kw_map = { - "_इथे_" : "let", - "_सगळी_कडे_" : "var", - "_कायम_" : "const", - "_कृती_" : "function", - "_परत_करा_" : "return" + _इथे_: "let", + _सगळी_कडे_: "var", + _कायम_: "const", + _कृती_: "function", + _परत_करा_: "return", }; - + // संस्कृतम् -> Korean const korean_kw_map = { - "_여기_" : "let", - "_어디에나_" : "var", - "_항상_" : "const", - "_절차_" : "function", - "_대답_" : "return" + _여기_: "let", + _어디에나_: "var", + _항상_: "const", + _절차_: "function", + _대답_: "return", }; // Belarusian const belarusian_kw_map = { - "_тут_" : "let", - "_усюды_" : "var", - "_назаўжды_" : "const", - "_працэдура_" : "function", - "_вынік_" : "return" + _тут_: "let", + _усюды_: "var", + _назаўжды_: "const", + _працэдура_: "function", + _вынік_: "return", +}; + +// Bulgarian +const bulgarian_kw_map = { + _тук_: "let", + _навсякъде_: "var", + _винаги_: "const", + _метод_: "function", + _резултат_: "return", }; // English const english_kw_map = { - "let" : "let", - "var" : "var", - "const" : "const", - "function" : "function", - "return" : "return" + let: "let", + var: "var", + const: "const", + function: "function", + return: "return", }; const kw_maps = { - "telugu": telugu_kw_map , - "korean": korean_kw_map , - "kannada": kannada_kw_map , - "samskrutam": samskrutam_kw_map , - "hindi": samskrutam_kw_map , - "marathi": marathi_kw_map , - // "english": english_kw_map , - "belarusian": belarusian_kw_map , - "spanish": spanish_kw_map , - "french": french_kw_map , + telugu: telugu_kw_map, + korean: korean_kw_map, + kannada: kannada_kw_map, + samskrutam: samskrutam_kw_map, + hindi: samskrutam_kw_map, + marathi: marathi_kw_map, + // "english": english_kw_map , + belarusian: belarusian_kw_map, + bulgarian: bulgarian_kw_map, + spanish: spanish_kw_map, + french: french_kw_map, }; /// @@ -1004,59 +1119,58 @@ const kw_maps = { * None *************************************************************************/ -function substitute_keywords(కుంచికభాషా, programText ) { - let replaced = programText; - if ("english" != కుంచికభాషా ) - { - const kw_map = kw_maps[కుంచికభాషా]; - Object.entries( kw_map).forEach( ([key,val],i) => { - const key_pattern = new RegExp('(?<'+ key +'>' + key + ')', 'g' ); - replaced = replaced.replaceAll( key_pattern, "/* " + key + " */ " + val ) - }); - console.log( programText ); - console.log( replaced ); - } - return replaced; +function substitute_keywords(కుంచికభాషా, programText) { + let replaced = programText; + if ("english" != కుంచికభాషా) { + const kw_map = kw_maps[కుంచికభాషా]; + Object.entries(kw_map).forEach(([key, val], i) => { + const key_pattern = new RegExp("(?<" + key + ">" + key + ")", "g"); + replaced = replaced.replaceAll(key_pattern, "/* " + key + " */ " + val); + }); + console.log(programText); + console.log(replaced); + } + return replaced; } -function commandChanged () { - let commandText = document.getElementById("command").value; - let codeAreaText = document.getElementById('codeArea').value; - let కుంచికభాషా = document.getElementById('kuncikaBhaShaa').value; - const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు( కుంచికభాషా ); - errorFound = false - ఆట_ఆపు(); - - - try { - // execute any code in the codeArea box - const replaced = substitute_keywords(కుంచికభాషా, codeAreaText ) - eval(replaced); - } catch(e) { - errorFound = true - showError(e) - } +function commandChanged() { + let commandText = document.getElementById("command").value; + let codeAreaText = document.getElementById("codeArea").value; + let కుంచికభాషా = document.getElementById("kuncikaBhaShaa").value; + const ప్రదర్శన_విధానము = ప్రదర్శన_విధానము_పేరు(కుంచికభాషా); + errorFound = false; + ఆట_ఆపు(); + + try { + // execute any code in the codeArea box + const replaced = substitute_keywords(కుంచికభాషా, codeAreaText); + eval(replaced); + } catch (e) { + errorFound = true; + showError(e); + } - if (!errorFound && - ( commandText !== ప్రదర్శన_విధానము|| commandText !== ప్రదర్శన_విధానము + ";" || - demo !== undefined - )) { - try { - console.log("cC cmd: " + commandText + ".") - const replaced = substitute_keywords(కుంచికభాషా, commandText ); - eval(replaced); - } catch(e) { - errorFound = true - showError(e) - stopClicked() - } finally { - // చెరిపి_వేయి the command box - this.value = ""; - } + if ( + !errorFound && + (commandText !== ప్రదర్శన_విధానము || + commandText !== ప్రదర్శన_విధానము + ";" || + demo !== undefined) + ) { + try { + console.log("cC cmd: " + commandText + "."); + const replaced = substitute_keywords(కుంచికభాషా, commandText); + eval(replaced); + } catch (e) { + errorFound = true; + showError(e); + stopClicked(); + } finally { + // చెరిపి_వేయి the command box + this.value = ""; } + } } - /************************************************************************* * showErrors -- show the trapped errors on the canvas * @@ -1067,53 +1181,51 @@ function commandChanged () { * None *************************************************************************/ function showError(e) { - //logTurtle("sEtop") - saveTurtleState(కుంచికState) - imageContext.save(); - //కుంచికState = కుంచిక; - //logTurtle("sEtop") - height=10 // points - స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY()+24+height/2 +2); - కోణము(90); - చుట్టొద్దు(); - - // చెరిపి_వేయి the line for the error message - కుంచికను_కింద_పెట్టు() - రంగు_మార్చు( పసుపు ) - వెడల్పు(height+4) - ముందుకు_జరుగు(గరిష్ఠY() * 2) - స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY()+24) - - // write the error message - రంగు_మార్చు( ఎరుపు ); - అక్షరరూపము_స్థాపించు (height + "pt bold Helvetica, sans-serif") - వ్రాయి(e.name + ": " + e.message); - console.log(e.name + ": " + e.message ); - console.log( e ); - if (e.filename !== undefined) { - - // చెరిపి_వేయి the line for the file message - height=10 // points - రంగు_మార్చు( పసుపు ) - వెడల్పు(height+4) - స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY()+5+height/2 +2) - ముందుకు_జరుగు(గరిష్ఠY() * 2) - - // write the file message - రంగు_మార్చు( నీలము ); - అక్షరరూపము_స్థాపించు (height + "pt bold Helvetica, sans-serif") - స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY()+5) - వ్రాయి(e.fileName.substr(-40) + " line: " + e.lineNumber); - console.log("Error: " + e.fileName.substr(-40) + " line: " + e.lineNumber); + //logTurtle("sEtop") + saveTurtleState(కుంచికState); + imageContext.save(); + //కుంచికState = కుంచిక; + //logTurtle("sEtop") + height = 10; // points + స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY() + 24 + height / 2 + 2); + కోణము(90); + చుట్టొద్దు(); + + // చెరిపి_వేయి the line for the error message + కుంచికను_కింద_పెట్టు(); + రంగు_మార్చు(పసుపు); + వెడల్పు(height + 4); + ముందుకు_జరుగు(గరిష్ఠY() * 2); + స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY() + 24); + + // write the error message + రంగు_మార్చు(ఎరుపు); + అక్షరరూపము_స్థాపించు(height + "pt bold Helvetica, sans-serif"); + వ్రాయి(e.name + ": " + e.message); + console.log(e.name + ": " + e.message); + console.log(e); + if (e.filename !== undefined) { + // చెరిపి_వేయి the line for the file message + height = 10; // points + రంగు_మార్చు(పసుపు); + వెడల్పు(height + 4); + స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY() + 5 + height / 2 + 2); + ముందుకు_జరుగు(గరిష్ఠY() * 2); + + // write the file message + రంగు_మార్చు(నీలము); + అక్షరరూపము_స్థాపించు(height + "pt bold Helvetica, sans-serif"); + స్థానము_మార్చు(కనిష్ఠX(), కనిష్ఠY() + 5); + వ్రాయి(e.fileName.substr(-40) + " line: " + e.lineNumber); + console.log("Error: " + e.fileName.substr(-40) + " line: " + e.lineNumber); } - చిత్రీకరించు() - restoreTurtleState(కుంచికState) + చిత్రీకరించు(); + restoreTurtleState(కుంచికState); imageContext.restore(); - చిత్రీకరించు() + చిత్రీకరించు(); //logTurtle("sEbot") } - /************************************************************************* * twoDigits -- convert a number to a two digit string * @@ -1125,72 +1237,76 @@ function showError(e) { *************************************************************************/ function twoDigits(n) { n = n % 100; //in case over 100 - if (n <10) { - n = "0" + n + if (n < 10) { + n = "0" + n; } - return n + return n; } // set up the control buttons -document.getElementById("resetButton").onclick=resetClicked; -document.getElementById("runButton").onclick=runClicked +document.getElementById("resetButton").onclick = resetClicked; +document.getElementById("runButton").onclick = runClicked; // document.getElementById("infoButton").onclick=infoClicked; -document.getElementById("body").onresize=fixDragButton; -document.getElementById("stopButton").onclick=stopClicked; -document.getElementById("stopButton").hidden=true; -document.getElementById("downloadButton").onclick=downloadClicked; -document.getElementById("saveSVG").onclick=svgDownloadClicked; -document.getElementById("uploadButton").onclick= function () { - document.getElementById("uploadFile").click(); +document.getElementById("body").onresize = fixDragButton; +document.getElementById("stopButton").onclick = stopClicked; +document.getElementById("stopButton").hidden = true; +document.getElementById("downloadButton").onclick = downloadClicked; +document.getElementById("saveSVG").onclick = svgDownloadClicked; +document.getElementById("uploadButton").onclick = function () { + document.getElementById("uploadFile").click(); }; // document.getElementById("clearButton").onclick=clearClicked; -document.getElementById("saveCanvasButton").onclick=saveCanvasClicked; +document.getElementById("saveCanvasButton").onclick = saveCanvasClicked; saveCanvasLink = document.getElementById("saveCanvasButton"); -saveCanvasLink.addEventListener('click', function(ev) { +saveCanvasLink.addEventListener( + "click", + function (ev) { saveCanvasLink.href = imagecanvas.toDataURL(); let d = new Date(); let timestamp = - "" + - d.getFullYear() + - twoDigits(d.getMonth()+1) + - twoDigits(d.getDate()) + - "_" + - twoDigits(d.getHours()) + - twoDigits(d.getMinutes()) + - twoDigits(d.getSeconds()) + "" + + d.getFullYear() + + twoDigits(d.getMonth() + 1) + + twoDigits(d.getDate()) + + "_" + + twoDigits(d.getHours()) + + twoDigits(d.getMinutes()) + + twoDigits(d.getSeconds()); saveCanvasLink.download = "TurtleGraphics_" + timestamp + ".png"; - -}, false); - - -document.getElementById("uploadFile") - .addEventListener('change', uploadChanged, false); - - -mouseOverElementIds = [ // list of elements with help text - "clearButton", - "codeArea", - "command", - "downloadButton", - "downloadFilename", - "dragbarright", - "dragbarleft", - "examples", - "infoButton", - "reference", - "resetButton", - "runButton", - "stopButton", - "కుంచికcanvas", - "uploadButton" - ]; + }, + false +); + +document + .getElementById("uploadFile") + .addEventListener("change", uploadChanged, false); + +mouseOverElementIds = [ + // list of elements with help text + "clearButton", + "codeArea", + "command", + "downloadButton", + "downloadFilename", + "dragbarright", + "dragbarleft", + "examples", + "infoButton", + "reference", + "resetButton", + "runButton", + "stopButton", + "కుంచికcanvas", + "uploadButton", +]; let helpTextTimer; // global for delaying all help text let helpDelay = 1000; // global delay in milliseconds for all help text -let bottomY = (window.innerHeight // global for lowest Y on page for tool tip - || document.documentElement.clientHeight - || document.body.clientHeight) // variations for cross browser support - - 50; // bottom margin in pixels +let bottomY = + (window.innerHeight || // global for lowest Y on page for tool tip + document.documentElement.clientHeight || + document.body.clientHeight) - // variations for cross browser support + 50; // bottom margin in pixels // for (let i=0; i < mouseOverElementIds.length; i++) { // element = document.getElementById(mouseOverElementIds[i]); @@ -1215,7 +1331,6 @@ let bottomY = (window.innerHeight // global for lowest Y on page for tool tip // } // } - /************************************************************************* * onHelpEnter -- handler for when mouse enters an element with help text * @@ -1225,15 +1340,16 @@ let bottomY = (window.innerHeight // global for lowest Y on page for tool tip * returns: * None *************************************************************************/ -function onHelpEnter (helpTextElement) { - if ((helpTextActive || - (helpTextElement == document.getElementById("infoButton_help_text"))) && - helpTextTimer === undefined) { - helpTextTimer = setTimeout(onHelpTimeout,helpDelay, helpTextElement); - } +function onHelpEnter(helpTextElement) { + if ( + (helpTextActive || + helpTextElement == document.getElementById("infoButton_help_text")) && + helpTextTimer === undefined + ) { + helpTextTimer = setTimeout(onHelpTimeout, helpDelay, helpTextElement); + } } - /************************************************************************* * onHelpExit -- handler for when mouse leaves an element with help text * @@ -1243,15 +1359,14 @@ function onHelpEnter (helpTextElement) { * returns: * None *************************************************************************/ -function onHelpExit (helpTextElement) { - if (helpTextTimer != undefined) { - window.clearTimeout (helpTextTimer); - } - helpTextElement.style.display="none"; - helpTextTimer = undefined; +function onHelpExit(helpTextElement) { + if (helpTextTimer != undefined) { + window.clearTimeout(helpTextTimer); + } + helpTextElement.style.display = "none"; + helpTextTimer = undefined; } - /************************************************************************* * onHelpTimeout -- handler for when mouse remains in element with help text * @@ -1261,7 +1376,7 @@ function onHelpExit (helpTextElement) { * returns: * None *************************************************************************/ -function onHelpTimeout (helpTextElement) { - helpTextElement.style.display="block"; - helpTextTimer = undefined; +function onHelpTimeout(helpTextElement) { + helpTextElement.style.display = "block"; + helpTextTimer = undefined; }