Google Classroom
GeoGebraGeoGebra Třída

Návrat vyznačených objektů k původnímu vzhledu

Barva, síla, ... ale cokoliv

Pro návrat k původnímu vzhledu je třeba při zvýraznění uložit výchozí stav. Použijeme k tomu pole. V javascriptu může být pole "děravé", což se nám bude hodit, pokud bychom barvu (či jiné atributy vzhledu nastavovali) jen pro některé objekty. Můžeme totiž chtít mít zvýrazněných několik objektů současně a ty pak vrátit na jejich (třeba každého jiný) výchozí stav. Funkce vypadá docela podobně, jen je delší jednak o ukládání do pole, jednak o použití uložené barvy. Příkaz setColor totiž vyžaduje zadat barvu po složkách, zatímco funkce getColor získá barvu jako jedno hexadecimální číslo. Jako indikátor toho, zda je objekt zvýrazněn, opět použijeme vrstvu. function ggbOnInit() { ggbApplet.registerClickListener("emph"); } var colors = []; // pole na barvy var sizes = []; // pole na velikosti bodů var thicks = []; // pole na síly čar function emph(par) { var i = ggbApplet.getLayer(par); ggbApplet.setLayer(par, Math.abs(1 - i)); var index = 0; while (ggbApplet.getObjectName(index) != par) { index++; // zjistíme, jaké číslo má v konstrukci objekt, na který jsme kliknuli } // a to bude index do polí s vlastnostmi if (i == 0) { // chceme zvýrazňovat colors[index] = ggbApplet.getColor(par); // uložíme původní stav thicks[index] = ggbApplet.getLineThickness(par); sizes[index] = ggbApplet.getPointSize(par); ggbApplet.setLineThickness(par, 8); // a zvýrazníme ggbApplet.setPointSize(par, 6); ggbApplet.setColor(par, 255, 0, 0); } else { // chceme se vrátit k původnímu stavu ggbApplet.setLineThickness(par, thicks[index]); // obnovíme původní sílu čáry a velikost bodu ggbApplet.setPointSize(par, sizes[index]); var saved = colors[index]; // vezmeme původní barvu a rozebereme na složky var ur = parseInt(saved.substr(1, 2), 16); var ug = parseInt(saved.substr(3, 2), 16); var ub = parseInt(saved.substr(5, 2), 16); ggbApplet.setColor(par, ur, ug, ub); // ... a vrátíme } } Jednodušší varianta pak uloží všechny barvy (či další vlastnosti) hned po načtení appletu, tedy ve funkci ggbOnInit(). var prvky = []; var barvy = []; function ggbOnInit() {    ggbApplet.registerClickListener("obarvi");    prvky = ggbApplet.getAllObjectNames();  prvky.forEach(ulozBarvu); }

Kliknutím přepínáme zvýraznění a původní stav, i pro více objektů zároveň