curl_multi_errno
Description
The curl_multi_errno of cURL for PHP return the last multi curl error number.
Syntax
curl_multi_errno(
CurlMultiHandle $multi_handle
): intParameters
multi_handle
A cURL multi handle returned by curl_multi_init().
Return
Return an integer containing the last multi curl error number.
Examples
1 · multi_handle
<?
// initialize multiple
$multi_handle = curl_multi_init();
// initialize curl
$handle1 = curl_init();
$handle2 = curl_init();
// set curl
curl_setopt($handle1, CURLOPT_URL, "https://osbo.com/");
curl_setopt($handle2, CURLOPT_URL, "https://osbo.com/");
// add curl to multiple
curl_multi_add_handle($multi_handle, $handle1);
curl_multi_add_handle($multi_handle, $handle2);
// execute multiple
do
{
curl_multi_exec($multi_handle, $still_running);
$error_code = curl_multi_errno($multi_handle);
if($error_code > 0)
{
$error_string = curl_multi_strerror($error_code);
echo $error_string;
break;
}
}
while($still_running);
// remove curl from multiple
curl_multi_remove_handle($multi_handle, $handle1);
curl_multi_remove_handle($multi_handle, $handle2);
// close curl
curl_close($handle1);
curl_close($handle2);
// close multiple
curl_multi_close($multi_handle);
<!doctype html><html lang=en><head><meta charset=utf-8><meta content=width=device-width name=viewport><meta content=osbo.com name=description><title>osbo.com</title><link defer href=/assets/css/ rel=stylesheet><link defer href=/assets/svg/ rel=icon><script defer src=/assets/js/></script><script>var _mtm = window._mtm = window._mtm || [];_mtm.push({"mtm.startTime": (new Date().getTime()), "event": "mtm.Start"});(function(){var d=document, g=d.createElement("script"), s=d.querySelector("script");g.async=true; g.src="/matomo/js/container_Gm7CI6wt.js"; s.parentNode.insertBefore(g,s);})();</script></head><body><div id=foreground><header><a href=/><img alt=Home id=home src=/assets/svg/Home.svg title=Home></a><img alt=Menu id=menu src=/assets/svg/Menu.svg title=Menu><form action=/search/><input id=search-site name=search-site title=Search type=search></form></header><footer><a href=#><img alt=Top id=top src=/assets/svg/Top.svg title=Top></a></footer></div><div id=zeroground><div id=content><header><div id=topnav><a href=/Jesus/>Jesus</a> · <a href=/Bible/>Bible</a> · <a href=/html/>HTML</a> · <a href=/css/>CSS</a> · <a href=/js/>JS</a> · <a href=/php/>PHP</a> · <a href=/svg/>SVG</a> · <a href=/applications/>Applications</a></div></header><div class=banner><script defer src=https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4239362730750625 crossorigin=anonymous></script><ins class=adsbygoogle data-ad-client=ca-pub-4239362730750625 data-ad-slot=5564639719><a href=https://samaritanspurse.org/occ/ target=_blank><img alt="Samaritan's Purse Operation Christmas Child" src=/assets/svg/SamaritansPurseOperationChristmasChild2.svg title="Samaritan's Purse Operation Christmas Child"></a></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div><main><h1><a href>Bible Image Editor</a></h1><div id=myid style=height:100vh><script>const Bibleversionarray =
[
[
"العربية",
[
["ASVD", "الكتاب المقدس ترجمة فانديك وسميث (ASVD)"],
],
],
[
"česky",
[
["CSBKR", "Bible Kralická 1613 (CSBKR)"],
],
],
[
"Dansk",
[
["DA1871", "Danske Bibel 1871 (DA1871)"],
],
],
[
"Deutsch",
[
["DELUT", "Luther Bible 1912 (DELUT)"],
["ELB", "Elberfelder 1905 (ELB)"],
["ELB71", "Elberfelder 1871 (ELB71)"],
],
],
[
"English",
[
["ASV", "American Standard Version (ASV)"],
["KJV", "King James Version (KJV)"],
["WEB", "World English Bible (WEB)"],
],
],
[
"Español",
[
["RVES", "Reina-Valera Antigua (RVES)"],
],
],
[
"Suomi",
[
["FI1776", "Finnish 1776 (FI1776)"],
["FINPR", "Finnish 1938 (FINPR)"],
],
],
[
"Français",
[
["FMAR", "Martin 1744 (FMAR)"],
["FRDBY", "Bible Darby en français (FRDBY)"],
["LSG", "Louis Segond 1910 (LSG)"],
["OST", "Ostervald (OST)"],
],
],
[
"Magyar",
[
["KAR", "Károli 1590 (KAR)"],
],
],
[
"Bahasa Indonesia",
[
["IDBAR", "Terjemahan Baru (IDBAR)"],
],
],
[
"Italiano",
[
["IGD", "Giovanni Diodati Bibbia (IGD)"],
["ITRIV", "Italian Riveduta 1927 (ITRIV)"],
],
],
[
"日本語",
[
["JA1955", "Colloquial Japanese 1955 (JA1955)"],
],
],
[
"Malagasy",
[
["MG1865", "Malagasy Bible (MG1865)"],
],
],
[
"te reo Māori",
[
["MAOR", "Maori Bible (MAOR)"],
],
],
[
"한국어",
[
["KORVB", "개역한글 (KORVB)"],
],
],
[
"Nederlands",
[
["SV1750", "Statenvertaling (SV1750)"],
],
],
[
"Norsk",
[
["NORSK", "Det Norsk Bibelselskap 1930 (NORSK)"],
],
],
[
"Polski",
[
["PBG", "Biblia Gdańska (PBG)"],
],
],
[
"Português",
[
["AA", "Almeida Atualizada (AA)"],
],
],
[
"Română",
[
["RMNN", "Romanian Cornilescu 1928 (RMNN)"],
["VDC", "Versiunea Dumitru Cornilescu (VDC)"],
["VDCC", "Versiunea Dumitru Cornilescu Corectată (VDCC)"],
],
],
[
"Pyccкий",
[
["RURSV", "Синодальный перевод (RURSV)"],
],
],
[
"Shqip",
[
["ALBB", "Albanian Bible (ALBB)"],
],
],
[
"Svenska",
[
["SK73", "Karl XII 1873 (SK73)"],
["SVEN", "Svenska 1917 (SVEN)"],
],
],
[
"Wikang Tagalog",
[
["TLAB", "Ang Biblia (TLAB)"],
],
],
[
"українська",
[
["UBIO", "Біблія в пер. Івана Огієнка 1962 (UBIO)"],
["UKRK", "Біблія в пер. П.Куліша та І.Пулюя 1905 (UKRK)"],
],
],
[
"Tiếng Việt",
[
["VI1934", "Vietnamese Bible 1934 (VI1934)"],
],
],
[
"简体中文",
[
["CUVS", "简体和合本 (CUVS)"],
],
],
[
"繁體中文",
[
["CUV", "和合本 (CUV)"],
],
],
];
const Biblebookarray =
[
//"Genesis",
//"John",
];
const Bibleversearray =
[
//"In the beginning God created the heaven and the earth.",
//"For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life.",
];
const tabarray =
[
"canvas",
"image",
"message",
"reference",
"passage",
"save",
];
const borderstylearray =
[
"none",
"dashed",
"dotted",
"double",
"groove",
//"hidden",
"inset",
"outset",
"ridge",
"solid",
];
const horizontalarray =
[
"left",
"center",
"right",
"justify",
];
const verticalarray =
[
"start",
"center",
"end",
];
const writingmodearray =
[
"horizontal-tb",
"vertical-lr",
"vertical-rl",
"sideways-lr",
"sideways-rl",
];
const fontfamilyarray =
[
//generic family
"cursive",
"fantasy",
"monospace",
"sans-serif",
"serif",
//web safe
//"arial",//sans-serif
//"brush script",//serif
"courier",
//"garamond",//serif
"georgia",
"tahoma",
//"times new roman",//serif
"trebuchet ms",
"verdana",
//popular
//"avenir",//serif
//"bodoni",//serif
"franklin gothic",
//"frutiger",//serif
//"futura",//serif
//"helvetica",//sans-serif
//"rockwell",//serif
//"univers",//serif
];
const fontstylearray =
[
"normal",
"italic",
//"oblique",
];
const fontvariantarray =
[
"normal",
"small-caps",
];
const fontweightarray =
[
"normal",
"bold",
//"bolder",
//"lighter",
];
const maxheight = 10000;
const maxwidth = 10000;
const image = document.createElement("img");
const text = document.createElement("img");
function bodyload()
{
//const body = document.body;
//body.id = "myid";
const style = myid.style;
//style.height = "100vh";
style.overflow = "hidden";
}
addEventListener("load", bodyload);
function window1load()
{
const div = document.createElement("div");
div.id = "window1";
myid.append(div);
const style = div.style;
style.height = "50vh";
style.margin = "0";
}
addEventListener("load", window1load);
function window2load()
{
const div = document.createElement("div");
div.id = "window2";
myid.append(div);
const style = div.style;
style.height = "32px";
style.margin = "16px 0 0";
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", window2load);
function window3load()
{
const div = document.createElement("div");
div.id = "window3";
myid.append(div);
const style = div.style;
style.height = "calc(50vh - 48px)";
style.margin = "0";
style.overflowX = "hidden";
}
addEventListener("load", window3load);
function canvasload()
{
const canvas = document.createElement("canvas");
canvas.height = 1080;
canvas.id = "canvas";
canvas.width = 1920;
window1.append(canvas);
const style = canvas.style;
style.position = "relative";
}
addEventListener("load", canvasload);
function canvasupdate()
{
//console.log("canup");
const ww = innerWidth - 96;
const wh = innerHeight * 0.5;
const cw = canvas.width;
const ch = canvas.height;
const x = (ww - cw) * 0.5;
const y = (wh - ch) * 0.5;
const sw = ww / cw;
const sh = wh / ch;
const s = Math.min(sw, sh);
const style = canvas.style;
style.left = `${x}px`;
style.top = `${y}px`;
style.transform = `scale(${s})`;
}
addEventListener("load", canvasupdate);
function resize()
{
canvasupdate();
}
addEventListener("resize", resize);
function svgupdate()
{
//console.log("svgup");
const svg =
`<svg height="${canvas.height}" width="${canvas.width}" xmlns="http://www.w3.org/2000/svg">
<style>
div
{
background-color: ${canvas.backgroundcolor};
height: 100%;
}
img
{
box-sizing: border-box;
position: absolute;
background-color: ${image.backgroundcolor};
filter: blur(${image.filterblur}px) brightness(${image.filterbrightness}%) contrast(${image.filtercontrast}%) grayscale(${image.filtergrayscale}%) hue-rotate(${image.filterhuerotate}deg) invert(${image.filterinvert}%) opacity(${image.filteropacity}%) saturate(${image.filtersaturate}%) sepia(${image.filtersepia}%);
height: ${image.height}px;
left: ${image.myx}px;
margin: ${image.margintop}px ${image.marginright}px ${image.marginbottom}px ${image.marginleft}px;
padding: ${image.paddingtop}px ${image.paddingright}px ${image.paddingbottom}px ${image.paddingleft}px;
object-fit: ${image.objectfit};
//opacity: ${image.opacity};
top: ${image.myy}px;
width: ${image.width}px;
}
text
{
box-sizing: border-box;
display: grid;
overflow: hidden;
position: absolute;
}
text:nth-of-type(1)
{
white-space: pre;
align-items: ${text.messagevertical};
backdrop-filter: blur(${text.messagebackdropfilterblur}px) brightness(${text.messagebackdropfilterbrightness}%) contrast(${text.messagebackdropfiltercontrast}%) grayscale(${text.messagebackdropfiltergrayscale}%) hue-rotate(${text.messagebackdropfilterhuerotate}deg) invert(${text.messagebackdropfilterinvert}%) saturate(${text.messagebackdropfiltersaturate}%) sepia(${text.messagebackdropfiltersepia}%);
background-color: ${text.messagebackgroundcolor};
border-color: ${text.messagebordercolor};
border-radius: ${text.messageborderradius}px;
border-style: ${text.messageborderstyle};
border-width: ${text.messageborderwidth}px;
color: ${text.messagecolor};
font-family: ${text.messagefontfamily};
font-size: ${text.messagefontsize}px;
font-style: ${text.messagefontstyle};
font-variant: ${text.messagefontvariant};
font-weight: ${text.messagefontweight};
height: ${text.messageheight}px;
left: ${text.messagex}px;
margin: ${text.messagemargintop}px ${text.messagemarginright}px ${text.messagemarginbottom}px ${text.messagemarginleft}px;
padding: ${text.messagepaddingtop}px ${text.messagepaddingright}px ${text.messagepaddingbottom}px ${text.messagepaddingleft}px;
text-align: ${text.messagehorizontal};
top: ${text.messagey}px;
width: ${text.messagewidth}px;
writing-mode: ${text.messagewritingmode};
}
text:nth-of-type(2)
{
align-items: ${text.referencevertical};
background-color: ${text.referencebackgroundcolor};
border-color: ${text.referencebordercolor};
border-radius: ${text.referenceborderradius}px;
border-style: ${text.referenceborderstyle};
border-width: ${text.referenceborderwidth}px;
color: ${text.referencecolor};
font-family: ${text.referencefontfamily};
font-size: ${text.referencefontsize}px;
font-style: ${text.referencefontstyle};
font-variant: ${text.referencefontvariant};
font-weight: ${text.referencefontweight};
height: ${text.referenceheight}px;
left: ${text.referencex}px;
margin: ${text.referencemargintop}px ${text.referencemarginright}px ${text.referencemarginbottom}px ${text.referencemarginleft}px;
padding: ${text.referencepaddingtop}px ${text.referencepaddingright}px ${text.referencepaddingbottom}px ${text.referencepaddingleft}px;
text-align: ${text.referencehorizontal};
top: ${text.referencey}px;
width: ${text.referencewidth}px;
writing-mode: ${text.referencewritingmode};
}
text:nth-of-type(3)
{
align-items: ${text.passagevertical};
background-color: ${text.passagebackgroundcolor};
border-color: ${text.passagebordercolor};
border-radius: ${text.passageborderradius}px;
border-style: ${text.passageborderstyle};
border-width: ${text.passageborderwidth}px;
color: ${text.passagecolor};
font-family: ${text.passagefontfamily};
font-size: ${text.passagefontsize}px;
font-style: ${text.passagefontstyle};
font-variant: ${text.passagefontvariant};
font-weight: ${text.passagefontweight};
height: ${text.passageheight}px;
left: ${text.passagex}px;
margin: ${text.passagemargintop}px ${text.passagemarginright}px ${text.passagemarginbottom}px ${text.passagemarginleft}px;
padding: ${text.passagepaddingtop}px ${text.passagepaddingright}px ${text.passagepaddingbottom}px ${text.passagepaddingleft}px;
text-align: ${text.passagehorizontal};
top: ${text.passagey}px;
width: ${text.passagewidth}px;
writing-mode: ${text.passagewritingmode};
}
</style>
<foreignObject height="100%" width="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
<img src="${image.dataurl}"/>
<text>${text.messagetext}</text>
<text>${text.referencetextbook}${text.referencetextchapter}${text.referencetextverse}${text.referencetextverseend}${text.referencetextversion}</text>
<text>${text.passagetextverse}${text.passagetextverseend}</text>
</div>
</foreignObject>
</svg>`;
text.src = `data:image/svg+xml,${svg}`;
}
function textupdate()
{
const context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(text, 0, 0);
}
text.addEventListener("load", textupdate);
function tabload()
{
for(const [key, value] of tabarray.entries())
{
const button = document.createElement("button");
button.className = "tab";
if(value == "save")
{
button.className = "tab current";
}
button.id = "tab" + tabarray[key];
//button.innerHTML = `${key + 1}) ${tabarray[key]}`;
button.innerHTML = tabarray[key];
button.value = "tabcontent" + tabarray[key];
button.addEventListener("click", tabupdate);
window2.append(button);
/*
const style = button.style;
style.backgroundColor = "#000";
style.color = "#fff";
style.border = "none";
style.fontSize = "16px";
style.padding = "16px";
style.transition = "0.5s";
//*/
}
}
addEventListener("load", tabload);
function tabupdate(m)
{
const mytarget = m.target;
//*
for(const t of document.querySelectorAll(".tab"))
{
//const style = t.style;
//style.backgroundColor = "#000";
//style.color = "#fff";
t.className = t.className.replace(" current", "");
}
//const style = document.querySelector("#"+mytarget.id).style;
//style.backgroundColor = "#fff";
//style.color = "#000";
mytarget.className += " current";
//*/
for(const t of document.querySelectorAll(".tabcontent"))
{
const style = t.style;
style.contentVisibility = "hidden";
}
document.querySelector("#"+mytarget.value).style.contentVisibility = "visible";
}
function tabcontentload()
{
for(const [key, value] of tabarray.entries())
{
const div = document.createElement("div");
div.className = "tabcontent";
div.id = "tabcontent" + tabarray[key];
window3.append(div);
//*
const style = div.style;
if(value != "save")
{
style.contentVisibility = "hidden";
}
style.margin = "0";
//style.transitionDuration = "0.5s";
//*/
}
}
addEventListener("load", tabcontentload);
function canvaswidthload()
{
const div = document.createElement("div");
div.id = "canvaswidth";
div.innerHTML = "width";
tabcontentcanvas.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", canvaswidthload);
function canvaswidthnumberload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const input = document.createElement("input");
input.id = "canvaswidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width;
input.addEventListener("input", canvaswidthnumberupdate);
canvaswidth.append(input);
//canvaswidthnumberupdate();
}
addEventListener("load", canvaswidthnumberload);
function canvaswidthnumberupdate()
{
const v = canvaswidthnumber.value;
canvaswidthrange.value = v;
canvas.width = v;
canvasupdate();
svgupdate();
}
function canvaswidthrangeload()
{
//const br = document.createElement("br");
//canvaswidth.append(br);
const input = document.createElement("input");
input.id = "canvaswidthrange";
input.max = canvaswidthnumber.max;
input.min = canvaswidthnumber.min;
input.type = "range";
input.value = canvaswidthnumber.value;
input.addEventListener("input", canvaswidthrangeupdate);
canvaswidth.append(input);
canvaswidthrangeupdate();
}
addEventListener("load", canvaswidthrangeload);
function canvaswidthrangeupdate()
{
const v = canvaswidthrange.value;
canvaswidthnumber.value = v;
canvas.width = v;
canvasupdate();
svgupdate();
}
function canvaswidthnaturalload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", canvaswidthnaturalupdate);
canvaswidth.append(button);
}
addEventListener("load", canvaswidthnaturalload);
function canvaswidthnaturalupdate()
{
canvaswidthnumber.value = image.naturalWidth;
canvaswidthnumberupdate();
}
function canvaswidthexactload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const array =
[
["800",800],
["1280",1280],
["1366",1366],
["1536",1536],
["1600",1600],
["1920",1920],
["2304",2304],
["2560",2560],
["3840",3840],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvaswidthexactupdate);
canvaswidth.append(button);
}
}
addEventListener("load", canvaswidthexactload);
function canvaswidthexactupdate(e)
{
canvaswidthnumber.value = Number(e.target.value);
canvaswidthnumberupdate();
}
function canvaswidthincrementload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvaswidthincrementupdate);
canvaswidth.append(button);
}
}
addEventListener("load", canvaswidthincrementload);
function canvaswidthincrementupdate(e)
{
const v = Number(canvaswidthnumber.value) + Number(e.target.value);
if((canvaswidthnumber.min <= v) && (v <= canvaswidthnumber.max))
{
canvaswidthnumber.value = v;
canvaswidthnumberupdate();
}
}
function canvasheightload()
{
const div = document.createElement("div");
div.id = "canvasheight";
div.innerHTML = "height";
tabcontentcanvas.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", canvasheightload);
function canvasheightnumberload()
{
const br = document.createElement("br");
canvasheight.append(br);
const input = document.createElement("input");
input.id = "canvasheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = canvas.height;
input.addEventListener("input", canvasheightnumberupdate);
canvasheight.append(input);
//canvasheightnumberupdate();
}
addEventListener("load", canvasheightnumberload);
function canvasheightnumberupdate()
{
const v = canvasheightnumber.value;
canvasheightrange.value = v;
canvas.height = v;
canvasupdate();
svgupdate();
}
function canvasheightrangeload()
{
//const br = document.createElement("br");
//canvasheight.append(br);
const input = document.createElement("input");
input.id = "canvasheightrange";
input.max = canvasheightnumber.max;
input.min = canvasheightnumber.min;
input.type = "range";
input.value = canvasheightnumber.value;
input.addEventListener("input", canvasheightrangeupdate);
canvasheight.append(input);
canvasheightrangeupdate();
}
addEventListener("load", canvasheightrangeload);
function canvasheightrangeupdate()
{
const v = canvasheightrange.value;
canvasheightnumber.value = v;
canvas.height = v;
canvasupdate();
svgupdate();
}
function canvasheightnaturalload()
{
const br = document.createElement("br");
canvasheight.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", canvasheightnaturalupdate);
canvasheight.append(button);
}
addEventListener("load", canvasheightnaturalload);
function canvasheightnaturalupdate()
{
canvasheightnumber.value = image.naturalHeight;
canvasheightnumberupdate();
}
function canvasheightexactload()
{
const br = document.createElement("br");
canvasheight.append(br);
const array =
[
["600",600],
["720",720],
["768",768],
["864",864],
["900",900],
["1080",1080],
["1296",1296],
["1440",1440],
["2160",2160],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasheightexactupdate);
canvasheight.append(button);
}
}
addEventListener("load", canvasheightexactload);
function canvasheightexactupdate(e)
{
canvasheightnumber.value = Number(e.target.value);
canvasheightnumberupdate();
}
function canvasheightincrementload()
{
const br = document.createElement("br");
canvasheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasheightincrementupdate);
canvasheight.append(button);
}
}
addEventListener("load", canvasheightincrementload);
function canvasheightincrementupdate(e)
{
const v = Number(canvasheightnumber.value) + Number(e.target.value);
if((canvasheightnumber.min <= v) && (v <= canvasheightnumber.max))
{
canvasheightnumber.value = v;
canvasheightnumberupdate();
}
}
function canvasbackgroundcolorload()
{
const div = document.createElement("div");
div.id = "canvasbackgroundcolor";
div.innerHTML = "background-color";
tabcontentcanvas.append(div);
}
addEventListener("load", canvasbackgroundcolorload);
function canvasbackgroundcolorcolorload()
{
const br = document.createElement("br");
canvasbackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "canvasbackgroundcolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", canvasbackgroundcolorcolorupdate);
canvasbackgroundcolor.append(input);
//canvasbackgroundcolorcolorset();
}
addEventListener("load", canvasbackgroundcolorcolorload);
function canvasbackgroundcolorcolorset()
{
const c = canvasbackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = canvasbackgroundalphanumber.value;
canvas.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function canvasbackgroundcolorcolorupdate()
{
canvasbackgroundcolorcolorset();
svgupdate();
}
function canvasbackgroundcolorexactload()
{
const br = document.createElement("br");
canvasbackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasbackgroundcolorexactupdate);
canvasbackgroundcolor.append(button);
}
}
addEventListener("load", canvasbackgroundcolorexactload);
function canvasbackgroundcolorexactupdate(e)
{
canvasbackgroundcolorcolor.value = e.target.value;
canvasbackgroundcolorcolorupdate();
}
function canvasbackgroundalphaload()
{
const div = document.createElement("div");
div.id = "canvasbackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentcanvas.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", canvasbackgroundalphaload);
function canvasbackgroundalphanumberload()
{
const br = document.createElement("br");
canvasbackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "canvasbackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", canvasbackgroundalphanumberupdate);
canvasbackgroundalpha.append(input);
//canvasbackgroundalphanumberset();
}
addEventListener("load", canvasbackgroundalphanumberload);
function canvasbackgroundalphanumberset()
{
const c = canvasbackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = canvasbackgroundalphanumber.value;
canvasbackgroundalpharange.value = a;
canvas.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function canvasbackgroundalphanumberupdate()
{
canvasbackgroundalphanumberset();
svgupdate();
}
function canvasbackgroundalpharangeload()
{
//const br = document.createElement("br");
//canvasbackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "canvasbackgroundalpharange";
input.max = canvasbackgroundalphanumber.max;
input.min = canvasbackgroundalphanumber.min;
input.step = canvasbackgroundalphanumber.step;
input.type = "range";
input.value = canvasbackgroundalphanumber.value;
input.addEventListener("input", canvasbackgroundalpharangeupdate);
canvasbackgroundalpha.append(input);
canvasbackgroundalpharangeset();
}
addEventListener("load", canvasbackgroundalpharangeload);
function canvasbackgroundalpharangeset()
{
const c = canvasbackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = canvasbackgroundalpharange.value;
canvasbackgroundalphanumber.value = a;
canvas.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function canvasbackgroundalpharangeupdate()
{
canvasbackgroundalpharangeset();
svgupdate();
}
function canvasbackgroundalphaexactload()
{
const br = document.createElement("br");
canvasbackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasbackgroundalphaexactupdate);
canvasbackgroundalpha.append(button);
}
}
addEventListener("load", canvasbackgroundalphaexactload);
function canvasbackgroundalphaexactupdate(e)
{
canvasbackgroundalphanumber.value = Number(e.target.value);
canvasbackgroundalphanumberupdate();
}
function canvasbackgroundalphaincrementload()
{
const br = document.createElement("br");
canvasbackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasbackgroundalphaincrementupdate);
canvasbackgroundalpha.append(button);
}
}
addEventListener("load", canvasbackgroundalphaincrementload);
function canvasbackgroundalphaincrementupdate(e)
{
let v = Number(canvasbackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((canvasbackgroundalphanumber.min <= v) && (v <= canvasbackgroundalphanumber.max))
{
canvasbackgroundalphanumber.value = v;
canvasbackgroundalphanumberupdate();
}
}
function myfunction1(e)
{
//console.log(myvideo.duration);
const myvideo = e.target;
myvideo.currentTime = 0;
}
function myfunction2(e)
{
//console.log(myvideo.currentTime);
const myvideo = e.target;
const mycanvas = document.createElement("canvas");
mycanvas.height = myvideo.videoHeight;
mycanvas.width = myvideo.videoWidth;
const mycontext = mycanvas.getContext("2d");
mycontext.drawImage(myvideo, 0, 0, mycanvas.width, mycanvas.height);
//const myimg = new Image();
//myimg.src = mycanvas.toDataURL();
image.src = mycanvas.toDataURL();
}
function imageload2()
{
//image.src = "/assets/svg/Happy.svg";
const date = new Date();
const month = date.getUTCMonth() + 1;
const day = date.getUTCDate();
const myvideo = document.createElement("video");
myvideo.addEventListener("loadedmetadata", myfunction1);
myvideo.addEventListener("seeked", myfunction2);
myvideo.src = `/assets/mp4/${month}/${day}.mp4`;
}
addEventListener("load", imageload2);
function imageload3()
{
fetch(image.src)
.then(r => r.blob())
.then(b =>
{
const reader = new FileReader();
reader.readAsDataURL(b);
reader.onloadend = () =>
{
//console.log("imageload3");
image.dataurl = reader.result;
svgupdate();
};
});
}
image.addEventListener("load", imageload3);
function imagefileload()
{
const div = document.createElement("div");
div.id = "imagefile";
div.innerHTML = "file";
tabcontentimage.append(div);
}
addEventListener("load", imagefileload);
function imagefilefileload()
{
const br = document.createElement("br");
imagefile.append(br);
const input = document.createElement("input");
input.id = "imagefilefile";
input.type = "file";
input.addEventListener("change", imagefilefileupdate);
imagefile.append(input);
}
addEventListener("load", imagefilefileload);
function imagefilefileupdate()
{
const f = imagefilefile.files[0];
image.src = URL.createObjectURL(f);
}
function imagefitload()
{
const div = document.createElement("div");
div.id = "imagefit";
div.innerHTML = "fit";
tabcontentimage.append(div);
}
addEventListener("load", imagefitload);
function imagefitselectload()
{
const br = document.createElement("br");
imagefit.append(br);
const select = document.createElement("select");
select.id = "imagefitselect";
select.addEventListener("input", imagefitselectupdate);
imagefit.append(select);
const array =
[
"contain",
"cover",
];
for(const value of array)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
imagefitselect.value = array[1];
imagefitselectset();
}
addEventListener("load", imagefitselectload);
function imagefitselectset()
{
image.objectfit = imagefitselect.value;
}
function imagefitselectupdate()
{
imagefitselectset();
svgupdate();
}
function imagewidthload()
{
const div = document.createElement("div");
div.id = "imagewidth";
div.innerHTML = "width";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagewidthload);
function imagewidthnumberload()
{
const br = document.createElement("br");
imagewidth.append(br);
const input = document.createElement("input");
input.id = "imagewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width;
input.addEventListener("input", imagewidthnumberupdate);
imagewidth.append(input);
//imagewidthnumberset();
}
addEventListener("load", imagewidthnumberload);
function imagewidthnumberset()
{
const v = imagewidthnumber.value;
imagewidthrange.value = v;
image.width = v;
}
function imagewidthnumberupdate()
{
imagewidthnumberset();
svgupdate();
}
function imagewidthrangeload()
{
//const br = document.createElement("br");
//imagewidth.append(br);
const input = document.createElement("input");
input.id = "imagewidthrange";
input.max = imagewidthnumber.max;
input.min = imagewidthnumber.min;
input.type = "range";
input.value = imagewidthnumber.value;
input.addEventListener("input", imagewidthrangeupdate);
imagewidth.append(input);
imagewidthrangeset();
}
addEventListener("load", imagewidthrangeload);
function imagewidthrangeset()
{
const v = imagewidthrange.value;
imagewidthnumber.value = v;
image.width = v;
}
function imagewidthrangeupdate()
{
imagewidthrangeset();
svgupdate();
}
/*
function imagewidthnaturalload()
{
const br = document.createElement("br");
imagewidth.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", imagewidthnaturalupdate);
imagewidth.append(button);
}
addEventListener("load", imagewidthnaturalload);
function imagewidthnaturalupdate()
{
imagewidthnumber.value = image.naturalWidth;
imagewidthnumberupdate();
}
//*/
function imagewidthexactload()
{
const br = document.createElement("br");
imagewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagewidthexactupdate);
imagewidth.append(button);
}
}
addEventListener("load", imagewidthexactload);
function imagewidthexactupdate(e)
{
imagewidthnumber.value = canvas.width * Number(e.target.value);
imagewidthnumberupdate();
}
function imagewidthincrementload()
{
const br = document.createElement("br");
imagewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagewidthincrementupdate);
imagewidth.append(button);
}
}
addEventListener("load", imagewidthincrementload);
function imagewidthincrementupdate(e)
{
const v = Number(imagewidthnumber.value) + Number(e.target.value);
if((imagewidthnumber.min <= v) && (v <= imagewidthnumber.max))
{
imagewidthnumber.value = v;
imagewidthnumberupdate();
}
}
function imageheightload()
{
const div = document.createElement("div");
div.id = "imageheight";
div.innerHTML = "height";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imageheightload);
function imageheightnumberload()
{
const br = document.createElement("br");
imageheight.append(br);
const input = document.createElement("input");
input.id = "imageheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = canvas.height;
input.addEventListener("input", imageheightnumberupdate);
imageheight.append(input);
//imageheightnumberset();
}
addEventListener("load", imageheightnumberload);
function imageheightnumberset()
{
const v = imageheightnumber.value;
imageheightrange.value = v;
image.height = v;
}
function imageheightnumberupdate()
{
imageheightnumberset();
svgupdate();
}
function imageheightrangeload()
{
//const br = document.createElement("br");
//imageheight.append(br);
const input = document.createElement("input");
input.id = "imageheightrange";
input.max = imageheightnumber.max;
input.min = imageheightnumber.min;
input.type = "range";
input.value = imageheightnumber.value;
input.addEventListener("input", imageheightrangeupdate);
imageheight.append(input);
imageheightrangeset();
}
addEventListener("load", imageheightrangeload);
function imageheightrangeset()
{
const v = imageheightrange.value;
imageheightnumber.value = v;
image.height = v;
}
function imageheightrangeupdate()
{
imageheightrangeset();
svgupdate();
}
/*
function imageheightnaturalload()
{
const br = document.createElement("br");
imageheight.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", imageheightnaturalupdate);
imageheight.append(button);
}
addEventListener("load", imageheightnaturalload);
function imageheightnaturalupdate()
{
imageheightnumber.value = image.naturalHeight;
imageheightnumberupdate();
}
//*/
function imageheightexactload()
{
const br = document.createElement("br");
imageheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageheightexactupdate);
imageheight.append(button);
}
}
addEventListener("load", imageheightexactload);
function imageheightexactupdate(e)
{
imageheightnumber.value = canvas.height * Number(e.target.value);
imageheightnumberupdate();
}
function imageheightincrementload()
{
const br = document.createElement("br");
imageheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageheightincrementupdate);
imageheight.append(button);
}
}
addEventListener("load", imageheightincrementload);
function imageheightincrementupdate(e)
{
const v = Number(imageheightnumber.value) + Number(e.target.value);
if((imageheightnumber.min <= v) && (v <= imageheightnumber.max))
{
imageheightnumber.value = v;
imageheightnumberupdate();
}
}
function imagexload()
{
const div = document.createElement("div");
div.id = "imagex";
div.innerHTML = "x";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagexload);
function imagexnumberload()
{
const br = document.createElement("br");
imagex.append(br);
const input = document.createElement("input");
input.id = "imagexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagexnumberupdate);
imagex.append(input);
//imagexnumberset();
}
addEventListener("load", imagexnumberload);
function imagexnumberset()
{
const v = imagexnumber.value;
imagexrange.value = v;
image.myx = v;
}
function imagexnumberupdate()
{
imagexnumberset();
svgupdate();
}
function imagexrangeload()
{
//const br = document.createElement("br");
//imagex.append(br);
const input = document.createElement("input");
input.id = "imagexrange";
input.max = imagexnumber.max;
input.min = imagexnumber.min;
input.type = "range";
input.value = imagexnumber.value;
input.addEventListener("input", imagexrangeupdate);
imagex.append(input);
imagexrangeset();
}
addEventListener("load", imagexrangeload);
function imagexrangeset()
{
const v = imagexrange.value;
imagexnumber.value = v;
image.myx = v;
}
function imagexrangeupdate()
{
imagexrangeset();
svgupdate();
}
function imagexexactload()
{
const br = document.createElement("br");
imagex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagexexactupdate);
imagex.append(button);
}
}
addEventListener("load", imagexexactload);
function imagexexactupdate(e)
{
imagexnumber.value = (canvas.width - image.width) * Number(e.target.value);
imagexnumberupdate();
}
function imagexincrementload()
{
const br = document.createElement("br");
imagex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagexincrementupdate);
imagex.append(button);
}
}
addEventListener("load", imagexincrementload);
function imagexincrementupdate(e)
{
const v = Number(imagexnumber.value) + Number(e.target.value);
if((imagexnumber.min <= v) && (v <= imagexnumber.max))
{
imagexnumber.value = v;
imagexnumberupdate();
}
}
function imageyload()
{
const div = document.createElement("div");
div.id = "imagey";
div.innerHTML = "y";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imageyload);
function imageynumberload()
{
const br = document.createElement("br");
imagey.append(br);
const input = document.createElement("input");
input.id = "imageynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 0;
input.addEventListener("input", imageynumberupdate);
imagey.append(input);
//imageynumberset();
}
addEventListener("load", imageynumberload);
function imageynumberset()
{
const v = imageynumber.value;
imageyrange.value = v;
image.myy = v;
}
function imageynumberupdate()
{
imageynumberset();
svgupdate();
}
function imageyrangeload()
{
//const br = document.createElement("br");
//imagey.append(br);
const input = document.createElement("input");
input.id = "imageyrange";
input.max = imageynumber.max;
input.min = imageynumber.min;
input.type = "range";
input.value = imageynumber.value;
input.addEventListener("input", imageyrangeupdate);
imagey.append(input);
imageyrangeset();
}
addEventListener("load", imageyrangeload);
function imageyrangeset()
{
const v = imageyrange.value;
imageynumber.value = v;
image.myy = v;
}
function imageyrangeupdate()
{
imageyrangeset();
svgupdate();
}
function imageyexactload()
{
const br = document.createElement("br");
imagey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageyexactupdate);
imagey.append(button);
}
}
addEventListener("load", imageyexactload);
function imageyexactupdate(e)
{
imageynumber.value = (canvas.height - image.height) * Number(e.target.value);
imageynumberupdate();
}
function imageyincrementload()
{
const br = document.createElement("br");
imagey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageyincrementupdate);
imagey.append(button);
}
}
addEventListener("load", imageyincrementload);
function imageyincrementupdate(e)
{
const v = Number(imageynumber.value) + Number(e.target.value);
if((imageynumber.min <= v) && (v <= imageynumber.max))
{
imageynumber.value = v;
imageynumberupdate();
}
}
function imagebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "imagebackgroundcolor";
div.innerHTML = "background-color";
tabcontentimage.append(div);
}
addEventListener("load", imagebackgroundcolorload);
function imagebackgroundcolorcolorload()
{
const br = document.createElement("br");
imagebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "imagebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", imagebackgroundcolorcolorupdate);
imagebackgroundcolor.append(input);
//imagebackgroundcolorcolorset();
}
addEventListener("load", imagebackgroundcolorcolorload);
function imagebackgroundcolorcolorset()
{
const c = imagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = imagebackgroundalphanumber.value;
image.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function imagebackgroundcolorcolorupdate()
{
imagebackgroundcolorcolorset();
svgupdate();
}
function imagebackgroundcolorexactload()
{
const br = document.createElement("br");
imagebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagebackgroundcolorexactupdate);
imagebackgroundcolor.append(button);
}
}
addEventListener("load", imagebackgroundcolorexactload);
function imagebackgroundcolorexactupdate(e)
{
imagebackgroundcolorcolor.value = e.target.value;
imagebackgroundcolorcolorupdate();
}
function imagebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "imagebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagebackgroundalphaload);
function imagebackgroundalphanumberload()
{
const br = document.createElement("br");
imagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "imagebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagebackgroundalphanumberupdate);
imagebackgroundalpha.append(input);
//imagebackgroundalphanumberset();
}
addEventListener("load", imagebackgroundalphanumberload);
function imagebackgroundalphanumberset()
{
const c = imagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = imagebackgroundalphanumber.value;
imagebackgroundalpharange.value = a;
image.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function imagebackgroundalphanumberupdate()
{
imagebackgroundalphanumberset();
svgupdate();
}
function imagebackgroundalpharangeload()
{
//const br = document.createElement("br");
//imagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "imagebackgroundalpharange";
input.max = imagebackgroundalphanumber.max;
input.min = imagebackgroundalphanumber.min;
input.step = imagebackgroundalphanumber.step;
input.type = "range";
input.value = imagebackgroundalphanumber.value;
input.addEventListener("input", imagebackgroundalpharangeupdate);
imagebackgroundalpha.append(input);
imagebackgroundalpharangeset();
}
addEventListener("load", imagebackgroundalpharangeload);
function imagebackgroundalpharangeset()
{
const c = imagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = imagebackgroundalpharange.value;
imagebackgroundalphanumber.value = a;
image.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function imagebackgroundalpharangeupdate()
{
imagebackgroundalpharangeset();
svgupdate();
}
function imagebackgroundalphaexactload()
{
const br = document.createElement("br");
imagebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagebackgroundalphaexactupdate);
imagebackgroundalpha.append(button);
}
}
addEventListener("load", imagebackgroundalphaexactload);
function imagebackgroundalphaexactupdate(e)
{
imagebackgroundalphanumber.value = Number(e.target.value);
imagebackgroundalphanumberupdate();
}
function imagebackgroundalphaincrementload()
{
const br = document.createElement("br");
imagebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagebackgroundalphaincrementupdate);
imagebackgroundalpha.append(button);
}
}
addEventListener("load", imagebackgroundalphaincrementload);
function imagebackgroundalphaincrementupdate(e)
{
let v = Number(imagebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((imagebackgroundalphanumber.min <= v) && (v <= imagebackgroundalphanumber.max))
{
imagebackgroundalphanumber.value = v;
imagebackgroundalphanumberupdate();
}
}
/*
function imageopacityload()
{
const div = document.createElement("div");
div.id = "imageopacity";
div.innerHTML = "opacity";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imageopacityload);
function imageopacitynumberload()
{
const br = document.createElement("br");
imageopacity.append(br);
const input = document.createElement("input");
input.id = "imageopacitynumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", imageopacitynumberupdate);
imageopacity.append(input);
//imageopacitynumberset();
}
addEventListener("load", imageopacitynumberload);
function imageopacitynumberset()
{
const v = imageopacitynumber.value;
imageopacityrange.value = v;
image.opacity = v;
}
function imageopacitynumberupdate()
{
imageopacitynumberset();
svgupdate();
}
function imageopacityrangeload()
{
const input = document.createElement("input");
input.id = "imageopacityrange";
input.max = imageopacitynumber.max;
input.min = imageopacitynumber.min;
input.step = imageopacitynumber.step;
input.type = "range";
input.value = imageopacitynumber.value;
input.addEventListener("input", imageopacityrangeupdate);
imageopacity.append(input);
imageopacityrangeset();
}
addEventListener("load", imageopacityrangeload);
function imageopacityrangeset()
{
const v = imageopacityrange.value;
imageopacitynumber.value = v;
image.opacity = v;
}
function imageopacityrangeupdate()
{
imageopacityrangeset();
svgupdate();
}
function imageopacityexactload()
{
const br = document.createElement("br");
imageopacity.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageopacityexactupdate);
imageopacity.append(button);
}
}
addEventListener("load", imageopacityexactload);
function imageopacityexactupdate(e)
{
imageopacitynumber.value = Number(e.target.value);
imageopacitynumberupdate();
}
function imageopacityincrementload()
{
const br = document.createElement("br");
imageopacity.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageopacityincrementupdate);
imageopacity.append(button);
}
}
addEventListener("load", imageopacityincrementload);
function imageopacityincrementupdate(e)
{
let v = Number(imageopacitynumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((imageopacitynumber.min <= v) && (v <= imageopacitynumber.max))
{
imageopacitynumber.value = v;
imageopacitynumberupdate();
}
}
//*/
function imagefilterblurload()
{
const div = document.createElement("div");
div.id = "imagefilterblur";
div.innerHTML = "filter-blur";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterblurload);
function imagefilterblurnumberload()
{
const br = document.createElement("br");
imagefilterblur.append(br);
const input = document.createElement("input");
input.id = "imagefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefilterblurnumberupdate);
imagefilterblur.append(input);
//imagefilterblurnumberset();
}
addEventListener("load", imagefilterblurnumberload);
function imagefilterblurnumberset()
{
const v = imagefilterblurnumber.value;
imagefilterblurrange.value = v;
image.filterblur = v;
}
function imagefilterblurnumberupdate()
{
imagefilterblurnumberset();
svgupdate();
}
function imagefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "imagefilterblurrange";
input.max = imagefilterblurnumber.max;
input.min = imagefilterblurnumber.min;
input.step = imagefilterblurnumber.step;
input.type = "range";
input.value = imagefilterblurnumber.value;
input.addEventListener("input", imagefilterblurrangeupdate);
imagefilterblur.append(input);
imagefilterblurrangeset();
}
addEventListener("load", imagefilterblurrangeload);
function imagefilterblurrangeset()
{
const v = imagefilterblurrange.value;
imagefilterblurnumber.value = v;
image.filterblur = v;
}
function imagefilterblurrangeupdate()
{
imagefilterblurrangeset();
svgupdate();
}
function imagefilterblurexactload()
{
const br = document.createElement("br");
imagefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterblurexactupdate);
imagefilterblur.append(button);
}
}
addEventListener("load", imagefilterblurexactload);
function imagefilterblurexactupdate(e)
{
imagefilterblurnumber.value = Number(e.target.value);
imagefilterblurnumberupdate();
}
function imagefilterblurincrementload()
{
const br = document.createElement("br");
imagefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterblurincrementupdate);
imagefilterblur.append(button);
}
}
addEventListener("load", imagefilterblurincrementload);
function imagefilterblurincrementupdate(e)
{
const v = Number(imagefilterblurnumber.value) + Number(e.target.value);
if((imagefilterblurnumber.min <= v) && (v <= imagefilterblurnumber.max))
{
imagefilterblurnumber.value = v;
imagefilterblurnumberupdate();
}
}
function imagefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "imagefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterbrightnessload);
function imagefilterbrightnessnumberload()
{
const br = document.createElement("br");
imagefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "imagefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefilterbrightnessnumberupdate);
imagefilterbrightness.append(input);
//imagefilterbrightnessnumberset();
}
addEventListener("load", imagefilterbrightnessnumberload);
function imagefilterbrightnessnumberset()
{
const v = imagefilterbrightnessnumber.value;
imagefilterbrightnessrange.value = v;
image.filterbrightness = v;
}
function imagefilterbrightnessnumberupdate()
{
imagefilterbrightnessnumberset();
svgupdate();
}
function imagefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "imagefilterbrightnessrange";
input.max = imagefilterbrightnessnumber.max;
input.min = imagefilterbrightnessnumber.min;
input.step = imagefilterbrightnessnumber.step;
input.type = "range";
input.value = imagefilterbrightnessnumber.value;
input.addEventListener("input", imagefilterbrightnessrangeupdate);
imagefilterbrightness.append(input);
imagefilterbrightnessrangeset();
}
addEventListener("load", imagefilterbrightnessrangeload);
function imagefilterbrightnessrangeset()
{
const v = imagefilterbrightnessrange.value;
imagefilterbrightnessnumber.value = v;
image.filterbrightness = v;
}
function imagefilterbrightnessrangeupdate()
{
imagefilterbrightnessrangeset();
svgupdate();
}
function imagefilterbrightnessexactload()
{
const br = document.createElement("br");
imagefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterbrightnessexactupdate);
imagefilterbrightness.append(button);
}
}
addEventListener("load", imagefilterbrightnessexactload);
function imagefilterbrightnessexactupdate(e)
{
imagefilterbrightnessnumber.value = Number(e.target.value);
imagefilterbrightnessnumberupdate();
}
function imagefilterbrightnessincrementload()
{
const br = document.createElement("br");
imagefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterbrightnessincrementupdate);
imagefilterbrightness.append(button);
}
}
addEventListener("load", imagefilterbrightnessincrementload);
function imagefilterbrightnessincrementupdate(e)
{
const v = Number(imagefilterbrightnessnumber.value) + Number(e.target.value);
if((imagefilterbrightnessnumber.min <= v) && (v <= imagefilterbrightnessnumber.max))
{
imagefilterbrightnessnumber.value = v;
imagefilterbrightnessnumberupdate();
}
}
function imagefiltercontrastload()
{
const div = document.createElement("div");
div.id = "imagefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltercontrastload);
function imagefiltercontrastnumberload()
{
const br = document.createElement("br");
imagefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "imagefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefiltercontrastnumberupdate);
imagefiltercontrast.append(input);
//imagefiltercontrastnumberset();
}
addEventListener("load", imagefiltercontrastnumberload);
function imagefiltercontrastnumberset()
{
const v = imagefiltercontrastnumber.value;
imagefiltercontrastrange.value = v;
image.filtercontrast = v;
}
function imagefiltercontrastnumberupdate()
{
imagefiltercontrastnumberset();
svgupdate();
}
function imagefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "imagefiltercontrastrange";
input.max = imagefiltercontrastnumber.max;
input.min = imagefiltercontrastnumber.min;
input.step = imagefiltercontrastnumber.step;
input.type = "range";
input.value = imagefiltercontrastnumber.value;
input.addEventListener("input", imagefiltercontrastrangeupdate);
imagefiltercontrast.append(input);
imagefiltercontrastrangeset();
}
addEventListener("load", imagefiltercontrastrangeload);
function imagefiltercontrastrangeset()
{
const v = imagefiltercontrastrange.value;
imagefiltercontrastnumber.value = v;
image.filtercontrast = v;
}
function imagefiltercontrastrangeupdate()
{
imagefiltercontrastrangeset();
svgupdate();
}
function imagefiltercontrastexactload()
{
const br = document.createElement("br");
imagefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltercontrastexactupdate);
imagefiltercontrast.append(button);
}
}
addEventListener("load", imagefiltercontrastexactload);
function imagefiltercontrastexactupdate(e)
{
imagefiltercontrastnumber.value = Number(e.target.value);
imagefiltercontrastnumberupdate();
}
function imagefiltercontrastincrementload()
{
const br = document.createElement("br");
imagefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltercontrastincrementupdate);
imagefiltercontrast.append(button);
}
}
addEventListener("load", imagefiltercontrastincrementload);
function imagefiltercontrastincrementupdate(e)
{
const v = Number(imagefiltercontrastnumber.value) + Number(e.target.value);
if((imagefiltercontrastnumber.min <= v) && (v <= imagefiltercontrastnumber.max))
{
imagefiltercontrastnumber.value = v;
imagefiltercontrastnumberupdate();
}
}
function imagefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "imagefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltergrayscaleload);
function imagefiltergrayscalenumberload()
{
const br = document.createElement("br");
imagefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "imagefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefiltergrayscalenumberupdate);
imagefiltergrayscale.append(input);
//imagefiltergrayscalenumberset();
}
addEventListener("load", imagefiltergrayscalenumberload);
function imagefiltergrayscalenumberset()
{
const v = imagefiltergrayscalenumber.value;
imagefiltergrayscalerange.value = v;
image.filtergrayscale = v;
}
function imagefiltergrayscalenumberupdate()
{
imagefiltergrayscalenumberset();
svgupdate();
}
function imagefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "imagefiltergrayscalerange";
input.max = imagefiltergrayscalenumber.max;
input.min = imagefiltergrayscalenumber.min;
input.step = imagefiltergrayscalenumber.step;
input.type = "range";
input.value = imagefiltergrayscalenumber.value;
input.addEventListener("input", imagefiltergrayscalerangeupdate);
imagefiltergrayscale.append(input);
imagefiltergrayscalerangeset();
}
addEventListener("load", imagefiltergrayscalerangeload);
function imagefiltergrayscalerangeset()
{
const v = imagefiltergrayscalerange.value;
imagefiltergrayscalenumber.value = v;
image.filtergrayscale = v;
}
function imagefiltergrayscalerangeupdate()
{
imagefiltergrayscalerangeset();
svgupdate();
}
function imagefiltergrayscaleexactload()
{
const br = document.createElement("br");
imagefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltergrayscaleexactupdate);
imagefiltergrayscale.append(button);
}
}
addEventListener("load", imagefiltergrayscaleexactload);
function imagefiltergrayscaleexactupdate(e)
{
imagefiltergrayscalenumber.value = Number(e.target.value);
imagefiltergrayscalenumberupdate();
}
function imagefiltergrayscaleincrementload()
{
const br = document.createElement("br");
imagefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltergrayscaleincrementupdate);
imagefiltergrayscale.append(button);
}
}
addEventListener("load", imagefiltergrayscaleincrementload);
function imagefiltergrayscaleincrementupdate(e)
{
const v = Number(imagefiltergrayscalenumber.value) + Number(e.target.value);
if((imagefiltergrayscalenumber.min <= v) && (v <= imagefiltergrayscalenumber.max))
{
imagefiltergrayscalenumber.value = v;
imagefiltergrayscalenumberupdate();
}
}
function imagefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "imagefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterhuerotateload);
function imagefilterhuerotatenumberload()
{
const br = document.createElement("br");
imagefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "imagefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefilterhuerotatenumberupdate);
imagefilterhuerotate.append(input);
//imagefilterhuerotatenumberset();
}
addEventListener("load", imagefilterhuerotatenumberload);
function imagefilterhuerotatenumberset()
{
const v = imagefilterhuerotatenumber.value;
imagefilterhuerotaterange.value = v;
image.filterhuerotate = v;
}
function imagefilterhuerotatenumberupdate()
{
imagefilterhuerotatenumberset();
svgupdate();
}
function imagefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "imagefilterhuerotaterange";
input.max = imagefilterhuerotatenumber.max;
input.min = imagefilterhuerotatenumber.min;
input.step = imagefilterhuerotatenumber.step;
input.type = "range";
input.value = imagefilterhuerotatenumber.value;
input.addEventListener("input", imagefilterhuerotaterangeupdate);
imagefilterhuerotate.append(input);
imagefilterhuerotaterangeset();
}
addEventListener("load", imagefilterhuerotaterangeload);
function imagefilterhuerotaterangeset()
{
const v = imagefilterhuerotaterange.value;
imagefilterhuerotatenumber.value = v;
image.filterhuerotate = v;
}
function imagefilterhuerotaterangeupdate()
{
imagefilterhuerotaterangeset();
svgupdate();
}
function imagefilterhuerotateexactload()
{
const br = document.createElement("br");
imagefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterhuerotateexactupdate);
imagefilterhuerotate.append(button);
}
}
addEventListener("load", imagefilterhuerotateexactload);
function imagefilterhuerotateexactupdate(e)
{
imagefilterhuerotatenumber.value = Number(e.target.value);
imagefilterhuerotatenumberupdate();
}
function imagefilterhuerotateincrementload()
{
const br = document.createElement("br");
imagefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterhuerotateincrementupdate);
imagefilterhuerotate.append(button);
}
}
addEventListener("load", imagefilterhuerotateincrementload);
function imagefilterhuerotateincrementupdate(e)
{
const v = Number(imagefilterhuerotatenumber.value) + Number(e.target.value);
if((imagefilterhuerotatenumber.min <= v) && (v <= imagefilterhuerotatenumber.max))
{
imagefilterhuerotatenumber.value = v;
imagefilterhuerotatenumberupdate();
}
}
function imagefilterinvertload()
{
const div = document.createElement("div");
div.id = "imagefilterinvert";
div.innerHTML = "filter-invert";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterinvertload);
function imagefilterinvertnumberload()
{
const br = document.createElement("br");
imagefilterinvert.append(br);
const input = document.createElement("input");
input.id = "imagefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefilterinvertnumberupdate);
imagefilterinvert.append(input);
//imagefilterinvertnumberset();
}
addEventListener("load", imagefilterinvertnumberload);
function imagefilterinvertnumberset()
{
const v = imagefilterinvertnumber.value;
imagefilterinvertrange.value = v;
image.filterinvert = v;
}
function imagefilterinvertnumberupdate()
{
imagefilterinvertnumberset();
svgupdate();
}
function imagefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "imagefilterinvertrange";
input.max = imagefilterinvertnumber.max;
input.min = imagefilterinvertnumber.min;
input.step = imagefilterinvertnumber.step;
input.type = "range";
input.value = imagefilterinvertnumber.value;
input.addEventListener("input", imagefilterinvertrangeupdate);
imagefilterinvert.append(input);
imagefilterinvertrangeset();
}
addEventListener("load", imagefilterinvertrangeload);
function imagefilterinvertrangeset()
{
const v = imagefilterinvertrange.value;
imagefilterinvertnumber.value = v;
image.filterinvert = v;
}
function imagefilterinvertrangeupdate()
{
imagefilterinvertrangeset();
svgupdate();
}
function imagefilterinvertexactload()
{
const br = document.createElement("br");
imagefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterinvertexactupdate);
imagefilterinvert.append(button);
}
}
addEventListener("load", imagefilterinvertexactload);
function imagefilterinvertexactupdate(e)
{
imagefilterinvertnumber.value = Number(e.target.value);
imagefilterinvertnumberupdate();
}
function imagefilterinvertincrementload()
{
const br = document.createElement("br");
imagefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterinvertincrementupdate);
imagefilterinvert.append(button);
}
}
addEventListener("load", imagefilterinvertincrementload);
function imagefilterinvertincrementupdate(e)
{
const v = Number(imagefilterinvertnumber.value) + Number(e.target.value);
if((imagefilterinvertnumber.min <= v) && (v <= imagefilterinvertnumber.max))
{
imagefilterinvertnumber.value = v;
imagefilterinvertnumberupdate();
}
}
function imagefilteropacityload()
{
const div = document.createElement("div");
div.id = "imagefilteropacity";
div.innerHTML = "filter-opacity";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilteropacityload);
function imagefilteropacitynumberload()
{
const br = document.createElement("br");
imagefilteropacity.append(br);
const input = document.createElement("input");
input.id = "imagefilteropacitynumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefilteropacitynumberupdate);
imagefilteropacity.append(input);
//imagefilteropacitynumberset();
}
addEventListener("load", imagefilteropacitynumberload);
function imagefilteropacitynumberset()
{
const v = imagefilteropacitynumber.value;
imagefilteropacityrange.value = v;
image.filteropacity = v;
}
function imagefilteropacitynumberupdate()
{
imagefilteropacitynumberset();
svgupdate();
}
function imagefilteropacityrangeload()
{
const input = document.createElement("input");
input.id = "imagefilteropacityrange";
input.max = imagefilteropacitynumber.max;
input.min = imagefilteropacitynumber.min;
input.step = imagefilteropacitynumber.step;
input.type = "range";
input.value = imagefilteropacitynumber.value;
input.addEventListener("input", imagefilteropacityrangeupdate);
imagefilteropacity.append(input);
imagefilteropacityrangeset();
}
addEventListener("load", imagefilteropacityrangeload);
function imagefilteropacityrangeset()
{
const v = imagefilteropacityrange.value;
imagefilteropacitynumber.value = v;
image.filteropacity = v;
}
function imagefilteropacityrangeupdate()
{
imagefilteropacityrangeset();
svgupdate();
}
function imagefilteropacityexactload()
{
const br = document.createElement("br");
imagefilteropacity.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100 (initial)",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilteropacityexactupdate);
imagefilteropacity.append(button);
}
}
addEventListener("load", imagefilteropacityexactload);
function imagefilteropacityexactupdate(e)
{
imagefilteropacitynumber.value = Number(e.target.value);
imagefilteropacitynumberupdate();
}
function imagefilteropacityincrementload()
{
const br = document.createElement("br");
imagefilteropacity.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilteropacityincrementupdate);
imagefilteropacity.append(button);
}
}
addEventListener("load", imagefilteropacityincrementload);
function imagefilteropacityincrementupdate(e)
{
const v = Number(imagefilteropacitynumber.value) + Number(e.target.value);
if((imagefilteropacitynumber.min <= v) && (v <= imagefilteropacitynumber.max))
{
imagefilteropacitynumber.value = v;
imagefilteropacitynumberupdate();
}
}
function imagefiltersaturateload()
{
const div = document.createElement("div");
div.id = "imagefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltersaturateload);
function imagefiltersaturatenumberload()
{
const br = document.createElement("br");
imagefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "imagefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefiltersaturatenumberupdate);
imagefiltersaturate.append(input);
//imagefiltersaturatenumberset();
}
addEventListener("load", imagefiltersaturatenumberload);
function imagefiltersaturatenumberset()
{
const v = imagefiltersaturatenumber.value;
imagefiltersaturaterange.value = v;
image.filtersaturate = v;
}
function imagefiltersaturatenumberupdate()
{
imagefiltersaturatenumberset();
svgupdate();
}
function imagefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "imagefiltersaturaterange";
input.max = imagefiltersaturatenumber.max;
input.min = imagefiltersaturatenumber.min;
input.step = imagefiltersaturatenumber.step;
input.type = "range";
input.value = imagefiltersaturatenumber.value;
input.addEventListener("input", imagefiltersaturaterangeupdate);
imagefiltersaturate.append(input);
imagefiltersaturaterangeset();
}
addEventListener("load", imagefiltersaturaterangeload);
function imagefiltersaturaterangeset()
{
const v = imagefiltersaturaterange.value;
imagefiltersaturatenumber.value = v;
image.filtersaturate = v;
}
function imagefiltersaturaterangeupdate()
{
imagefiltersaturaterangeset();
svgupdate();
}
function imagefiltersaturateexactload()
{
const br = document.createElement("br");
imagefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersaturateexactupdate);
imagefiltersaturate.append(button);
}
}
addEventListener("load", imagefiltersaturateexactload);
function imagefiltersaturateexactupdate(e)
{
imagefiltersaturatenumber.value = Number(e.target.value);
imagefiltersaturatenumberupdate();
}
function imagefiltersaturateincrementload()
{
const br = document.createElement("br");
imagefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersaturateincrementupdate);
imagefiltersaturate.append(button);
}
}
addEventListener("load", imagefiltersaturateincrementload);
function imagefiltersaturateincrementupdate(e)
{
const v = Number(imagefiltersaturatenumber.value) + Number(e.target.value);
if((imagefiltersaturatenumber.min <= v) && (v <= imagefiltersaturatenumber.max))
{
imagefiltersaturatenumber.value = v;
imagefiltersaturatenumberupdate();
}
}
function imagefiltersepiaload()
{
const div = document.createElement("div");
div.id = "imagefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltersepiaload);
function imagefiltersepianumberload()
{
const br = document.createElement("br");
imagefiltersepia.append(br);
const input = document.createElement("input");
input.id = "imagefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefiltersepianumberupdate);
imagefiltersepia.append(input);
//imagefiltersepianumberset();
}
addEventListener("load", imagefiltersepianumberload);
function imagefiltersepianumberset()
{
const v = imagefiltersepianumber.value;
imagefiltersepiarange.value = v;
image.filtersepia = v;
}
function imagefiltersepianumberupdate()
{
imagefiltersepianumberset();
svgupdate();
}
function imagefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "imagefiltersepiarange";
input.max = imagefiltersepianumber.max;
input.min = imagefiltersepianumber.min;
input.step = imagefiltersepianumber.step;
input.type = "range";
input.value = imagefiltersepianumber.value;
input.addEventListener("input", imagefiltersepiarangeupdate);
imagefiltersepia.append(input);
imagefiltersepiarangeset();
}
addEventListener("load", imagefiltersepiarangeload);
function imagefiltersepiarangeset()
{
const v = imagefiltersepiarange.value;
imagefiltersepianumber.value = v;
image.filtersepia = v;
}
function imagefiltersepiarangeupdate()
{
imagefiltersepiarangeset();
svgupdate();
}
function imagefiltersepiaexactload()
{
const br = document.createElement("br");
imagefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersepiaexactupdate);
imagefiltersepia.append(button);
}
}
addEventListener("load", imagefiltersepiaexactload);
function imagefiltersepiaexactupdate(e)
{
imagefiltersepianumber.value = Number(e.target.value);
imagefiltersepianumberupdate();
}
function imagefiltersepiaincrementload()
{
const br = document.createElement("br");
imagefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersepiaincrementupdate);
imagefiltersepia.append(button);
}
}
addEventListener("load", imagefiltersepiaincrementload);
function imagefiltersepiaincrementupdate(e)
{
const v = Number(imagefiltersepianumber.value) + Number(e.target.value);
if((imagefiltersepianumber.min <= v) && (v <= imagefiltersepianumber.max))
{
imagefiltersepianumber.value = v;
imagefiltersepianumberupdate();
}
}
/*
function imagemargintopload()
{
const div = document.createElement("div");
div.id = "imagemargintop";
div.innerHTML = "margin-top";
tabcontentimage.append(div);
}
addEventListener("load", imagemargintopload);
function imagemargintopnumberload()
{
const br = document.createElement("br");
imagemargintop.append(br);
const input = document.createElement("input");
input.id = "imagemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemargintopnumberupdate);
imagemargintop.append(input);
//imagemargintopnumberset();
}
addEventListener("load", imagemargintopnumberload);
function imagemargintopnumberset()
{
const v = Number(imagemargintopnumber.value);
imagemargintoprange.value = v;
image.margintop = v;
}
function imagemargintopnumberupdate()
{
imagemargintopnumberset();
svgupdate();
}
function imagemargintoprangeload()
{
const input = document.createElement("input");
input.id = "imagemargintoprange";
input.max = imagemargintopnumber.max;
input.min = imagemargintopnumber.min;
input.type = "range";
input.value = imagemargintopnumber.value;
input.addEventListener("input", imagemargintoprangeupdate);
imagemargintop.append(input);
imagemargintoprangeset();
}
addEventListener("load", imagemargintoprangeload);
function imagemargintoprangeset()
{
const v = Number(imagemargintoprange.value);
imagemargintopnumber.value = v;
image.margintop = v;
}
function imagemargintoprangeupdate()
{
imagemargintoprangeset();
svgupdate();
}
function imagemarginbottomload()
{
const div = document.createElement("div");
div.id = "imagemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentimage.append(div);
}
addEventListener("load", imagemarginbottomload);
function imagemarginbottomnumberload()
{
const br = document.createElement("br");
imagemarginbottom.append(br);
const input = document.createElement("input");
input.id = "imagemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemarginbottomnumberupdate);
imagemarginbottom.append(input);
//imagemarginbottomnumberset();
}
addEventListener("load", imagemarginbottomnumberload);
function imagemarginbottomnumberset()
{
const v = Number(imagemarginbottomnumber.value);
imagemarginbottomrange.value = v;
image.marginbottom = v;
}
function imagemarginbottomnumberupdate()
{
imagemarginbottomnumberset();
svgupdate();
}
function imagemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "imagemarginbottomrange";
input.max = imagemarginbottomnumber.max;
input.min = imagemarginbottomnumber.min;
input.type = "range";
input.value = imagemarginbottomnumber.value;
input.addEventListener("input", imagemarginbottomrangeupdate);
imagemarginbottom.append(input);
imagemarginbottomrangeset();
}
addEventListener("load", imagemarginbottomrangeload);
function imagemarginbottomrangeset()
{
const v = Number(imagemarginbottomrange.value);
imagemarginbottomnumber.value = v;
image.marginbottom = v;
}
function imagemarginbottomrangeupdate()
{
imagemarginbottomrangeset();
svgupdate();
}
function imagemarginleftload()
{
const div = document.createElement("div");
div.id = "imagemarginleft";
div.innerHTML = "margin-left";
tabcontentimage.append(div);
}
addEventListener("load", imagemarginleftload);
function imagemarginleftnumberload()
{
const br = document.createElement("br");
imagemarginleft.append(br);
const input = document.createElement("input");
input.id = "imagemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemarginleftnumberupdate);
imagemarginleft.append(input);
//imagemarginleftnumberset();
}
addEventListener("load", imagemarginleftnumberload);
function imagemarginleftnumberset()
{
const v = Number(imagemarginleftnumber.value);
imagemarginleftrange.value = v;
image.marginleft = v;
}
function imagemarginleftnumberupdate()
{
imagemarginleftnumberset();
svgupdate();
}
function imagemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "imagemarginleftrange";
input.max = imagemarginleftnumber.max;
input.min = imagemarginleftnumber.min;
input.type = "range";
input.value = imagemarginleftnumber.value;
input.addEventListener("input", imagemarginleftrangeupdate);
imagemarginleft.append(input);
imagemarginleftrangeset();
}
addEventListener("load", imagemarginleftrangeload);
function imagemarginleftrangeset()
{
const v = Number(imagemarginleftrange.value);
imagemarginleftnumber.value = v;
image.marginleft = v;
}
function imagemarginleftrangeupdate()
{
imagemarginleftrangeset();
svgupdate();
}
function imagemarginrightload()
{
const div = document.createElement("div");
div.id = "imagemarginright";
div.innerHTML = "margin-right";
tabcontentimage.append(div);
}
addEventListener("load", imagemarginrightload);
function imagemarginrightnumberload()
{
const br = document.createElement("br");
imagemarginright.append(br);
const input = document.createElement("input");
input.id = "imagemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemarginrightnumberupdate);
imagemarginright.append(input);
//imagemarginrightnumberset();
}
addEventListener("load", imagemarginrightnumberload);
function imagemarginrightnumberset()
{
const v = Number(imagemarginrightnumber.value);
imagemarginrightrange.value = v;
image.marginright = v;
}
function imagemarginrightnumberupdate()
{
imagemarginrightnumberset();
svgupdate();
}
function imagemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "imagemarginrightrange";
input.max = imagemarginrightnumber.max;
input.min = imagemarginrightnumber.min;
input.type = "range";
input.value = imagemarginrightnumber.value;
input.addEventListener("input", imagemarginrightrangeupdate);
imagemarginright.append(input);
imagemarginrightrangeset();
}
addEventListener("load", imagemarginrightrangeload);
function imagemarginrightrangeset()
{
const v = Number(imagemarginrightrange.value);
imagemarginrightnumber.value = v;
image.marginright = v;
}
function imagemarginrightrangeupdate()
{
imagemarginrightrangeset();
svgupdate();
}
function imagepaddingtopload()
{
const div = document.createElement("div");
div.id = "imagepaddingtop";
div.innerHTML = "padding-top";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingtopload);
function imagepaddingtopnumberload()
{
const br = document.createElement("br");
imagepaddingtop.append(br);
const input = document.createElement("input");
input.id = "imagepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingtopnumberupdate);
imagepaddingtop.append(input);
//imagepaddingtopnumberset();
}
addEventListener("load", imagepaddingtopnumberload);
function imagepaddingtopnumberset()
{
const v = Number(imagepaddingtopnumber.value);
imagepaddingtoprange.value = v;
image.paddingtop = v;
}
function imagepaddingtopnumberupdate()
{
imagepaddingtopnumberset();
svgupdate();
}
function imagepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingtoprange";
input.max = imagepaddingtopnumber.max;
input.min = imagepaddingtopnumber.min;
input.type = "range";
input.value = imagepaddingtopnumber.value;
input.addEventListener("input", imagepaddingtoprangeupdate);
imagepaddingtop.append(input);
imagepaddingtoprangeset();
}
addEventListener("load", imagepaddingtoprangeload);
function imagepaddingtoprangeset()
{
const v = Number(imagepaddingtoprange.value);
imagepaddingtopnumber.value = v;
image.paddingtop = v;
}
function imagepaddingtoprangeupdate()
{
imagepaddingtoprangeset();
svgupdate();
}
function imagepaddingbottomload()
{
const div = document.createElement("div");
div.id = "imagepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingbottomload);
function imagepaddingbottomnumberload()
{
const br = document.createElement("br");
imagepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "imagepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingbottomnumberupdate);
imagepaddingbottom.append(input);
//imagepaddingbottomnumberset();
}
addEventListener("load", imagepaddingbottomnumberload);
function imagepaddingbottomnumberset()
{
const v = Number(imagepaddingbottomnumber.value);
imagepaddingbottomrange.value = v;
image.paddingbottom = v;
}
function imagepaddingbottomnumberupdate()
{
imagepaddingbottomnumberset();
svgupdate();
}
function imagepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingbottomrange";
input.max = imagepaddingbottomnumber.max;
input.min = imagepaddingbottomnumber.min;
input.type = "range";
input.value = imagepaddingbottomnumber.value;
input.addEventListener("input", imagepaddingbottomrangeupdate);
imagepaddingbottom.append(input);
imagepaddingbottomrangeset();
}
addEventListener("load", imagepaddingbottomrangeload);
function imagepaddingbottomrangeset()
{
const v = Number(imagepaddingbottomrange.value);
imagepaddingbottomnumber.value = v;
image.paddingbottom = v;
}
function imagepaddingbottomrangeupdate()
{
imagepaddingbottomrangeset();
svgupdate();
}
function imagepaddingleftload()
{
const div = document.createElement("div");
div.id = "imagepaddingleft";
div.innerHTML = "padding-left";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingleftload);
function imagepaddingleftnumberload()
{
const br = document.createElement("br");
imagepaddingleft.append(br);
const input = document.createElement("input");
input.id = "imagepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingleftnumberupdate);
imagepaddingleft.append(input);
//imagepaddingleftnumberset();
}
addEventListener("load", imagepaddingleftnumberload);
function imagepaddingleftnumberset()
{
const v = Number(imagepaddingleftnumber.value);
imagepaddingleftrange.value = v;
image.paddingleft = v;
}
function imagepaddingleftnumberupdate()
{
imagepaddingleftnumberset();
svgupdate();
}
function imagepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingleftrange";
input.max = imagepaddingleftnumber.max;
input.min = imagepaddingleftnumber.min;
input.type = "range";
input.value = imagepaddingleftnumber.value;
input.addEventListener("input", imagepaddingleftrangeupdate);
imagepaddingleft.append(input);
imagepaddingleftrangeset();
}
addEventListener("load", imagepaddingleftrangeload);
function imagepaddingleftrangeset()
{
const v = Number(imagepaddingleftrange.value);
imagepaddingleftnumber.value = v;
image.paddingleft = v;
}
function imagepaddingleftrangeupdate()
{
imagepaddingleftrangeset();
svgupdate();
}
function imagepaddingrightload()
{
const div = document.createElement("div");
div.id = "imagepaddingright";
div.innerHTML = "padding-right";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingrightload);
function imagepaddingrightnumberload()
{
const br = document.createElement("br");
imagepaddingright.append(br);
const input = document.createElement("input");
input.id = "imagepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingrightnumberupdate);
imagepaddingright.append(input);
//imagepaddingrightnumberset();
}
addEventListener("load", imagepaddingrightnumberload);
function imagepaddingrightnumberset()
{
const v = Number(imagepaddingrightnumber.value);
imagepaddingrightrange.value = v;
image.paddingright = v;
}
function imagepaddingrightnumberupdate()
{
imagepaddingrightnumberset();
svgupdate();
}
function imagepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingrightrange";
input.max = imagepaddingrightnumber.max;
input.min = imagepaddingrightnumber.min;
input.type = "range";
input.value = imagepaddingrightnumber.value;
input.addEventListener("input", imagepaddingrightrangeupdate);
imagepaddingright.append(input);
imagepaddingrightrangeset();
}
addEventListener("load", imagepaddingrightrangeload);
function imagepaddingrightrangeset()
{
const v = Number(imagepaddingrightrange.value);
imagepaddingrightnumber.value = v;
image.paddingright = v;
}
function imagepaddingrightrangeupdate()
{
imagepaddingrightrangeset();
svgupdate();
}
//*/
function messagetextload()
{
const div = document.createElement("div");
div.id = "messagetext";
div.innerHTML = "text";
tabcontentmessage.append(div);
}
addEventListener("load", messagetextload);
function messagetexttextareaload()
{
const br = document.createElement("br");
messagetext.append(br);
const textarea = document.createElement("textarea");
textarea.id = "messagetexttextarea";
textarea.addEventListener("input", messagetexttextareaupdate);
messagetext.append(textarea);
textarea.value = "Jesus loves you!";
messagetexttextareaset();
}
addEventListener("load", messagetexttextareaload);
function messagetexttextareaset()
{
text.messagetext = messagetexttextarea.value;
}
function messagetexttextareaupdate()
{
messagetexttextareaset();
svgupdate();
}
function messagewidthload()
{
const div = document.createElement("div");
div.id = "messagewidth";
div.innerHTML = "width";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagewidthload);
function messagewidthnumberload()
{
const br = document.createElement("br");
messagewidth.append(br);
const input = document.createElement("input");
input.id = "messagewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width - 100;
input.addEventListener("input", messagewidthnumberupdate);
messagewidth.append(input);
//messagewidthnumberset();
}
addEventListener("load", messagewidthnumberload);
function messagewidthnumberset()
{
const v = Number(messagewidthnumber.value);
messagewidthrange.value = v;
text.messagewidth = v;
}
function messagewidthnumberupdate()
{
messagewidthnumberset();
svgupdate();
}
function messagewidthrangeload()
{
const input = document.createElement("input");
input.id = "messagewidthrange";
input.max = messagewidthnumber.max;
input.min = messagewidthnumber.min;
input.type = "range";
input.value = messagewidthnumber.value;
input.addEventListener("input", messagewidthrangeupdate);
messagewidth.append(input);
messagewidthrangeset();
}
addEventListener("load", messagewidthrangeload);
function messagewidthrangeset()
{
const v = Number(messagewidthrange.value);
messagewidthnumber.value = v;
text.messagewidth = v;
}
function messagewidthrangeupdate()
{
messagewidthrangeset();
svgupdate();
}
function messagewidthexactload()
{
const br = document.createElement("br");
messagewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagewidthexactupdate);
messagewidth.append(button);
}
}
addEventListener("load", messagewidthexactload);
function messagewidthexactupdate(e)
{
messagewidthnumber.value = canvas.width * Number(e.target.value);
messagewidthnumberupdate();
}
function messagewidthincrementload()
{
const br = document.createElement("br");
messagewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagewidthincrementupdate);
messagewidth.append(button);
}
}
addEventListener("load", messagewidthincrementload);
function messagewidthincrementupdate(e)
{
const v = Number(messagewidthnumber.value) + Number(e.target.value);
if((messagewidthnumber.min <= v) && (v <= messagewidthnumber.max))
{
messagewidthnumber.value = v;
messagewidthnumberupdate();
}
}
function messageheightload()
{
const div = document.createElement("div");
div.id = "messageheight";
div.innerHTML = "height";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageheightload);
function messageheightnumberload()
{
const br = document.createElement("br");
messageheight.append(br);
const input = document.createElement("input");
input.id = "messageheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = 300;
input.addEventListener("input", messageheightnumberupdate);
messageheight.append(input);
//messageheightnumberset();
}
addEventListener("load", messageheightnumberload);
function messageheightnumberset()
{
const v = Number(messageheightnumber.value);
messageheightrange.value = v;
text.messageheight = v;
}
function messageheightnumberupdate()
{
messageheightnumberset();
svgupdate();
}
function messageheightrangeload()
{
const input = document.createElement("input");
input.id = "messageheightrange";
input.max = messageheightnumber.max;
input.min = messageheightnumber.min;
input.type = "range";
input.value = messageheightnumber.value;
input.addEventListener("input", messageheightrangeupdate);
messageheight.append(input);
messageheightrangeset();
}
addEventListener("load", messageheightrangeload);
function messageheightrangeset()
{
const v = Number(messageheightrange.value);
messageheightnumber.value = v;
text.messageheight = v;
}
function messageheightrangeupdate()
{
messageheightrangeset();
svgupdate();
}
function messageheightexactload()
{
const br = document.createElement("br");
messageheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageheightexactupdate);
messageheight.append(button);
}
}
addEventListener("load", messageheightexactload);
function messageheightexactupdate(e)
{
messageheightnumber.value = canvas.height * Number(e.target.value);
messageheightnumberupdate();
}
function messageheightincrementload()
{
const br = document.createElement("br");
messageheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageheightincrementupdate);
messageheight.append(button);
}
}
addEventListener("load", messageheightincrementload);
function messageheightincrementupdate(e)
{
const v = Number(messageheightnumber.value) + Number(e.target.value);
if((messageheightnumber.min <= v) && (v <= messageheightnumber.max))
{
messageheightnumber.value = v;
messageheightnumberupdate();
}
}
function messagexload()
{
const div = document.createElement("div");
div.id = "messagex";
div.innerHTML = "x";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagexload);
function messagexnumberload()
{
const br = document.createElement("br");
messagex.append(br);
const input = document.createElement("input");
input.id = "messagexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 50;
input.addEventListener("input", messagexnumberupdate);
messagex.append(input);
//messagexnumberset();
}
addEventListener("load", messagexnumberload);
function messagexnumberset()
{
const v = Number(messagexnumber.value);
messagexrange.value = v;
text.messagex = v;
}
function messagexnumberupdate()
{
messagexnumberset();
svgupdate();
}
function messagexrangeload()
{
const input = document.createElement("input");
input.id = "messagexrange";
input.max = messagexnumber.max;
input.min = messagexnumber.min;
input.type = "range";
input.value = messagexnumber.value;
input.addEventListener("input", messagexrangeupdate);
messagex.append(input);
messagexrangeset();
}
addEventListener("load", messagexrangeload);
function messagexrangeset()
{
const v = Number(messagexrange.value);
messagexnumber.value = v;
text.messagex = v;
}
function messagexrangeupdate()
{
messagexrangeset();
svgupdate();
}
function messagexexactload()
{
const br = document.createElement("br");
messagex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagexexactupdate);
messagex.append(button);
}
}
addEventListener("load", messagexexactload);
function messagexexactupdate(e)
{
//messagexnumber.value = (canvas.width - text.messagewidth - text.messagepaddingleft - text.messagepaddingright) * Number(e.target.value);
messagexnumber.value = (canvas.width - text.messagewidth) * Number(e.target.value);
messagexnumberupdate();
}
function messagexincrementload()
{
const br = document.createElement("br");
messagex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagexincrementupdate);
messagex.append(button);
}
}
addEventListener("load", messagexincrementload);
function messagexincrementupdate(e)
{
const v = Number(messagexnumber.value) + Number(e.target.value);
if((messagexnumber.min <= v) && (v <= messagexnumber.max))
{
messagexnumber.value = v;
messagexnumberupdate();
}
}
function messageyload()
{
const div = document.createElement("div");
div.id = "messagey";
div.innerHTML = "y";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageyload);
function messageynumberload()
{
const br = document.createElement("br");
messagey.append(br);
const input = document.createElement("input");
input.id = "messageynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 50;
input.addEventListener("input", messageynumberupdate);
messagey.append(input);
//messageynumberset();
}
addEventListener("load", messageynumberload);
function messageynumberset()
{
const v = Number(messageynumber.value);
messageyrange.value = v;
text.messagey = v;
}
function messageynumberupdate()
{
messageynumberset();
svgupdate();
}
function messageyrangeload()
{
const input = document.createElement("input");
input.id = "messageyrange";
input.max = messageynumber.max;
input.min = messageynumber.min;
input.type = "range";
input.value = messageynumber.value;
input.addEventListener("input", messageyrangeupdate);
messagey.append(input);
messageyrangeset();
}
addEventListener("load", messageyrangeload);
function messageyrangeset()
{
const v = Number(messageyrange.value);
messageynumber.value = v;
text.messagey = v;
}
function messageyrangeupdate()
{
messageyrangeset();
svgupdate();
}
function messageyexactload()
{
const br = document.createElement("br");
messagey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageyexactupdate);
messagey.append(button);
}
}
addEventListener("load", messageyexactload);
function messageyexactupdate(e)
{
//messageynumber.value = (canvas.height - text.messageheight - text.messagepaddingtop - text.messagepaddingbottom) * Number(e.target.value);
messageynumber.value = (canvas.height - text.messageheight) * Number(e.target.value);
messageynumberupdate();
}
function messageyincrementload()
{
const br = document.createElement("br");
messagey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageyincrementupdate);
messagey.append(button);
}
}
addEventListener("load", messageyincrementload);
function messageyincrementupdate(e)
{
const v = Number(messageynumber.value) + Number(e.target.value);
if((messageynumber.min <= v) && (v <= messageynumber.max))
{
messageynumber.value = v;
messageynumberupdate();
}
}
function messagebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "messagebackgroundcolor";
div.innerHTML = "background-color";
tabcontentmessage.append(div);
}
addEventListener("load", messagebackgroundcolorload);
function messagebackgroundcolorcolorload()
{
const br = document.createElement("br");
messagebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "messagebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", messagebackgroundcolorcolorupdate);
messagebackgroundcolor.append(input);
//messagebackgroundcolorcolorset();
}
addEventListener("load", messagebackgroundcolorcolorload);
function messagebackgroundcolorcolorset()
{
const c = messagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagebackgroundalphanumber.value;
text.messagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebackgroundcolorcolorupdate()
{
messagebackgroundcolorcolorset();
svgupdate();
}
function messagebackgroundcolorexactload()
{
const br = document.createElement("br");
messagebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebackgroundcolorexactupdate);
messagebackgroundcolor.append(button);
}
}
addEventListener("load", messagebackgroundcolorexactload);
function messagebackgroundcolorexactupdate(e)
{
messagebackgroundcolorcolor.value = e.target.value;
messagebackgroundcolorcolorupdate();
}
function messagebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "messagebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagebackgroundalphaload);
function messagebackgroundalphanumberload()
{
const br = document.createElement("br");
messagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "messagebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0.5;
input.addEventListener("input", messagebackgroundalphanumberupdate);
messagebackgroundalpha.append(input);
//messagebackgroundalphanumberset();
}
addEventListener("load", messagebackgroundalphanumberload);
function messagebackgroundalphanumberset()
{
const c = messagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagebackgroundalphanumber.value;
messagebackgroundalpharange.value = a;
text.messagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebackgroundalphanumberupdate()
{
messagebackgroundalphanumberset();
svgupdate();
}
function messagebackgroundalpharangeload()
{
const input = document.createElement("input");
input.id = "messagebackgroundalpharange";
input.max = messagebackgroundalphanumber.max;
input.min = messagebackgroundalphanumber.min;
input.step = messagebackgroundalphanumber.step;
input.type = "range";
input.value = messagebackgroundalphanumber.value;
input.addEventListener("input", messagebackgroundalpharangeupdate);
messagebackgroundalpha.append(input);
messagebackgroundalpharangeset();
}
addEventListener("load", messagebackgroundalpharangeload);
function messagebackgroundalpharangeset()
{
const c = messagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagebackgroundalpharange.value;
messagebackgroundalphanumber.value = a;
text.messagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebackgroundalpharangeupdate()
{
messagebackgroundalpharangeset();
svgupdate();
}
function messagebackgroundalphaexactload()
{
const br = document.createElement("br");
messagebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebackgroundalphaexactupdate);
messagebackgroundalpha.append(button);
}
}
addEventListener("load", messagebackgroundalphaexactload);
function messagebackgroundalphaexactupdate(e)
{
messagebackgroundalphanumber.value = Number(e.target.value);
messagebackgroundalphanumberupdate();
}
function messagebackgroundalphaincrementload()
{
const br = document.createElement("br");
messagebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebackgroundalphaincrementupdate);
messagebackgroundalpha.append(button);
}
}
addEventListener("load", messagebackgroundalphaincrementload);
function messagebackgroundalphaincrementupdate(e)
{
let v = Number(messagebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((messagebackgroundalphanumber.min <= v) && (v <= messagebackgroundalphanumber.max))
{
messagebackgroundalphanumber.value = v;
messagebackgroundalphanumberupdate();
}
}
function messagebordercolorload()
{
const div = document.createElement("div");
div.id = "messagebordercolor";
div.innerHTML = "border-color";
tabcontentmessage.append(div);
}
addEventListener("load", messagebordercolorload);
function messagebordercolorcolorload()
{
const br = document.createElement("br");
messagebordercolor.append(br);
const input = document.createElement("input");
input.id = "messagebordercolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", messagebordercolorcolorupdate);
messagebordercolor.append(input);
//messagebordercolorcolorset();
}
addEventListener("load", messagebordercolorcolorload);
function messagebordercolorcolorset()
{
const c = messagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messageborderalphanumber.value;
text.messagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebordercolorcolorupdate()
{
messagebordercolorcolorset();
svgupdate();
}
function messagebordercolorexactload()
{
const br = document.createElement("br");
messagebordercolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebordercolorexactupdate);
messagebordercolor.append(button);
}
}
addEventListener("load", messagebordercolorexactload);
function messagebordercolorexactupdate(e)
{
messagebordercolorcolor.value = e.target.value;
messagebordercolorcolorupdate();
}
function messageborderalphaload()
{
const div = document.createElement("div");
div.id = "messageborderalpha";
div.innerHTML = "border-alpha";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageborderalphaload);
function messageborderalphanumberload()
{
const br = document.createElement("br");
messageborderalpha.append(br);
const input = document.createElement("input");
input.id = "messageborderalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", messageborderalphanumberupdate);
messageborderalpha.append(input);
//messageborderalphanumberset();
}
addEventListener("load", messageborderalphanumberload);
function messageborderalphanumberset()
{
const c = messagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messageborderalphanumber.value;
messageborderalpharange.value = a;
text.messagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messageborderalphanumberupdate()
{
messageborderalphanumberset();
svgupdate();
}
function messageborderalpharangeload()
{
const input = document.createElement("input");
input.id = "messageborderalpharange";
input.max = messageborderalphanumber.max;
input.min = messageborderalphanumber.min;
input.step = messageborderalphanumber.step;
input.type = "range";
input.value = messageborderalphanumber.value;
input.addEventListener("input", messageborderalpharangeupdate);
messageborderalpha.append(input);
messageborderalpharangeset();
}
addEventListener("load", messageborderalpharangeload);
function messageborderalpharangeset()
{
const c = messagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messageborderalpharange.value;
messageborderalphanumber.value = a;
text.messagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messageborderalpharangeupdate()
{
messageborderalpharangeset();
svgupdate();
}
function messageborderalphaexactload()
{
const br = document.createElement("br");
messageborderalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderalphaexactupdate);
messageborderalpha.append(button);
}
}
addEventListener("load", messageborderalphaexactload);
function messageborderalphaexactupdate(e)
{
messageborderalphanumber.value = Number(e.target.value);
messageborderalphanumberupdate();
}
function messageborderalphaincrementload()
{
const br = document.createElement("br");
messageborderalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderalphaincrementupdate);
messageborderalpha.append(button);
}
}
addEventListener("load", messageborderalphaincrementload);
function messageborderalphaincrementupdate(e)
{
let v = Number(messageborderalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((messageborderalphanumber.min <= v) && (v <= messageborderalphanumber.max))
{
messageborderalphanumber.value = v;
messageborderalphanumberupdate();
}
}
function messageborderradiusload()
{
const div = document.createElement("div");
div.id = "messageborderradius";
div.innerHTML = "border-radius";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageborderradiusload);
function messageborderradiusnumberload()
{
const br = document.createElement("br");
messageborderradius.append(br);
const input = document.createElement("input");
input.id = "messageborderradiusnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 50;
input.addEventListener("input", messageborderradiusnumberupdate);
messageborderradius.append(input);
//messageborderradiusnumberset();
}
addEventListener("load", messageborderradiusnumberload);
function messageborderradiusnumberset()
{
const v = Number(messageborderradiusnumber.value);
messageborderradiusrange.value = v;
text.messageborderradius = v;
}
function messageborderradiusnumberupdate()
{
messageborderradiusnumberset();
svgupdate();
}
function messageborderradiusrangeload()
{
const input = document.createElement("input");
input.id = "messageborderradiusrange";
input.max = messageborderradiusnumber.max;
input.min = messageborderradiusnumber.min;
input.type = "range";
input.value = messageborderradiusnumber.value;
input.addEventListener("input", messageborderradiusrangeupdate);
messageborderradius.append(input);
messageborderradiusrangeset();
}
addEventListener("load", messageborderradiusrangeload);
function messageborderradiusrangeset()
{
const v = Number(messageborderradiusrange.value);
messageborderradiusnumber.value = v;
text.messageborderradius = v;
}
function messageborderradiusrangeupdate()
{
messageborderradiusrangeset();
svgupdate();
}
function messageborderradiusexactload()
{
const br = document.createElement("br");
messageborderradius.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderradiusexactupdate);
messageborderradius.append(button);
}
}
addEventListener("load", messageborderradiusexactload);
function messageborderradiusexactupdate(e)
{
messageborderradiusnumber.value = Number(e.target.value);
messageborderradiusnumberupdate();
}
function messageborderradiusincrementload()
{
const br = document.createElement("br");
messageborderradius.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderradiusincrementupdate);
messageborderradius.append(button);
}
}
addEventListener("load", messageborderradiusincrementload);
function messageborderradiusincrementupdate(e)
{
const v = Number(messageborderradiusnumber.value) + Number(e.target.value);
if((messageborderradiusnumber.min <= v) && (v <= messageborderradiusnumber.max))
{
messageborderradiusnumber.value = v;
messageborderradiusnumberupdate();
}
}
function messageborderstyleload()
{
const div = document.createElement("div");
div.id = "messageborderstyle";
div.innerHTML = "border-style";
tabcontentmessage.append(div);
}
addEventListener("load", messageborderstyleload);
function messageborderstyleselectload()
{
const br = document.createElement("br");
messageborderstyle.append(br);
const select = document.createElement("select");
select.id = "messageborderstyleselect";
select.addEventListener("input", messageborderstyleselectupdate);
messageborderstyle.append(select);
for(const value of borderstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
//select.value = borderstylearray[8];
messageborderstyleselectset();
}
addEventListener("load", messageborderstyleselectload);
function messageborderstyleselectset()
{
text.messageborderstyle = messageborderstyleselect.value;
}
function messageborderstyleselectupdate()
{
messageborderstyleselectset();
svgupdate();
}
function messageborderwidthload()
{
const div = document.createElement("div");
div.id = "messageborderwidth";
div.innerHTML = "border-width";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageborderwidthload);
function messageborderwidthnumberload()
{
const br = document.createElement("br");
messageborderwidth.append(br);
const input = document.createElement("input");
input.id = "messageborderwidthnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 25;
input.addEventListener("input", messageborderwidthnumberupdate);
messageborderwidth.append(input);
//messageborderwidthnumberset();
}
addEventListener("load", messageborderwidthnumberload);
function messageborderwidthnumberset()
{
const v = Number(messageborderwidthnumber.value);
messageborderwidthrange.value = v;
text.messageborderwidth = v;
}
function messageborderwidthnumberupdate()
{
messageborderwidthnumberset();
svgupdate();
}
function messageborderwidthrangeload()
{
const input = document.createElement("input");
input.id = "messageborderwidthrange";
input.max = messageborderwidthnumber.max;
input.min = messageborderwidthnumber.min;
input.type = "range";
input.value = messageborderwidthnumber.value;
input.addEventListener("input", messageborderwidthrangeupdate);
messageborderwidth.append(input);
messageborderwidthrangeset();
}
addEventListener("load", messageborderwidthrangeload);
function messageborderwidthrangeset()
{
const v = Number(messageborderwidthrange.value);
messageborderwidthnumber.value = v;
text.messageborderwidth = v;
}
function messageborderwidthrangeupdate()
{
messageborderwidthrangeset();
svgupdate();
}
function messageborderwidthexactload()
{
const br = document.createElement("br");
messageborderwidth.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderwidthexactupdate);
messageborderwidth.append(button);
}
}
addEventListener("load", messageborderwidthexactload);
function messageborderwidthexactupdate(e)
{
messageborderwidthnumber.value = Number(e.target.value);
messageborderwidthnumberupdate();
}
function messageborderwidthincrementload()
{
const br = document.createElement("br");
messageborderwidth.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderwidthincrementupdate);
messageborderwidth.append(button);
}
}
addEventListener("load", messageborderwidthincrementload);
function messageborderwidthincrementupdate(e)
{
const v = Number(messageborderwidthnumber.value) + Number(e.target.value);
if((messageborderwidthnumber.min <= v) && (v <= messageborderwidthnumber.max))
{
messageborderwidthnumber.value = v;
messageborderwidthnumberupdate();
}
}
function messagehorizontalload()
{
const div = document.createElement("div");
div.id = "messagehorizontal";
div.innerHTML = "horizontal";
tabcontentmessage.append(div);
}
addEventListener("load", messagehorizontalload);
function messagehorizontalselectload()
{
const br = document.createElement("br");
messagehorizontal.append(br);
const select = document.createElement("select");
select.id = "messagehorizontalselect";
select.addEventListener("input", messagehorizontalselectupdate);
messagehorizontal.append(select);
for(const value of horizontalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = horizontalarray[1];
messagehorizontalselectset();
}
addEventListener("load", messagehorizontalselectload);
function messagehorizontalselectset()
{
text.messagehorizontal = messagehorizontalselect.value;
}
function messagehorizontalselectupdate()
{
messagehorizontalselectset();
svgupdate();
}
function messageverticalload()
{
const div = document.createElement("div");
div.id = "messagevertical";
div.innerHTML = "vertical";
tabcontentmessage.append(div);
}
addEventListener("load", messageverticalload);
function messageverticalselectload()
{
const br = document.createElement("br");
messagevertical.append(br);
const select = document.createElement("select");
select.id = "messageverticalselect";
select.addEventListener("input", messageverticalselectupdate);
messagevertical.append(select);
for(const value of verticalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = verticalarray[1];
messageverticalselectset();
}
addEventListener("load", messageverticalselectload);
function messageverticalselectset()
{
text.messagevertical = messageverticalselect.value;
}
function messageverticalselectupdate()
{
messageverticalselectset();
svgupdate();
}
function messagewritingmodeload()
{
const div = document.createElement("div");
div.id = "messagewritingmode";
div.innerHTML = "writing-mode";
tabcontentmessage.append(div);
}
addEventListener("load", messagewritingmodeload);
function messagewritingmodeselectload()
{
const br = document.createElement("br");
messagewritingmode.append(br);
const select = document.createElement("select");
select.id = "messagewritingmodeselect";
select.addEventListener("input", messagewritingmodeselectupdate);
messagewritingmode.append(select);
for(const value of writingmodearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagewritingmodeselectset();
}
addEventListener("load", messagewritingmodeselectload);
function messagewritingmodeselectset()
{
text.messagewritingmode = messagewritingmodeselect.value;
}
function messagewritingmodeselectupdate()
{
messagewritingmodeselectset();
svgupdate();
}
function messagefontfamilyload()
{
const div = document.createElement("div");
div.id = "messagefontfamily";
div.innerHTML = "font-family";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontfamilyload);
function messagefontfamilyselectload()
{
const br = document.createElement("br");
messagefontfamily.append(br);
const select = document.createElement("select");
select.id = "messagefontfamilyselect";
select.addEventListener("input", messagefontfamilyselectupdate);
messagefontfamily.append(select);
for(const value of fontfamilyarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontfamilyselectset();
}
addEventListener("load", messagefontfamilyselectload);
function messagefontfamilyselectset()
{
text.messagefontfamily = messagefontfamilyselect.value;
}
function messagefontfamilyselectupdate()
{
messagefontfamilyselectset();
svgupdate();
}
function messagefontsizeload()
{
const div = document.createElement("div");
div.id = "messagefontsize";
div.innerHTML = "font-size";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontsizeload);
function messagefontsizenumberload()
{
const br = document.createElement("br");
messagefontsize.append(br);
const input = document.createElement("input");
input.id = "messagefontsizenumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 140;
input.addEventListener("input", messagefontsizenumberupdate);
messagefontsize.append(input);
//messagefontsizenumberset();
}
addEventListener("load", messagefontsizenumberload);
function messagefontsizenumberset()
{
const v = Number(messagefontsizenumber.value);
messagefontsizerange.value = v;
text.messagefontsize = v;
}
function messagefontsizenumberupdate()
{
messagefontsizenumberset();
svgupdate();
}
function messagefontsizerangeload()
{
const input = document.createElement("input");
input.id = "messagefontsizerange";
input.max = messagefontsizenumber.max;
input.min = messagefontsizenumber.min;
input.type = "range";
input.value = messagefontsizenumber.value;
input.addEventListener("input", messagefontsizerangeupdate);
messagefontsize.append(input);
messagefontsizerangeset();
}
addEventListener("load", messagefontsizerangeload);
function messagefontsizerangeset()
{
const v = Number(messagefontsizerange.value);
messagefontsizenumber.value = v;
text.messagefontsize = v;
}
function messagefontsizerangeupdate()
{
messagefontsizerangeset();
svgupdate();
}
function messagefontsizeexactload()
{
const br = document.createElement("br");
messagefontsize.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefontsizeexactupdate);
messagefontsize.append(button);
}
}
addEventListener("load", messagefontsizeexactload);
function messagefontsizeexactupdate(e)
{
messagefontsizenumber.value = Number(e.target.value);
messagefontsizenumberupdate();
}
function messagefontsizeincrementload()
{
const br = document.createElement("br");
messagefontsize.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefontsizeincrementupdate);
messagefontsize.append(button);
}
}
addEventListener("load", messagefontsizeincrementload);
function messagefontsizeincrementupdate(e)
{
const v = Number(messagefontsizenumber.value) + Number(e.target.value);
if((messagefontsizenumber.min <= v) && (v <= messagefontsizenumber.max))
{
messagefontsizenumber.value = v;
messagefontsizenumberupdate();
}
}
/*
function messagefontsizefitload()
{
const button = document.createElement("button");
button.innerHTML = "fit";
button.addEventListener("click", messagefontsizefitupdate);
messagefontsize.append(button);
}
addEventListener("load", messagefontsizefitload);
function messagefontsizefitupdate()
{
const t = document.createElement("div");
messagefontsize.append(t);
t.innerHTML = text.bookname;
t.style.fontSize = `${messagefontsizenumber.value}px`;
const h1 = text.messagewidth;
const h2 = text.messageheight;
const h3 = t.offsetWidth;
const h4 = t.offsetHeight;
const h5 = messagefontsizenumber.value;
//const h4 = t.offsetParent;//t.style.fontSize;
//const h5 = t.clientHeight;//text.style.height;
//const h6 = text.height;
//const h7 = text.getBoundingClientRect().height;
//const h8 = text.style.lineHeight;
//const h9 = canvas.getBoundingClientRect().height;
console.log(h1, h2, h3, h4, h5);
//t.hidden = true;
if(h2 < h4)
{
messagefontsizenumber.value -= 1;
messagefit();
}
messagefontsizenumberupdate();
}
//*/
function messagefontstyleload()
{
const div = document.createElement("div");
div.id = "messagefontstyle";
div.innerHTML = "font-style";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontstyleload);
function messagefontstyleselectload()
{
const br = document.createElement("br");
messagefontstyle.append(br);
const select = document.createElement("select");
select.id = "messagefontstyleselect";
select.addEventListener("input", messagefontstyleselectupdate);
messagefontstyle.append(select);
for(const value of fontstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontstyleselectset();
}
addEventListener("load", messagefontstyleselectload);
function messagefontstyleselectset()
{
text.messagefontstyle = messagefontstyleselect.value;
}
function messagefontstyleselectupdate()
{
messagefontstyleselectset();
svgupdate();
}
function messagefontvariantload()
{
const div = document.createElement("div");
div.id = "messagefontvariant";
div.innerHTML = "font-variant";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontvariantload);
function messagefontvariantselectload()
{
const br = document.createElement("br");
messagefontvariant.append(br);
const select = document.createElement("select");
select.id = "messagefontvariantselect";
select.addEventListener("input", messagefontvariantselectupdate);
messagefontvariant.append(select);
for(const value of fontvariantarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontvariantselectset();
}
addEventListener("load", messagefontvariantselectload);
function messagefontvariantselectset()
{
text.messagefontvariant = messagefontvariantselect.value;
}
function messagefontvariantselectupdate()
{
messagefontvariantselectset();
svgupdate();
}
function messagefontweightload()
{
const div = document.createElement("div");
div.id = "messagefontweight";
div.innerHTML = "font-weight";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontweightload);
function messagefontweightselectload()
{
const br = document.createElement("br");
messagefontweight.append(br);
const select = document.createElement("select");
select.id = "messagefontweightselect";
select.addEventListener("input", messagefontweightselectupdate);
messagefontweight.append(select);
for(const value of fontweightarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontweightselectset();
}
addEventListener("load", messagefontweightselectload);
function messagefontweightselectset()
{
text.messagefontweight = messagefontweightselect.value;
}
function messagefontweightselectupdate()
{
messagefontweightselectset();
svgupdate();
}
function messagecolorload()
{
const div = document.createElement("div");
div.id = "messagecolor";
div.innerHTML = "color";
tabcontentmessage.append(div);
}
addEventListener("load", messagecolorload);
function messagecolorcolorload()
{
const br = document.createElement("br");
messagecolor.append(br);
const input = document.createElement("input");
input.id = "messagecolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", messagecolorcolorupdate);
messagecolor.append(input);
//messagecolorcolorset();
}
addEventListener("load", messagecolorcolorload);
function messagecolorcolorset()
{
const c = messagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagealphanumber.value;
text.messagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagecolorcolorupdate()
{
messagecolorcolorset();
svgupdate();
}
function messagecolorexactload()
{
const br = document.createElement("br");
messagecolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagecolorexactupdate);
messagecolor.append(button);
}
}
addEventListener("load", messagecolorexactload);
function messagecolorexactupdate(e)
{
messagecolorcolor.value = e.target.value;
messagecolorcolorupdate();
}
function messagealphaload()
{
const div = document.createElement("div");
div.id = "messagealpha";
div.innerHTML = "alpha";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagealphaload);
function messagealphanumberload()
{
const br = document.createElement("br");
messagealpha.append(br);
const input = document.createElement("input");
input.id = "messagealphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", messagealphanumberupdate);
messagealpha.append(input);
//messagealphanumberset();
}
addEventListener("load", messagealphanumberload);
function messagealphanumberset()
{
const c = messagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagealphanumber.value;
messagealpharange.value = a;
text.messagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagealphanumberupdate()
{
messagealphanumberset();
svgupdate();
}
function messagealpharangeload()
{
const input = document.createElement("input");
input.id = "messagealpharange";
input.max = messagealphanumber.max;
input.min = messagealphanumber.min;
input.step = messagealphanumber.step;
input.type = "range";
input.value = messagealphanumber.value;
input.addEventListener("input", messagealpharangeupdate);
messagealpha.append(input);
messagealpharangeset();
}
addEventListener("load", messagealpharangeload);
function messagealpharangeset()
{
const c = messagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagealpharange.value;
messagealphanumber.value = a;
text.messagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagealpharangeupdate()
{
messagealpharangeset();
svgupdate();
}
function messagealphaexactload()
{
const br = document.createElement("br");
messagealpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagealphaexactupdate);
messagealpha.append(button);
}
}
addEventListener("load", messagealphaexactload);
function messagealphaexactupdate(e)
{
messagealphanumber.value = Number(e.target.value);
messagealphanumberupdate();
}
function messagealphaincrementload()
{
const br = document.createElement("br");
messagealpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagealphaincrementupdate);
messagealpha.append(button);
}
}
addEventListener("load", messagealphaincrementload);
function messagealphaincrementupdate(e)
{
let v = Number(messagealphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((messagealphanumber.min <= v) && (v <= messagealphanumber.max))
{
messagealphanumber.value = v;
messagealphanumberupdate();
}
}
/*leftoff
function messagefilterblurload()
{
const div = document.createElement("div");
div.id = "messagefilterblur";
div.innerHTML = "filter-blur";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterblurload);
function messagefilterblurnumberload()
{
const br = document.createElement("br");
messagefilterblur.append(br);
const input = document.createElement("input");
input.id = "messagefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefilterblurnumberupdate);
messagefilterblur.append(input);
//messagefilterblurnumberset();
}
addEventListener("load", messagefilterblurnumberload);
function messagefilterblurnumberset()
{
const v = messagefilterblurnumber.value;
messagefilterblurrange.value = v;
text.messagebackdropfilterblur = v;
}
function messagefilterblurnumberupdate()
{
messagefilterblurnumberset();
svgupdate();
}
function messagefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "messagefilterblurrange";
input.max = messagefilterblurnumber.max;
input.min = messagefilterblurnumber.min;
input.step = messagefilterblurnumber.step;
input.type = "range";
input.value = messagefilterblurnumber.value;
input.addEventListener("input", messagefilterblurrangeupdate);
messagefilterblur.append(input);
messagefilterblurrangeset();
}
addEventListener("load", messagefilterblurrangeload);
function messagefilterblurrangeset()
{
const v = messagefilterblurrange.value;
messagefilterblurnumber.value = v;
text.messagebackdropfilterblur = v;
}
function messagefilterblurrangeupdate()
{
messagefilterblurrangeset();
svgupdate();
}
function messagefilterblurexactload()
{
const br = document.createElement("br");
messagefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterblurexactupdate);
messagefilterblur.append(button);
}
}
addEventListener("load", messagefilterblurexactload);
function messagefilterblurexactupdate(e)
{
messagefilterblurnumber.value = Number(e.target.value);
messagefilterblurnumberupdate();
}
function messagefilterblurincrementload()
{
const br = document.createElement("br");
messagefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterblurincrementupdate);
messagefilterblur.append(button);
}
}
addEventListener("load", messagefilterblurincrementload);
function messagefilterblurincrementupdate(e)
{
const v = Number(messagefilterblurnumber.value) + Number(e.target.value);
if((messagefilterblurnumber.min <= v) && (v <= messagefilterblurnumber.max))
{
messagefilterblurnumber.value = v;
messagefilterblurnumberupdate();
}
}
function messagefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "messagefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterbrightnessload);
function messagefilterbrightnessnumberload()
{
const br = document.createElement("br");
messagefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "messagefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", messagefilterbrightnessnumberupdate);
messagefilterbrightness.append(input);
//messagefilterbrightnessnumberset();
}
addEventListener("load", messagefilterbrightnessnumberload);
function messagefilterbrightnessnumberset()
{
const v = messagefilterbrightnessnumber.value;
messagefilterbrightnessrange.value = v;
text.messagebackdropfilterbrightness = v;
}
function messagefilterbrightnessnumberupdate()
{
messagefilterbrightnessnumberset();
svgupdate();
}
function messagefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "messagefilterbrightnessrange";
input.max = messagefilterbrightnessnumber.max;
input.min = messagefilterbrightnessnumber.min;
input.step = messagefilterbrightnessnumber.step;
input.type = "range";
input.value = messagefilterbrightnessnumber.value;
input.addEventListener("input", messagefilterbrightnessrangeupdate);
messagefilterbrightness.append(input);
messagefilterbrightnessrangeset();
}
addEventListener("load", messagefilterbrightnessrangeload);
function messagefilterbrightnessrangeset()
{
const v = messagefilterbrightnessrange.value;
messagefilterbrightnessnumber.value = v;
text.messagebackdropfilterbrightness = v;
}
function messagefilterbrightnessrangeupdate()
{
messagefilterbrightnessrangeset();
svgupdate();
}
function messagefilterbrightnessexactload()
{
const br = document.createElement("br");
messagefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterbrightnessexactupdate);
messagefilterbrightness.append(button);
}
}
addEventListener("load", messagefilterbrightnessexactload);
function messagefilterbrightnessexactupdate(e)
{
messagefilterbrightnessnumber.value = Number(e.target.value);
messagefilterbrightnessnumberupdate();
}
function messagefilterbrightnessincrementload()
{
const br = document.createElement("br");
messagefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterbrightnessincrementupdate);
messagefilterbrightness.append(button);
}
}
addEventListener("load", messagefilterbrightnessincrementload);
function messagefilterbrightnessincrementupdate(e)
{
const v = Number(messagefilterbrightnessnumber.value) + Number(e.target.value);
if((messagefilterbrightnessnumber.min <= v) && (v <= messagefilterbrightnessnumber.max))
{
messagefilterbrightnessnumber.value = v;
messagefilterbrightnessnumberupdate();
}
}
function messagefiltercontrastload()
{
const div = document.createElement("div");
div.id = "messagefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltercontrastload);
function messagefiltercontrastnumberload()
{
const br = document.createElement("br");
messagefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "messagefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", messagefiltercontrastnumberupdate);
messagefiltercontrast.append(input);
//messagefiltercontrastnumberset();
}
addEventListener("load", messagefiltercontrastnumberload);
function messagefiltercontrastnumberset()
{
const v = messagefiltercontrastnumber.value;
messagefiltercontrastrange.value = v;
text.messagebackdropfiltercontrast = v;
}
function messagefiltercontrastnumberupdate()
{
messagefiltercontrastnumberset();
svgupdate();
}
function messagefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "messagefiltercontrastrange";
input.max = messagefiltercontrastnumber.max;
input.min = messagefiltercontrastnumber.min;
input.step = messagefiltercontrastnumber.step;
input.type = "range";
input.value = messagefiltercontrastnumber.value;
input.addEventListener("input", messagefiltercontrastrangeupdate);
messagefiltercontrast.append(input);
messagefiltercontrastrangeset();
}
addEventListener("load", messagefiltercontrastrangeload);
function messagefiltercontrastrangeset()
{
const v = messagefiltercontrastrange.value;
messagefiltercontrastnumber.value = v;
text.messagebackdropfiltercontrast = v;
}
function messagefiltercontrastrangeupdate()
{
messagefiltercontrastrangeset();
svgupdate();
}
function messagefiltercontrastexactload()
{
const br = document.createElement("br");
messagefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltercontrastexactupdate);
messagefiltercontrast.append(button);
}
}
addEventListener("load", messagefiltercontrastexactload);
function messagefiltercontrastexactupdate(e)
{
messagefiltercontrastnumber.value = Number(e.target.value);
messagefiltercontrastnumberupdate();
}
function messagefiltercontrastincrementload()
{
const br = document.createElement("br");
messagefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltercontrastincrementupdate);
messagefiltercontrast.append(button);
}
}
addEventListener("load", messagefiltercontrastincrementload);
function messagefiltercontrastincrementupdate(e)
{
const v = Number(messagefiltercontrastnumber.value) + Number(e.target.value);
if((messagefiltercontrastnumber.min <= v) && (v <= messagefiltercontrastnumber.max))
{
messagefiltercontrastnumber.value = v;
messagefiltercontrastnumberupdate();
}
}
function messagefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "messagefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltergrayscaleload);
function messagefiltergrayscalenumberload()
{
const br = document.createElement("br");
messagefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "messagefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefiltergrayscalenumberupdate);
messagefiltergrayscale.append(input);
//messagefiltergrayscalenumberset();
}
addEventListener("load", messagefiltergrayscalenumberload);
function messagefiltergrayscalenumberset()
{
const v = messagefiltergrayscalenumber.value;
messagefiltergrayscalerange.value = v;
text.messagebackdropfiltergrayscale = v;
}
function messagefiltergrayscalenumberupdate()
{
messagefiltergrayscalenumberset();
svgupdate();
}
function messagefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "messagefiltergrayscalerange";
input.max = messagefiltergrayscalenumber.max;
input.min = messagefiltergrayscalenumber.min;
input.step = messagefiltergrayscalenumber.step;
input.type = "range";
input.value = messagefiltergrayscalenumber.value;
input.addEventListener("input", messagefiltergrayscalerangeupdate);
messagefiltergrayscale.append(input);
messagefiltergrayscalerangeset();
}
addEventListener("load", messagefiltergrayscalerangeload);
function messagefiltergrayscalerangeset()
{
const v = messagefiltergrayscalerange.value;
messagefiltergrayscalenumber.value = v;
text.messagebackdropfiltergrayscale = v;
}
function messagefiltergrayscalerangeupdate()
{
messagefiltergrayscalerangeset();
svgupdate();
}
function messagefiltergrayscaleexactload()
{
const br = document.createElement("br");
messagefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltergrayscaleexactupdate);
messagefiltergrayscale.append(button);
}
}
addEventListener("load", messagefiltergrayscaleexactload);
function messagefiltergrayscaleexactupdate(e)
{
messagefiltergrayscalenumber.value = Number(e.target.value);
messagefiltergrayscalenumberupdate();
}
function messagefiltergrayscaleincrementload()
{
const br = document.createElement("br");
messagefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltergrayscaleincrementupdate);
messagefiltergrayscale.append(button);
}
}
addEventListener("load", messagefiltergrayscaleincrementload);
function messagefiltergrayscaleincrementupdate(e)
{
const v = Number(messagefiltergrayscalenumber.value) + Number(e.target.value);
if((messagefiltergrayscalenumber.min <= v) && (v <= messagefiltergrayscalenumber.max))
{
messagefiltergrayscalenumber.value = v;
messagefiltergrayscalenumberupdate();
}
}
function messagefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "messagefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterhuerotateload);
function messagefilterhuerotatenumberload()
{
const br = document.createElement("br");
messagefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "messagefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefilterhuerotatenumberupdate);
messagefilterhuerotate.append(input);
//messagefilterhuerotatenumberset();
}
addEventListener("load", messagefilterhuerotatenumberload);
function messagefilterhuerotatenumberset()
{
const v = messagefilterhuerotatenumber.value;
messagefilterhuerotaterange.value = v;
text.messagebackdropfilterhuerotate = v;
}
function messagefilterhuerotatenumberupdate()
{
messagefilterhuerotatenumberset();
svgupdate();
}
function messagefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "messagefilterhuerotaterange";
input.max = messagefilterhuerotatenumber.max;
input.min = messagefilterhuerotatenumber.min;
input.step = messagefilterhuerotatenumber.step;
input.type = "range";
input.value = messagefilterhuerotatenumber.value;
input.addEventListener("input", messagefilterhuerotaterangeupdate);
messagefilterhuerotate.append(input);
messagefilterhuerotaterangeset();
}
addEventListener("load", messagefilterhuerotaterangeload);
function messagefilterhuerotaterangeset()
{
const v = messagefilterhuerotaterange.value;
messagefilterhuerotatenumber.value = v;
text.messagebackdropfilterhuerotate = v;
}
function messagefilterhuerotaterangeupdate()
{
messagefilterhuerotaterangeset();
svgupdate();
}
function messagefilterhuerotateexactload()
{
const br = document.createElement("br");
messagefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterhuerotateexactupdate);
messagefilterhuerotate.append(button);
}
}
addEventListener("load", messagefilterhuerotateexactload);
function messagefilterhuerotateexactupdate(e)
{
messagefilterhuerotatenumber.value = Number(e.target.value);
messagefilterhuerotatenumberupdate();
}
function messagefilterhuerotateincrementload()
{
const br = document.createElement("br");
messagefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterhuerotateincrementupdate);
messagefilterhuerotate.append(button);
}
}
addEventListener("load", messagefilterhuerotateincrementload);
function messagefilterhuerotateincrementupdate(e)
{
const v = Number(messagefilterhuerotatenumber.value) + Number(e.target.value);
if((messagefilterhuerotatenumber.min <= v) && (v <= messagefilterhuerotatenumber.max))
{
messagefilterhuerotatenumber.value = v;
messagefilterhuerotatenumberupdate();
}
}
function messagefilterinvertload()
{
const div = document.createElement("div");
div.id = "messagefilterinvert";
div.innerHTML = "filter-invert";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterinvertload);
function messagefilterinvertnumberload()
{
const br = document.createElement("br");
messagefilterinvert.append(br);
const input = document.createElement("input");
input.id = "messagefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefilterinvertnumberupdate);
messagefilterinvert.append(input);
//messagefilterinvertnumberset();
}
addEventListener("load", messagefilterinvertnumberload);
function messagefilterinvertnumberset()
{
const v = messagefilterinvertnumber.value;
messagefilterinvertrange.value = v;
text.messagebackdropfilterinvert = v;
}
function messagefilterinvertnumberupdate()
{
messagefilterinvertnumberset();
svgupdate();
}
function messagefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "messagefilterinvertrange";
input.max = messagefilterinvertnumber.max;
input.min = messagefilterinvertnumber.min;
input.step = messagefilterinvertnumber.step;
input.type = "range";
input.value = messagefilterinvertnumber.value;
input.addEventListener("input", messagefilterinvertrangeupdate);
messagefilterinvert.append(input);
messagefilterinvertrangeset();
}
addEventListener("load", messagefilterinvertrangeload);
function messagefilterinvertrangeset()
{
const v = messagefilterinvertrange.value;
messagefilterinvertnumber.value = v;
text.messagebackdropfilterinvert = v;
}
function messagefilterinvertrangeupdate()
{
messagefilterinvertrangeset();
svgupdate();
}
function messagefilterinvertexactload()
{
const br = document.createElement("br");
messagefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterinvertexactupdate);
messagefilterinvert.append(button);
}
}
addEventListener("load", messagefilterinvertexactload);
function messagefilterinvertexactupdate(e)
{
messagefilterinvertnumber.value = Number(e.target.value);
messagefilterinvertnumberupdate();
}
function messagefilterinvertincrementload()
{
const br = document.createElement("br");
messagefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterinvertincrementupdate);
messagefilterinvert.append(button);
}
}
addEventListener("load", messagefilterinvertincrementload);
function messagefilterinvertincrementupdate(e)
{
const v = Number(messagefilterinvertnumber.value) + Number(e.target.value);
if((messagefilterinvertnumber.min <= v) && (v <= messagefilterinvertnumber.max))
{
messagefilterinvertnumber.value = v;
messagefilterinvertnumberupdate();
}
}
function messagefiltersaturateload()
{
const div = document.createElement("div");
div.id = "messagefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltersaturateload);
function messagefiltersaturatenumberload()
{
const br = document.createElement("br");
messagefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "messagefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", messagefiltersaturatenumberupdate);
messagefiltersaturate.append(input);
//messagefiltersaturatenumberset();
}
addEventListener("load", messagefiltersaturatenumberload);
function messagefiltersaturatenumberset()
{
const v = messagefiltersaturatenumber.value;
messagefiltersaturaterange.value = v;
text.messagebackdropfiltersaturate = v;
}
function messagefiltersaturatenumberupdate()
{
messagefiltersaturatenumberset();
svgupdate();
}
function messagefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "messagefiltersaturaterange";
input.max = messagefiltersaturatenumber.max;
input.min = messagefiltersaturatenumber.min;
input.step = messagefiltersaturatenumber.step;
input.type = "range";
input.value = messagefiltersaturatenumber.value;
input.addEventListener("input", messagefiltersaturaterangeupdate);
messagefiltersaturate.append(input);
messagefiltersaturaterangeset();
}
addEventListener("load", messagefiltersaturaterangeload);
function messagefiltersaturaterangeset()
{
const v = messagefiltersaturaterange.value;
messagefiltersaturatenumber.value = v;
text.messagebackdropfiltersaturate = v;
}
function messagefiltersaturaterangeupdate()
{
messagefiltersaturaterangeset();
svgupdate();
}
function messagefiltersaturateexactload()
{
const br = document.createElement("br");
messagefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersaturateexactupdate);
messagefiltersaturate.append(button);
}
}
addEventListener("load", messagefiltersaturateexactload);
function messagefiltersaturateexactupdate(e)
{
messagefiltersaturatenumber.value = Number(e.target.value);
messagefiltersaturatenumberupdate();
}
function messagefiltersaturateincrementload()
{
const br = document.createElement("br");
messagefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersaturateincrementupdate);
messagefiltersaturate.append(button);
}
}
addEventListener("load", messagefiltersaturateincrementload);
function messagefiltersaturateincrementupdate(e)
{
const v = Number(messagefiltersaturatenumber.value) + Number(e.target.value);
if((messagefiltersaturatenumber.min <= v) && (v <= messagefiltersaturatenumber.max))
{
messagefiltersaturatenumber.value = v;
messagefiltersaturatenumberupdate();
}
}
function messagefiltersepiaload()
{
const div = document.createElement("div");
div.id = "messagefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltersepiaload);
function messagefiltersepianumberload()
{
const br = document.createElement("br");
messagefiltersepia.append(br);
const input = document.createElement("input");
input.id = "messagefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefiltersepianumberupdate);
messagefiltersepia.append(input);
//messagefiltersepianumberset();
}
addEventListener("load", messagefiltersepianumberload);
function messagefiltersepianumberset()
{
const v = messagefiltersepianumber.value;
messagefiltersepiarange.value = v;
text.messagebackdropfiltersepia = v;
}
function messagefiltersepianumberupdate()
{
messagefiltersepianumberset();
svgupdate();
}
function messagefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "messagefiltersepiarange";
input.max = messagefiltersepianumber.max;
input.min = messagefiltersepianumber.min;
input.step = messagefiltersepianumber.step;
input.type = "range";
input.value = messagefiltersepianumber.value;
input.addEventListener("input", messagefiltersepiarangeupdate);
messagefiltersepia.append(input);
messagefiltersepiarangeset();
}
addEventListener("load", messagefiltersepiarangeload);
function messagefiltersepiarangeset()
{
const v = messagefiltersepiarange.value;
messagefiltersepianumber.value = v;
text.messagebackdropfiltersepia = v;
}
function messagefiltersepiarangeupdate()
{
messagefiltersepiarangeset();
svgupdate();
}
function messagefiltersepiaexactload()
{
const br = document.createElement("br");
messagefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersepiaexactupdate);
messagefiltersepia.append(button);
}
}
addEventListener("load", messagefiltersepiaexactload);
function messagefiltersepiaexactupdate(e)
{
messagefiltersepianumber.value = Number(e.target.value);
messagefiltersepianumberupdate();
}
function messagefiltersepiaincrementload()
{
const br = document.createElement("br");
messagefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersepiaincrementupdate);
messagefiltersepia.append(button);
}
}
addEventListener("load", messagefiltersepiaincrementload);
function messagefiltersepiaincrementupdate(e)
{
const v = Number(messagefiltersepianumber.value) + Number(e.target.value);
if((messagefiltersepianumber.min <= v) && (v <= messagefiltersepianumber.max))
{
messagefiltersepianumber.value = v;
messagefiltersepianumberupdate();
}
}
//*/
/*
function messagemargintopload()
{
const div = document.createElement("div");
div.id = "messagemargintop";
div.innerHTML = "margin-top";
tabcontentmessage.append(div);
}
addEventListener("load", messagemargintopload);
function messagemargintopnumberload()
{
const br = document.createElement("br");
messagemargintop.append(br);
const input = document.createElement("input");
input.id = "messagemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemargintopnumberupdate);
messagemargintop.append(input);
//messagemargintopnumberset();
}
addEventListener("load", messagemargintopnumberload);
function messagemargintopnumberset()
{
const v = Number(messagemargintopnumber.value);
messagemargintoprange.value = v;
text.messagemargintop = v;
}
function messagemargintopnumberupdate()
{
messagemargintopnumberset();
svgupdate();
}
function messagemargintoprangeload()
{
const input = document.createElement("input");
input.id = "messagemargintoprange";
input.max = messagemargintopnumber.max;
input.min = messagemargintopnumber.min;
input.type = "range";
input.value = messagemargintopnumber.value;
input.addEventListener("input", messagemargintoprangeupdate);
messagemargintop.append(input);
messagemargintoprangeset();
}
addEventListener("load", messagemargintoprangeload);
function messagemargintoprangeset()
{
const v = Number(messagemargintoprange.value);
messagemargintopnumber.value = v;
text.messagemargintop = v;
}
function messagemargintoprangeupdate()
{
messagemargintoprangeset();
svgupdate();
}
function messagemarginbottomload()
{
const div = document.createElement("div");
div.id = "messagemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentmessage.append(div);
}
addEventListener("load", messagemarginbottomload);
function messagemarginbottomnumberload()
{
const br = document.createElement("br");
messagemarginbottom.append(br);
const input = document.createElement("input");
input.id = "messagemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemarginbottomnumberupdate);
messagemarginbottom.append(input);
//messagemarginbottomnumberset();
}
addEventListener("load", messagemarginbottomnumberload);
function messagemarginbottomnumberset()
{
const v = Number(messagemarginbottomnumber.value);
messagemarginbottomrange.value = v;
text.messagemarginbottom = v;
}
function messagemarginbottomnumberupdate()
{
messagemarginbottomnumberset();
svgupdate();
}
function messagemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "messagemarginbottomrange";
input.max = messagemarginbottomnumber.max;
input.min = messagemarginbottomnumber.min;
input.type = "range";
input.value = messagemarginbottomnumber.value;
input.addEventListener("input", messagemarginbottomrangeupdate);
messagemarginbottom.append(input);
messagemarginbottomrangeset();
}
addEventListener("load", messagemarginbottomrangeload);
function messagemarginbottomrangeset()
{
const v = Number(messagemarginbottomrange.value);
messagemarginbottomnumber.value = v;
text.messagemarginbottom = v;
}
function messagemarginbottomrangeupdate()
{
messagemarginbottomrangeset();
svgupdate();
}
function messagemarginleftload()
{
const div = document.createElement("div");
div.id = "messagemarginleft";
div.innerHTML = "margin-left";
tabcontentmessage.append(div);
}
addEventListener("load", messagemarginleftload);
function messagemarginleftnumberload()
{
const br = document.createElement("br");
messagemarginleft.append(br);
const input = document.createElement("input");
input.id = "messagemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemarginleftnumberupdate);
messagemarginleft.append(input);
//messagemarginleftnumberset();
}
addEventListener("load", messagemarginleftnumberload);
function messagemarginleftnumberset()
{
const v = Number(messagemarginleftnumber.value);
messagemarginleftrange.value = v;
text.messagemarginleft = v;
}
function messagemarginleftnumberupdate()
{
messagemarginleftnumberset();
svgupdate();
}
function messagemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "messagemarginleftrange";
input.max = messagemarginleftnumber.max;
input.min = messagemarginleftnumber.min;
input.type = "range";
input.value = messagemarginleftnumber.value;
input.addEventListener("input", messagemarginleftrangeupdate);
messagemarginleft.append(input);
messagemarginleftrangeset();
}
addEventListener("load", messagemarginleftrangeload);
function messagemarginleftrangeset()
{
const v = Number(messagemarginleftrange.value);
messagemarginleftnumber.value = v;
text.messagemarginleft = v;
}
function messagemarginleftrangeupdate()
{
messagemarginleftrangeset();
svgupdate();
}
function messagemarginrightload()
{
const div = document.createElement("div");
div.id = "messagemarginright";
div.innerHTML = "margin-right";
tabcontentmessage.append(div);
}
addEventListener("load", messagemarginrightload);
function messagemarginrightnumberload()
{
const br = document.createElement("br");
messagemarginright.append(br);
const input = document.createElement("input");
input.id = "messagemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemarginrightnumberupdate);
messagemarginright.append(input);
//messagemarginrightnumberset();
}
addEventListener("load", messagemarginrightnumberload);
function messagemarginrightnumberset()
{
const v = Number(messagemarginrightnumber.value);
messagemarginrightrange.value = v;
text.messagemarginright = v;
}
function messagemarginrightnumberupdate()
{
messagemarginrightnumberset();
svgupdate();
}
function messagemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "messagemarginrightrange";
input.max = messagemarginrightnumber.max;
input.min = messagemarginrightnumber.min;
input.type = "range";
input.value = messagemarginrightnumber.value;
input.addEventListener("input", messagemarginrightrangeupdate);
messagemarginright.append(input);
messagemarginrightrangeset();
}
addEventListener("load", messagemarginrightrangeload);
function messagemarginrightrangeset()
{
const v = Number(messagemarginrightrange.value);
messagemarginrightnumber.value = v;
text.messagemarginright = v;
}
function messagemarginrightrangeupdate()
{
messagemarginrightrangeset();
svgupdate();
}
function messagepaddingtopload()
{
const div = document.createElement("div");
div.id = "messagepaddingtop";
div.innerHTML = "padding-top";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingtopload);
function messagepaddingtopnumberload()
{
const br = document.createElement("br");
messagepaddingtop.append(br);
const input = document.createElement("input");
input.id = "messagepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingtopnumberupdate);
messagepaddingtop.append(input);
//messagepaddingtopnumberset();
}
addEventListener("load", messagepaddingtopnumberload);
function messagepaddingtopnumberset()
{
const v = Number(messagepaddingtopnumber.value);
messagepaddingtoprange.value = v;
text.messagepaddingtop = v;
}
function messagepaddingtopnumberupdate()
{
messagepaddingtopnumberset();
svgupdate();
}
function messagepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingtoprange";
input.max = messagepaddingtopnumber.max;
input.min = messagepaddingtopnumber.min;
input.type = "range";
input.value = messagepaddingtopnumber.value;
input.addEventListener("input", messagepaddingtoprangeupdate);
messagepaddingtop.append(input);
messagepaddingtoprangeset();
}
addEventListener("load", messagepaddingtoprangeload);
function messagepaddingtoprangeset()
{
const v = Number(messagepaddingtoprange.value);
messagepaddingtopnumber.value = v;
text.messagepaddingtop = v;
}
function messagepaddingtoprangeupdate()
{
messagepaddingtoprangeset();
svgupdate();
}
function messagepaddingbottomload()
{
const div = document.createElement("div");
div.id = "messagepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingbottomload);
function messagepaddingbottomnumberload()
{
const br = document.createElement("br");
messagepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "messagepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingbottomnumberupdate);
messagepaddingbottom.append(input);
//messagepaddingbottomnumberset();
}
addEventListener("load", messagepaddingbottomnumberload);
function messagepaddingbottomnumberset()
{
const v = Number(messagepaddingbottomnumber.value);
messagepaddingbottomrange.value = v;
text.messagepaddingbottom = v;
}
function messagepaddingbottomnumberupdate()
{
messagepaddingbottomnumberset();
svgupdate();
}
function messagepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingbottomrange";
input.max = messagepaddingbottomnumber.max;
input.min = messagepaddingbottomnumber.min;
input.type = "range";
input.value = messagepaddingbottomnumber.value;
input.addEventListener("input", messagepaddingbottomrangeupdate);
messagepaddingbottom.append(input);
messagepaddingbottomrangeset();
}
addEventListener("load", messagepaddingbottomrangeload);
function messagepaddingbottomrangeset()
{
const v = Number(messagepaddingbottomrange.value);
messagepaddingbottomnumber.value = v;
text.messagepaddingbottom = v;
}
function messagepaddingbottomrangeupdate()
{
messagepaddingbottomrangeset();
svgupdate();
}
function messagepaddingleftload()
{
const div = document.createElement("div");
div.id = "messagepaddingleft";
div.innerHTML = "padding-left";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingleftload);
function messagepaddingleftnumberload()
{
const br = document.createElement("br");
messagepaddingleft.append(br);
const input = document.createElement("input");
input.id = "messagepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingleftnumberupdate);
messagepaddingleft.append(input);
//messagepaddingleftnumberset();
}
addEventListener("load", messagepaddingleftnumberload);
function messagepaddingleftnumberset()
{
const v = Number(messagepaddingleftnumber.value);
messagepaddingleftrange.value = v;
text.messagepaddingleft = v;
}
function messagepaddingleftnumberupdate()
{
messagepaddingleftnumberset();
svgupdate();
}
function messagepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingleftrange";
input.max = messagepaddingleftnumber.max;
input.min = messagepaddingleftnumber.min;
input.type = "range";
input.value = messagepaddingleftnumber.value;
input.addEventListener("input", messagepaddingleftrangeupdate);
messagepaddingleft.append(input);
messagepaddingleftrangeset();
}
addEventListener("load", messagepaddingleftrangeload);
function messagepaddingleftrangeset()
{
const v = Number(messagepaddingleftrange.value);
messagepaddingleftnumber.value = v;
text.messagepaddingleft = v;
}
function messagepaddingleftrangeupdate()
{
messagepaddingleftrangeset();
svgupdate();
}
function messagepaddingrightload()
{
const div = document.createElement("div");
div.id = "messagepaddingright";
div.innerHTML = "padding-right";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingrightload);
function messagepaddingrightnumberload()
{
const br = document.createElement("br");
messagepaddingright.append(br);
const input = document.createElement("input");
input.id = "messagepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingrightnumberupdate);
messagepaddingright.append(input);
//messagepaddingrightnumberset();
}
addEventListener("load", messagepaddingrightnumberload);
function messagepaddingrightnumberset()
{
const v = Number(messagepaddingrightnumber.value);
messagepaddingrightrange.value = v;
text.messagepaddingright = v;
}
function messagepaddingrightnumberupdate()
{
messagepaddingrightnumberset();
svgupdate();
}
function messagepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingrightrange";
input.max = messagepaddingrightnumber.max;
input.min = messagepaddingrightnumber.min;
input.type = "range";
input.value = messagepaddingrightnumber.value;
input.addEventListener("input", messagepaddingrightrangeupdate);
messagepaddingright.append(input);
messagepaddingrightrangeset();
}
addEventListener("load", messagepaddingrightrangeload);
function messagepaddingrightrangeset()
{
const v = Number(messagepaddingrightrange.value);
messagepaddingrightnumber.value = v;
text.messagepaddingright = v;
}
function messagepaddingrightrangeupdate()
{
messagepaddingrightrangeset();
svgupdate();
}
//*/
function referenceversionload()
{
const div = document.createElement("div");
div.id = "referenceversion";
div.innerHTML = "version";
tabcontentreference.append(div);
}
addEventListener("load", referenceversionload);
function referenceversionselectload()
{
const br = document.createElement("br");
referenceversion.append(br);
const select = document.createElement("select");
select.id = "referenceversionselect";
select.addEventListener("input", referenceversionselectupdate);
referenceversion.append(select);
referenceversionselectload2();
}
addEventListener("load", referenceversionselectload);
function referenceversionselectload2()
{
for(const value of Bibleversionarray)
{
const optgroup = document.createElement("optgroup");
optgroup.label = value[0];
referenceversionselect.append(optgroup);
for(const v of value[1])
{
const option = document.createElement("option");
option.innerHTML = v[1];
option.value = v[0];
optgroup.append(option);
}
}
referenceversionselect.value = Bibleversionarray[4][1][1][0];
referenceversionselectset();
}
function referenceversionselectset()
{
text.version = referenceversionselect.options.selectedIndex + 1;
text.versionname = referenceversionselect.value;
text.referencetextversion = "";
if(text.versionbool)
{
text.referencetextversion = ` ${text.versionname}`;
}
}
function referenceversionselectupdate()
{
referenceversionselectset();
/*
referencebookselectload2();
referencechapterselectload2();
referenceverseselectload2();
referenceverseendselectload2();
svgupdate();
//*/
Bibleload();
}
function referenceversioncheckboxload()
{
const input = document.createElement("input");
input.type = "checkbox";
input.addEventListener("click", referenceversioncheckboxupdate);
referenceversion.append(input);
}
addEventListener("load", referenceversioncheckboxload);
function referenceversioncheckboxupdate()
{
text.versionbool = !text.versionbool;
//referenceversionselectupdate();
referenceversionselectset();
svgupdate();
}
function Bibleload()
{
//console.log("Bibleload");
fetch(`/assets/txt/new/${text.versionname}.txt`)
.then(r => r.text())
.then(t =>
{
const split = t.split("@");
//console.log(split);
const b = split[1].trim();
//console.log(b);
const c = b.split("\n");
//console.log(c);
for(const [key, value] of c.entries())
{
const split = value.split("#");
const b = split[1];
Biblebookarray[key] = b;
//console.log(Biblebookarray[key]);
}
const v = split[2].trim();
//console.log(v);
const w = v.split("\n");
//console.log(w);
for(const value of w)
{
const split = value.split("#");
const b = Number(split[0]);
const c = Number(split[1]);
const v = Number(split[2]);
const t = split[3];
if(!Array.isArray(Bibleversearray[b]))
{
Bibleversearray[b] = [];
}
if(!Array.isArray(Bibleversearray[b][c]))
{
Bibleversearray[b][c] = [];
}
Bibleversearray[b][c][v] = t;
//console.log(b, c, v, t);
}
//imageload2();
//referenceversionselectload2();
//*
referencebookselectload2();
referencechapterselectload2()
referenceverseselectload2();
referenceverseendselectload2();
//*/
//canvasupdate();
svgupdate();
});
}
addEventListener("load", Bibleload);
function referencebookload()
{
const div = document.createElement("div");
div.id = "referencebook";
div.innerHTML = "book";
tabcontentreference.append(div);
}
addEventListener("load", referencebookload);
function referencebookselectload()
{
const br = document.createElement("br");
referencebook.append(br);
const select = document.createElement("select");
select.id = "referencebookselect";
select.addEventListener("input", referencebookselectupdate);
referencebook.append(select);
text.referencetextbook = "Genesis";
//referencebookselectload2();
}
addEventListener("load", referencebookselectload);
function referencebookselectload2()
{
for(let i = referencebookselect.options.length - 1; i >= 0; --i)
{
referencebookselect.remove(i);
}
for(const value of Biblebookarray)
{
const option = document.createElement("option");
option.innerHTML = value;
referencebookselect.add(option);
}
//referencebookselect.value = Biblebookarray[42];
referencebookselectset();
}
function referencebookselectset()
{
text.book = referencebookselect.options.selectedIndex + 1;
text.bookname = referencebookselect.value;
text.referencetextbook = text.bookname;
}
function referencebookselectupdate()
{
referencebookselectset();
referencechapterselectload2();
referenceverseselectload2();
referenceverseendselectload2();
svgupdate();
}
function referencechapterload()
{
const div = document.createElement("div");
div.id = "referencechapter";
div.innerHTML = "chapter";
tabcontentreference.append(div);
}
addEventListener("load", referencechapterload);
function referencechapterselectload()
{
const br = document.createElement("br");
referencechapter.append(br);
const select = document.createElement("select");
select.id = "referencechapterselect";
select.addEventListener("input", referencechapterselectupdate);
referencechapter.append(select);
text.referencetextchapter = " 1";
//referencechapterselectload2();
}
addEventListener("load", referencechapterselectload);
function referencechapterselectload2()
{
for(let i = referencechapterselect.options.length - 1; i >= 0; --i)
{
referencechapterselect.remove(i);
}
for(let i = 1; i < Bibleversearray[text.book].length; ++i)
{
const option = document.createElement("option");
option.innerHTML = i;
referencechapterselect.add(option);
}
referencechapterselect.value = 1;
referencechapterselectset();
}
function referencechapterselectset()
{
text.chapter = referencechapterselect.value;
text.referencetextchapter = ` ${text.chapter}`;
}
function referencechapterselectupdate()
{
referencechapterselectset();
referenceverseselectload2();
referenceverseendselectload2();
svgupdate();
}
function referenceverseload()
{
const div = document.createElement("div");
div.id = "referenceverse";
div.innerHTML = "verse-start";
tabcontentreference.append(div);
}
addEventListener("load", referenceverseload);
function referenceverseselectload()
{
const br = document.createElement("br");
referenceverse.append(br);
const select = document.createElement("select");
select.id = "referenceverseselect";
select.addEventListener("input", referenceverseselectupdate);
referenceverse.append(select);
text.referencetextverse = ":1";
text.passagetextverse = "In the beginning God created the heaven and the earth.";
//referenceverseselectload2();
}
addEventListener("load", referenceverseselectload);
function referenceverseselectload2()
{
for(let i = referenceverseselect.options.length - 1; i >= 0; --i)
{
referenceverseselect.remove(i);
}
for(let i = 1; i < Bibleversearray[text.book][text.chapter].length; ++i)
{
const option = document.createElement("option");
option.innerHTML = i;
referenceverseselect.add(option);
}
referenceverseselect.value = 1;
referenceverseselectset();
}
function referenceverseselectset()
{
text.verse = referenceverseselect.value;
text.referencetextverse = `:${text.verse}`;
text.passagetextverse = Bibleversearray[text.book][text.chapter][text.verse];
}
function referenceverseselectupdate()
{
referenceverseselectset();
referenceverseendselectload2();
svgupdate();
}
function referenceverseendload()
{
const div = document.createElement("div");
div.id = "referenceverseend";
div.innerHTML = "verse-end";
tabcontentreference.append(div);
}
addEventListener("load", referenceverseendload);
function referenceverseendselectload()
{
const br = document.createElement("br");
referenceverseend.append(br);
const select = document.createElement("select");
select.id = "referenceverseendselect";
select.addEventListener("input", referenceverseendselectupdate);
referenceverseend.append(select);
text.referencetextverseend = "";
text.passagetextverseend = "";
//referenceverseendselectload2();
}
addEventListener("load", referenceverseendselectload);
function referenceverseendselectload2()
{
for(let i = referenceverseendselect.options.length - 1; i >= 0; --i)
{
referenceverseendselect.remove(i);
}
for(let i = referenceverseselect.value; i < Bibleversearray[text.book][text.chapter].length; ++i)
{
const option = document.createElement("option");
option.innerHTML = i;
referenceverseendselect.add(option);
}
referenceverseendselect.value = referenceverseselect.value;
referenceverseendselectset();
}
function referenceverseendselectset()
{
text.verseend = referenceverseendselect.value;
//text.referencetext = `${text.bookname} ${text.chapter}:${text.verse}`;
//text.passagetext = `${Bibleversearray[text.book][text.chapter][text.verse]}`;
text.referencetextverseend = "";
text.passagetextverseend = "";
if(text.verse != text.verseend)
{
//text.referencetext += `-${text.verseend}`;
text.referencetextverseend = `-${text.verseend}`;
for(let i = Number(text.verse) + 1; i <= text.verseend; ++i)
{
//text.passagetext += ` ${Bibleversearray[text.book][text.chapter][i]}`;
text.passagetextverseend += ` ${Bibleversearray[text.book][text.chapter][i]}`;
}
}
//if(text.versionbool)
//{
// text.referencetext += ` ${text.versionname}`;
//}
//console.log(text.referencetext);
//console.log(text.passagetext);
}
function referenceverseendselectupdate()
{
referenceverseendselectset();
svgupdate();
}
function referencewidthload()
{
const div = document.createElement("div");
div.id = "referencewidth";
div.innerHTML = "width";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencewidthload);
function referencewidthnumberload()
{
const br = document.createElement("br");
referencewidth.append(br);
const input = document.createElement("input");
input.id = "referencewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width - 100;
input.addEventListener("input", referencewidthnumberupdate);
referencewidth.append(input);
//referencewidthnumberset();
}
addEventListener("load", referencewidthnumberload);
function referencewidthnumberset()
{
const v = Number(referencewidthnumber.value);
referencewidthrange.value = v;
text.referencewidth = v;
}
function referencewidthnumberupdate()
{
referencewidthnumberset();
svgupdate();
}
function referencewidthrangeload()
{
const input = document.createElement("input");
input.id = "referencewidthrange";
input.max = referencewidthnumber.max;
input.min = referencewidthnumber.min;
input.type = "range";
input.value = referencewidthnumber.value;
input.addEventListener("input", referencewidthrangeupdate);
referencewidth.append(input);
referencewidthrangeset();
}
addEventListener("load", referencewidthrangeload);
function referencewidthrangeset()
{
const v = Number(referencewidthrange.value);
referencewidthnumber.value = v;
text.referencewidth = v;
}
function referencewidthrangeupdate()
{
referencewidthrangeset();
svgupdate();
}
function referencewidthexactload()
{
const br = document.createElement("br");
referencewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencewidthexactupdate);
referencewidth.append(button);
}
}
addEventListener("load", referencewidthexactload);
function referencewidthexactupdate(e)
{
referencewidthnumber.value = canvas.width * Number(e.target.value);
referencewidthnumberupdate();
}
function referencewidthincrementload()
{
const br = document.createElement("br");
referencewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencewidthincrementupdate);
referencewidth.append(button);
}
}
addEventListener("load", referencewidthincrementload);
function referencewidthincrementupdate(e)
{
const v = Number(referencewidthnumber.value) + Number(e.target.value);
if((referencewidthnumber.min <= v) && (v <= referencewidthnumber.max))
{
referencewidthnumber.value = v;
referencewidthnumberupdate();
}
}
function referenceheightload()
{
const div = document.createElement("div");
div.id = "referenceheight";
div.innerHTML = "height";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceheightload);
function referenceheightnumberload()
{
const br = document.createElement("br");
referenceheight.append(br);
const input = document.createElement("input");
input.id = "referenceheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = 280;
input.addEventListener("input", referenceheightnumberupdate);
referenceheight.append(input);
//referenceheightnumberset();
}
addEventListener("load", referenceheightnumberload);
function referenceheightnumberset()
{
const v = Number(referenceheightnumber.value);
referenceheightrange.value = v;
text.referenceheight = v;
}
function referenceheightnumberupdate()
{
referenceheightnumberset();
svgupdate();
}
function referenceheightrangeload()
{
const input = document.createElement("input");
input.id = "referenceheightrange";
input.max = referenceheightnumber.max;
input.min = referenceheightnumber.min;
input.type = "range";
input.value = referenceheightnumber.value;
input.addEventListener("input", referenceheightrangeupdate);
referenceheight.append(input);
referenceheightrangeset();
}
addEventListener("load", referenceheightrangeload);
function referenceheightrangeset()
{
const v = Number(referenceheightrange.value);
referenceheightnumber.value = v;
text.referenceheight = v;
}
function referenceheightrangeupdate()
{
referenceheightrangeset();
svgupdate();
}
function referenceheightexactload()
{
const br = document.createElement("br");
referenceheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceheightexactupdate);
referenceheight.append(button);
}
}
addEventListener("load", referenceheightexactload);
function referenceheightexactupdate(e)
{
referenceheightnumber.value = canvas.height * Number(e.target.value);
referenceheightnumberupdate();
}
function referenceheightincrementload()
{
const br = document.createElement("br");
referenceheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceheightincrementupdate);
referenceheight.append(button);
}
}
addEventListener("load", referenceheightincrementload);
function referenceheightincrementupdate(e)
{
const v = Number(referenceheightnumber.value) + Number(e.target.value);
if((referenceheightnumber.min <= v) && (v <= referenceheightnumber.max))
{
referenceheightnumber.value = v;
referenceheightnumberupdate();
}
}
function referencexload()
{
const div = document.createElement("div");
div.id = "referencex";
div.innerHTML = "x";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencexload);
function referencexnumberload()
{
const br = document.createElement("br");
referencex.append(br);
const input = document.createElement("input");
input.id = "referencexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 50;
input.addEventListener("input", referencexnumberupdate);
referencex.append(input);
//referencexnumberset();
}
addEventListener("load", referencexnumberload);
function referencexnumberset()
{
const v = Number(referencexnumber.value);
referencexrange.value = v;
text.referencex = v;
}
function referencexnumberupdate()
{
referencexnumberset();
svgupdate();
}
function referencexrangeload()
{
const input = document.createElement("input");
input.id = "referencexrange";
input.max = referencexnumber.max;
input.min = referencexnumber.min;
input.type = "range";
input.value = referencexnumber.value;
input.addEventListener("input", referencexrangeupdate);
referencex.append(input);
referencexrangeset();
}
addEventListener("load", referencexrangeload);
function referencexrangeset()
{
const v = Number(referencexrange.value);
referencexnumber.value = v;
text.referencex = v;
}
function referencexrangeupdate()
{
referencexrangeset();
svgupdate();
}
function referencexexactload()
{
const br = document.createElement("br");
referencex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencexexactupdate);
referencex.append(button);
}
}
addEventListener("load", referencexexactload);
function referencexexactupdate(e)
{
//referencexnumber.value = (canvas.width - text.referencewidth - text.referencepaddingleft - text.referencepaddingright) * Number(e.target.value);
referencexnumber.value = (canvas.width - text.referencewidth) * Number(e.target.value);
referencexnumberupdate();
}
function referencexincrementload()
{
const br = document.createElement("br");
referencex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencexincrementupdate);
referencex.append(button);
}
}
addEventListener("load", referencexincrementload);
function referencexincrementupdate(e)
{
const v = Number(referencexnumber.value) + Number(e.target.value);
if((referencexnumber.min <= v) && (v <= referencexnumber.max))
{
referencexnumber.value = v;
referencexnumberupdate();
}
}
function referenceyload()
{
const div = document.createElement("div");
div.id = "referencey";
div.innerHTML = "y";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceyload);
function referenceynumberload()
{
const br = document.createElement("br");
referencey.append(br);
const input = document.createElement("input");
input.id = "referenceynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 400;
input.addEventListener("input", referenceynumberupdate);
referencey.append(input);
//referenceynumberset();
}
addEventListener("load", referenceynumberload);
function referenceynumberset()
{
const v = Number(referenceynumber.value);
referenceyrange.value = v;
text.referencey = v;
}
function referenceynumberupdate()
{
referenceynumberset();
svgupdate();
}
function referenceyrangeload()
{
const input = document.createElement("input");
input.id = "referenceyrange";
input.max = referenceynumber.max;
input.min = referenceynumber.min;
input.type = "range";
input.value = referenceynumber.value;
input.addEventListener("input", referenceyrangeupdate);
referencey.append(input);
referenceyrangeset();
}
addEventListener("load", referenceyrangeload);
function referenceyrangeset()
{
const v = Number(referenceyrange.value);
referenceynumber.value = v;
text.referencey = v;
}
function referenceyrangeupdate()
{
referenceyrangeset();
svgupdate();
}
function referenceyexactload()
{
const br = document.createElement("br");
referencey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceyexactupdate);
referencey.append(button);
}
}
addEventListener("load", referenceyexactload);
function referenceyexactupdate(e)
{
//referenceynumber.value = (canvas.height - text.referenceheight - text.referencepaddingtop - text.referencepaddingbottom) * Number(e.target.value);
referenceynumber.value = (canvas.height - text.referenceheight) * Number(e.target.value);
referenceynumberupdate();
}
function referenceyincrementload()
{
const br = document.createElement("br");
referencey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceyincrementupdate);
referencey.append(button);
}
}
addEventListener("load", referenceyincrementload);
function referenceyincrementupdate(e)
{
const v = Number(referenceynumber.value) + Number(e.target.value);
if((referenceynumber.min <= v) && (v <= referenceynumber.max))
{
referenceynumber.value = v;
referenceynumberupdate();
}
}
function referencebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "referencebackgroundcolor";
div.innerHTML = "background-color";
tabcontentreference.append(div);
}
addEventListener("load", referencebackgroundcolorload);
function referencebackgroundcolorcolorload()
{
const br = document.createElement("br");
referencebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "referencebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", referencebackgroundcolorcolorupdate);
referencebackgroundcolor.append(input);
//referencebackgroundcolorcolorset();
}
addEventListener("load", referencebackgroundcolorcolorload);
function referencebackgroundcolorcolorset()
{
const c = referencebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencebackgroundalphanumber.value;
text.referencebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebackgroundcolorcolorupdate()
{
referencebackgroundcolorcolorset();
svgupdate();
}
function referencebackgroundcolorexactload()
{
const br = document.createElement("br");
referencebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebackgroundcolorexactupdate);
referencebackgroundcolor.append(button);
}
}
addEventListener("load", referencebackgroundcolorexactload);
function referencebackgroundcolorexactupdate(e)
{
referencebackgroundcolorcolor.value = e.target.value;
referencebackgroundcolorcolorupdate();
}
function referencebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "referencebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencebackgroundalphaload);
function referencebackgroundalphanumberload()
{
const br = document.createElement("br");
referencebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "referencebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0.5;
input.addEventListener("input", referencebackgroundalphanumberupdate);
referencebackgroundalpha.append(input);
//referencebackgroundalphanumberset();
}
addEventListener("load", referencebackgroundalphanumberload);
function referencebackgroundalphanumberset()
{
const c = referencebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencebackgroundalphanumber.value;
referencebackgroundalpharange.value = a;
text.referencebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebackgroundalphanumberupdate()
{
referencebackgroundalphanumberset();
svgupdate();
}
function referencebackgroundalpharangeload()
{
const input = document.createElement("input");
input.id = "referencebackgroundalpharange";
input.max = referencebackgroundalphanumber.max;
input.min = referencebackgroundalphanumber.min;
input.step = referencebackgroundalphanumber.step;
input.type = "range";
input.value = referencebackgroundalphanumber.value;
input.addEventListener("input", referencebackgroundalpharangeupdate);
referencebackgroundalpha.append(input);
referencebackgroundalpharangeset();
}
addEventListener("load", referencebackgroundalpharangeload);
function referencebackgroundalpharangeset()
{
const c = referencebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencebackgroundalpharange.value;
referencebackgroundalphanumber.value = a;
text.referencebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebackgroundalpharangeupdate()
{
referencebackgroundalpharangeset();
svgupdate();
}
function referencebackgroundalphaexactload()
{
const br = document.createElement("br");
referencebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebackgroundalphaexactupdate);
referencebackgroundalpha.append(button);
}
}
addEventListener("load", referencebackgroundalphaexactload);
function referencebackgroundalphaexactupdate(e)
{
referencebackgroundalphanumber.value = Number(e.target.value);
referencebackgroundalphanumberupdate();
}
function referencebackgroundalphaincrementload()
{
const br = document.createElement("br");
referencebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebackgroundalphaincrementupdate);
referencebackgroundalpha.append(button);
}
}
addEventListener("load", referencebackgroundalphaincrementload);
function referencebackgroundalphaincrementupdate(e)
{
let v = Number(referencebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((referencebackgroundalphanumber.min <= v) && (v <= referencebackgroundalphanumber.max))
{
referencebackgroundalphanumber.value = v;
referencebackgroundalphanumberupdate();
}
}
function referencebordercolorload()
{
const div = document.createElement("div");
div.id = "referencebordercolor";
div.innerHTML = "border-color";
tabcontentreference.append(div);
}
addEventListener("load", referencebordercolorload);
function referencebordercolorcolorload()
{
const br = document.createElement("br");
referencebordercolor.append(br);
const input = document.createElement("input");
input.id = "referencebordercolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", referencebordercolorcolorupdate);
referencebordercolor.append(input);
//referencebordercolorcolorset();
}
addEventListener("load", referencebordercolorcolorload);
function referencebordercolorcolorset()
{
const c = referencebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referenceborderalphanumber.value;
text.referencebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebordercolorcolorupdate()
{
referencebordercolorcolorset();
svgupdate();
}
function referencebordercolorexactload()
{
const br = document.createElement("br");
referencebordercolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebordercolorexactupdate);
referencebordercolor.append(button);
}
}
addEventListener("load", referencebordercolorexactload);
function referencebordercolorexactupdate(e)
{
referencebordercolorcolor.value = e.target.value;
referencebordercolorcolorupdate();
}
function referenceborderalphaload()
{
const div = document.createElement("div");
div.id = "referenceborderalpha";
div.innerHTML = "border-alpha";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceborderalphaload);
function referenceborderalphanumberload()
{
const br = document.createElement("br");
referenceborderalpha.append(br);
const input = document.createElement("input");
input.id = "referenceborderalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", referenceborderalphanumberupdate);
referenceborderalpha.append(input);
//referenceborderalphanumberset();
}
addEventListener("load", referenceborderalphanumberload);
function referenceborderalphanumberset()
{
const c = referencebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referenceborderalphanumber.value;
referenceborderalpharange.value = a;
text.referencebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referenceborderalphanumberupdate()
{
referenceborderalphanumberset();
svgupdate();
}
function referenceborderalpharangeload()
{
const input = document.createElement("input");
input.id = "referenceborderalpharange";
input.max = referenceborderalphanumber.max;
input.min = referenceborderalphanumber.min;
input.step = referenceborderalphanumber.step;
input.type = "range";
input.value = referenceborderalphanumber.value;
input.addEventListener("input", referenceborderalpharangeupdate);
referenceborderalpha.append(input);
referenceborderalpharangeset();
}
addEventListener("load", referenceborderalpharangeload);
function referenceborderalpharangeset()
{
const c = referencebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referenceborderalpharange.value;
referenceborderalphanumber.value = a;
text.referencebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referenceborderalpharangeupdate()
{
referenceborderalpharangeset();
svgupdate();
}
function referenceborderalphaexactload()
{
const br = document.createElement("br");
referenceborderalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderalphaexactupdate);
referenceborderalpha.append(button);
}
}
addEventListener("load", referenceborderalphaexactload);
function referenceborderalphaexactupdate(e)
{
referenceborderalphanumber.value = Number(e.target.value);
referenceborderalphanumberupdate();
}
function referenceborderalphaincrementload()
{
const br = document.createElement("br");
referenceborderalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderalphaincrementupdate);
referenceborderalpha.append(button);
}
}
addEventListener("load", referenceborderalphaincrementload);
function referenceborderalphaincrementupdate(e)
{
let v = Number(referenceborderalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((referenceborderalphanumber.min <= v) && (v <= referenceborderalphanumber.max))
{
referenceborderalphanumber.value = v;
referenceborderalphanumberupdate();
}
}
function referenceborderradiusload()
{
const div = document.createElement("div");
div.id = "referenceborderradius";
div.innerHTML = "border-radius";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceborderradiusload);
function referenceborderradiusnumberload()
{
const br = document.createElement("br");
referenceborderradius.append(br);
const input = document.createElement("input");
input.id = "referenceborderradiusnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 50;
input.addEventListener("input", referenceborderradiusnumberupdate);
referenceborderradius.append(input);
//referenceborderradiusnumberset();
}
addEventListener("load", referenceborderradiusnumberload);
function referenceborderradiusnumberset()
{
const v = Number(referenceborderradiusnumber.value);
referenceborderradiusrange.value = v;
text.referenceborderradius = v;
}
function referenceborderradiusnumberupdate()
{
referenceborderradiusnumberset();
svgupdate();
}
function referenceborderradiusrangeload()
{
const input = document.createElement("input");
input.id = "referenceborderradiusrange";
input.max = referenceborderradiusnumber.max;
input.min = referenceborderradiusnumber.min;
input.type = "range";
input.value = referenceborderradiusnumber.value;
input.addEventListener("input", referenceborderradiusrangeupdate);
referenceborderradius.append(input);
referenceborderradiusrangeset();
}
addEventListener("load", referenceborderradiusrangeload);
function referenceborderradiusrangeset()
{
const v = Number(referenceborderradiusrange.value);
referenceborderradiusnumber.value = v;
text.referenceborderradius = v;
}
function referenceborderradiusrangeupdate()
{
referenceborderradiusrangeset();
svgupdate();
}
function referenceborderradiusexactload()
{
const br = document.createElement("br");
referenceborderradius.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderradiusexactupdate);
referenceborderradius.append(button);
}
}
addEventListener("load", referenceborderradiusexactload);
function referenceborderradiusexactupdate(e)
{
referenceborderradiusnumber.value = Number(e.target.value);
referenceborderradiusnumberupdate();
}
function referenceborderradiusincrementload()
{
const br = document.createElement("br");
referenceborderradius.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderradiusincrementupdate);
referenceborderradius.append(button);
}
}
addEventListener("load", referenceborderradiusincrementload);
function referenceborderradiusincrementupdate(e)
{
const v = Number(referenceborderradiusnumber.value) + Number(e.target.value);
if((referenceborderradiusnumber.min <= v) && (v <= referenceborderradiusnumber.max))
{
referenceborderradiusnumber.value = v;
referenceborderradiusnumberupdate();
}
}
function referenceborderstyleload()
{
const div = document.createElement("div");
div.id = "referenceborderstyle";
div.innerHTML = "border-style";
tabcontentreference.append(div);
}
addEventListener("load", referenceborderstyleload);
function referenceborderstyleselectload()
{
const br = document.createElement("br");
referenceborderstyle.append(br);
const select = document.createElement("select");
select.id = "referenceborderstyleselect";
select.addEventListener("input", referenceborderstyleselectupdate);
referenceborderstyle.append(select);
for(const value of borderstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
//select.value = borderstylearray[8];
referenceborderstyleselectset();
}
addEventListener("load", referenceborderstyleselectload);
function referenceborderstyleselectset()
{
text.referenceborderstyle = referenceborderstyleselect.value;
}
function referenceborderstyleselectupdate()
{
referenceborderstyleselectset();
svgupdate();
}
function referenceborderwidthload()
{
const div = document.createElement("div");
div.id = "referenceborderwidth";
div.innerHTML = "border-width";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceborderwidthload);
function referenceborderwidthnumberload()
{
const br = document.createElement("br");
referenceborderwidth.append(br);
const input = document.createElement("input");
input.id = "referenceborderwidthnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 25;
input.addEventListener("input", referenceborderwidthnumberupdate);
referenceborderwidth.append(input);
//referenceborderwidthnumberset();
}
addEventListener("load", referenceborderwidthnumberload);
function referenceborderwidthnumberset()
{
const v = Number(referenceborderwidthnumber.value);
referenceborderwidthrange.value = v;
text.referenceborderwidth = v;
}
function referenceborderwidthnumberupdate()
{
referenceborderwidthnumberset();
svgupdate();
}
function referenceborderwidthrangeload()
{
const input = document.createElement("input");
input.id = "referenceborderwidthrange";
input.max = referenceborderwidthnumber.max;
input.min = referenceborderwidthnumber.min;
input.type = "range";
input.value = referenceborderwidthnumber.value;
input.addEventListener("input", referenceborderwidthrangeupdate);
referenceborderwidth.append(input);
referenceborderwidthrangeset();
}
addEventListener("load", referenceborderwidthrangeload);
function referenceborderwidthrangeset()
{
const v = Number(referenceborderwidthrange.value);
referenceborderwidthnumber.value = v;
text.referenceborderwidth = v;
}
function referenceborderwidthrangeupdate()
{
referenceborderwidthrangeset();
svgupdate();
}
function referenceborderwidthexactload()
{
const br = document.createElement("br");
referenceborderwidth.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderwidthexactupdate);
referenceborderwidth.append(button);
}
}
addEventListener("load", referenceborderwidthexactload);
function referenceborderwidthexactupdate(e)
{
referenceborderwidthnumber.value = Number(e.target.value);
referenceborderwidthnumberupdate();
}
function referenceborderwidthincrementload()
{
const br = document.createElement("br");
referenceborderwidth.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderwidthincrementupdate);
referenceborderwidth.append(button);
}
}
addEventListener("load", referenceborderwidthincrementload);
function referenceborderwidthincrementupdate(e)
{
const v = Number(referenceborderwidthnumber.value) + Number(e.target.value);
if((referenceborderwidthnumber.min <= v) && (v <= referenceborderwidthnumber.max))
{
referenceborderwidthnumber.value = v;
referenceborderwidthnumberupdate();
}
}
function referencehorizontalload()
{
const div = document.createElement("div");
div.id = "referencehorizontal";
div.innerHTML = "horizontal";
tabcontentreference.append(div);
}
addEventListener("load", referencehorizontalload);
function referencehorizontalselectload()
{
const br = document.createElement("br");
referencehorizontal.append(br);
const select = document.createElement("select");
select.id = "referencehorizontalselect";
select.addEventListener("input", referencehorizontalselectupdate);
referencehorizontal.append(select);
for(const value of horizontalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = horizontalarray[1];
referencehorizontalselectset();
}
addEventListener("load", referencehorizontalselectload);
function referencehorizontalselectset()
{
text.referencehorizontal = referencehorizontalselect.value;
}
function referencehorizontalselectupdate()
{
referencehorizontalselectset();
svgupdate();
}
function referenceverticalload()
{
const div = document.createElement("div");
div.id = "referencevertical";
div.innerHTML = "vertical";
tabcontentreference.append(div);
}
addEventListener("load", referenceverticalload);
function referenceverticalselectload()
{
const br = document.createElement("br");
referencevertical.append(br);
const select = document.createElement("select");
select.id = "referenceverticalselect";
select.addEventListener("input", referenceverticalselectupdate);
referencevertical.append(select);
for(const value of verticalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = verticalarray[1];
referenceverticalselectset();
}
addEventListener("load", referenceverticalselectload);
function referenceverticalselectset()
{
text.referencevertical = referenceverticalselect.value;
}
function referenceverticalselectupdate()
{
referenceverticalselectset();
svgupdate();
}
function referencewritingmodeload()
{
const div = document.createElement("div");
div.id = "referencewritingmode";
div.innerHTML = "writing-mode";
tabcontentreference.append(div);
}
addEventListener("load", referencewritingmodeload);
function referencewritingmodeselectload()
{
const br = document.createElement("br");
referencewritingmode.append(br);
const select = document.createElement("select");
select.id = "referencewritingmodeselect";
select.addEventListener("input", referencewritingmodeselectupdate);
referencewritingmode.append(select);
for(const value of writingmodearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencewritingmodeselectset();
}
addEventListener("load", referencewritingmodeselectload);
function referencewritingmodeselectset()
{
text.referencewritingmode = referencewritingmodeselect.value;
}
function referencewritingmodeselectupdate()
{
referencewritingmodeselectset();
svgupdate();
}
function referencefontfamilyload()
{
const div = document.createElement("div");
div.id = "referencefontfamily";
div.innerHTML = "font-family";
tabcontentreference.append(div);
}
addEventListener("load", referencefontfamilyload);
function referencefontfamilyselectload()
{
const br = document.createElement("br");
referencefontfamily.append(br);
const select = document.createElement("select");
select.id = "referencefontfamilyselect";
select.addEventListener("input", referencefontfamilyselectupdate);
referencefontfamily.append(select);
for(const value of fontfamilyarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontfamilyselectset();
}
addEventListener("load", referencefontfamilyselectload);
function referencefontfamilyselectset()
{
text.referencefontfamily = referencefontfamilyselect.value;
}
function referencefontfamilyselectupdate()
{
referencefontfamilyselectset();
svgupdate();
}
function referencefontsizeload()
{
const div = document.createElement("div");
div.id = "referencefontsize";
div.innerHTML = "font-size";
tabcontentreference.append(div);
}
addEventListener("load", referencefontsizeload);
function referencefontsizenumberload()
{
const br = document.createElement("br");
referencefontsize.append(br);
const input = document.createElement("input");
input.id = "referencefontsizenumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefontsizenumberupdate);
referencefontsize.append(input);
//referencefontsizenumberset();
}
addEventListener("load", referencefontsizenumberload);
function referencefontsizenumberset()
{
const v = Number(referencefontsizenumber.value);
referencefontsizerange.value = v;
text.referencefontsize = v;
}
function referencefontsizenumberupdate()
{
referencefontsizenumberset();
svgupdate();
}
function referencefontsizerangeload()
{
const input = document.createElement("input");
input.id = "referencefontsizerange";
input.max = referencefontsizenumber.max;
input.min = referencefontsizenumber.min;
input.type = "range";
input.value = referencefontsizenumber.value;
input.addEventListener("input", referencefontsizerangeupdate);
referencefontsize.append(input);
referencefontsizerangeset();
}
addEventListener("load", referencefontsizerangeload);
function referencefontsizerangeset()
{
const v = Number(referencefontsizerange.value);
referencefontsizenumber.value = v;
text.referencefontsize = v;
}
function referencefontsizerangeupdate()
{
referencefontsizerangeset();
svgupdate();
}
function referencefontsizeexactload()
{
const br = document.createElement("br");
referencefontsize.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefontsizeexactupdate);
referencefontsize.append(button);
}
}
addEventListener("load", referencefontsizeexactload);
function referencefontsizeexactupdate(e)
{
referencefontsizenumber.value = Number(e.target.value);
referencefontsizenumberupdate();
}
function referencefontsizeincrementload()
{
const br = document.createElement("br");
referencefontsize.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefontsizeincrementupdate);
referencefontsize.append(button);
}
}
addEventListener("load", referencefontsizeincrementload);
function referencefontsizeincrementupdate(e)
{
const v = Number(referencefontsizenumber.value) + Number(e.target.value);
if((referencefontsizenumber.min <= v) && (v <= referencefontsizenumber.max))
{
referencefontsizenumber.value = v;
referencefontsizenumberupdate();
}
}
/*
function referencefontsizefitload()
{
const button = document.createElement("button");
button.innerHTML = "fit";
button.addEventListener("click", referencefontsizefitupdate);
referencefontsize.append(button);
}
addEventListener("load", referencefontsizefitload);
function referencefontsizefitupdate()
{
const t = document.createElement("div");
referencefontsize.append(t);
t.innerHTML = text.bookname;
t.style.fontSize = `${referencefontsizenumber.value}px`;
const h1 = text.referencewidth;
const h2 = text.referenceheight;
const h3 = t.offsetWidth;
const h4 = t.offsetHeight;
const h5 = referencefontsizenumber.value;
//const h4 = t.offsetParent;//t.style.fontSize;
//const h5 = t.clientHeight;//text.style.height;
//const h6 = text.height;
//const h7 = text.getBoundingClientRect().height;
//const h8 = text.style.lineHeight;
//const h9 = canvas.getBoundingClientRect().height;
console.log(h1, h2, h3, h4, h5);
//t.hidden = true;
if(h2 < h4)
{
referencefontsizenumber.value -= 1;
referencefit();
}
referencefontsizenumberupdate();
}
//*/
function referencefontstyleload()
{
const div = document.createElement("div");
div.id = "referencefontstyle";
div.innerHTML = "font-style";
tabcontentreference.append(div);
}
addEventListener("load", referencefontstyleload);
function referencefontstyleselectload()
{
const br = document.createElement("br");
referencefontstyle.append(br);
const select = document.createElement("select");
select.id = "referencefontstyleselect";
select.addEventListener("input", referencefontstyleselectupdate);
referencefontstyle.append(select);
for(const value of fontstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontstyleselectset();
}
addEventListener("load", referencefontstyleselectload);
function referencefontstyleselectset()
{
text.referencefontstyle = referencefontstyleselect.value;
}
function referencefontstyleselectupdate()
{
referencefontstyleselectset();
svgupdate();
}
function referencefontvariantload()
{
const div = document.createElement("div");
div.id = "referencefontvariant";
div.innerHTML = "font-variant";
tabcontentreference.append(div);
}
addEventListener("load", referencefontvariantload);
function referencefontvariantselectload()
{
const br = document.createElement("br");
referencefontvariant.append(br);
const select = document.createElement("select");
select.id = "referencefontvariantselect";
select.addEventListener("input", referencefontvariantselectupdate);
referencefontvariant.append(select);
for(const value of fontvariantarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontvariantselectset();
}
addEventListener("load", referencefontvariantselectload);
function referencefontvariantselectset()
{
text.referencefontvariant = referencefontvariantselect.value;
}
function referencefontvariantselectupdate()
{
referencefontvariantselectset();
svgupdate();
}
function referencefontweightload()
{
const div = document.createElement("div");
div.id = "referencefontweight";
div.innerHTML = "font-weight";
tabcontentreference.append(div);
}
addEventListener("load", referencefontweightload);
function referencefontweightselectload()
{
const br = document.createElement("br");
referencefontweight.append(br);
const select = document.createElement("select");
select.id = "referencefontweightselect";
select.addEventListener("input", referencefontweightselectupdate);
referencefontweight.append(select);
for(const value of fontweightarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontweightselectset();
}
addEventListener("load", referencefontweightselectload);
function referencefontweightselectset()
{
text.referencefontweight = referencefontweightselect.value;
}
function referencefontweightselectupdate()
{
referencefontweightselectset();
svgupdate();
}
function referencecolorload()
{
const div = document.createElement("div");
div.id = "referencecolor";
div.innerHTML = "color";
tabcontentreference.append(div);
}
addEventListener("load", referencecolorload);
function referencecolorcolorload()
{
const br = document.createElement("br");
referencecolor.append(br);
const input = document.createElement("input");
input.id = "referencecolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", referencecolorcolorupdate);
referencecolor.append(input);
//referencecolorcolorset();
}
addEventListener("load", referencecolorcolorload);
function referencecolorcolorset()
{
const c = referencecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencealphanumber.value;
text.referencecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencecolorcolorupdate()
{
referencecolorcolorset();
svgupdate();
}
function referencecolorexactload()
{
const br = document.createElement("br");
referencecolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencecolorexactupdate);
referencecolor.append(button);
}
}
addEventListener("load", referencecolorexactload);
function referencecolorexactupdate(e)
{
referencecolorcolor.value = e.target.value;
referencecolorcolorupdate();
}
function referencealphaload()
{
const div = document.createElement("div");
div.id = "referencealpha";
div.innerHTML = "alpha";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencealphaload);
function referencealphanumberload()
{
const br = document.createElement("br");
referencealpha.append(br);
const input = document.createElement("input");
input.id = "referencealphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", referencealphanumberupdate);
referencealpha.append(input);
//referencealphanumberset();
}
addEventListener("load", referencealphanumberload);
function referencealphanumberset()
{
const c = referencecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencealphanumber.value;
referencealpharange.value = a;
text.referencecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencealphanumberupdate()
{
referencealphanumberset();
svgupdate();
}
function referencealpharangeload()
{
const input = document.createElement("input");
input.id = "referencealpharange";
input.max = referencealphanumber.max;
input.min = referencealphanumber.min;
input.step = referencealphanumber.step;
input.type = "range";
input.value = referencealphanumber.value;
input.addEventListener("input", referencealpharangeupdate);
referencealpha.append(input);
referencealpharangeset();
}
addEventListener("load", referencealpharangeload);
function referencealpharangeset()
{
const c = referencecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencealpharange.value;
referencealphanumber.value = a;
text.referencecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencealpharangeupdate()
{
referencealpharangeset();
svgupdate();
}
function referencealphaexactload()
{
const br = document.createElement("br");
referencealpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencealphaexactupdate);
referencealpha.append(button);
}
}
addEventListener("load", referencealphaexactload);
function referencealphaexactupdate(e)
{
referencealphanumber.value = Number(e.target.value);
referencealphanumberupdate();
}
function referencealphaincrementload()
{
const br = document.createElement("br");
referencealpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencealphaincrementupdate);
referencealpha.append(button);
}
}
addEventListener("load", referencealphaincrementload);
function referencealphaincrementupdate(e)
{
let v = Number(referencealphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((referencealphanumber.min <= v) && (v <= referencealphanumber.max))
{
referencealphanumber.value = v;
referencealphanumberupdate();
}
}
/*leftoff
function referencefilterblurload()
{
const div = document.createElement("div");
div.id = "referencefilterblur";
div.innerHTML = "filter-blur";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterblurload);
function referencefilterblurnumberload()
{
const br = document.createElement("br");
referencefilterblur.append(br);
const input = document.createElement("input");
input.id = "referencefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefilterblurnumberupdate);
referencefilterblur.append(input);
//referencefilterblurnumberset();
}
addEventListener("load", referencefilterblurnumberload);
function referencefilterblurnumberset()
{
const v = referencefilterblurnumber.value;
referencefilterblurrange.value = v;
text.referencebackdropfilterblur = v;
}
function referencefilterblurnumberupdate()
{
referencefilterblurnumberset();
svgupdate();
}
function referencefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "referencefilterblurrange";
input.max = referencefilterblurnumber.max;
input.min = referencefilterblurnumber.min;
input.step = referencefilterblurnumber.step;
input.type = "range";
input.value = referencefilterblurnumber.value;
input.addEventListener("input", referencefilterblurrangeupdate);
referencefilterblur.append(input);
referencefilterblurrangeset();
}
addEventListener("load", referencefilterblurrangeload);
function referencefilterblurrangeset()
{
const v = referencefilterblurrange.value;
referencefilterblurnumber.value = v;
text.referencebackdropfilterblur = v;
}
function referencefilterblurrangeupdate()
{
referencefilterblurrangeset();
svgupdate();
}
function referencefilterblurexactload()
{
const br = document.createElement("br");
referencefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterblurexactupdate);
referencefilterblur.append(button);
}
}
addEventListener("load", referencefilterblurexactload);
function referencefilterblurexactupdate(e)
{
referencefilterblurnumber.value = Number(e.target.value);
referencefilterblurnumberupdate();
}
function referencefilterblurincrementload()
{
const br = document.createElement("br");
referencefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterblurincrementupdate);
referencefilterblur.append(button);
}
}
addEventListener("load", referencefilterblurincrementload);
function referencefilterblurincrementupdate(e)
{
const v = Number(referencefilterblurnumber.value) + Number(e.target.value);
if((referencefilterblurnumber.min <= v) && (v <= referencefilterblurnumber.max))
{
referencefilterblurnumber.value = v;
referencefilterblurnumberupdate();
}
}
function referencefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "referencefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterbrightnessload);
function referencefilterbrightnessnumberload()
{
const br = document.createElement("br");
referencefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "referencefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefilterbrightnessnumberupdate);
referencefilterbrightness.append(input);
//referencefilterbrightnessnumberset();
}
addEventListener("load", referencefilterbrightnessnumberload);
function referencefilterbrightnessnumberset()
{
const v = referencefilterbrightnessnumber.value;
referencefilterbrightnessrange.value = v;
text.referencebackdropfilterbrightness = v;
}
function referencefilterbrightnessnumberupdate()
{
referencefilterbrightnessnumberset();
svgupdate();
}
function referencefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "referencefilterbrightnessrange";
input.max = referencefilterbrightnessnumber.max;
input.min = referencefilterbrightnessnumber.min;
input.step = referencefilterbrightnessnumber.step;
input.type = "range";
input.value = referencefilterbrightnessnumber.value;
input.addEventListener("input", referencefilterbrightnessrangeupdate);
referencefilterbrightness.append(input);
referencefilterbrightnessrangeset();
}
addEventListener("load", referencefilterbrightnessrangeload);
function referencefilterbrightnessrangeset()
{
const v = referencefilterbrightnessrange.value;
referencefilterbrightnessnumber.value = v;
text.referencebackdropfilterbrightness = v;
}
function referencefilterbrightnessrangeupdate()
{
referencefilterbrightnessrangeset();
svgupdate();
}
function referencefilterbrightnessexactload()
{
const br = document.createElement("br");
referencefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterbrightnessexactupdate);
referencefilterbrightness.append(button);
}
}
addEventListener("load", referencefilterbrightnessexactload);
function referencefilterbrightnessexactupdate(e)
{
referencefilterbrightnessnumber.value = Number(e.target.value);
referencefilterbrightnessnumberupdate();
}
function referencefilterbrightnessincrementload()
{
const br = document.createElement("br");
referencefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterbrightnessincrementupdate);
referencefilterbrightness.append(button);
}
}
addEventListener("load", referencefilterbrightnessincrementload);
function referencefilterbrightnessincrementupdate(e)
{
const v = Number(referencefilterbrightnessnumber.value) + Number(e.target.value);
if((referencefilterbrightnessnumber.min <= v) && (v <= referencefilterbrightnessnumber.max))
{
referencefilterbrightnessnumber.value = v;
referencefilterbrightnessnumberupdate();
}
}
function referencefiltercontrastload()
{
const div = document.createElement("div");
div.id = "referencefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltercontrastload);
function referencefiltercontrastnumberload()
{
const br = document.createElement("br");
referencefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "referencefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefiltercontrastnumberupdate);
referencefiltercontrast.append(input);
//referencefiltercontrastnumberset();
}
addEventListener("load", referencefiltercontrastnumberload);
function referencefiltercontrastnumberset()
{
const v = referencefiltercontrastnumber.value;
referencefiltercontrastrange.value = v;
text.referencebackdropfiltercontrast = v;
}
function referencefiltercontrastnumberupdate()
{
referencefiltercontrastnumberset();
svgupdate();
}
function referencefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "referencefiltercontrastrange";
input.max = referencefiltercontrastnumber.max;
input.min = referencefiltercontrastnumber.min;
input.step = referencefiltercontrastnumber.step;
input.type = "range";
input.value = referencefiltercontrastnumber.value;
input.addEventListener("input", referencefiltercontrastrangeupdate);
referencefiltercontrast.append(input);
referencefiltercontrastrangeset();
}
addEventListener("load", referencefiltercontrastrangeload);
function referencefiltercontrastrangeset()
{
const v = referencefiltercontrastrange.value;
referencefiltercontrastnumber.value = v;
text.referencebackdropfiltercontrast = v;
}
function referencefiltercontrastrangeupdate()
{
referencefiltercontrastrangeset();
svgupdate();
}
function referencefiltercontrastexactload()
{
const br = document.createElement("br");
referencefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltercontrastexactupdate);
referencefiltercontrast.append(button);
}
}
addEventListener("load", referencefiltercontrastexactload);
function referencefiltercontrastexactupdate(e)
{
referencefiltercontrastnumber.value = Number(e.target.value);
referencefiltercontrastnumberupdate();
}
function referencefiltercontrastincrementload()
{
const br = document.createElement("br");
referencefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltercontrastincrementupdate);
referencefiltercontrast.append(button);
}
}
addEventListener("load", referencefiltercontrastincrementload);
function referencefiltercontrastincrementupdate(e)
{
const v = Number(referencefiltercontrastnumber.value) + Number(e.target.value);
if((referencefiltercontrastnumber.min <= v) && (v <= referencefiltercontrastnumber.max))
{
referencefiltercontrastnumber.value = v;
referencefiltercontrastnumberupdate();
}
}
function referencefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "referencefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltergrayscaleload);
function referencefiltergrayscalenumberload()
{
const br = document.createElement("br");
referencefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "referencefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefiltergrayscalenumberupdate);
referencefiltergrayscale.append(input);
//referencefiltergrayscalenumberset();
}
addEventListener("load", referencefiltergrayscalenumberload);
function referencefiltergrayscalenumberset()
{
const v = referencefiltergrayscalenumber.value;
referencefiltergrayscalerange.value = v;
text.referencebackdropfiltergrayscale = v;
}
function referencefiltergrayscalenumberupdate()
{
referencefiltergrayscalenumberset();
svgupdate();
}
function referencefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "referencefiltergrayscalerange";
input.max = referencefiltergrayscalenumber.max;
input.min = referencefiltergrayscalenumber.min;
input.step = referencefiltergrayscalenumber.step;
input.type = "range";
input.value = referencefiltergrayscalenumber.value;
input.addEventListener("input", referencefiltergrayscalerangeupdate);
referencefiltergrayscale.append(input);
referencefiltergrayscalerangeset();
}
addEventListener("load", referencefiltergrayscalerangeload);
function referencefiltergrayscalerangeset()
{
const v = referencefiltergrayscalerange.value;
referencefiltergrayscalenumber.value = v;
text.referencebackdropfiltergrayscale = v;
}
function referencefiltergrayscalerangeupdate()
{
referencefiltergrayscalerangeset();
svgupdate();
}
function referencefiltergrayscaleexactload()
{
const br = document.createElement("br");
referencefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltergrayscaleexactupdate);
referencefiltergrayscale.append(button);
}
}
addEventListener("load", referencefiltergrayscaleexactload);
function referencefiltergrayscaleexactupdate(e)
{
referencefiltergrayscalenumber.value = Number(e.target.value);
referencefiltergrayscalenumberupdate();
}
function referencefiltergrayscaleincrementload()
{
const br = document.createElement("br");
referencefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltergrayscaleincrementupdate);
referencefiltergrayscale.append(button);
}
}
addEventListener("load", referencefiltergrayscaleincrementload);
function referencefiltergrayscaleincrementupdate(e)
{
const v = Number(referencefiltergrayscalenumber.value) + Number(e.target.value);
if((referencefiltergrayscalenumber.min <= v) && (v <= referencefiltergrayscalenumber.max))
{
referencefiltergrayscalenumber.value = v;
referencefiltergrayscalenumberupdate();
}
}
function referencefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "referencefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterhuerotateload);
function referencefilterhuerotatenumberload()
{
const br = document.createElement("br");
referencefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "referencefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefilterhuerotatenumberupdate);
referencefilterhuerotate.append(input);
//referencefilterhuerotatenumberset();
}
addEventListener("load", referencefilterhuerotatenumberload);
function referencefilterhuerotatenumberset()
{
const v = referencefilterhuerotatenumber.value;
referencefilterhuerotaterange.value = v;
text.referencebackdropfilterhuerotate = v;
}
function referencefilterhuerotatenumberupdate()
{
referencefilterhuerotatenumberset();
svgupdate();
}
function referencefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "referencefilterhuerotaterange";
input.max = referencefilterhuerotatenumber.max;
input.min = referencefilterhuerotatenumber.min;
input.step = referencefilterhuerotatenumber.step;
input.type = "range";
input.value = referencefilterhuerotatenumber.value;
input.addEventListener("input", referencefilterhuerotaterangeupdate);
referencefilterhuerotate.append(input);
referencefilterhuerotaterangeset();
}
addEventListener("load", referencefilterhuerotaterangeload);
function referencefilterhuerotaterangeset()
{
const v = referencefilterhuerotaterange.value;
referencefilterhuerotatenumber.value = v;
text.referencebackdropfilterhuerotate = v;
}
function referencefilterhuerotaterangeupdate()
{
referencefilterhuerotaterangeset();
svgupdate();
}
function referencefilterhuerotateexactload()
{
const br = document.createElement("br");
referencefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterhuerotateexactupdate);
referencefilterhuerotate.append(button);
}
}
addEventListener("load", referencefilterhuerotateexactload);
function referencefilterhuerotateexactupdate(e)
{
referencefilterhuerotatenumber.value = Number(e.target.value);
referencefilterhuerotatenumberupdate();
}
function referencefilterhuerotateincrementload()
{
const br = document.createElement("br");
referencefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterhuerotateincrementupdate);
referencefilterhuerotate.append(button);
}
}
addEventListener("load", referencefilterhuerotateincrementload);
function referencefilterhuerotateincrementupdate(e)
{
const v = Number(referencefilterhuerotatenumber.value) + Number(e.target.value);
if((referencefilterhuerotatenumber.min <= v) && (v <= referencefilterhuerotatenumber.max))
{
referencefilterhuerotatenumber.value = v;
referencefilterhuerotatenumberupdate();
}
}
function referencefilterinvertload()
{
const div = document.createElement("div");
div.id = "referencefilterinvert";
div.innerHTML = "filter-invert";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterinvertload);
function referencefilterinvertnumberload()
{
const br = document.createElement("br");
referencefilterinvert.append(br);
const input = document.createElement("input");
input.id = "referencefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefilterinvertnumberupdate);
referencefilterinvert.append(input);
//referencefilterinvertnumberset();
}
addEventListener("load", referencefilterinvertnumberload);
function referencefilterinvertnumberset()
{
const v = referencefilterinvertnumber.value;
referencefilterinvertrange.value = v;
text.referencebackdropfilterinvert = v;
}
function referencefilterinvertnumberupdate()
{
referencefilterinvertnumberset();
svgupdate();
}
function referencefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "referencefilterinvertrange";
input.max = referencefilterinvertnumber.max;
input.min = referencefilterinvertnumber.min;
input.step = referencefilterinvertnumber.step;
input.type = "range";
input.value = referencefilterinvertnumber.value;
input.addEventListener("input", referencefilterinvertrangeupdate);
referencefilterinvert.append(input);
referencefilterinvertrangeset();
}
addEventListener("load", referencefilterinvertrangeload);
function referencefilterinvertrangeset()
{
const v = referencefilterinvertrange.value;
referencefilterinvertnumber.value = v;
text.referencebackdropfilterinvert = v;
}
function referencefilterinvertrangeupdate()
{
referencefilterinvertrangeset();
svgupdate();
}
function referencefilterinvertexactload()
{
const br = document.createElement("br");
referencefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterinvertexactupdate);
referencefilterinvert.append(button);
}
}
addEventListener("load", referencefilterinvertexactload);
function referencefilterinvertexactupdate(e)
{
referencefilterinvertnumber.value = Number(e.target.value);
referencefilterinvertnumberupdate();
}
function referencefilterinvertincrementload()
{
const br = document.createElement("br");
referencefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterinvertincrementupdate);
referencefilterinvert.append(button);
}
}
addEventListener("load", referencefilterinvertincrementload);
function referencefilterinvertincrementupdate(e)
{
const v = Number(referencefilterinvertnumber.value) + Number(e.target.value);
if((referencefilterinvertnumber.min <= v) && (v <= referencefilterinvertnumber.max))
{
referencefilterinvertnumber.value = v;
referencefilterinvertnumberupdate();
}
}
function referencefiltersaturateload()
{
const div = document.createElement("div");
div.id = "referencefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltersaturateload);
function referencefiltersaturatenumberload()
{
const br = document.createElement("br");
referencefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "referencefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefiltersaturatenumberupdate);
referencefiltersaturate.append(input);
//referencefiltersaturatenumberset();
}
addEventListener("load", referencefiltersaturatenumberload);
function referencefiltersaturatenumberset()
{
const v = referencefiltersaturatenumber.value;
referencefiltersaturaterange.value = v;
text.referencebackdropfiltersaturate = v;
}
function referencefiltersaturatenumberupdate()
{
referencefiltersaturatenumberset();
svgupdate();
}
function referencefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "referencefiltersaturaterange";
input.max = referencefiltersaturatenumber.max;
input.min = referencefiltersaturatenumber.min;
input.step = referencefiltersaturatenumber.step;
input.type = "range";
input.value = referencefiltersaturatenumber.value;
input.addEventListener("input", referencefiltersaturaterangeupdate);
referencefiltersaturate.append(input);
referencefiltersaturaterangeset();
}
addEventListener("load", referencefiltersaturaterangeload);
function referencefiltersaturaterangeset()
{
const v = referencefiltersaturaterange.value;
referencefiltersaturatenumber.value = v;
text.referencebackdropfiltersaturate = v;
}
function referencefiltersaturaterangeupdate()
{
referencefiltersaturaterangeset();
svgupdate();
}
function referencefiltersaturateexactload()
{
const br = document.createElement("br");
referencefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersaturateexactupdate);
referencefiltersaturate.append(button);
}
}
addEventListener("load", referencefiltersaturateexactload);
function referencefiltersaturateexactupdate(e)
{
referencefiltersaturatenumber.value = Number(e.target.value);
referencefiltersaturatenumberupdate();
}
function referencefiltersaturateincrementload()
{
const br = document.createElement("br");
referencefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersaturateincrementupdate);
referencefiltersaturate.append(button);
}
}
addEventListener("load", referencefiltersaturateincrementload);
function referencefiltersaturateincrementupdate(e)
{
const v = Number(referencefiltersaturatenumber.value) + Number(e.target.value);
if((referencefiltersaturatenumber.min <= v) && (v <= referencefiltersaturatenumber.max))
{
referencefiltersaturatenumber.value = v;
referencefiltersaturatenumberupdate();
}
}
function referencefiltersepiaload()
{
const div = document.createElement("div");
div.id = "referencefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltersepiaload);
function referencefiltersepianumberload()
{
const br = document.createElement("br");
referencefiltersepia.append(br);
const input = document.createElement("input");
input.id = "referencefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefiltersepianumberupdate);
referencefiltersepia.append(input);
//referencefiltersepianumberset();
}
addEventListener("load", referencefiltersepianumberload);
function referencefiltersepianumberset()
{
const v = referencefiltersepianumber.value;
referencefiltersepiarange.value = v;
text.referencebackdropfiltersepia = v;
}
function referencefiltersepianumberupdate()
{
referencefiltersepianumberset();
svgupdate();
}
function referencefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "referencefiltersepiarange";
input.max = referencefiltersepianumber.max;
input.min = referencefiltersepianumber.min;
input.step = referencefiltersepianumber.step;
input.type = "range";
input.value = referencefiltersepianumber.value;
input.addEventListener("input", referencefiltersepiarangeupdate);
referencefiltersepia.append(input);
referencefiltersepiarangeset();
}
addEventListener("load", referencefiltersepiarangeload);
function referencefiltersepiarangeset()
{
const v = referencefiltersepiarange.value;
referencefiltersepianumber.value = v;
text.referencebackdropfiltersepia = v;
}
function referencefiltersepiarangeupdate()
{
referencefiltersepiarangeset();
svgupdate();
}
function referencefiltersepiaexactload()
{
const br = document.createElement("br");
referencefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersepiaexactupdate);
referencefiltersepia.append(button);
}
}
addEventListener("load", referencefiltersepiaexactload);
function referencefiltersepiaexactupdate(e)
{
referencefiltersepianumber.value = Number(e.target.value);
referencefiltersepianumberupdate();
}
function referencefiltersepiaincrementload()
{
const br = document.createElement("br");
referencefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersepiaincrementupdate);
referencefiltersepia.append(button);
}
}
addEventListener("load", referencefiltersepiaincrementload);
function referencefiltersepiaincrementupdate(e)
{
const v = Number(referencefiltersepianumber.value) + Number(e.target.value);
if((referencefiltersepianumber.min <= v) && (v <= referencefiltersepianumber.max))
{
referencefiltersepianumber.value = v;
referencefiltersepianumberupdate();
}
}
//*/
/*
function referencemargintopload()
{
const div = document.createElement("div");
div.id = "referencemargintop";
div.innerHTML = "margin-top";
tabcontentreference.append(div);
}
addEventListener("load", referencemargintopload);
function referencemargintopnumberload()
{
const br = document.createElement("br");
referencemargintop.append(br);
const input = document.createElement("input");
input.id = "referencemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemargintopnumberupdate);
referencemargintop.append(input);
//referencemargintopnumberset();
}
addEventListener("load", referencemargintopnumberload);
function referencemargintopnumberset()
{
const v = Number(referencemargintopnumber.value);
referencemargintoprange.value = v;
text.referencemargintop = v;
}
function referencemargintopnumberupdate()
{
referencemargintopnumberset();
svgupdate();
}
function referencemargintoprangeload()
{
const input = document.createElement("input");
input.id = "referencemargintoprange";
input.max = referencemargintopnumber.max;
input.min = referencemargintopnumber.min;
input.type = "range";
input.value = referencemargintopnumber.value;
input.addEventListener("input", referencemargintoprangeupdate);
referencemargintop.append(input);
referencemargintoprangeset();
}
addEventListener("load", referencemargintoprangeload);
function referencemargintoprangeset()
{
const v = Number(referencemargintoprange.value);
referencemargintopnumber.value = v;
text.referencemargintop = v;
}
function referencemargintoprangeupdate()
{
referencemargintoprangeset();
svgupdate();
}
function referencemarginbottomload()
{
const div = document.createElement("div");
div.id = "referencemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentreference.append(div);
}
addEventListener("load", referencemarginbottomload);
function referencemarginbottomnumberload()
{
const br = document.createElement("br");
referencemarginbottom.append(br);
const input = document.createElement("input");
input.id = "referencemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemarginbottomnumberupdate);
referencemarginbottom.append(input);
//referencemarginbottomnumberset();
}
addEventListener("load", referencemarginbottomnumberload);
function referencemarginbottomnumberset()
{
const v = Number(referencemarginbottomnumber.value);
referencemarginbottomrange.value = v;
text.referencemarginbottom = v;
}
function referencemarginbottomnumberupdate()
{
referencemarginbottomnumberset();
svgupdate();
}
function referencemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "referencemarginbottomrange";
input.max = referencemarginbottomnumber.max;
input.min = referencemarginbottomnumber.min;
input.type = "range";
input.value = referencemarginbottomnumber.value;
input.addEventListener("input", referencemarginbottomrangeupdate);
referencemarginbottom.append(input);
referencemarginbottomrangeset();
}
addEventListener("load", referencemarginbottomrangeload);
function referencemarginbottomrangeset()
{
const v = Number(referencemarginbottomrange.value);
referencemarginbottomnumber.value = v;
text.referencemarginbottom = v;
}
function referencemarginbottomrangeupdate()
{
referencemarginbottomrangeset();
svgupdate();
}
function referencemarginleftload()
{
const div = document.createElement("div");
div.id = "referencemarginleft";
div.innerHTML = "margin-left";
tabcontentreference.append(div);
}
addEventListener("load", referencemarginleftload);
function referencemarginleftnumberload()
{
const br = document.createElement("br");
referencemarginleft.append(br);
const input = document.createElement("input");
input.id = "referencemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemarginleftnumberupdate);
referencemarginleft.append(input);
//referencemarginleftnumberset();
}
addEventListener("load", referencemarginleftnumberload);
function referencemarginleftnumberset()
{
const v = Number(referencemarginleftnumber.value);
referencemarginleftrange.value = v;
text.referencemarginleft = v;
}
function referencemarginleftnumberupdate()
{
referencemarginleftnumberset();
svgupdate();
}
function referencemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "referencemarginleftrange";
input.max = referencemarginleftnumber.max;
input.min = referencemarginleftnumber.min;
input.type = "range";
input.value = referencemarginleftnumber.value;
input.addEventListener("input", referencemarginleftrangeupdate);
referencemarginleft.append(input);
referencemarginleftrangeset();
}
addEventListener("load", referencemarginleftrangeload);
function referencemarginleftrangeset()
{
const v = Number(referencemarginleftrange.value);
referencemarginleftnumber.value = v;
text.referencemarginleft = v;
}
function referencemarginleftrangeupdate()
{
referencemarginleftrangeset();
svgupdate();
}
function referencemarginrightload()
{
const div = document.createElement("div");
div.id = "referencemarginright";
div.innerHTML = "margin-right";
tabcontentreference.append(div);
}
addEventListener("load", referencemarginrightload);
function referencemarginrightnumberload()
{
const br = document.createElement("br");
referencemarginright.append(br);
const input = document.createElement("input");
input.id = "referencemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemarginrightnumberupdate);
referencemarginright.append(input);
//referencemarginrightnumberset();
}
addEventListener("load", referencemarginrightnumberload);
function referencemarginrightnumberset()
{
const v = Number(referencemarginrightnumber.value);
referencemarginrightrange.value = v;
text.referencemarginright = v;
}
function referencemarginrightnumberupdate()
{
referencemarginrightnumberset();
svgupdate();
}
function referencemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "referencemarginrightrange";
input.max = referencemarginrightnumber.max;
input.min = referencemarginrightnumber.min;
input.type = "range";
input.value = referencemarginrightnumber.value;
input.addEventListener("input", referencemarginrightrangeupdate);
referencemarginright.append(input);
referencemarginrightrangeset();
}
addEventListener("load", referencemarginrightrangeload);
function referencemarginrightrangeset()
{
const v = Number(referencemarginrightrange.value);
referencemarginrightnumber.value = v;
text.referencemarginright = v;
}
function referencemarginrightrangeupdate()
{
referencemarginrightrangeset();
svgupdate();
}
function referencepaddingtopload()
{
const div = document.createElement("div");
div.id = "referencepaddingtop";
div.innerHTML = "padding-top";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingtopload);
function referencepaddingtopnumberload()
{
const br = document.createElement("br");
referencepaddingtop.append(br);
const input = document.createElement("input");
input.id = "referencepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingtopnumberupdate);
referencepaddingtop.append(input);
//referencepaddingtopnumberset();
}
addEventListener("load", referencepaddingtopnumberload);
function referencepaddingtopnumberset()
{
const v = Number(referencepaddingtopnumber.value);
referencepaddingtoprange.value = v;
text.referencepaddingtop = v;
}
function referencepaddingtopnumberupdate()
{
referencepaddingtopnumberset();
svgupdate();
}
function referencepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingtoprange";
input.max = referencepaddingtopnumber.max;
input.min = referencepaddingtopnumber.min;
input.type = "range";
input.value = referencepaddingtopnumber.value;
input.addEventListener("input", referencepaddingtoprangeupdate);
referencepaddingtop.append(input);
referencepaddingtoprangeset();
}
addEventListener("load", referencepaddingtoprangeload);
function referencepaddingtoprangeset()
{
const v = Number(referencepaddingtoprange.value);
referencepaddingtopnumber.value = v;
text.referencepaddingtop = v;
}
function referencepaddingtoprangeupdate()
{
referencepaddingtoprangeset();
svgupdate();
}
function referencepaddingbottomload()
{
const div = document.createElement("div");
div.id = "referencepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingbottomload);
function referencepaddingbottomnumberload()
{
const br = document.createElement("br");
referencepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "referencepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingbottomnumberupdate);
referencepaddingbottom.append(input);
//referencepaddingbottomnumberset();
}
addEventListener("load", referencepaddingbottomnumberload);
function referencepaddingbottomnumberset()
{
const v = Number(referencepaddingbottomnumber.value);
referencepaddingbottomrange.value = v;
text.referencepaddingbottom = v;
}
function referencepaddingbottomnumberupdate()
{
referencepaddingbottomnumberset();
svgupdate();
}
function referencepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingbottomrange";
input.max = referencepaddingbottomnumber.max;
input.min = referencepaddingbottomnumber.min;
input.type = "range";
input.value = referencepaddingbottomnumber.value;
input.addEventListener("input", referencepaddingbottomrangeupdate);
referencepaddingbottom.append(input);
referencepaddingbottomrangeset();
}
addEventListener("load", referencepaddingbottomrangeload);
function referencepaddingbottomrangeset()
{
const v = Number(referencepaddingbottomrange.value);
referencepaddingbottomnumber.value = v;
text.referencepaddingbottom = v;
}
function referencepaddingbottomrangeupdate()
{
referencepaddingbottomrangeset();
svgupdate();
}
function referencepaddingleftload()
{
const div = document.createElement("div");
div.id = "referencepaddingleft";
div.innerHTML = "padding-left";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingleftload);
function referencepaddingleftnumberload()
{
const br = document.createElement("br");
referencepaddingleft.append(br);
const input = document.createElement("input");
input.id = "referencepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingleftnumberupdate);
referencepaddingleft.append(input);
//referencepaddingleftnumberset();
}
addEventListener("load", referencepaddingleftnumberload);
function referencepaddingleftnumberset()
{
const v = Number(referencepaddingleftnumber.value);
referencepaddingleftrange.value = v;
text.referencepaddingleft = v;
}
function referencepaddingleftnumberupdate()
{
referencepaddingleftnumberset();
svgupdate();
}
function referencepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingleftrange";
input.max = referencepaddingleftnumber.max;
input.min = referencepaddingleftnumber.min;
input.type = "range";
input.value = referencepaddingleftnumber.value;
input.addEventListener("input", referencepaddingleftrangeupdate);
referencepaddingleft.append(input);
referencepaddingleftrangeset();
}
addEventListener("load", referencepaddingleftrangeload);
function referencepaddingleftrangeset()
{
const v = Number(referencepaddingleftrange.value);
referencepaddingleftnumber.value = v;
text.referencepaddingleft = v;
}
function referencepaddingleftrangeupdate()
{
referencepaddingleftrangeset();
svgupdate();
}
function referencepaddingrightload()
{
const div = document.createElement("div");
div.id = "referencepaddingright";
div.innerHTML = "padding-right";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingrightload);
function referencepaddingrightnumberload()
{
const br = document.createElement("br");
referencepaddingright.append(br);
const input = document.createElement("input");
input.id = "referencepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingrightnumberupdate);
referencepaddingright.append(input);
//referencepaddingrightnumberset();
}
addEventListener("load", referencepaddingrightnumberload);
function referencepaddingrightnumberset()
{
const v = Number(referencepaddingrightnumber.value);
referencepaddingrightrange.value = v;
text.referencepaddingright = v;
}
function referencepaddingrightnumberupdate()
{
referencepaddingrightnumberset();
svgupdate();
}
function referencepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingrightrange";
input.max = referencepaddingrightnumber.max;
input.min = referencepaddingrightnumber.min;
input.type = "range";
input.value = referencepaddingrightnumber.value;
input.addEventListener("input", referencepaddingrightrangeupdate);
referencepaddingright.append(input);
referencepaddingrightrangeset();
}
addEventListener("load", referencepaddingrightrangeload);
function referencepaddingrightrangeset()
{
const v = Number(referencepaddingrightrange.value);
referencepaddingrightnumber.value = v;
text.referencepaddingright = v;
}
function referencepaddingrightrangeupdate()
{
referencepaddingrightrangeset();
svgupdate();
}
//*/
function passagewidthload()
{
const div = document.createElement("div");
div.id = "passagewidth";
div.innerHTML = "width";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagewidthload);
function passagewidthnumberload()
{
const br = document.createElement("br");
passagewidth.append(br);
const input = document.createElement("input");
input.id = "passagewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width - 100;
input.addEventListener("input", passagewidthnumberupdate);
passagewidth.append(input);
//passagewidthnumberset();
}
addEventListener("load", passagewidthnumberload);
function passagewidthnumberset()
{
const v = Number(passagewidthnumber.value);
passagewidthrange.value = v;
text.passagewidth = v;
}
function passagewidthnumberupdate()
{
passagewidthnumberset();
svgupdate();
}
function passagewidthrangeload()
{
const input = document.createElement("input");
input.id = "passagewidthrange";
input.max = passagewidthnumber.max;
input.min = passagewidthnumber.min;
input.type = "range";
input.value = passagewidthnumber.value;
input.addEventListener("input", passagewidthrangeupdate);
passagewidth.append(input);
passagewidthrangeset();
}
addEventListener("load", passagewidthrangeload);
function passagewidthrangeset()
{
const v = Number(passagewidthrange.value);
passagewidthnumber.value = v;
text.passagewidth = v;
}
function passagewidthrangeupdate()
{
passagewidthrangeset();
svgupdate();
}
function passagewidthexactload()
{
const br = document.createElement("br");
passagewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagewidthexactupdate);
passagewidth.append(button);
}
}
addEventListener("load", passagewidthexactload);
function passagewidthexactupdate(e)
{
passagewidthnumber.value = canvas.width * Number(e.target.value);
passagewidthnumberupdate();
}
function passagewidthincrementload()
{
const br = document.createElement("br");
passagewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagewidthincrementupdate);
passagewidth.append(button);
}
}
addEventListener("load", passagewidthincrementload);
function passagewidthincrementupdate(e)
{
const v = Number(passagewidthnumber.value) + Number(e.target.value);
if((passagewidthnumber.min <= v) && (v <= passagewidthnumber.max))
{
passagewidthnumber.value = v;
passagewidthnumberupdate();
}
}
function passageheightload()
{
const div = document.createElement("div");
div.id = "passageheight";
div.innerHTML = "height";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageheightload);
function passageheightnumberload()
{
const br = document.createElement("br");
passageheight.append(br);
const input = document.createElement("input");
input.id = "passageheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = 300;
input.addEventListener("input", passageheightnumberupdate);
passageheight.append(input);
//passageheightnumberset();
}
addEventListener("load", passageheightnumberload);
function passageheightnumberset()
{
const v = Number(passageheightnumber.value);
passageheightrange.value = v;
text.passageheight = v;
}
function passageheightnumberupdate()
{
passageheightnumberset();
svgupdate();
}
function passageheightrangeload()
{
const input = document.createElement("input");
input.id = "passageheightrange";
input.max = passageheightnumber.max;
input.min = passageheightnumber.min;
input.type = "range";
input.value = passageheightnumber.value;
input.addEventListener("input", passageheightrangeupdate);
passageheight.append(input);
passageheightrangeset();
}
addEventListener("load", passageheightrangeload);
function passageheightrangeset()
{
const v = Number(passageheightrange.value);
passageheightnumber.value = v;
text.passageheight = v;
}
function passageheightrangeupdate()
{
passageheightrangeset();
svgupdate();
}
function passageheightexactload()
{
const br = document.createElement("br");
passageheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageheightexactupdate);
passageheight.append(button);
}
}
addEventListener("load", passageheightexactload);
function passageheightexactupdate(e)
{
passageheightnumber.value = canvas.height * Number(e.target.value);
passageheightnumberupdate();
}
function passageheightincrementload()
{
const br = document.createElement("br");
passageheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageheightincrementupdate);
passageheight.append(button);
}
}
addEventListener("load", passageheightincrementload);
function passageheightincrementupdate(e)
{
const v = Number(passageheightnumber.value) + Number(e.target.value);
if((passageheightnumber.min <= v) && (v <= passageheightnumber.max))
{
passageheightnumber.value = v;
passageheightnumberupdate();
}
}
function passagexload()
{
const div = document.createElement("div");
div.id = "passagex";
div.innerHTML = "x";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagexload);
function passagexnumberload()
{
const br = document.createElement("br");
passagex.append(br);
const input = document.createElement("input");
input.id = "passagexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 50;
input.addEventListener("input", passagexnumberupdate);
passagex.append(input);
//passagexnumberset();
}
addEventListener("load", passagexnumberload);
function passagexnumberset()
{
const v = Number(passagexnumber.value);
passagexrange.value = v;
text.passagex = v;
}
function passagexnumberupdate()
{
passagexnumberset();
svgupdate();
}
function passagexrangeload()
{
const input = document.createElement("input");
input.id = "passagexrange";
input.max = passagexnumber.max;
input.min = passagexnumber.min;
input.type = "range";
input.value = passagexnumber.value;
input.addEventListener("input", passagexrangeupdate);
passagex.append(input);
passagexrangeset();
}
addEventListener("load", passagexrangeload);
function passagexrangeset()
{
const v = Number(passagexrange.value);
passagexnumber.value = v;
text.passagex = v;
}
function passagexrangeupdate()
{
passagexrangeset();
svgupdate();
}
function passagexexactload()
{
const br = document.createElement("br");
passagex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagexexactupdate);
passagex.append(button);
}
}
addEventListener("load", passagexexactload);
function passagexexactupdate(e)
{
//passagexnumber.value = (canvas.width - text.passagewidth - text.passagepaddingleft - text.passagepaddingright) * Number(e.target.value);
passagexnumber.value = (canvas.width - text.passagewidth) * Number(e.target.value);
passagexnumberupdate();
}
function passagexincrementload()
{
const br = document.createElement("br");
passagex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagexincrementupdate);
passagex.append(button);
}
}
addEventListener("load", passagexincrementload);
function passagexincrementupdate(e)
{
const v = Number(passagexnumber.value) + Number(e.target.value);
if((passagexnumber.min <= v) && (v <= passagexnumber.max))
{
passagexnumber.value = v;
passagexnumberupdate();
}
}
function passageyload()
{
const div = document.createElement("div");
div.id = "passagey";
div.innerHTML = "y";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageyload);
function passageynumberload()
{
const br = document.createElement("br");
passagey.append(br);
const input = document.createElement("input");
input.id = "passageynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 730;
input.addEventListener("input", passageynumberupdate);
passagey.append(input);
//passageynumberset();
}
addEventListener("load", passageynumberload);
function passageynumberset()
{
const v = Number(passageynumber.value);
passageyrange.value = v;
text.passagey = v;
}
function passageynumberupdate()
{
passageynumberset();
svgupdate();
}
function passageyrangeload()
{
const input = document.createElement("input");
input.id = "passageyrange";
input.max = passageynumber.max;
input.min = passageynumber.min;
input.type = "range";
input.value = passageynumber.value;
input.addEventListener("input", passageyrangeupdate);
passagey.append(input);
passageyrangeset();
}
addEventListener("load", passageyrangeload);
function passageyrangeset()
{
const v = Number(passageyrange.value);
passageynumber.value = v;
text.passagey = v;
}
function passageyrangeupdate()
{
passageyrangeset();
svgupdate();
}
function passageyexactload()
{
const br = document.createElement("br");
passagey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageyexactupdate);
passagey.append(button);
}
}
addEventListener("load", passageyexactload);
function passageyexactupdate(e)
{
//passageynumber.value = (canvas.height - text.passageheight - text.passagepaddingtop - text.passagepaddingbottom) * Number(e.target.value);
passageynumber.value = (canvas.height - text.passageheight) * Number(e.target.value);
passageynumberupdate();
}
function passageyincrementload()
{
const br = document.createElement("br");
passagey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageyincrementupdate);
passagey.append(button);
}
}
addEventListener("load", passageyincrementload);
function passageyincrementupdate(e)
{
const v = Number(passageynumber.value) + Number(e.target.value);
if((passageynumber.min <= v) && (v <= passageynumber.max))
{
passageynumber.value = v;
passageynumberupdate();
}
}
function passagebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "passagebackgroundcolor";
div.innerHTML = "background-color";
tabcontentpassage.append(div);
}
addEventListener("load", passagebackgroundcolorload);
function passagebackgroundcolorcolorload()
{
const br = document.createElement("br");
passagebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "passagebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", passagebackgroundcolorcolorupdate);
passagebackgroundcolor.append(input);
//passagebackgroundcolorcolorset();
}
addEventListener("load", passagebackgroundcolorcolorload);
function passagebackgroundcolorcolorset()
{
const c = passagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagebackgroundalphanumber.value;
text.passagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebackgroundcolorcolorupdate()
{
passagebackgroundcolorcolorset();
svgupdate();
}
function passagebackgroundcolorexactload()
{
const br = document.createElement("br");
passagebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebackgroundcolorexactupdate);
passagebackgroundcolor.append(button);
}
}
addEventListener("load", passagebackgroundcolorexactload);
function passagebackgroundcolorexactupdate(e)
{
passagebackgroundcolorcolor.value = e.target.value;
passagebackgroundcolorcolorupdate();
}
function passagebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "passagebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagebackgroundalphaload);
function passagebackgroundalphanumberload()
{
const br = document.createElement("br");
passagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "passagebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0.5;
input.addEventListener("input", passagebackgroundalphanumberupdate);
passagebackgroundalpha.append(input);
//passagebackgroundalphanumberset();
}
addEventListener("load", passagebackgroundalphanumberload);
function passagebackgroundalphanumberset()
{
const c = passagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagebackgroundalphanumber.value;
passagebackgroundalpharange.value = a;
text.passagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebackgroundalphanumberupdate()
{
passagebackgroundalphanumberset();
svgupdate();
}
function passagebackgroundalpharangeload()
{
const input = document.createElement("input");
input.id = "passagebackgroundalpharange";
input.max = passagebackgroundalphanumber.max;
input.min = passagebackgroundalphanumber.min;
input.step = passagebackgroundalphanumber.step;
input.type = "range";
input.value = passagebackgroundalphanumber.value;
input.addEventListener("input", passagebackgroundalpharangeupdate);
passagebackgroundalpha.append(input);
passagebackgroundalpharangeset();
}
addEventListener("load", passagebackgroundalpharangeload);
function passagebackgroundalpharangeset()
{
const c = passagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagebackgroundalpharange.value;
passagebackgroundalphanumber.value = a;
text.passagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebackgroundalpharangeupdate()
{
passagebackgroundalpharangeset();
svgupdate();
}
function passagebackgroundalphaexactload()
{
const br = document.createElement("br");
passagebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebackgroundalphaexactupdate);
passagebackgroundalpha.append(button);
}
}
addEventListener("load", passagebackgroundalphaexactload);
function passagebackgroundalphaexactupdate(e)
{
passagebackgroundalphanumber.value = Number(e.target.value);
passagebackgroundalphanumberupdate();
}
function passagebackgroundalphaincrementload()
{
const br = document.createElement("br");
passagebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebackgroundalphaincrementupdate);
passagebackgroundalpha.append(button);
}
}
addEventListener("load", passagebackgroundalphaincrementload);
function passagebackgroundalphaincrementupdate(e)
{
let v = Number(passagebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((passagebackgroundalphanumber.min <= v) && (v <= passagebackgroundalphanumber.max))
{
passagebackgroundalphanumber.value = v;
passagebackgroundalphanumberupdate();
}
}
function passagebordercolorload()
{
const div = document.createElement("div");
div.id = "passagebordercolor";
div.innerHTML = "border-color";
tabcontentpassage.append(div);
}
addEventListener("load", passagebordercolorload);
function passagebordercolorcolorload()
{
const br = document.createElement("br");
passagebordercolor.append(br);
const input = document.createElement("input");
input.id = "passagebordercolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", passagebordercolorcolorupdate);
passagebordercolor.append(input);
//passagebordercolorcolorset();
}
addEventListener("load", passagebordercolorcolorload);
function passagebordercolorcolorset()
{
const c = passagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passageborderalphanumber.value;
text.passagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebordercolorcolorupdate()
{
passagebordercolorcolorset();
svgupdate();
}
function passagebordercolorexactload()
{
const br = document.createElement("br");
passagebordercolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebordercolorexactupdate);
passagebordercolor.append(button);
}
}
addEventListener("load", passagebordercolorexactload);
function passagebordercolorexactupdate(e)
{
passagebordercolorcolor.value = e.target.value;
passagebordercolorcolorupdate();
}
function passageborderalphaload()
{
const div = document.createElement("div");
div.id = "passageborderalpha";
div.innerHTML = "border-alpha";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageborderalphaload);
function passageborderalphanumberload()
{
const br = document.createElement("br");
passageborderalpha.append(br);
const input = document.createElement("input");
input.id = "passageborderalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", passageborderalphanumberupdate);
passageborderalpha.append(input);
//passageborderalphanumberset();
}
addEventListener("load", passageborderalphanumberload);
function passageborderalphanumberset()
{
const c = passagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passageborderalphanumber.value;
passageborderalpharange.value = a;
text.passagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passageborderalphanumberupdate()
{
passageborderalphanumberset();
svgupdate();
}
function passageborderalpharangeload()
{
const input = document.createElement("input");
input.id = "passageborderalpharange";
input.max = passageborderalphanumber.max;
input.min = passageborderalphanumber.min;
input.step = passageborderalphanumber.step;
input.type = "range";
input.value = passageborderalphanumber.value;
input.addEventListener("input", passageborderalpharangeupdate);
passageborderalpha.append(input);
passageborderalpharangeset();
}
addEventListener("load", passageborderalpharangeload);
function passageborderalpharangeset()
{
const c = passagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passageborderalpharange.value;
passageborderalphanumber.value = a;
text.passagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passageborderalpharangeupdate()
{
passageborderalpharangeset();
svgupdate();
}
function passageborderalphaexactload()
{
const br = document.createElement("br");
passageborderalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderalphaexactupdate);
passageborderalpha.append(button);
}
}
addEventListener("load", passageborderalphaexactload);
function passageborderalphaexactupdate(e)
{
passageborderalphanumber.value = Number(e.target.value);
passageborderalphanumberupdate();
}
function passageborderalphaincrementload()
{
const br = document.createElement("br");
passageborderalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderalphaincrementupdate);
passageborderalpha.append(button);
}
}
addEventListener("load", passageborderalphaincrementload);
function passageborderalphaincrementupdate(e)
{
let v = Number(passageborderalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((passageborderalphanumber.min <= v) && (v <= passageborderalphanumber.max))
{
passageborderalphanumber.value = v;
passageborderalphanumberupdate();
}
}
function passageborderradiusload()
{
const div = document.createElement("div");
div.id = "passageborderradius";
div.innerHTML = "border-radius";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageborderradiusload);
function passageborderradiusnumberload()
{
const br = document.createElement("br");
passageborderradius.append(br);
const input = document.createElement("input");
input.id = "passageborderradiusnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 50;
input.addEventListener("input", passageborderradiusnumberupdate);
passageborderradius.append(input);
//passageborderradiusnumberset();
}
addEventListener("load", passageborderradiusnumberload);
function passageborderradiusnumberset()
{
const v = Number(passageborderradiusnumber.value);
passageborderradiusrange.value = v;
text.passageborderradius = v;
}
function passageborderradiusnumberupdate()
{
passageborderradiusnumberset();
svgupdate();
}
function passageborderradiusrangeload()
{
const input = document.createElement("input");
input.id = "passageborderradiusrange";
input.max = passageborderradiusnumber.max;
input.min = passageborderradiusnumber.min;
input.type = "range";
input.value = passageborderradiusnumber.value;
input.addEventListener("input", passageborderradiusrangeupdate);
passageborderradius.append(input);
passageborderradiusrangeset();
}
addEventListener("load", passageborderradiusrangeload);
function passageborderradiusrangeset()
{
const v = Number(passageborderradiusrange.value);
passageborderradiusnumber.value = v;
text.passageborderradius = v;
}
function passageborderradiusrangeupdate()
{
passageborderradiusrangeset();
svgupdate();
}
function passageborderradiusexactload()
{
const br = document.createElement("br");
passageborderradius.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderradiusexactupdate);
passageborderradius.append(button);
}
}
addEventListener("load", passageborderradiusexactload);
function passageborderradiusexactupdate(e)
{
passageborderradiusnumber.value = Number(e.target.value);
passageborderradiusnumberupdate();
}
function passageborderradiusincrementload()
{
const br = document.createElement("br");
passageborderradius.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderradiusincrementupdate);
passageborderradius.append(button);
}
}
addEventListener("load", passageborderradiusincrementload);
function passageborderradiusincrementupdate(e)
{
const v = Number(passageborderradiusnumber.value) + Number(e.target.value);
if((passageborderradiusnumber.min <= v) && (v <= passageborderradiusnumber.max))
{
passageborderradiusnumber.value = v;
passageborderradiusnumberupdate();
}
}
function passageborderstyleload()
{
const div = document.createElement("div");
div.id = "passageborderstyle";
div.innerHTML = "border-style";
tabcontentpassage.append(div);
}
addEventListener("load", passageborderstyleload);
function passageborderstyleselectload()
{
const br = document.createElement("br");
passageborderstyle.append(br);
const select = document.createElement("select");
select.id = "passageborderstyleselect";
select.addEventListener("input", passageborderstyleselectupdate);
passageborderstyle.append(select);
for(const value of borderstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
//select.value = borderstylearray[8];
passageborderstyleselectset();
}
addEventListener("load", passageborderstyleselectload);
function passageborderstyleselectset()
{
text.passageborderstyle = passageborderstyleselect.value;
}
function passageborderstyleselectupdate()
{
passageborderstyleselectset();
svgupdate();
}
function passageborderwidthload()
{
const div = document.createElement("div");
div.id = "passageborderwidth";
div.innerHTML = "border-width";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageborderwidthload);
function passageborderwidthnumberload()
{
const br = document.createElement("br");
passageborderwidth.append(br);
const input = document.createElement("input");
input.id = "passageborderwidthnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 25;
input.addEventListener("input", passageborderwidthnumberupdate);
passageborderwidth.append(input);
//passageborderwidthnumberset();
}
addEventListener("load", passageborderwidthnumberload);
function passageborderwidthnumberset()
{
const v = Number(passageborderwidthnumber.value);
passageborderwidthrange.value = v;
text.passageborderwidth = v;
}
function passageborderwidthnumberupdate()
{
passageborderwidthnumberset();
svgupdate();
}
function passageborderwidthrangeload()
{
const input = document.createElement("input");
input.id = "passageborderwidthrange";
input.max = passageborderwidthnumber.max;
input.min = passageborderwidthnumber.min;
input.type = "range";
input.value = passageborderwidthnumber.value;
input.addEventListener("input", passageborderwidthrangeupdate);
passageborderwidth.append(input);
passageborderwidthrangeset();
}
addEventListener("load", passageborderwidthrangeload);
function passageborderwidthrangeset()
{
const v = Number(passageborderwidthrange.value);
passageborderwidthnumber.value = v;
text.passageborderwidth = v;
}
function passageborderwidthrangeupdate()
{
passageborderwidthrangeset();
svgupdate();
}
function passageborderwidthexactload()
{
const br = document.createElement("br");
passageborderwidth.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderwidthexactupdate);
passageborderwidth.append(button);
}
}
addEventListener("load", passageborderwidthexactload);
function passageborderwidthexactupdate(e)
{
passageborderwidthnumber.value = Number(e.target.value);
passageborderwidthnumberupdate();
}
function passageborderwidthincrementload()
{
const br = document.createElement("br");
passageborderwidth.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderwidthincrementupdate);
passageborderwidth.append(button);
}
}
addEventListener("load", passageborderwidthincrementload);
function passageborderwidthincrementupdate(e)
{
const v = Number(passageborderwidthnumber.value) + Number(e.target.value);
if((passageborderwidthnumber.min <= v) && (v <= passageborderwidthnumber.max))
{
passageborderwidthnumber.value = v;
passageborderwidthnumberupdate();
}
}
function passagehorizontalload()
{
const div = document.createElement("div");
div.id = "passagehorizontal";
div.innerHTML = "horizontal";
tabcontentpassage.append(div);
}
addEventListener("load", passagehorizontalload);
function passagehorizontalselectload()
{
const br = document.createElement("br");
passagehorizontal.append(br);
const select = document.createElement("select");
select.id = "passagehorizontalselect";
select.addEventListener("input", passagehorizontalselectupdate);
passagehorizontal.append(select);
for(const value of horizontalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = horizontalarray[1];
passagehorizontalselectset();
}
addEventListener("load", passagehorizontalselectload);
function passagehorizontalselectset()
{
text.passagehorizontal = passagehorizontalselect.value;
}
function passagehorizontalselectupdate()
{
passagehorizontalselectset();
svgupdate();
}
function passageverticalload()
{
const div = document.createElement("div");
div.id = "passagevertical";
div.innerHTML = "vertical";
tabcontentpassage.append(div);
}
addEventListener("load", passageverticalload);
function passageverticalselectload()
{
const br = document.createElement("br");
passagevertical.append(br);
const select = document.createElement("select");
select.id = "passageverticalselect";
select.addEventListener("input", passageverticalselectupdate);
passagevertical.append(select);
for(const value of verticalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = verticalarray[1];
passageverticalselectset();
}
addEventListener("load", passageverticalselectload);
function passageverticalselectset()
{
text.passagevertical = passageverticalselect.value;
}
function passageverticalselectupdate()
{
passageverticalselectset();
svgupdate();
}
function passagewritingmodeload()
{
const div = document.createElement("div");
div.id = "passagewritingmode";
div.innerHTML = "writing-mode";
tabcontentpassage.append(div);
}
addEventListener("load", passagewritingmodeload);
function passagewritingmodeselectload()
{
const br = document.createElement("br");
passagewritingmode.append(br);
const select = document.createElement("select");
select.id = "passagewritingmodeselect";
select.addEventListener("input", passagewritingmodeselectupdate);
passagewritingmode.append(select);
for(const value of writingmodearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagewritingmodeselectset();
}
addEventListener("load", passagewritingmodeselectload);
function passagewritingmodeselectset()
{
text.passagewritingmode = passagewritingmodeselect.value;
}
function passagewritingmodeselectupdate()
{
passagewritingmodeselectset();
svgupdate();
}
function passagefontfamilyload()
{
const div = document.createElement("div");
div.id = "passagefontfamily";
div.innerHTML = "font-family";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontfamilyload);
function passagefontfamilyselectload()
{
const br = document.createElement("br");
passagefontfamily.append(br);
const select = document.createElement("select");
select.id = "passagefontfamilyselect";
select.addEventListener("input", passagefontfamilyselectupdate);
passagefontfamily.append(select);
for(const value of fontfamilyarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontfamilyselectset();
}
addEventListener("load", passagefontfamilyselectload);
function passagefontfamilyselectset()
{
text.passagefontfamily = passagefontfamilyselect.value;
}
function passagefontfamilyselectupdate()
{
passagefontfamilyselectset();
svgupdate();
}
function passagefontsizeload()
{
const div = document.createElement("div");
div.id = "passagefontsize";
div.innerHTML = "font-size";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontsizeload);
function passagefontsizenumberload()
{
const br = document.createElement("br");
passagefontsize.append(br);
const input = document.createElement("input");
input.id = "passagefontsizenumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 60;
input.addEventListener("input", passagefontsizenumberupdate);
passagefontsize.append(input);
//passagefontsizenumberset();
}
addEventListener("load", passagefontsizenumberload);
function passagefontsizenumberset()
{
const v = Number(passagefontsizenumber.value);
passagefontsizerange.value = v;
text.passagefontsize = v;
}
function passagefontsizenumberupdate()
{
passagefontsizenumberset();
svgupdate();
}
function passagefontsizerangeload()
{
const input = document.createElement("input");
input.id = "passagefontsizerange";
input.max = passagefontsizenumber.max;
input.min = passagefontsizenumber.min;
input.type = "range";
input.value = passagefontsizenumber.value;
input.addEventListener("input", passagefontsizerangeupdate);
passagefontsize.append(input);
passagefontsizerangeset();
}
addEventListener("load", passagefontsizerangeload);
function passagefontsizerangeset()
{
const v = Number(passagefontsizerange.value);
passagefontsizenumber.value = v;
text.passagefontsize = v;
}
function passagefontsizerangeupdate()
{
passagefontsizerangeset();
svgupdate();
}
function passagefontsizeexactload()
{
const br = document.createElement("br");
passagefontsize.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefontsizeexactupdate);
passagefontsize.append(button);
}
}
addEventListener("load", passagefontsizeexactload);
function passagefontsizeexactupdate(e)
{
passagefontsizenumber.value = Number(e.target.value);
passagefontsizenumberupdate();
}
function passagefontsizeincrementload()
{
const br = document.createElement("br");
passagefontsize.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefontsizeincrementupdate);
passagefontsize.append(button);
}
}
addEventListener("load", passagefontsizeincrementload);
function passagefontsizeincrementupdate(e)
{
const v = Number(passagefontsizenumber.value) + Number(e.target.value);
if((passagefontsizenumber.min <= v) && (v <= passagefontsizenumber.max))
{
passagefontsizenumber.value = v;
passagefontsizenumberupdate();
}
}
/*
function passagefontsizefitload()
{
const button = document.createElement("button");
button.innerHTML = "fit";
button.addEventListener("click", passagefontsizefitupdate);
passagefontsize.append(button);
}
addEventListener("load", passagefontsizefitload);
function passagefontsizefitupdate()
{
const t = document.createElement("div");
passagefontsize.append(t);
t.innerHTML = text.bookname;
t.style.fontSize = `${passagefontsizenumber.value}px`;
const h1 = text.passagewidth;
const h2 = text.passageheight;
const h3 = t.offsetWidth;
const h4 = t.offsetHeight;
const h5 = passagefontsizenumber.value;
//const h4 = t.offsetParent;//t.style.fontSize;
//const h5 = t.clientHeight;//text.style.height;
//const h6 = text.height;
//const h7 = text.getBoundingClientRect().height;
//const h8 = text.style.lineHeight;
//const h9 = canvas.getBoundingClientRect().height;
console.log(h1, h2, h3, h4, h5);
//t.hidden = true;
if(h2 < h4)
{
passagefontsizenumber.value -= 1;
passagefit();
}
passagefontsizenumberupdate();
}
//*/
function passagefontstyleload()
{
const div = document.createElement("div");
div.id = "passagefontstyle";
div.innerHTML = "font-style";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontstyleload);
function passagefontstyleselectload()
{
const br = document.createElement("br");
passagefontstyle.append(br);
const select = document.createElement("select");
select.id = "passagefontstyleselect";
select.addEventListener("input", passagefontstyleselectupdate);
passagefontstyle.append(select);
for(const value of fontstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontstyleselectset();
}
addEventListener("load", passagefontstyleselectload);
function passagefontstyleselectset()
{
text.passagefontstyle = passagefontstyleselect.value;
}
function passagefontstyleselectupdate()
{
passagefontstyleselectset();
svgupdate();
}
function passagefontvariantload()
{
const div = document.createElement("div");
div.id = "passagefontvariant";
div.innerHTML = "font-variant";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontvariantload);
function passagefontvariantselectload()
{
const br = document.createElement("br");
passagefontvariant.append(br);
const select = document.createElement("select");
select.id = "passagefontvariantselect";
select.addEventListener("input", passagefontvariantselectupdate);
passagefontvariant.append(select);
for(const value of fontvariantarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontvariantselectset();
}
addEventListener("load", passagefontvariantselectload);
function passagefontvariantselectset()
{
text.passagefontvariant = passagefontvariantselect.value;
}
function passagefontvariantselectupdate()
{
passagefontvariantselectset();
svgupdate();
}
function passagefontweightload()
{
const div = document.createElement("div");
div.id = "passagefontweight";
div.innerHTML = "font-weight";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontweightload);
function passagefontweightselectload()
{
const br = document.createElement("br");
passagefontweight.append(br);
const select = document.createElement("select");
select.id = "passagefontweightselect";
select.addEventListener("input", passagefontweightselectupdate);
passagefontweight.append(select);
for(const value of fontweightarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontweightselectset();
}
addEventListener("load", passagefontweightselectload);
function passagefontweightselectset()
{
text.passagefontweight = passagefontweightselect.value;
}
function passagefontweightselectupdate()
{
passagefontweightselectset();
svgupdate();
}
function passagecolorload()
{
const div = document.createElement("div");
div.id = "passagecolor";
div.innerHTML = "color";
tabcontentpassage.append(div);
}
addEventListener("load", passagecolorload);
function passagecolorcolorload()
{
const br = document.createElement("br");
passagecolor.append(br);
const input = document.createElement("input");
input.id = "passagecolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", passagecolorcolorupdate);
passagecolor.append(input);
//passagecolorcolorset();
}
addEventListener("load", passagecolorcolorload);
function passagecolorcolorset()
{
const c = passagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagealphanumber.value;
text.passagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagecolorcolorupdate()
{
passagecolorcolorset();
svgupdate();
}
function passagecolorexactload()
{
const br = document.createElement("br");
passagecolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagecolorexactupdate);
passagecolor.append(button);
}
}
addEventListener("load", passagecolorexactload);
function passagecolorexactupdate(e)
{
passagecolorcolor.value = e.target.value;
passagecolorcolorupdate();
}
function passagealphaload()
{
const div = document.createElement("div");
div.id = "passagealpha";
div.innerHTML = "alpha";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagealphaload);
function passagealphanumberload()
{
const br = document.createElement("br");
passagealpha.append(br);
const input = document.createElement("input");
input.id = "passagealphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", passagealphanumberupdate);
passagealpha.append(input);
//passagealphanumberset();
}
addEventListener("load", passagealphanumberload);
function passagealphanumberset()
{
const c = passagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagealphanumber.value;
passagealpharange.value = a;
text.passagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagealphanumberupdate()
{
passagealphanumberset();
svgupdate();
}
function passagealpharangeload()
{
const input = document.createElement("input");
input.id = "passagealpharange";
input.max = passagealphanumber.max;
input.min = passagealphanumber.min;
input.step = passagealphanumber.step;
input.type = "range";
input.value = passagealphanumber.value;
input.addEventListener("input", passagealpharangeupdate);
passagealpha.append(input);
passagealpharangeset();
}
addEventListener("load", passagealpharangeload);
function passagealpharangeset()
{
const c = passagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagealpharange.value;
passagealphanumber.value = a;
text.passagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagealpharangeupdate()
{
passagealpharangeset();
svgupdate();
}
function passagealphaexactload()
{
const br = document.createElement("br");
passagealpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagealphaexactupdate);
passagealpha.append(button);
}
}
addEventListener("load", passagealphaexactload);
function passagealphaexactupdate(e)
{
passagealphanumber.value = Number(e.target.value);
passagealphanumberupdate();
}
function passagealphaincrementload()
{
const br = document.createElement("br");
passagealpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagealphaincrementupdate);
passagealpha.append(button);
}
}
addEventListener("load", passagealphaincrementload);
function passagealphaincrementupdate(e)
{
let v = Number(passagealphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((passagealphanumber.min <= v) && (v <= passagealphanumber.max))
{
passagealphanumber.value = v;
passagealphanumberupdate();
}
}
/*leftoff
function passagefilterblurload()
{
const div = document.createElement("div");
div.id = "passagefilterblur";
div.innerHTML = "filter-blur";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterblurload);
function passagefilterblurnumberload()
{
const br = document.createElement("br");
passagefilterblur.append(br);
const input = document.createElement("input");
input.id = "passagefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefilterblurnumberupdate);
passagefilterblur.append(input);
//passagefilterblurnumberset();
}
addEventListener("load", passagefilterblurnumberload);
function passagefilterblurnumberset()
{
const v = passagefilterblurnumber.value;
passagefilterblurrange.value = v;
text.passagebackdropfilterblur = v;
}
function passagefilterblurnumberupdate()
{
passagefilterblurnumberset();
svgupdate();
}
function passagefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "passagefilterblurrange";
input.max = passagefilterblurnumber.max;
input.min = passagefilterblurnumber.min;
input.step = passagefilterblurnumber.step;
input.type = "range";
input.value = passagefilterblurnumber.value;
input.addEventListener("input", passagefilterblurrangeupdate);
passagefilterblur.append(input);
passagefilterblurrangeset();
}
addEventListener("load", passagefilterblurrangeload);
function passagefilterblurrangeset()
{
const v = passagefilterblurrange.value;
passagefilterblurnumber.value = v;
text.passagebackdropfilterblur = v;
}
function passagefilterblurrangeupdate()
{
passagefilterblurrangeset();
svgupdate();
}
function passagefilterblurexactload()
{
const br = document.createElement("br");
passagefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterblurexactupdate);
passagefilterblur.append(button);
}
}
addEventListener("load", passagefilterblurexactload);
function passagefilterblurexactupdate(e)
{
passagefilterblurnumber.value = Number(e.target.value);
passagefilterblurnumberupdate();
}
function passagefilterblurincrementload()
{
const br = document.createElement("br");
passagefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterblurincrementupdate);
passagefilterblur.append(button);
}
}
addEventListener("load", passagefilterblurincrementload);
function passagefilterblurincrementupdate(e)
{
const v = Number(passagefilterblurnumber.value) + Number(e.target.value);
if((passagefilterblurnumber.min <= v) && (v <= passagefilterblurnumber.max))
{
passagefilterblurnumber.value = v;
passagefilterblurnumberupdate();
}
}
function passagefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "passagefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterbrightnessload);
function passagefilterbrightnessnumberload()
{
const br = document.createElement("br");
passagefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "passagefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", passagefilterbrightnessnumberupdate);
passagefilterbrightness.append(input);
//passagefilterbrightnessnumberset();
}
addEventListener("load", passagefilterbrightnessnumberload);
function passagefilterbrightnessnumberset()
{
const v = passagefilterbrightnessnumber.value;
passagefilterbrightnessrange.value = v;
text.passagebackdropfilterbrightness = v;
}
function passagefilterbrightnessnumberupdate()
{
passagefilterbrightnessnumberset();
svgupdate();
}
function passagefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "passagefilterbrightnessrange";
input.max = passagefilterbrightnessnumber.max;
input.min = passagefilterbrightnessnumber.min;
input.step = passagefilterbrightnessnumber.step;
input.type = "range";
input.value = passagefilterbrightnessnumber.value;
input.addEventListener("input", passagefilterbrightnessrangeupdate);
passagefilterbrightness.append(input);
passagefilterbrightnessrangeset();
}
addEventListener("load", passagefilterbrightnessrangeload);
function passagefilterbrightnessrangeset()
{
const v = passagefilterbrightnessrange.value;
passagefilterbrightnessnumber.value = v;
text.passagebackdropfilterbrightness = v;
}
function passagefilterbrightnessrangeupdate()
{
passagefilterbrightnessrangeset();
svgupdate();
}
function passagefilterbrightnessexactload()
{
const br = document.createElement("br");
passagefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterbrightnessexactupdate);
passagefilterbrightness.append(button);
}
}
addEventListener("load", passagefilterbrightnessexactload);
function passagefilterbrightnessexactupdate(e)
{
passagefilterbrightnessnumber.value = Number(e.target.value);
passagefilterbrightnessnumberupdate();
}
function passagefilterbrightnessincrementload()
{
const br = document.createElement("br");
passagefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterbrightnessincrementupdate);
passagefilterbrightness.append(button);
}
}
addEventListener("load", passagefilterbrightnessincrementload);
function passagefilterbrightnessincrementupdate(e)
{
const v = Number(passagefilterbrightnessnumber.value) + Number(e.target.value);
if((passagefilterbrightnessnumber.min <= v) && (v <= passagefilterbrightnessnumber.max))
{
passagefilterbrightnessnumber.value = v;
passagefilterbrightnessnumberupdate();
}
}
function passagefiltercontrastload()
{
const div = document.createElement("div");
div.id = "passagefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltercontrastload);
function passagefiltercontrastnumberload()
{
const br = document.createElement("br");
passagefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "passagefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", passagefiltercontrastnumberupdate);
passagefiltercontrast.append(input);
//passagefiltercontrastnumberset();
}
addEventListener("load", passagefiltercontrastnumberload);
function passagefiltercontrastnumberset()
{
const v = passagefiltercontrastnumber.value;
passagefiltercontrastrange.value = v;
text.passagebackdropfiltercontrast = v;
}
function passagefiltercontrastnumberupdate()
{
passagefiltercontrastnumberset();
svgupdate();
}
function passagefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "passagefiltercontrastrange";
input.max = passagefiltercontrastnumber.max;
input.min = passagefiltercontrastnumber.min;
input.step = passagefiltercontrastnumber.step;
input.type = "range";
input.value = passagefiltercontrastnumber.value;
input.addEventListener("input", passagefiltercontrastrangeupdate);
passagefiltercontrast.append(input);
passagefiltercontrastrangeset();
}
addEventListener("load", passagefiltercontrastrangeload);
function passagefiltercontrastrangeset()
{
const v = passagefiltercontrastrange.value;
passagefiltercontrastnumber.value = v;
text.passagebackdropfiltercontrast = v;
}
function passagefiltercontrastrangeupdate()
{
passagefiltercontrastrangeset();
svgupdate();
}
function passagefiltercontrastexactload()
{
const br = document.createElement("br");
passagefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltercontrastexactupdate);
passagefiltercontrast.append(button);
}
}
addEventListener("load", passagefiltercontrastexactload);
function passagefiltercontrastexactupdate(e)
{
passagefiltercontrastnumber.value = Number(e.target.value);
passagefiltercontrastnumberupdate();
}
function passagefiltercontrastincrementload()
{
const br = document.createElement("br");
passagefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltercontrastincrementupdate);
passagefiltercontrast.append(button);
}
}
addEventListener("load", passagefiltercontrastincrementload);
function passagefiltercontrastincrementupdate(e)
{
const v = Number(passagefiltercontrastnumber.value) + Number(e.target.value);
if((passagefiltercontrastnumber.min <= v) && (v <= passagefiltercontrastnumber.max))
{
passagefiltercontrastnumber.value = v;
passagefiltercontrastnumberupdate();
}
}
function passagefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "passagefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltergrayscaleload);
function passagefiltergrayscalenumberload()
{
const br = document.createElement("br");
passagefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "passagefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefiltergrayscalenumberupdate);
passagefiltergrayscale.append(input);
//passagefiltergrayscalenumberset();
}
addEventListener("load", passagefiltergrayscalenumberload);
function passagefiltergrayscalenumberset()
{
const v = passagefiltergrayscalenumber.value;
passagefiltergrayscalerange.value = v;
text.passagebackdropfiltergrayscale = v;
}
function passagefiltergrayscalenumberupdate()
{
passagefiltergrayscalenumberset();
svgupdate();
}
function passagefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "passagefiltergrayscalerange";
input.max = passagefiltergrayscalenumber.max;
input.min = passagefiltergrayscalenumber.min;
input.step = passagefiltergrayscalenumber.step;
input.type = "range";
input.value = passagefiltergrayscalenumber.value;
input.addEventListener("input", passagefiltergrayscalerangeupdate);
passagefiltergrayscale.append(input);
passagefiltergrayscalerangeset();
}
addEventListener("load", passagefiltergrayscalerangeload);
function passagefiltergrayscalerangeset()
{
const v = passagefiltergrayscalerange.value;
passagefiltergrayscalenumber.value = v;
text.passagebackdropfiltergrayscale = v;
}
function passagefiltergrayscalerangeupdate()
{
passagefiltergrayscalerangeset();
svgupdate();
}
function passagefiltergrayscaleexactload()
{
const br = document.createElement("br");
passagefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltergrayscaleexactupdate);
passagefiltergrayscale.append(button);
}
}
addEventListener("load", passagefiltergrayscaleexactload);
function passagefiltergrayscaleexactupdate(e)
{
passagefiltergrayscalenumber.value = Number(e.target.value);
passagefiltergrayscalenumberupdate();
}
function passagefiltergrayscaleincrementload()
{
const br = document.createElement("br");
passagefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltergrayscaleincrementupdate);
passagefiltergrayscale.append(button);
}
}
addEventListener("load", passagefiltergrayscaleincrementload);
function passagefiltergrayscaleincrementupdate(e)
{
const v = Number(passagefiltergrayscalenumber.value) + Number(e.target.value);
if((passagefiltergrayscalenumber.min <= v) && (v <= passagefiltergrayscalenumber.max))
{
passagefiltergrayscalenumber.value = v;
passagefiltergrayscalenumberupdate();
}
}
function passagefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "passagefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterhuerotateload);
function passagefilterhuerotatenumberload()
{
const br = document.createElement("br");
passagefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "passagefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefilterhuerotatenumberupdate);
passagefilterhuerotate.append(input);
//passagefilterhuerotatenumberset();
}
addEventListener("load", passagefilterhuerotatenumberload);
function passagefilterhuerotatenumberset()
{
const v = passagefilterhuerotatenumber.value;
passagefilterhuerotaterange.value = v;
text.passagebackdropfilterhuerotate = v;
}
function passagefilterhuerotatenumberupdate()
{
passagefilterhuerotatenumberset();
svgupdate();
}
function passagefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "passagefilterhuerotaterange";
input.max = passagefilterhuerotatenumber.max;
input.min = passagefilterhuerotatenumber.min;
input.step = passagefilterhuerotatenumber.step;
input.type = "range";
input.value = passagefilterhuerotatenumber.value;
input.addEventListener("input", passagefilterhuerotaterangeupdate);
passagefilterhuerotate.append(input);
passagefilterhuerotaterangeset();
}
addEventListener("load", passagefilterhuerotaterangeload);
function passagefilterhuerotaterangeset()
{
const v = passagefilterhuerotaterange.value;
passagefilterhuerotatenumber.value = v;
text.passagebackdropfilterhuerotate = v;
}
function passagefilterhuerotaterangeupdate()
{
passagefilterhuerotaterangeset();
svgupdate();
}
function passagefilterhuerotateexactload()
{
const br = document.createElement("br");
passagefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterhuerotateexactupdate);
passagefilterhuerotate.append(button);
}
}
addEventListener("load", passagefilterhuerotateexactload);
function passagefilterhuerotateexactupdate(e)
{
passagefilterhuerotatenumber.value = Number(e.target.value);
passagefilterhuerotatenumberupdate();
}
function passagefilterhuerotateincrementload()
{
const br = document.createElement("br");
passagefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterhuerotateincrementupdate);
passagefilterhuerotate.append(button);
}
}
addEventListener("load", passagefilterhuerotateincrementload);
function passagefilterhuerotateincrementupdate(e)
{
const v = Number(passagefilterhuerotatenumber.value) + Number(e.target.value);
if((passagefilterhuerotatenumber.min <= v) && (v <= passagefilterhuerotatenumber.max))
{
passagefilterhuerotatenumber.value = v;
passagefilterhuerotatenumberupdate();
}
}
function passagefilterinvertload()
{
const div = document.createElement("div");
div.id = "passagefilterinvert";
div.innerHTML = "filter-invert";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterinvertload);
function passagefilterinvertnumberload()
{
const br = document.createElement("br");
passagefilterinvert.append(br);
const input = document.createElement("input");
input.id = "passagefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefilterinvertnumberupdate);
passagefilterinvert.append(input);
//passagefilterinvertnumberset();
}
addEventListener("load", passagefilterinvertnumberload);
function passagefilterinvertnumberset()
{
const v = passagefilterinvertnumber.value;
passagefilterinvertrange.value = v;
text.passagebackdropfilterinvert = v;
}
function passagefilterinvertnumberupdate()
{
passagefilterinvertnumberset();
svgupdate();
}
function passagefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "passagefilterinvertrange";
input.max = passagefilterinvertnumber.max;
input.min = passagefilterinvertnumber.min;
input.step = passagefilterinvertnumber.step;
input.type = "range";
input.value = passagefilterinvertnumber.value;
input.addEventListener("input", passagefilterinvertrangeupdate);
passagefilterinvert.append(input);
passagefilterinvertrangeset();
}
addEventListener("load", passagefilterinvertrangeload);
function passagefilterinvertrangeset()
{
const v = passagefilterinvertrange.value;
passagefilterinvertnumber.value = v;
text.passagebackdropfilterinvert = v;
}
function passagefilterinvertrangeupdate()
{
passagefilterinvertrangeset();
svgupdate();
}
function passagefilterinvertexactload()
{
const br = document.createElement("br");
passagefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterinvertexactupdate);
passagefilterinvert.append(button);
}
}
addEventListener("load", passagefilterinvertexactload);
function passagefilterinvertexactupdate(e)
{
passagefilterinvertnumber.value = Number(e.target.value);
passagefilterinvertnumberupdate();
}
function passagefilterinvertincrementload()
{
const br = document.createElement("br");
passagefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterinvertincrementupdate);
passagefilterinvert.append(button);
}
}
addEventListener("load", passagefilterinvertincrementload);
function passagefilterinvertincrementupdate(e)
{
const v = Number(passagefilterinvertnumber.value) + Number(e.target.value);
if((passagefilterinvertnumber.min <= v) && (v <= passagefilterinvertnumber.max))
{
passagefilterinvertnumber.value = v;
passagefilterinvertnumberupdate();
}
}
function passagefiltersaturateload()
{
const div = document.createElement("div");
div.id = "passagefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltersaturateload);
function passagefiltersaturatenumberload()
{
const br = document.createElement("br");
passagefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "passagefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", passagefiltersaturatenumberupdate);
passagefiltersaturate.append(input);
//passagefiltersaturatenumberset();
}
addEventListener("load", passagefiltersaturatenumberload);
function passagefiltersaturatenumberset()
{
const v = passagefiltersaturatenumber.value;
passagefiltersaturaterange.value = v;
text.passagebackdropfiltersaturate = v;
}
function passagefiltersaturatenumberupdate()
{
passagefiltersaturatenumberset();
svgupdate();
}
function passagefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "passagefiltersaturaterange";
input.max = passagefiltersaturatenumber.max;
input.min = passagefiltersaturatenumber.min;
input.step = passagefiltersaturatenumber.step;
input.type = "range";
input.value = passagefiltersaturatenumber.value;
input.addEventListener("input", passagefiltersaturaterangeupdate);
passagefiltersaturate.append(input);
passagefiltersaturaterangeset();
}
addEventListener("load", passagefiltersaturaterangeload);
function passagefiltersaturaterangeset()
{
const v = passagefiltersaturaterange.value;
passagefiltersaturatenumber.value = v;
text.passagebackdropfiltersaturate = v;
}
function passagefiltersaturaterangeupdate()
{
passagefiltersaturaterangeset();
svgupdate();
}
function passagefiltersaturateexactload()
{
const br = document.createElement("br");
passagefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersaturateexactupdate);
passagefiltersaturate.append(button);
}
}
addEventListener("load", passagefiltersaturateexactload);
function passagefiltersaturateexactupdate(e)
{
passagefiltersaturatenumber.value = Number(e.target.value);
passagefiltersaturatenumberupdate();
}
function passagefiltersaturateincrementload()
{
const br = document.createElement("br");
passagefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersaturateincrementupdate);
passagefiltersaturate.append(button);
}
}
addEventListener("load", passagefiltersaturateincrementload);
function passagefiltersaturateincrementupdate(e)
{
const v = Number(passagefiltersaturatenumber.value) + Number(e.target.value);
if((passagefiltersaturatenumber.min <= v) && (v <= passagefiltersaturatenumber.max))
{
passagefiltersaturatenumber.value = v;
passagefiltersaturatenumberupdate();
}
}
function passagefiltersepiaload()
{
const div = document.createElement("div");
div.id = "passagefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltersepiaload);
function passagefiltersepianumberload()
{
const br = document.createElement("br");
passagefiltersepia.append(br);
const input = document.createElement("input");
input.id = "passagefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefiltersepianumberupdate);
passagefiltersepia.append(input);
//passagefiltersepianumberset();
}
addEventListener("load", passagefiltersepianumberload);
function passagefiltersepianumberset()
{
const v = passagefiltersepianumber.value;
passagefiltersepiarange.value = v;
text.passagebackdropfiltersepia = v;
}
function passagefiltersepianumberupdate()
{
passagefiltersepianumberset();
svgupdate();
}
function passagefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "passagefiltersepiarange";
input.max = passagefiltersepianumber.max;
input.min = passagefiltersepianumber.min;
input.step = passagefiltersepianumber.step;
input.type = "range";
input.value = passagefiltersepianumber.value;
input.addEventListener("input", passagefiltersepiarangeupdate);
passagefiltersepia.append(input);
passagefiltersepiarangeset();
}
addEventListener("load", passagefiltersepiarangeload);
function passagefiltersepiarangeset()
{
const v = passagefiltersepiarange.value;
passagefiltersepianumber.value = v;
text.passagebackdropfiltersepia = v;
}
function passagefiltersepiarangeupdate()
{
passagefiltersepiarangeset();
svgupdate();
}
function passagefiltersepiaexactload()
{
const br = document.createElement("br");
passagefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersepiaexactupdate);
passagefiltersepia.append(button);
}
}
addEventListener("load", passagefiltersepiaexactload);
function passagefiltersepiaexactupdate(e)
{
passagefiltersepianumber.value = Number(e.target.value);
passagefiltersepianumberupdate();
}
function passagefiltersepiaincrementload()
{
const br = document.createElement("br");
passagefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersepiaincrementupdate);
passagefiltersepia.append(button);
}
}
addEventListener("load", passagefiltersepiaincrementload);
function passagefiltersepiaincrementupdate(e)
{
const v = Number(passagefiltersepianumber.value) + Number(e.target.value);
if((passagefiltersepianumber.min <= v) && (v <= passagefiltersepianumber.max))
{
passagefiltersepianumber.value = v;
passagefiltersepianumberupdate();
}
}
//*/
/*
function passagemargintopload()
{
const div = document.createElement("div");
div.id = "passagemargintop";
div.innerHTML = "margin-top";
tabcontentpassage.append(div);
}
addEventListener("load", passagemargintopload);
function passagemargintopnumberload()
{
const br = document.createElement("br");
passagemargintop.append(br);
const input = document.createElement("input");
input.id = "passagemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemargintopnumberupdate);
passagemargintop.append(input);
//passagemargintopnumberset();
}
addEventListener("load", passagemargintopnumberload);
function passagemargintopnumberset()
{
const v = Number(passagemargintopnumber.value);
passagemargintoprange.value = v;
text.passagemargintop = v;
}
function passagemargintopnumberupdate()
{
passagemargintopnumberset();
svgupdate();
}
function passagemargintoprangeload()
{
const input = document.createElement("input");
input.id = "passagemargintoprange";
input.max = passagemargintopnumber.max;
input.min = passagemargintopnumber.min;
input.type = "range";
input.value = passagemargintopnumber.value;
input.addEventListener("input", passagemargintoprangeupdate);
passagemargintop.append(input);
passagemargintoprangeset();
}
addEventListener("load", passagemargintoprangeload);
function passagemargintoprangeset()
{
const v = Number(passagemargintoprange.value);
passagemargintopnumber.value = v;
text.passagemargintop = v;
}
function passagemargintoprangeupdate()
{
passagemargintoprangeset();
svgupdate();
}
function passagemarginbottomload()
{
const div = document.createElement("div");
div.id = "passagemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentpassage.append(div);
}
addEventListener("load", passagemarginbottomload);
function passagemarginbottomnumberload()
{
const br = document.createElement("br");
passagemarginbottom.append(br);
const input = document.createElement("input");
input.id = "passagemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemarginbottomnumberupdate);
passagemarginbottom.append(input);
//passagemarginbottomnumberset();
}
addEventListener("load", passagemarginbottomnumberload);
function passagemarginbottomnumberset()
{
const v = Number(passagemarginbottomnumber.value);
passagemarginbottomrange.value = v;
text.passagemarginbottom = v;
}
function passagemarginbottomnumberupdate()
{
passagemarginbottomnumberset();
svgupdate();
}
function passagemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "passagemarginbottomrange";
input.max = passagemarginbottomnumber.max;
input.min = passagemarginbottomnumber.min;
input.type = "range";
input.value = passagemarginbottomnumber.value;
input.addEventListener("input", passagemarginbottomrangeupdate);
passagemarginbottom.append(input);
passagemarginbottomrangeset();
}
addEventListener("load", passagemarginbottomrangeload);
function passagemarginbottomrangeset()
{
const v = Number(passagemarginbottomrange.value);
passagemarginbottomnumber.value = v;
text.passagemarginbottom = v;
}
function passagemarginbottomrangeupdate()
{
passagemarginbottomrangeset();
svgupdate();
}
function passagemarginleftload()
{
const div = document.createElement("div");
div.id = "passagemarginleft";
div.innerHTML = "margin-left";
tabcontentpassage.append(div);
}
addEventListener("load", passagemarginleftload);
function passagemarginleftnumberload()
{
const br = document.createElement("br");
passagemarginleft.append(br);
const input = document.createElement("input");
input.id = "passagemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemarginleftnumberupdate);
passagemarginleft.append(input);
//passagemarginleftnumberset();
}
addEventListener("load", passagemarginleftnumberload);
function passagemarginleftnumberset()
{
const v = Number(passagemarginleftnumber.value);
passagemarginleftrange.value = v;
text.passagemarginleft = v;
}
function passagemarginleftnumberupdate()
{
passagemarginleftnumberset();
svgupdate();
}
function passagemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "passagemarginleftrange";
input.max = passagemarginleftnumber.max;
input.min = passagemarginleftnumber.min;
input.type = "range";
input.value = passagemarginleftnumber.value;
input.addEventListener("input", passagemarginleftrangeupdate);
passagemarginleft.append(input);
passagemarginleftrangeset();
}
addEventListener("load", passagemarginleftrangeload);
function passagemarginleftrangeset()
{
const v = Number(passagemarginleftrange.value);
passagemarginleftnumber.value = v;
text.passagemarginleft = v;
}
function passagemarginleftrangeupdate()
{
passagemarginleftrangeset();
svgupdate();
}
function passagemarginrightload()
{
const div = document.createElement("div");
div.id = "passagemarginright";
div.innerHTML = "margin-right";
tabcontentpassage.append(div);
}
addEventListener("load", passagemarginrightload);
function passagemarginrightnumberload()
{
const br = document.createElement("br");
passagemarginright.append(br);
const input = document.createElement("input");
input.id = "passagemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemarginrightnumberupdate);
passagemarginright.append(input);
//passagemarginrightnumberset();
}
addEventListener("load", passagemarginrightnumberload);
function passagemarginrightnumberset()
{
const v = Number(passagemarginrightnumber.value);
passagemarginrightrange.value = v;
text.passagemarginright = v;
}
function passagemarginrightnumberupdate()
{
passagemarginrightnumberset();
svgupdate();
}
function passagemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "passagemarginrightrange";
input.max = passagemarginrightnumber.max;
input.min = passagemarginrightnumber.min;
input.type = "range";
input.value = passagemarginrightnumber.value;
input.addEventListener("input", passagemarginrightrangeupdate);
passagemarginright.append(input);
passagemarginrightrangeset();
}
addEventListener("load", passagemarginrightrangeload);
function passagemarginrightrangeset()
{
const v = Number(passagemarginrightrange.value);
passagemarginrightnumber.value = v;
text.passagemarginright = v;
}
function passagemarginrightrangeupdate()
{
passagemarginrightrangeset();
svgupdate();
}
function passagepaddingtopload()
{
const div = document.createElement("div");
div.id = "passagepaddingtop";
div.innerHTML = "padding-top";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingtopload);
function passagepaddingtopnumberload()
{
const br = document.createElement("br");
passagepaddingtop.append(br);
const input = document.createElement("input");
input.id = "passagepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingtopnumberupdate);
passagepaddingtop.append(input);
//passagepaddingtopnumberset();
}
addEventListener("load", passagepaddingtopnumberload);
function passagepaddingtopnumberset()
{
const v = Number(passagepaddingtopnumber.value);
passagepaddingtoprange.value = v;
text.passagepaddingtop = v;
}
function passagepaddingtopnumberupdate()
{
passagepaddingtopnumberset();
svgupdate();
}
function passagepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingtoprange";
input.max = passagepaddingtopnumber.max;
input.min = passagepaddingtopnumber.min;
input.type = "range";
input.value = passagepaddingtopnumber.value;
input.addEventListener("input", passagepaddingtoprangeupdate);
passagepaddingtop.append(input);
passagepaddingtoprangeset();
}
addEventListener("load", passagepaddingtoprangeload);
function passagepaddingtoprangeset()
{
const v = Number(passagepaddingtoprange.value);
passagepaddingtopnumber.value = v;
text.passagepaddingtop = v;
}
function passagepaddingtoprangeupdate()
{
passagepaddingtoprangeset();
svgupdate();
}
function passagepaddingbottomload()
{
const div = document.createElement("div");
div.id = "passagepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingbottomload);
function passagepaddingbottomnumberload()
{
const br = document.createElement("br");
passagepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "passagepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingbottomnumberupdate);
passagepaddingbottom.append(input);
//passagepaddingbottomnumberset();
}
addEventListener("load", passagepaddingbottomnumberload);
function passagepaddingbottomnumberset()
{
const v = Number(passagepaddingbottomnumber.value);
passagepaddingbottomrange.value = v;
text.passagepaddingbottom = v;
}
function passagepaddingbottomnumberupdate()
{
passagepaddingbottomnumberset();
svgupdate();
}
function passagepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingbottomrange";
input.max = passagepaddingbottomnumber.max;
input.min = passagepaddingbottomnumber.min;
input.type = "range";
input.value = passagepaddingbottomnumber.value;
input.addEventListener("input", passagepaddingbottomrangeupdate);
passagepaddingbottom.append(input);
passagepaddingbottomrangeset();
}
addEventListener("load", passagepaddingbottomrangeload);
function passagepaddingbottomrangeset()
{
const v = Number(passagepaddingbottomrange.value);
passagepaddingbottomnumber.value = v;
text.passagepaddingbottom = v;
}
function passagepaddingbottomrangeupdate()
{
passagepaddingbottomrangeset();
svgupdate();
}
function passagepaddingleftload()
{
const div = document.createElement("div");
div.id = "passagepaddingleft";
div.innerHTML = "padding-left";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingleftload);
function passagepaddingleftnumberload()
{
const br = document.createElement("br");
passagepaddingleft.append(br);
const input = document.createElement("input");
input.id = "passagepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingleftnumberupdate);
passagepaddingleft.append(input);
//passagepaddingleftnumberset();
}
addEventListener("load", passagepaddingleftnumberload);
function passagepaddingleftnumberset()
{
const v = Number(passagepaddingleftnumber.value);
passagepaddingleftrange.value = v;
text.passagepaddingleft = v;
}
function passagepaddingleftnumberupdate()
{
passagepaddingleftnumberset();
svgupdate();
}
function passagepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingleftrange";
input.max = passagepaddingleftnumber.max;
input.min = passagepaddingleftnumber.min;
input.type = "range";
input.value = passagepaddingleftnumber.value;
input.addEventListener("input", passagepaddingleftrangeupdate);
passagepaddingleft.append(input);
passagepaddingleftrangeset();
}
addEventListener("load", passagepaddingleftrangeload);
function passagepaddingleftrangeset()
{
const v = Number(passagepaddingleftrange.value);
passagepaddingleftnumber.value = v;
text.passagepaddingleft = v;
}
function passagepaddingleftrangeupdate()
{
passagepaddingleftrangeset();
svgupdate();
}
function passagepaddingrightload()
{
const div = document.createElement("div");
div.id = "passagepaddingright";
div.innerHTML = "padding-right";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingrightload);
function passagepaddingrightnumberload()
{
const br = document.createElement("br");
passagepaddingright.append(br);
const input = document.createElement("input");
input.id = "passagepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingrightnumberupdate);
passagepaddingright.append(input);
//passagepaddingrightnumberset();
}
addEventListener("load", passagepaddingrightnumberload);
function passagepaddingrightnumberset()
{
const v = Number(passagepaddingrightnumber.value);
passagepaddingrightrange.value = v;
text.passagepaddingright = v;
}
function passagepaddingrightnumberupdate()
{
passagepaddingrightnumberset();
svgupdate();
}
function passagepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingrightrange";
input.max = passagepaddingrightnumber.max;
input.min = passagepaddingrightnumber.min;
input.type = "range";
input.value = passagepaddingrightnumber.value;
input.addEventListener("input", passagepaddingrightrangeupdate);
passagepaddingright.append(input);
passagepaddingrightrangeset();
}
addEventListener("load", passagepaddingrightrangeload);
function passagepaddingrightrangeset()
{
const v = Number(passagepaddingrightrange.value);
passagepaddingrightnumber.value = v;
text.passagepaddingright = v;
}
function passagepaddingrightrangeupdate()
{
passagepaddingrightrangeset();
svgupdate();
}
//*/
function savedownloadload()
{
const div = document.createElement("div");
div.id = "savedownload";
//div.innerHTML = "download<br>";
tabcontentsave.append(div);
}
addEventListener("load", savedownloadload);
function savedownloadimageload()
{
const a = document.createElement("a");
a.download = "download";
a.id = "savedownloadimage";
a.innerHTML = "download";
a.addEventListener("click", savedownloadimageupdate);
savedownload.append(a);
savedownloadimageupdate();
}
addEventListener("load", savedownloadimageload);
function savedownloadimageupdate()
{
savedownloadimage.href = canvas.toDataURL();
}
/*
function savedownloadsettingsload()
{
const a = document.createElement("a");
a.download = "settings.txt";
a.id = "savedownloadsettings";
a.innerHTML = "<br>settings";
a.addEventListener("click", savedownloadsettingsupdate);
savedownload.append(a);
savedownloadsettingsupdate();
}
addEventListener("load", savedownloadsettingsload);
function savedownloadsettingsupdate()
{
const data =
[
[
"canvas.width",
canvas.width,
],
canvas.height,
canvas.backgroundcolor,
canvas.backgroundalpha,
image.file,
image.fit,
image.width,
image.height,
image.x,
image.y,
image.backgroundcolor,
image.backgroundalpha,
image.opacity,
text.messagetext,
text.messagewidth,
text.messageheight,
text.messagex,
text.messagey,
text.messagehorizontal,
text.messagevertical,
text.messagewritingmode,
text.messagefontfamily,
text.messagefontsize,
text.messagebackgroundcolor,
text.messagebackgroundalpha,
text.messagecolor,
text.messagealpha,
text.version,
text.versionname,
text.book,
text.bookname,
text.chapter,
text.verse,
text.verseend,
text.referencewidth,
text.referenceheight,
text.referencex,
text.referencey,
text.referencehorizontal,
text.referencevertical,
text.referencewritingmode,
text.referencefontfamily,
text.referencefontsize,
text.referencebackgroundcolor,
text.referencebackgroundalpha,
text.referencecolor,
text.referencealpha,
text.passagewidth,
text.passageheight,
text.passagex,
text.passagey,
text.passagehorizontal,
text.passagevertical,
text.passagewritingmode,
text.passagefontfamily,
text.passagefontsize,
text.passagebackgroundcolor,
text.passagebackgroundalpha,
text.passagecolor,
text.passagealpha,
];
//leftoff
const data2 = [];
for(const a of data)
{
data2
}
savedownloadsettings.href = `data:text/plain,${data}`;
}
function savefileload()
{
const div = document.createElement("div");
div.id = "savefile";
div.innerHTML = "file<br>";
tabcontentsave.append(div);
}
addEventListener("load", savefileload);
function savefilefileload()
{
const input = document.createElement("input");
input.id = "savefilefile";
input.type = "file";
input.addEventListener("change", savefilefileupdate);
savefile.append(input);
}
addEventListener("load", savefilefileload);
function savefilefileupdate()
{
const f = savefilefile.files[0];
save.src = URL.createObjectURL(f);
}
//*/</script></div></main><div class=banner><script defer src=https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4239362730750625 crossorigin=anonymous></script><ins class=adsbygoogle data-ad-client=ca-pub-4239362730750625 data-ad-slot=5564639719><a href=https://samaritanspurse.org/ target=_blank><img alt="Samaritan's Purse" src=/assets/svg/SamaritansPurseBanner.svg title="Samaritan's Purse"></a></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div><footer><div id=boilerplate><div><a href=/Jesus/>Jesus</a> · <a href=/Bible/>Bible</a></div><div><a href=/html/>HTML</a> · <a href=/css/>CSS</a> · <a href=/js/>JS</a> · <a href=/php/>PHP</a> · <a href=/svg/>SVG</a></div><div><a href=/applications/>Applications</a> · <a href=/editor/>Editor</a> · <a href=/favicon/>Favicon</a></div><div><a href=/htaccess/>.htaccess</a> · <a href=/acme.sh/>acme.sh</a></div><div><a href=/flash/>Flash</a> · <a href=/sketchup/>SketchUp</a> · <a href=/unity/>Unity</a> · <a href=/xcode/>Xcode</a></div><div><a href=/about/>About</a> · <a href=/terms/>Terms</a></div><div><a href=/>osbo.com</a></div></div><div id=copyright>© 2026 Osbo Design</div></footer></div><div id=nav><div class=h1><a href=/Jesus/>JESUS</a></div><div class=h1><a id=switch-Bible>BIBLE</a></div><div id=list-Bible><h2>Overview</h2><div><ul><li><a href=/Bible/>Overview</a></li></ul></div><h2>Search</h2><div><ul><li><a href=/Bible/search/>Search</a></li></ul></div><h2>Download</h2><div><ul><li><a href=/Bible/download/>Download</a></li></ul></div><h2>العربية</h2><div><ul><li><a href=/Bible/asvd/>الكتاب المقدس ترجمة فانديك وسميث (ASVD)</a></li></ul></div><h2>česky</h2><div><ul><li><a href=/Bible/csbkr/>Bible Kralická 1613 (CSBKR)</a></li></ul></div><h2>Dansk</h2><div><ul><li><a href=/Bible/da1871/>Danske Bibel 1871 (DA1871)</a></li></ul></div><h2>Deutsch</h2><div><ul><li><a href=/Bible/delut/>Luther Bible 1912 (DELUT)</a></li><li><a href=/Bible/elb/>Elberfelder 1905 (ELB)</a></li><li><a href=/Bible/elb71/>Elberfelder 1871 (ELB71)</a></li></ul></div><h2>English</h2><div><ul><li><a href=/Bible/asv/>American Standard Version (ASV)</a></li><li><a href=/Bible/kjv/>King James Version (KJV)</a></li><li><a href=/Bible/web/>World English Bible (WEB)</a></li></ul></div><h2>Español</h2><div><ul><li><a href=/Bible/rves/>Reina-Valera Antigua (RVES)</a></li></ul></div><h2>Suomi</h2><div><ul><li><a href=/Bible/fi1776/>Finnish 1776 (FI1776)</a></li><li><a href=/Bible/finpr/>Finnish 1938 (FINPR)</a></li></ul></div><h2>Français</h2><div><ul><li><a href=/Bible/fmar/>Martin 1744 (FMAR)</a></li><li><a href=/Bible/frdby/>Bible Darby en français (FRDBY)</a></li><li><a href=/Bible/lsg/>Louis Segond 1910 (LSG)</a></li><li><a href=/Bible/ost/>Ostervald (OST)</a></li></ul></div><h2>Magyar</h2><div><ul><li><a href=/Bible/kar/>Károli 1590 (KAR)</a></li></ul></div><h2>Bahasa Indonesia</h2><div><ul><li><a href=/Bible/idbar/>Terjemahan Baru (IDBAR)</a></li></ul></div><h2>Italiano</h2><div><ul><li><a href=/Bible/igd/>Giovanni Diodati Bibbia (IGD)</a></li><li><a href=/Bible/itriv/>Italian Riveduta 1927 (ITRIV)</a></li></ul></div><h2>日本語</h2><div><ul><li><a href=/Bible/ja1955/>Colloquial Japanese 1955 (JA1955)</a></li></ul></div><h2>Malagasy</h2><div><ul><li><a href=/Bible/mg1865/>Malagasy Bible (MG1865)</a></li></ul></div><h2>te reo Māori</h2><div><ul><li><a href=/Bible/maor/>Maori Bible (MAOR)</a></li></ul></div><h2>한국어</h2><div><ul><li><a href=/Bible/korvb/>개역한글 (KORVB)</a></li></ul></div><h2>Nederlands</h2><div><ul><li><a href=/Bible/sv1750/>Statenvertaling (SV1750)</a></li></ul></div><h2>Norsk</h2><div><ul><li><a href=/Bible/norsk/>Det Norsk Bibelselskap 1930 (NORSK)</a></li></ul></div><h2>Polski</h2><div><ul><li><a href=/Bible/pbg/>Biblia Gdańska (PBG)</a></li></ul></div><h2>Português</h2><div><ul><li><a href=/Bible/aa/>Almeida Atualizada (AA)</a></li></ul></div><h2>Română</h2><div><ul><li><a href=/Bible/rmnn/>Romanian Cornilescu 1928 (RMNN)</a></li><li><a href=/Bible/vdc/>Versiunea Dumitru Cornilescu (VDC)</a></li><li><a href=/Bible/vdcc/>Versiunea Dumitru Cornilescu Corectată (VDCC)</a></li></ul></div><h2>Pyccкий</h2><div><ul><li><a href=/Bible/rursv/>Синодальный перевод (RURSV)</a></li></ul></div><h2>Shqip</h2><div><ul><li><a href=/Bible/albb/>Albanian Bible (ALBB)</a></li></ul></div><h2>Svenska</h2><div><ul><li><a href=/Bible/sk73/>Karl XII 1873 (SK73)</a></li><li><a href=/Bible/sven/>Svenska 1917 (SVEN)</a></li></ul></div><h2>Wikang Tagalog</h2><div><ul><li><a href=/Bible/tlab/>Ang Biblia (TLAB)</a></li></ul></div><h2>українська</h2><div><ul><li><a href=/Bible/ubio/>Біблія в пер. Івана Огієнка 1962 (UBIO)</a></li><li><a href=/Bible/ukrk/>Біблія в пер. П.Куліша та І.Пулюя 1905 (UKRK)</a></li></ul></div><h2>Tiếng Việt</h2><div><ul><li><a href=/Bible/vi1934/>Vietnamese Bible 1934 (VI1934)</a></li></ul></div><h2>简体中文</h2><div><ul><li><a href=/Bible/cuvs/>简体和合本 (CUVS)</a></li></ul></div><h2>繁體中文</h2><div><ul><li><a href=/Bible/cuv/>和合本 (CUV)</a></li></ul></div></div><div class=h1><a id=switch-html>HTML</a></div><div id=list-html><h2>Overview</h2><div><ul><li><a href=/html/>Overview</a></li></ul></div><h2>Attributes</h2><div><ul><li><a href=/html/attributes/abbr/>abbr</a></li><li><a href=/html/attributes/accept/>accept</a></li><li><a href=/html/attributes/accept-charset/>accept-charset</a></li><li><a href=/html/attributes/accesskey/>accesskey</a></li><li><a href=/html/attributes/action/>action</a></li><li><a href=/html/attributes/alt/>alt</a></li><li><a href=/html/attributes/as/>as</a></li><li><a href=/html/attributes/async/>async</a></li><li><a href=/html/attributes/autocapitalize/>autocapitalize</a></li><li><a href=/html/attributes/autocomplete/>autocomplete</a></li><li><a href=/html/attributes/autofocus/>autofocus</a></li><li><a href=/html/attributes/autoplay/>autoplay</a></li><li><a href=/html/attributes/blocking/>blocking</a></li><li><a href=/html/attributes/charset/>charset</a></li><li><a href=/html/attributes/checked/>checked</a></li><li><a href=/html/attributes/cite/>cite</a></li><li><a href=/html/attributes/class/>class</a></li><li><a href=/html/attributes/color/>color</a></li><li><a href=/html/attributes/cols/>cols</a></li><li><a href=/html/attributes/colspan/>colspan</a></li><li><a href=/html/attributes/contenteditable/>contenteditable</a></li><li><a href=/html/attributes/controls/>controls</a></li><li><a href=/html/attributes/coords/>coords</a></li><li><a href=/html/attributes/crossorigin/>crossorigin</a></li><li><a href=/html/attributes/data/>data</a></li><li><a href=/html/attributes/datetime/>datetime</a></li><li><a href=/html/attributes/decoding/>decoding</a></li><li><a href=/html/attributes/default/>default</a></li><li><a href=/html/attributes/defer/>defer</a></li><li><a href=/html/attributes/dir/>dir</a></li><li><a href=/html/attributes/dirname/>dirname</a></li><li><a href=/html/attributes/disabled/>disabled</a></li><li><a href=/html/attributes/download/>download</a></li><li><a href=/html/attributes/draggable/>draggable</a></li><li><a href=/html/attributes/enctype/>enctype</a></li><li><a href=/html/attributes/enterkeyhint/>enterkeyhint</a></li><li><a href=/html/attributes/exportparts/>exportparts</a></li><li><a href=/html/attributes/fetchpriority/>fetchpriority</a></li><li><a href=/html/attributes/for/>for</a></li><li><a href=/html/attributes/form/>form</a></li><li><a href=/html/attributes/formaction/>formaction</a></li><li><a href=/html/attributes/formenctype/>formenctype</a></li><li><a href=/html/attributes/formmethod/>formmethod</a></li><li><a href=/html/attributes/formnovalidate/>formnovalidate</a></li><li><a href=/html/attributes/formtarget/>formtarget</a></li><li><a href=/html/attributes/headers/>headers</a></li><li><a href=/html/attributes/height/>height</a></li><li><a href=/html/attributes/hidden/>hidden</a></li><li><a href=/html/attributes/high/>high</a></li><li><a href=/html/attributes/href/>href</a></li><li><a href=/html/attributes/hreflang/>hreflang</a></li><li><a href=/html/attributes/http-equiv/>http-equiv</a></li><li><a href=/html/attributes/id/>id</a></li><li><a href=/html/attributes/imagesizes/>imagesizes</a></li><li><a href=/html/attributes/imagesrcset/>imagesrcset</a></li><li><a href=/html/attributes/inert/>inert</a></li><li><a href=/html/attributes/inputmode/>inputmode</a></li><li><a href=/html/attributes/integrity/>integrity</a></li><li><a href=/html/attributes/is/>is</a></li><li><a href=/html/attributes/ismap/>ismap</a></li><li><a href=/html/attributes/itemid/>itemid</a></li><li><a href=/html/attributes/itemprop/>itemprop</a></li><li><a href=/html/attributes/itemref/>itemref</a></li><li><a href=/html/attributes/itemscope/>itemscope</a></li><li><a href=/html/attributes/itemtype/>itemtype</a></li><li><a href=/html/attributes/kind/>kind</a></li><li><a href=/html/attributes/label/>label</a></li><li><a href=/html/attributes/lang/>lang</a></li><li><a href=/html/attributes/list/>list</a></li><li><a href=/html/attributes/loading/>loading</a></li><li><a href=/html/attributes/loop/>loop</a></li><li><a href=/html/attributes/low/>low</a></li><li><a href=/html/attributes/max/>max</a></li><li><a href=/html/attributes/maxlength/>maxlength</a></li><li><a href=/html/attributes/media/>media</a></li><li><a href=/html/attributes/method/>method</a></li><li><a href=/html/attributes/min/>min</a></li><li><a href=/html/attributes/minlength/>minlength</a></li><li><a href=/html/attributes/multiple/>multiple</a></li><li><a href=/html/attributes/muted/>muted</a></li><li><a href=/html/attributes/name/>name</a></li><li><a href=/html/attributes/nomodule/>nomodule</a></li><li><a href=/html/attributes/nonce/>nonce</a></li><li><a href=/html/attributes/novalidate/>novalidate</a></li><li><a href=/html/attributes/onabort/>onabort</a></li><li><a href=/html/attributes/onafterprint/>onafterprint</a></li><li><a href=/html/attributes/onauxclick/>onauxclick</a></li><li><a href=/html/attributes/onbeforeinput/>onbeforeinput</a></li><li><a href=/html/attributes/onbeforeprint/>onbeforeprint</a></li><li><a href=/html/attributes/onbeforetoggle/>onbeforetoggle</a></li><li><a href=/html/attributes/onbeforeunload/>onbeforeunload</a></li><li><a href=/html/attributes/onblur/>onblur</a></li><li><a href=/html/attributes/oncancel/>oncancel</a></li><li><a href=/html/attributes/oncanplay/>oncanplay</a></li><li><a href=/html/attributes/oncanplaythrough/>oncanplaythrough</a></li><li><a href=/html/attributes/onchange/>onchange</a></li><li><a href=/html/attributes/onclick/>onclick</a></li><li><a href=/html/attributes/oncontextlost/>oncontextlost</a></li><li><a href=/html/attributes/oncontextmenu/>oncontextmenu</a></li><li><a href=/html/attributes/oncontextrestored/>oncontextrestored</a></li><li><a href=/html/attributes/oncopy/>oncopy</a></li><li><a href=/html/attributes/oncut/>oncut</a></li><li><a href=/html/attributes/ondblclick/>ondblclick</a></li><li><a href=/html/attributes/ondrag/>ondrag</a></li><li><a href=/html/attributes/ondragend/>ondragend</a></li><li><a href=/html/attributes/ondragenter/>ondragenter</a></li><li><a href=/html/attributes/ondragleave/>ondragleave</a></li><li><a href=/html/attributes/ondragover/>ondragover</a></li><li><a href=/html/attributes/ondragstart/>ondragstart</a></li><li><a href=/html/attributes/ondrop/>ondrop</a></li><li><a href=/html/attributes/ondurationchange/>ondurationchange</a></li><li><a href=/html/attributes/onended/>onended</a></li><li><a href=/html/attributes/onfocus/>onfocus</a></li><li><a href=/html/attributes/onformdata/>onformdata</a></li><li><a href=/html/attributes/onhashchange/>onhashchange</a></li><li><a href=/html/attributes/oninput/>oninput</a></li><li><a href=/html/attributes/oninvalid/>oninvalid</a></li><li><a href=/html/attributes/onkeydown/>onkeydown</a></li><li><a href=/html/attributes/onkeypress/>onkeypress</a></li><li><a href=/html/attributes/onkeyup/>onkeyup</a></li><li><a href=/html/attributes/onlanguagechange/>onlanguagechange</a></li><li><a href=/html/attributes/onload/>onload</a></li><li><a href=/html/attributes/onloadeddata/>onloadeddata</a></li><li><a href=/html/attributes/onloadedmetadata/>onloadedmetadata</a></li><li><a href=/html/attributes/onloadstart/>onloadstart</a></li><li><a href=/html/attributes/onmousedown/>onmousedown</a></li><li><a href=/html/attributes/onmouseenter/>onmouseenter</a></li><li><a href=/html/attributes/onmouseleave/>onmouseleave</a></li><li><a href=/html/attributes/onmousemove/>onmousemove</a></li><li><a href=/html/attributes/onmouseout/>onmouseout</a></li><li><a href=/html/attributes/onmouseover/>onmouseover</a></li><li><a href=/html/attributes/onmouseup/>onmouseup</a></li><li><a href=/html/attributes/onmousewheel/>onmousewheel</a></li><li><a href=/html/attributes/onoffline/>onoffline</a></li><li><a href=/html/attributes/ononline/>ononline</a></li><li><a href=/html/attributes/onpagehide/>onpagehide</a></li><li><a href=/html/attributes/onpageshow/>onpageshow</a></li><li><a href=/html/attributes/onpaste/>onpaste</a></li><li><a href=/html/attributes/onpause/>onpause</a></li><li><a href=/html/attributes/onplay/>onplay</a></li><li><a href=/html/attributes/onplaying/>onplaying</a></li><li><a href=/html/attributes/onprogress/>onprogress</a></li><li><a href=/html/attributes/onratechange/>onratechange</a></li><li><a href=/html/attributes/onreset/>onreset</a></li><li><a href=/html/attributes/onresize/>onresize</a></li><li><a href=/html/attributes/onscroll/>onscroll</a></li><li><a href=/html/attributes/onscrollend/>onscrollend</a></li><li><a href=/html/attributes/onsearch/>onsearch</a></li><li><a href=/html/attributes/onseeked/>onseeked</a></li><li><a href=/html/attributes/onseeking/>onseeking</a></li><li><a href=/html/attributes/onselect/>onselect</a></li><li><a href=/html/attributes/onstorage/>onstorage</a></li><li><a href=/html/attributes/onsubmit/>onsubmit</a></li><li><a href=/html/attributes/onsuspend/>onsuspend</a></li><li><a href=/html/attributes/ontimeupdate/>ontimeupdate</a></li><li><a href=/html/attributes/ontoggle/>ontoggle</a></li><li><a href=/html/attributes/onunload/>onunload</a></li><li><a href=/html/attributes/onvolumechange/>onvolumechange</a></li><li><a href=/html/attributes/onwaiting/>onwaiting</a></li><li><a href=/html/attributes/onwheel/>onwheel</a></li><li><a href=/html/attributes/open/>open</a></li><li><a href=/html/attributes/optimum/>optimum</a></li><li><a href=/html/attributes/part/>part</a></li><li><a href=/html/attributes/pattern/>pattern</a></li><li><a href=/html/attributes/ping/>ping</a></li><li><a href=/html/attributes/placeholder/>placeholder</a></li><li><a href=/html/attributes/playsinline/>playsinline</a></li><li><a href=/html/attributes/popover/>popover</a></li><li><a href=/html/attributes/popovertarget/>popovertarget</a></li><li><a href=/html/attributes/popovertargetaction/>popovertargetaction</a></li><li><a href=/html/attributes/poster/>poster</a></li><li><a href=/html/attributes/preload/>preload</a></li><li><a href=/html/attributes/readonly/>readonly</a></li><li><a href=/html/attributes/referrerpolicy/>referrerpolicy</a></li><li><a href=/html/attributes/rel/>rel</a></li><li><a href=/html/attributes/required/>required</a></li><li><a href=/html/attributes/reversed/>reversed</a></li><li><a href=/html/attributes/rows/>rows</a></li><li><a href=/html/attributes/rowspan/>rowspan</a></li><li><a href=/html/attributes/sandbox/>sandbox</a></li><li><a href=/html/attributes/scope/>scope</a></li><li><a href=/html/attributes/selected/>selected</a></li><li><a href=/html/attributes/shape/>shape</a></li><li><a href=/html/attributes/size/>size</a></li><li><a href=/html/attributes/sizes/>sizes</a></li><li><a href=/html/attributes/slot/>slot</a></li><li><a href=/html/attributes/span/>span</a></li><li><a href=/html/attributes/spellcheck/>spellcheck</a></li><li><a href=/html/attributes/src/>src</a></li><li><a href=/html/attributes/srcdoc/>srcdoc</a></li><li><a href=/html/attributes/srclang/>srclang</a></li><li><a href=/html/attributes/srcset/>srcset</a></li><li><a href=/html/attributes/start/>start</a></li><li><a href=/html/attributes/step/>step</a></li><li><a href=/html/attributes/style/>style</a></li><li><a href=/html/attributes/tabindex/>tabindex</a></li><li><a href=/html/attributes/target/>target</a></li><li><a href=/html/attributes/title/>title</a></li><li><a href=/html/attributes/translate/>translate</a></li><li><a href=/html/attributes/type/>type</a></li><li><a href=/html/attributes/usemap/>usemap</a></li><li><a href=/html/attributes/value/>value</a></li><li><a href=/html/attributes/width/>width</a></li><li><a href=/html/attributes/wrap/>wrap</a></li></ul></div><h2>Elements</h2><div><ul><li><a href=/html/elements/!doctype/>!doctype</a></li><li><a href=/html/elements/a/>a</a></li><li><a href=/html/elements/abbr/>abbr</a></li><li><a href=/html/elements/address/>address</a></li><li><a href=/html/elements/area/>area</a></li><li><a href=/html/elements/article/>article</a></li><li><a href=/html/elements/aside/>aside</a></li><li><a href=/html/elements/audio/>audio</a></li><li><a href=/html/elements/b/>b</a></li><li><a href=/html/elements/base/>base</a></li><li><a href=/html/elements/bdi/>bdi</a></li><li><a href=/html/elements/bdo/>bdo</a></li><li><a href=/html/elements/blockquote/>blockquote</a></li><li><a href=/html/elements/body/>body</a></li><li><a href=/html/elements/br/>br</a></li><li><a href=/html/elements/button/>button</a></li><li><a href=/html/elements/canvas/>canvas</a></li><li><a href=/html/elements/caption/>caption</a></li><li><a href=/html/elements/cite/>cite</a></li><li><a href=/html/elements/code/>code</a></li><li><a href=/html/elements/col/>col</a></li><li><a href=/html/elements/colgroup/>colgroup</a></li><li><a href=/html/elements/data/>data</a></li><li><a href=/html/elements/datalist/>datalist</a></li><li><a href=/html/elements/dd/>dd</a></li><li><a href=/html/elements/del/>del</a></li><li><a href=/html/elements/details/>details</a></li><li><a href=/html/elements/dfn/>dfn</a></li><li><a href=/html/elements/dialog/>dialog</a></li><li><a href=/html/elements/div/>div</a></li><li><a href=/html/elements/dl/>dl</a></li><li><a href=/html/elements/dt/>dt</a></li><li><a href=/html/elements/em/>em</a></li><li><a href=/html/elements/embed/>embed</a></li><li><a href=/html/elements/fieldset/>fieldset</a></li><li><a href=/html/elements/figcaption/>figcaption</a></li><li><a href=/html/elements/figure/>figure</a></li><li><a href=/html/elements/footer/>footer</a></li><li><a href=/html/elements/form/>form</a></li><li><a href=/html/elements/h1/>h1</a></li><li><a href=/html/elements/h2/>h2</a></li><li><a href=/html/elements/h3/>h3</a></li><li><a href=/html/elements/h4/>h4</a></li><li><a href=/html/elements/h5/>h5</a></li><li><a href=/html/elements/h6/>h6</a></li><li><a href=/html/elements/head/>head</a></li><li><a href=/html/elements/header/>header</a></li><li><a href=/html/elements/hgroup/>hgroup</a></li><li><a href=/html/elements/hr/>hr</a></li><li><a href=/html/elements/html/>html</a></li><li><a href=/html/elements/i/>i</a></li><li><a href=/html/elements/iframe/>iframe</a></li><li><a href=/html/elements/img/>img</a></li><li><a href=/html/elements/input/>input</a></li><li><a href=/html/elements/ins/>ins</a></li><li><a href=/html/elements/kbd/>kbd</a></li><li><a href=/html/elements/label/>label</a></li><li><a href=/html/elements/legend/>legend</a></li><li><a href=/html/elements/li/>li</a></li><li><a href=/html/elements/link/>link</a></li><li><a href=/html/elements/main/>main</a></li><li><a href=/html/elements/map/>map</a></li><li><a href=/html/elements/mark/>mark</a></li><li><a href=/html/elements/menu/>menu</a></li><li><a href=/html/elements/meta/>meta</a></li><li><a href=/html/elements/meter/>meter</a></li><li><a href=/html/elements/nav/>nav</a></li><li><a href=/html/elements/noscript/>noscript</a></li><li><a href=/html/elements/object/>object</a></li><li><a href=/html/elements/ol/>ol</a></li><li><a href=/html/elements/optgroup/>optgroup</a></li><li><a href=/html/elements/option/>option</a></li><li><a href=/html/elements/output/>output</a></li><li><a href=/html/elements/p/>p</a></li><li><a href=/html/elements/param/>param</a></li><li><a href=/html/elements/picture/>picture</a></li><li><a href=/html/elements/pre/>pre</a></li><li><a href=/html/elements/progress/>progress</a></li><li><a href=/html/elements/q/>q</a></li><li><a href=/html/elements/rb/>rb</a></li><li><a href=/html/elements/rp/>rp</a></li><li><a href=/html/elements/rt/>rt</a></li><li><a href=/html/elements/rtc/>rtc</a></li><li><a href=/html/elements/ruby/>ruby</a></li><li><a href=/html/elements/s/>s</a></li><li><a href=/html/elements/samp/>samp</a></li><li><a href=/html/elements/script/>script</a></li><li><a href=/html/elements/search/>search</a></li><li><a href=/html/elements/section/>section</a></li><li><a href=/html/elements/select/>select</a></li><li><a href=/html/elements/slot/>slot</a></li><li><a href=/html/elements/small/>small</a></li><li><a href=/html/elements/source/>source</a></li><li><a href=/html/elements/span/>span</a></li><li><a href=/html/elements/strong/>strong</a></li><li><a href=/html/elements/style/>style</a></li><li><a href=/html/elements/sub/>sub</a></li><li><a href=/html/elements/summary/>summary</a></li><li><a href=/html/elements/sup/>sup</a></li><li><a href=/html/elements/table/>table</a></li><li><a href=/html/elements/tbody/>tbody</a></li><li><a href=/html/elements/td/>td</a></li><li><a href=/html/elements/template/>template</a></li><li><a href=/html/elements/textarea/>textarea</a></li><li><a href=/html/elements/tfoot/>tfoot</a></li><li><a href=/html/elements/th/>th</a></li><li><a href=/html/elements/thead/>thead</a></li><li><a href=/html/elements/time/>time</a></li><li><a href=/html/elements/title/>title</a></li><li><a href=/html/elements/tr/>tr</a></li><li><a href=/html/elements/track/>track</a></li><li><a href=/html/elements/u/>u</a></li><li><a href=/html/elements/ul/>ul</a></li><li><a href=/html/elements/var/>var</a></li><li><a href=/html/elements/video/>video</a></li><li><a href=/html/elements/wbr/>wbr</a></li></ul></div><h2>Other</h2><div><ul><li><a href=/html/characters/>Characters</a></li><li><a href=/html/comments/>Comments</a></li><li><a href=/html/datatypes/>Datatypes</a></li></ul></div></div><div class=h1><a id=switch-css>CSS</a></div><div id=list-css><h2>Overview</h2><div><ul><li><a href=/css/>Overview</a></li></ul></div><h2>Functions</h2><div><ul><li><a href=/css/functions/abs/>abs</a></li><li><a href=/css/functions/acos/>acos</a></li><li><a href=/css/functions/asin/>asin</a></li><li><a href=/css/functions/atan/>atan</a></li><li><a href=/css/functions/atan2/>atan2</a></li><li><a href=/css/functions/attr/>attr</a></li><li><a href=/css/functions/calc/>calc</a></li><li><a href=/css/functions/clamp/>clamp</a></li><li><a href=/css/functions/color/>color</a></li><li><a href=/css/functions/conic-gradient/>conic-gradient</a></li><li><a href=/css/functions/cos/>cos</a></li><li><a href=/css/functions/counter/>counter</a></li><li><a href=/css/functions/counters/>counters</a></li><li><a href=/css/functions/hsl/>hsl</a></li><li><a href=/css/functions/hsla/>hsla</a></li><li><a href=/css/functions/hwb/>hwb</a></li><li><a href=/css/functions/if/>if</a></li><li><a href=/css/functions/lab/>lab</a></li><li><a href=/css/functions/lch/>lch</a></li><li><a href=/css/functions/linear-gradient/>linear-gradient</a></li><li><a href=/css/functions/matrix/>matrix</a></li><li><a href=/css/functions/matrix3d/>matrix3d</a></li><li><a href=/css/functions/max/>max</a></li><li><a href=/css/functions/min/>min</a></li><li><a href=/css/functions/mod/>mod</a></li><li><a href=/css/functions/oklab/>oklab</a></li><li><a href=/css/functions/oklch/>oklch</a></li><li><a href=/css/functions/param/>param</a></li><li><a href=/css/functions/perspective/>perspective</a></li><li><a href=/css/functions/radial-gradient/>radial-gradient</a></li><li><a href=/css/functions/rem/>rem</a></li><li><a href=/css/functions/repeating-conic-gradient/>repeating-conic-gradient</a></li><li><a href=/css/functions/repeating-linear-gradient/>repeating-linear-gradient</a></li><li><a href=/css/functions/repeating-radial-gradient/>repeating-radial-gradient</a></li><li><a href=/css/functions/rgb/>rgb</a></li><li><a href=/css/functions/rgba/>rgba</a></li><li><a href=/css/functions/rotate/>rotate</a></li><li><a href=/css/functions/rotate3d/>rotate3d</a></li><li><a href=/css/functions/rotatex/>rotateX</a></li><li><a href=/css/functions/rotatey/>rotateY</a></li><li><a href=/css/functions/rotatez/>rotateZ</a></li><li><a href=/css/functions/round/>round</a></li><li><a href=/css/functions/scale/>scale</a></li><li><a href=/css/functions/scale3d/>scale3d</a></li><li><a href=/css/functions/scalex/>scaleX</a></li><li><a href=/css/functions/scaley/>scaleY</a></li><li><a href=/css/functions/scalez/>scaleZ</a></li><li><a href=/css/functions/sin/>sin</a></li><li><a href=/css/functions/skew/>skew</a></li><li><a href=/css/functions/skewx/>skewX</a></li><li><a href=/css/functions/skewy/>skewY</a></li><li><a href=/css/functions/src/>src</a></li><li><a href=/css/functions/tan/>tan</a></li><li><a href=/css/functions/translate/>translate</a></li><li><a href=/css/functions/translate3d/>translate3d</a></li><li><a href=/css/functions/translatex/>translateX</a></li><li><a href=/css/functions/translatey/>translateY</a></li><li><a href=/css/functions/translatez/>translateZ</a></li><li><a href=/css/functions/url/>url</a></li><li><a href=/css/functions/var/>var</a></li></ul></div><h2>Properties</h2><div><ul><li><a href=/css/properties/accent-color/>accent-color</a></li><li><a href=/css/properties/align-content/>align-content</a></li><li><a href=/css/properties/align-items/>align-items</a></li><li><a href=/css/properties/align-self/>align-self</a></li><li><a href=/css/properties/all/>all</a></li><li><a href=/css/properties/animation/>animation</a></li><li><a href=/css/properties/animation-composition/>animation-composition</a></li><li><a href=/css/properties/animation-delay/>animation-delay</a></li><li><a href=/css/properties/animation-direction/>animation-direction</a></li><li><a href=/css/properties/animation-duration/>animation-duration</a></li><li><a href=/css/properties/animation-fill-mode/>animation-fill-mode</a></li><li><a href=/css/properties/animation-iteration-count/>animation-iteration-count</a></li><li><a href=/css/properties/animation-name/>animation-name</a></li><li><a href=/css/properties/animation-play-state/>animation-play-state</a></li><li><a href=/css/properties/animation-timeline/>animation-timeline</a></li><li><a href=/css/properties/animation-timing-function/>animation-timing-function</a></li><li><a href=/css/properties/appearance/>appearance</a></li><li><a href=/css/properties/aspect-ratio/>aspect-ratio</a></li><li><a href=/css/properties/backdrop-filter/>backdrop-filter</a></li><li><a href=/css/properties/backface-visibility/>backface-visibility</a></li><li><a href=/css/properties/background/>background</a></li><li><a href=/css/properties/background-attachment/>background-attachment</a></li><li><a href=/css/properties/background-blend-mode/>background-blend-mode</a></li><li><a href=/css/properties/background-clip/>background-clip</a></li><li><a href=/css/properties/background-color/>background-color</a></li><li><a href=/css/properties/background-image/>background-image</a></li><li><a href=/css/properties/background-origin/>background-origin</a></li><li><a href=/css/properties/background-position/>background-position</a></li><li><a href=/css/properties/background-position-x/>background-position-x</a></li><li><a href=/css/properties/background-position-y/>background-position-y</a></li><li><a href=/css/properties/background-repeat/>background-repeat</a></li><li><a href=/css/properties/background-size/>background-size</a></li><li><a href=/css/properties/block-ellipsis/>block-ellipsis</a></li><li><a href=/css/properties/block-size/>block-size</a></li><li><a href=/css/properties/border/>border</a></li><li><a href=/css/properties/border-block/>border-block</a></li><li><a href=/css/properties/border-block-color/>border-block-color</a></li><li><a href=/css/properties/border-block-end/>border-block-end</a></li><li><a href=/css/properties/border-block-end-color/>border-block-end-color</a></li><li><a href=/css/properties/border-block-end-style/>border-block-end-style</a></li><li><a href=/css/properties/border-block-end-width/>border-block-end-width</a></li><li><a href=/css/properties/border-block-start/>border-block-start</a></li><li><a href=/css/properties/border-block-start-color/>border-block-start-color</a></li><li><a href=/css/properties/border-block-start-style/>border-block-start-style</a></li><li><a href=/css/properties/border-block-start-width/>border-block-start-width</a></li><li><a href=/css/properties/border-block-style/>border-block-style</a></li><li><a href=/css/properties/border-block-width/>border-block-width</a></li><li><a href=/css/properties/border-bottom/>border-bottom</a></li><li><a href=/css/properties/border-bottom-color/>border-bottom-color</a></li><li><a href=/css/properties/border-bottom-left-radius/>border-bottom-left-radius</a></li><li><a href=/css/properties/border-bottom-right-radius/>border-bottom-right-radius</a></li><li><a href=/css/properties/border-bottom-style/>border-bottom-style</a></li><li><a href=/css/properties/border-bottom-width/>border-bottom-width</a></li><li><a href=/css/properties/border-collapse/>border-collapse</a></li><li><a href=/css/properties/border-color/>border-color</a></li><li><a href=/css/properties/border-end-end-radius/>border-end-end-radius</a></li><li><a href=/css/properties/border-end-start-radius/>border-end-start-radius</a></li><li><a href=/css/properties/border-image/>border-image</a></li><li><a href=/css/properties/border-image-outset/>border-image-outset</a></li><li><a href=/css/properties/border-image-repeat/>border-image-repeat</a></li><li><a href=/css/properties/border-image-slice/>border-image-slice</a></li><li><a href=/css/properties/border-image-source/>border-image-source</a></li><li><a href=/css/properties/border-image-width/>border-image-width</a></li><li><a href=/css/properties/border-inline/>border-inline</a></li><li><a href=/css/properties/border-inline-color/>border-inline-color</a></li><li><a href=/css/properties/border-inline-end/>border-inline-end</a></li><li><a href=/css/properties/border-inline-end-color/>border-inline-end-color</a></li><li><a href=/css/properties/border-inline-end-style/>border-inline-end-style</a></li><li><a href=/css/properties/border-inline-end-width/>border-inline-end-width</a></li><li><a href=/css/properties/border-inline-start/>border-inline-start</a></li><li><a href=/css/properties/border-inline-start-color/>border-inline-start-color</a></li><li><a href=/css/properties/border-inline-start-style/>border-inline-start-style</a></li><li><a href=/css/properties/border-inline-start-width/>border-inline-start-width</a></li><li><a href=/css/properties/border-inline-style/>border-inline-style</a></li><li><a href=/css/properties/border-inline-width/>border-inline-width</a></li><li><a href=/css/properties/border-left/>border-left</a></li><li><a href=/css/properties/border-left-color/>border-left-color</a></li><li><a href=/css/properties/border-left-style/>border-left-style</a></li><li><a href=/css/properties/border-left-width/>border-left-width</a></li><li><a href=/css/properties/border-radius/>border-radius</a></li><li><a href=/css/properties/border-right/>border-right</a></li><li><a href=/css/properties/border-right-color/>border-right-color</a></li><li><a href=/css/properties/border-right-style/>border-right-style</a></li><li><a href=/css/properties/border-right-width/>border-right-width</a></li><li><a href=/css/properties/border-spacing/>border-spacing</a></li><li><a href=/css/properties/border-start-end-radius/>border-start-end-radius</a></li><li><a href=/css/properties/border-start-start-radius/>border-start-start-radius</a></li><li><a href=/css/properties/border-style/>border-style</a></li><li><a href=/css/properties/border-top/>border-top</a></li><li><a href=/css/properties/border-top-color/>border-top-color</a></li><li><a href=/css/properties/border-top-left-radius/>border-top-left-radius</a></li><li><a href=/css/properties/border-top-right-radius/>border-top-right-radius</a></li><li><a href=/css/properties/border-top-style/>border-top-style</a></li><li><a href=/css/properties/border-top-width/>border-top-width</a></li><li><a href=/css/properties/border-width/>border-width</a></li><li><a href=/css/properties/bottom/>bottom</a></li><li><a href=/css/properties/box-decoration-break/>box-decoration-break</a></li><li><a href=/css/properties/box-shadow/>box-shadow</a></li><li><a href=/css/properties/box-sizing/>box-sizing</a></li><li><a href=/css/properties/caption-side/>caption-side</a></li><li><a href=/css/properties/caret/>caret</a></li><li><a href=/css/properties/caret-animation/>caret-animation</a></li><li><a href=/css/properties/caret-color/>caret-color</a></li><li><a href=/css/properties/caret-shape/>caret-shape</a></li><li><a href=/css/properties/clear/>clear</a></li><li><a href=/css/properties/clip/>clip</a></li><li><a href=/css/properties/clip-path/>clip-path</a></li><li><a href=/css/properties/color/>color</a></li><li><a href=/css/properties/color-scheme/>color-scheme</a></li><li><a href=/css/properties/column-count/>column-count</a></li><li><a href=/css/properties/column-fill/>column-fill</a></li><li><a href=/css/properties/column-gap/>column-gap</a></li><li><a href=/css/properties/column-rule/>column-rule</a></li><li><a href=/css/properties/column-rule-color/>column-rule-color</a></li><li><a href=/css/properties/column-rule-style/>column-rule-style</a></li><li><a href=/css/properties/column-rule-width/>column-rule-width</a></li><li><a href=/css/properties/column-span/>column-span</a></li><li><a href=/css/properties/column-width/>column-width</a></li><li><a href=/css/properties/columns/>columns</a></li><li><a href=/css/properties/contain/>contain</a></li><li><a href=/css/properties/contain-intrinsic-block-size/>contain-intrinsic-block-size</a></li><li><a href=/css/properties/contain-intrinsic-height/>contain-intrinsic-height</a></li><li><a href=/css/properties/contain-intrinsic-inline-size/>contain-intrinsic-inline-size</a></li><li><a href=/css/properties/contain-intrinsic-size/>contain-intrinsic-size</a></li><li><a href=/css/properties/contain-intrinsic-width/>contain-intrinsic-width</a></li><li><a href=/css/properties/container/>container</a></li><li><a href=/css/properties/container-name/>container-name</a></li><li><a href=/css/properties/container-type/>container-type</a></li><li><a href=/css/properties/content/>content</a></li><li><a href=/css/properties/content-visibility/>content-visibility</a></li><li><a href=/css/properties/continue/>continue</a></li><li><a href=/css/properties/counter-increment/>counter-increment</a></li><li><a href=/css/properties/counter-reset/>counter-reset</a></li><li><a href=/css/properties/counter-set/>counter-set</a></li><li><a href=/css/properties/cursor/>cursor</a></li><li><a href=/css/properties/direction/>direction</a></li><li><a href=/css/properties/display/>display</a></li><li><a href=/css/properties/empty-cells/>empty-cells</a></li><li><a href=/css/properties/filter/>filter</a></li><li><a href=/css/properties/flex/>flex</a></li><li><a href=/css/properties/flex-basis/>flex-basis</a></li><li><a href=/css/properties/flex-direction/>flex-direction</a></li><li><a href=/css/properties/flex-flow/>flex-flow</a></li><li><a href=/css/properties/flex-grow/>flex-grow</a></li><li><a href=/css/properties/flex-shrink/>flex-shrink</a></li><li><a href=/css/properties/flex-wrap/>flex-wrap</a></li><li><a href=/css/properties/float/>float</a></li><li><a href=/css/properties/font/>font</a></li><li><a href=/css/properties/font-family/>font-family</a></li><li><a href=/css/properties/font-feature-settings/>font-feature-settings</a></li><li><a href=/css/properties/font-kerning/>font-kerning</a></li><li><a href=/css/properties/font-optical-sizing/>font-optical-sizing</a></li><li><a href=/css/properties/font-size/>font-size</a></li><li><a href=/css/properties/font-size-adjust/>font-size-adjust</a></li><li><a href=/css/properties/font-stretch/>font-stretch</a></li><li><a href=/css/properties/font-style/>font-style</a></li><li><a href=/css/properties/font-variant/>font-variant</a></li><li><a href=/css/properties/font-variant-caps/>font-variant-caps</a></li><li><a href=/css/properties/font-variant-ligatures/>font-variant-ligatures</a></li><li><a href=/css/properties/font-variant-numeric/>font-variant-numeric</a></li><li><a href=/css/properties/font-variant-position/>font-variant-position</a></li><li><a href=/css/properties/font-variation-settings/>font-variation-settings</a></li><li><a href=/css/properties/font-weight/>font-weight</a></li><li><a href=/css/properties/forced-color-adjust/>forced-color-adjust</a></li><li><a href=/css/properties/gap/>gap</a></li><li><a href=/css/properties/grid/>grid</a></li><li><a href=/css/properties/grid-area/>grid-area</a></li><li><a href=/css/properties/grid-auto-columns/>grid-auto-columns</a></li><li><a href=/css/properties/grid-auto-flow/>grid-auto-flow</a></li><li><a href=/css/properties/grid-auto-rows/>grid-auto-rows</a></li><li><a href=/css/properties/grid-column/>grid-column</a></li><li><a href=/css/properties/grid-column-end/>grid-column-end</a></li><li><a href=/css/properties/grid-column-start/>grid-column-start</a></li><li><a href=/css/properties/grid-row/>grid-row</a></li><li><a href=/css/properties/grid-row-end/>grid-row-end</a></li><li><a href=/css/properties/grid-row-start/>grid-row-start</a></li><li><a href=/css/properties/grid-template/>grid-template</a></li><li><a href=/css/properties/grid-template-areas/>grid-template-areas</a></li><li><a href=/css/properties/grid-template-columns/>grid-template-columns</a></li><li><a href=/css/properties/grid-template-rows/>grid-template-rows</a></li><li><a href=/css/properties/hanging-punctuation/>hanging-punctuation</a></li><li><a href=/css/properties/height/>height</a></li><li><a href=/css/properties/hyphens/>hyphens</a></li><li><a href=/css/properties/image-rendering/>image-rendering</a></li><li><a href=/css/properties/initial-letter/>initial-letter</a></li><li><a href=/css/properties/initial-letter-align/>initial-letter-align</a></li><li><a href=/css/properties/inline-size/>inline-size</a></li><li><a href=/css/properties/inset/>inset</a></li><li><a href=/css/properties/inset-block/>inset-block</a></li><li><a href=/css/properties/inset-block-end/>inset-block-end</a></li><li><a href=/css/properties/inset-block-start/>inset-block-start</a></li><li><a href=/css/properties/inset-inline/>inset-inline</a></li><li><a href=/css/properties/inset-inline-end/>inset-inline-end</a></li><li><a href=/css/properties/inset-inline-start/>inset-inline-start</a></li><li><a href=/css/properties/isolation/>isolation</a></li><li><a href=/css/properties/justify-content/>justify-content</a></li><li><a href=/css/properties/justify-items/>justify-items</a></li><li><a href=/css/properties/justify-self/>justify-self</a></li><li><a href=/css/properties/left/>left</a></li><li><a href=/css/properties/letter-spacing/>letter-spacing</a></li><li><a href=/css/properties/line-break/>line-break</a></li><li><a href=/css/properties/line-clamp/>line-clamp</a></li><li><a href=/css/properties/line-height/>line-height</a></li><li><a href=/css/properties/list-style/>list-style</a></li><li><a href=/css/properties/list-style-image/>list-style-image</a></li><li><a href=/css/properties/list-style-position/>list-style-position</a></li><li><a href=/css/properties/list-style-type/>list-style-type</a></li><li><a href=/css/properties/margin/>margin</a></li><li><a href=/css/properties/margin-block/>margin-block</a></li><li><a href=/css/properties/margin-block-end/>margin-block-end</a></li><li><a href=/css/properties/margin-block-start/>margin-block-start</a></li><li><a href=/css/properties/margin-bottom/>margin-bottom</a></li><li><a href=/css/properties/margin-inline/>margin-inline</a></li><li><a href=/css/properties/margin-inline-end/>margin-inline-end</a></li><li><a href=/css/properties/margin-inline-start/>margin-inline-start</a></li><li><a href=/css/properties/margin-left/>margin-left</a></li><li><a href=/css/properties/margin-right/>margin-right</a></li><li><a href=/css/properties/margin-top/>margin-top</a></li><li><a href=/css/properties/mask/>mask</a></li><li><a href=/css/properties/mask-border/>mask-border</a></li><li><a href=/css/properties/mask-border-mode/>mask-border-mode</a></li><li><a href=/css/properties/mask-border-outset/>mask-border-outset</a></li><li><a href=/css/properties/mask-border-repeat/>mask-border-repeat</a></li><li><a href=/css/properties/mask-border-slice/>mask-border-slice</a></li><li><a href=/css/properties/mask-border-source/>mask-border-source</a></li><li><a href=/css/properties/mask-border-width/>mask-border-width</a></li><li><a href=/css/properties/mask-clip/>mask-clip</a></li><li><a href=/css/properties/mask-composite/>mask-composite</a></li><li><a href=/css/properties/mask-image/>mask-image</a></li><li><a href=/css/properties/mask-mode/>mask-mode</a></li><li><a href=/css/properties/mask-origin/>mask-origin</a></li><li><a href=/css/properties/mask-position/>mask-position</a></li><li><a href=/css/properties/mask-repeat/>mask-repeat</a></li><li><a href=/css/properties/mask-size/>mask-size</a></li><li><a href=/css/properties/mask-type/>mask-type</a></li><li><a href=/css/properties/math-depth/>math-depth</a></li><li><a href=/css/properties/math-shift/>math-shift</a></li><li><a href=/css/properties/math-style/>math-style</a></li><li><a href=/css/properties/max-block-size/>max-block-size</a></li><li><a href=/css/properties/max-height/>max-height</a></li><li><a href=/css/properties/max-inline-size/>max-inline-size</a></li><li><a href=/css/properties/max-lines/>max-lines</a></li><li><a href=/css/properties/max-width/>max-width</a></li><li><a href=/css/properties/min-block-size/>min-block-size</a></li><li><a href=/css/properties/min-height/>min-height</a></li><li><a href=/css/properties/min-inline-size/>min-inline-size</a></li><li><a href=/css/properties/min-width/>min-width</a></li><li><a href=/css/properties/mix-blend-mode/>mix-blend-mode</a></li><li><a href=/css/properties/nav-down/>nav-down</a></li><li><a href=/css/properties/nav-left/>nav-left</a></li><li><a href=/css/properties/nav-right/>nav-right</a></li><li><a href=/css/properties/nav-up/>nav-up</a></li><li><a href=/css/properties/object-fit/>object-fit</a></li><li><a href=/css/properties/object-position/>object-position</a></li><li><a href=/css/properties/opacity/>opacity</a></li><li><a href=/css/properties/orphans/>orphans</a></li><li><a href=/css/properties/outline/>outline</a></li><li><a href=/css/properties/outline-color/>outline-color</a></li><li><a href=/css/properties/outline-offset/>outline-offset</a></li><li><a href=/css/properties/outline-style/>outline-style</a></li><li><a href=/css/properties/outline-width/>outline-width</a></li><li><a href=/css/properties/overflow/>overflow</a></li><li><a href=/css/properties/overflow-block/>overflow-block</a></li><li><a href=/css/properties/overflow-clip-margin/>overflow-clip-margin</a></li><li><a href=/css/properties/overflow-inline/>overflow-inline</a></li><li><a href=/css/properties/overflow-wrap/>overflow-wrap</a></li><li><a href=/css/properties/overflow-x/>overflow-x</a></li><li><a href=/css/properties/overflow-y/>overflow-y</a></li><li><a href=/css/properties/padding/>padding</a></li><li><a href=/css/properties/padding-block/>padding-block</a></li><li><a href=/css/properties/padding-block-end/>padding-block-end</a></li><li><a href=/css/properties/padding-block-start/>padding-block-start</a></li><li><a href=/css/properties/padding-bottom/>padding-bottom</a></li><li><a href=/css/properties/padding-inline/>padding-inline</a></li><li><a href=/css/properties/padding-inline-end/>padding-inline-end</a></li><li><a href=/css/properties/padding-inline-start/>padding-inline-start</a></li><li><a href=/css/properties/padding-left/>padding-left</a></li><li><a href=/css/properties/padding-right/>padding-right</a></li><li><a href=/css/properties/padding-top/>padding-top</a></li><li><a href=/css/properties/paint-order/>paint-order</a></li><li><a href=/css/properties/perspective/>perspective</a></li><li><a href=/css/properties/perspective-origin/>perspective-origin</a></li><li><a href=/css/properties/place-content/>place-content</a></li><li><a href=/css/properties/place-items/>place-items</a></li><li><a href=/css/properties/place-self/>place-self</a></li><li><a href=/css/properties/pointer-events/>pointer-events</a></li><li><a href=/css/properties/position/>position</a></li><li><a href=/css/properties/print-color-adjust/>print-color-adjust</a></li><li><a href=/css/properties/quotes/>quotes</a></li><li><a href=/css/properties/resize/>resize</a></li><li><a href=/css/properties/right/>right</a></li><li><a href=/css/properties/rotate/>rotate</a></li><li><a href=/css/properties/row-gap/>row-gap</a></li><li><a href=/css/properties/scale/>scale</a></li><li><a href=/css/properties/scroll-behavior/>scroll-behavior</a></li><li><a href=/css/properties/scroll-margin/>scroll-margin</a></li><li><a href=/css/properties/scroll-margin-block/>scroll-margin-block</a></li><li><a href=/css/properties/scroll-margin-block-end/>scroll-margin-block-end</a></li><li><a href=/css/properties/scroll-margin-block-start/>scroll-margin-block-start</a></li><li><a href=/css/properties/scroll-margin-bottom/>scroll-margin-bottom</a></li><li><a href=/css/properties/scroll-margin-inline/>scroll-margin-inline</a></li><li><a href=/css/properties/scroll-margin-inline-end/>scroll-margin-inline-end</a></li><li><a href=/css/properties/scroll-margin-inline-start/>scroll-margin-inline-start</a></li><li><a href=/css/properties/scroll-margin-left/>scroll-margin-left</a></li><li><a href=/css/properties/scroll-margin-right/>scroll-margin-right</a></li><li><a href=/css/properties/scroll-margin-top/>scroll-margin-top</a></li><li><a href=/css/properties/scroll-padding/>scroll-padding</a></li><li><a href=/css/properties/scroll-padding-block/>scroll-padding-block</a></li><li><a href=/css/properties/scroll-padding-block-end/>scroll-padding-block-end</a></li><li><a href=/css/properties/scroll-padding-block-start/>scroll-padding-block-start</a></li><li><a href=/css/properties/scroll-padding-bottom/>scroll-padding-bottom</a></li><li><a href=/css/properties/scroll-padding-inline/>scroll-padding-inline</a></li><li><a href=/css/properties/scroll-padding-inline-end/>scroll-padding-inline-end</a></li><li><a href=/css/properties/scroll-padding-inline-start/>scroll-padding-inline-start</a></li><li><a href=/css/properties/scroll-padding-left/>scroll-padding-left</a></li><li><a href=/css/properties/scroll-padding-right/>scroll-padding-right</a></li><li><a href=/css/properties/scroll-padding-top/>scroll-padding-top</a></li><li><a href=/css/properties/scroll-snap-align/>scroll-snap-align</a></li><li><a href=/css/properties/scroll-snap-stop/>scroll-snap-stop</a></li><li><a href=/css/properties/scroll-snap-type/>scroll-snap-type</a></li><li><a href=/css/properties/scroll-timeline/>scroll-timeline</a></li><li><a href=/css/properties/scroll-timeline-axis/>scroll-timeline-axis</a></li><li><a href=/css/properties/scroll-timeline-name/>scroll-timeline-name</a></li><li><a href=/css/properties/scrollbar-color/>scrollbar-color</a></li><li><a href=/css/properties/scrollbar-gutter/>scrollbar-gutter</a></li><li><a href=/css/properties/scrollbar-width/>scrollbar-width</a></li><li><a href=/css/properties/shape-image-threshold/>shape-image-threshold</a></li><li><a href=/css/properties/shape-margin/>shape-margin</a></li><li><a href=/css/properties/shape-outside/>shape-outside</a></li><li><a href=/css/properties/shape-rendering/>shape-rendering</a></li><li><a href=/css/properties/tab-size/>tab-size</a></li><li><a href=/css/properties/table-layout/>table-layout</a></li><li><a href=/css/properties/text-align/>text-align</a></li><li><a href=/css/properties/text-align-all/>text-align-all</a></li><li><a href=/css/properties/text-align-last/>text-align-last</a></li><li><a href=/css/properties/text-combine-upright/>text-combine-upright</a></li><li><a href=/css/properties/text-decoration/>text-decoration</a></li><li><a href=/css/properties/text-decoration-color/>text-decoration-color</a></li><li><a href=/css/properties/text-decoration-line/>text-decoration-line</a></li><li><a href=/css/properties/text-decoration-skip-ink/>text-decoration-skip-ink</a></li><li><a href=/css/properties/text-decoration-style/>text-decoration-style</a></li><li><a href=/css/properties/text-decoration-thickness/>text-decoration-thickness</a></li><li><a href=/css/properties/text-decoration-trim/>text-decoration-trim</a></li><li><a href=/css/properties/text-emphasis/>text-emphasis</a></li><li><a href=/css/properties/text-emphasis-color/>text-emphasis-color</a></li><li><a href=/css/properties/text-emphasis-position/>text-emphasis-position</a></li><li><a href=/css/properties/text-emphasis-style/>text-emphasis-style</a></li><li><a href=/css/properties/text-indent/>text-indent</a></li><li><a href=/css/properties/text-justify/>text-justify</a></li><li><a href=/css/properties/text-orientation/>text-orientation</a></li><li><a href=/css/properties/text-overflow/>text-overflow</a></li><li><a href=/css/properties/text-rendering/>text-rendering</a></li><li><a href=/css/properties/text-shadow/>text-shadow</a></li><li><a href=/css/properties/text-transform/>text-transform</a></li><li><a href=/css/properties/text-underline-offset/>text-underline-offset</a></li><li><a href=/css/properties/text-underline-position/>text-underline-position</a></li><li><a href=/css/properties/top/>top</a></li><li><a href=/css/properties/transform/>transform</a></li><li><a href=/css/properties/transform-box/>transform-box</a></li><li><a href=/css/properties/transform-origin/>transform-origin</a></li><li><a href=/css/properties/transform-style/>transform-style</a></li><li><a href=/css/properties/transition/>transition</a></li><li><a href=/css/properties/transition-delay/>transition-delay</a></li><li><a href=/css/properties/transition-duration/>transition-duration</a></li><li><a href=/css/properties/transition-property/>transition-property</a></li><li><a href=/css/properties/transition-timing-function/>transition-timing-function</a></li><li><a href=/css/properties/translate/>translate</a></li><li><a href=/css/properties/unicode-bidi/>unicode-bidi</a></li><li><a href=/css/properties/vertical-align/>vertical-align</a></li><li><a href=/css/properties/visibility/>visibility</a></li><li><a href=/css/properties/white-space/>white-space</a></li><li><a href=/css/properties/widows/>widows</a></li><li><a href=/css/properties/width/>width</a></li><li><a href=/css/properties/word-break/>word-break</a></li><li><a href=/css/properties/word-spacing/>word-spacing</a></li><li><a href=/css/properties/word-wrap/>word-wrap</a></li><li><a href=/css/properties/writing-mode/>writing-mode</a></li><li><a href=/css/properties/z-index/>z-index</a></li><li><a href=/css/properties/zoom/>zoom</a></li></ul></div><h2>Pseudo-Classes</h2><div><ul><li><a href=/css/pseudo-classes/active/>active</a></li><li><a href=/css/pseudo-classes/any-link/>any-link</a></li><li><a href=/css/pseudo-classes/autofill/>autofill</a></li><li><a href=/css/pseudo-classes/blank/>blank</a></li><li><a href=/css/pseudo-classes/checked/>checked</a></li><li><a href=/css/pseudo-classes/default/>default</a></li><li><a href=/css/pseudo-classes/defined/>defined</a></li><li><a href=/css/pseudo-classes/dir/>dir</a></li><li><a href=/css/pseudo-classes/disabled/>disabled</a></li><li><a href=/css/pseudo-classes/empty/>empty</a></li><li><a href=/css/pseudo-classes/enabled/>enabled</a></li><li><a href=/css/pseudo-classes/first-child/>first-child</a></li><li><a href=/css/pseudo-classes/first-of-type/>first-of-type</a></li><li><a href=/css/pseudo-classes/focus/>focus</a></li><li><a href=/css/pseudo-classes/focus-visible/>focus-visible</a></li><li><a href=/css/pseudo-classes/focus-within/>focus-within</a></li><li><a href=/css/pseudo-classes/fullscreen/>fullscreen</a></li><li><a href=/css/pseudo-classes/has/>has</a></li><li><a href=/css/pseudo-classes/hover/>hover</a></li><li><a href=/css/pseudo-classes/in-range/>in-range</a></li><li><a href=/css/pseudo-classes/indeterminate/>indeterminate</a></li><li><a href=/css/pseudo-classes/invalid/>invalid</a></li><li><a href=/css/pseudo-classes/is/>is</a></li><li><a href=/css/pseudo-classes/lang/>lang</a></li><li><a href=/css/pseudo-classes/last-child/>last-child</a></li><li><a href=/css/pseudo-classes/last-of-type/>last-of-type</a></li><li><a href=/css/pseudo-classes/link/>link</a></li><li><a href=/css/pseudo-classes/local-link/>local-link</a></li><li><a href=/css/pseudo-classes/modal/>modal</a></li><li><a href=/css/pseudo-classes/not/>not</a></li><li><a href=/css/pseudo-classes/nth-child/>nth-child</a></li><li><a href=/css/pseudo-classes/nth-col/>nth-col</a></li><li><a href=/css/pseudo-classes/nth-last-child/>nth-last-child</a></li><li><a href=/css/pseudo-classes/nth-last-col/>nth-last-col</a></li><li><a href=/css/pseudo-classes/nth-last-of-type/>nth-last-of-type</a></li><li><a href=/css/pseudo-classes/nth-of-type/>nth-of-type</a></li><li><a href=/css/pseudo-classes/only-child/>only-child</a></li><li><a href=/css/pseudo-classes/only-of-type/>only-of-type</a></li><li><a href=/css/pseudo-classes/optional/>optional</a></li><li><a href=/css/pseudo-classes/out-of-range/>out-of-range</a></li><li><a href=/css/pseudo-classes/picture-in-picture/>picture-in-picture</a></li><li><a href=/css/pseudo-classes/placeholder-shown/>placeholder-shown</a></li><li><a href=/css/pseudo-classes/popover-open/>popover-open</a></li><li><a href=/css/pseudo-classes/read-only/>read-only</a></li><li><a href=/css/pseudo-classes/read-write/>read-write</a></li><li><a href=/css/pseudo-classes/required/>required</a></li><li><a href=/css/pseudo-classes/root/>root</a></li><li><a href=/css/pseudo-classes/scope/>scope</a></li><li><a href=/css/pseudo-classes/target/>target</a></li><li><a href=/css/pseudo-classes/target-within/>target-within</a></li><li><a href=/css/pseudo-classes/valid/>valid</a></li><li><a href=/css/pseudo-classes/visited/>visited</a></li><li><a href=/css/pseudo-classes/where/>where</a></li></ul></div><h2>Pseudo-Elements</h2><div><ul><li><a href=/css/pseudo-elements/after/>after</a></li><li><a href=/css/pseudo-elements/backdrop/>backdrop</a></li><li><a href=/css/pseudo-elements/before/>before</a></li><li><a href=/css/pseudo-elements/details-content/>details-content</a></li><li><a href=/css/pseudo-elements/file-selector-button/>file-selector-button</a></li><li><a href=/css/pseudo-elements/first-letter/>first-letter</a></li><li><a href=/css/pseudo-elements/first-line/>first-line</a></li><li><a href=/css/pseudo-elements/highlight/>highlight</a></li><li><a href=/css/pseudo-elements/marker/>marker</a></li><li><a href=/css/pseudo-elements/part/>part</a></li><li><a href=/css/pseudo-elements/placeholder/>placeholder</a></li><li><a href=/css/pseudo-elements/selection/>selection</a></li></ul></div><h2>Units</h2><div><ul><li><a href=/css/units/cap/>cap</a></li><li><a href=/css/units/ch/>ch</a></li><li><a href=/css/units/cm/>cm</a></li><li><a href=/css/units/cqb/>cqb</a></li><li><a href=/css/units/cqh/>cqh</a></li><li><a href=/css/units/cqi/>cqi</a></li><li><a href=/css/units/cqmax/>cqmax</a></li><li><a href=/css/units/cqmin/>cqmin</a></li><li><a href=/css/units/cqw/>cqw</a></li><li><a href=/css/units/deg/>deg</a></li><li><a href=/css/units/dpcm/>dpcm</a></li><li><a href=/css/units/dpi/>dpi</a></li><li><a href=/css/units/dppx/>dppx</a></li><li><a href=/css/units/dvb/>dvb</a></li><li><a href=/css/units/dvh/>dvh</a></li><li><a href=/css/units/dvi/>dvi</a></li><li><a href=/css/units/dvmax/>dvmax</a></li><li><a href=/css/units/dvmin/>dvmin</a></li><li><a href=/css/units/dvw/>dvw</a></li><li><a href=/css/units/em/>em</a></li><li><a href=/css/units/ex/>ex</a></li><li><a href=/css/units/grad/>grad</a></li><li><a href=/css/units/ic/>ic</a></li><li><a href=/css/units/in/>in</a></li><li><a href=/css/units/lvb/>lvb</a></li><li><a href=/css/units/lvh/>lvh</a></li><li><a href=/css/units/lvi/>lvi</a></li><li><a href=/css/units/lvmax/>lvmax</a></li><li><a href=/css/units/lvmin/>lvmin</a></li><li><a href=/css/units/lvw/>lvw</a></li><li><a href=/css/units/mm/>mm</a></li><li><a href=/css/units/ms/>ms</a></li><li><a href=/css/units/pc/>pc</a></li><li><a href=/css/units/pt/>pt</a></li><li><a href=/css/units/px/>px</a></li><li><a href=/css/units/q/>Q</a></li><li><a href=/css/units/rad/>rad</a></li><li><a href=/css/units/rem/>rem</a></li><li><a href=/css/units/s/>s</a></li><li><a href=/css/units/svb/>svb</a></li><li><a href=/css/units/svh/>svh</a></li><li><a href=/css/units/svi/>svi</a></li><li><a href=/css/units/svmax/>svmax</a></li><li><a href=/css/units/svmin/>svmin</a></li><li><a href=/css/units/svw/>svw</a></li><li><a href=/css/units/turn/>turn</a></li><li><a href=/css/units/vb/>vb</a></li><li><a href=/css/units/vh/>vh</a></li><li><a href=/css/units/vi/>vi</a></li><li><a href=/css/units/vmax/>vmax</a></li><li><a href=/css/units/vmin/>vmin</a></li><li><a href=/css/units/vw/>vw</a></li></ul></div></div><div class=h1><a id=switch-js>JS</a></div><div id=list-js><h2>Overview</h2><div><ul><li><a href=/js/>Overview</a></li></ul></div><h2>AbortController</h2><div><ul><li><a href=/js/abortcontroller/abort/>abort</a></li><li><a href=/js/abortcontroller/abortcontroller/>AbortController</a></li><li><a href=/js/abortcontroller/signal/>signal</a></li></ul></div><h2>AbstractRange</h2><div><ul><li><a href=/js/abstractrange/collapsed/>collapsed</a></li><li><a href=/js/abstractrange/endcontainer/>endContainer</a></li><li><a href=/js/abstractrange/endoffset/>endOffset</a></li><li><a href=/js/abstractrange/startcontainer/>startContainer</a></li><li><a href=/js/abstractrange/startoffset/>startOffset</a></li></ul></div><h2>AbortSignal</h2><div><ul><li><a href=/js/abortsignal/abort/>abort</a></li><li><a href=/js/abortsignal/aborted/>aborted</a></li><li><a href=/js/abortsignal/reason/>reason</a></li><li><a href=/js/abortsignal/throwifaborted/>throwIfAborted</a></li><li><a href=/js/abortsignal/timeout/>timeout</a></li></ul></div><h2>ChildNode</h2><div><ul><li><a href=/js/childnode/after/>after</a></li><li><a href=/js/childnode/before/>before</a></li><li><a href=/js/childnode/remove/>remove</a></li><li><a href=/js/childnode/replacewith/>replaceWith</a></li></ul></div><h2>Comment</h2><div><ul><li><a href=/js/comment/comment/>Comment</a></li></ul></div><h2>console</h2><div><ul><li><a href=/js/console/assert/>assert</a></li><li><a href=/js/console/clear/>clear</a></li><li><a href=/js/console/count/>count</a></li><li><a href=/js/console/countreset/>countReset</a></li><li><a href=/js/console/debug/>debug</a></li><li><a href=/js/console/dir/>dir</a></li><li><a href=/js/console/dirxml/>dirxml</a></li><li><a href=/js/console/error/>error</a></li><li><a href=/js/console/group/>group</a></li><li><a href=/js/console/groupcollapsed/>groupCollapsed</a></li><li><a href=/js/console/groupend/>groupEnd</a></li><li><a href=/js/console/info/>info</a></li><li><a href=/js/console/log/>log</a></li><li><a href=/js/console/table/>table</a></li><li><a href=/js/console/time/>time</a></li><li><a href=/js/console/timeend/>timeEnd</a></li><li><a href=/js/console/timelog/>timeLog</a></li><li><a href=/js/console/trace/>trace</a></li><li><a href=/js/console/warn/>warn</a></li></ul></div><h2>CustomEvent</h2><div><ul><li><a href=/js/customevent/customevent/>CustomEvent</a></li><li><a href=/js/customevent/detail/>detail</a></li></ul></div><h2>Declarations</h2><div><ul><li><a href=/js/declarations/const/>const</a></li><li><a href=/js/declarations/let/>let</a></li><li><a href=/js/declarations/var/>var</a></li></ul></div><h2>Document</h2><div><ul><li><a href=/js/document/adoptnode/>adoptNode</a></li><li><a href=/js/document/body/>body</a></li><li><a href=/js/document/characterset/>characterSet</a></li><li><a href=/js/document/close/>close</a></li><li><a href=/js/document/compatmode/>compatMode</a></li><li><a href=/js/document/contenttype/>contentType</a></li><li><a href=/js/document/cookie/>cookie</a></li><li><a href=/js/document/createcdatasection/>createCDATASection</a></li><li><a href=/js/document/createcomment/>createComment</a></li><li><a href=/js/document/createdocumentfragment/>createDocumentFragment</a></li><li><a href=/js/document/createelement/>createElement</a></li><li><a href=/js/document/createelementns/>createElementNS</a></li><li><a href=/js/document/createprocessinginstruction/>createProcessingInstruction</a></li><li><a href=/js/document/createtextnode/>createTextNode</a></li><li><a href=/js/document/currentscript/>currentScript</a></li><li><a href=/js/document/defaultview/>defaultView</a></li><li><a href=/js/document/designmode/>designMode</a></li><li><a href=/js/document/dir/>dir</a></li><li><a href=/js/document/doctype/>doctype</a></li><li><a href=/js/document/document/>Document</a></li><li><a href=/js/document/documentelement/>documentElement</a></li><li><a href=/js/document/documenturi/>documentURI</a></li><li><a href=/js/document/domain/>domain</a></li><li><a href=/js/document/embeds/>embeds</a></li><li><a href=/js/document/exitpictureinpicture/>exitPictureInPicture</a></li><li><a href=/js/document/forms/>forms</a></li><li><a href=/js/document/getelementsbyclassname/>getElementsByClassName</a></li><li><a href=/js/document/getelementsbyname/>getElementsByName</a></li><li><a href=/js/document/getelementsbytagname/>getElementsByTagName</a></li><li><a href=/js/document/getelementsbytagnamens/>getElementsByTagNameNS</a></li><li><a href=/js/document/hasfocus/>hasFocus</a></li><li><a href=/js/document/head/>head</a></li><li><a href=/js/document/hidden/>hidden</a></li><li><a href=/js/document/images/>images</a></li><li><a href=/js/document/implementation/>implementation</a></li><li><a href=/js/document/importnode/>importNode</a></li><li><a href=/js/document/lastmodified/>lastModified</a></li><li><a href=/js/document/links/>links</a></li><li><a href=/js/document/location/>location</a></li><li><a href=/js/document/onreadystatechange/>onreadystatechange</a></li><li><a href=/js/document/onvisibilitychange/>onvisibilitychange</a></li><li><a href=/js/document/open/>open</a></li><li><a href=/js/document/parsehtmlunsafe/>parseHTMLUnsafe</a></li><li><a href=/js/document/pictureinpictureenabled/>pictureInPictureEnabled</a></li><li><a href=/js/document/plugins/>plugins</a></li><li><a href=/js/document/readystate/>readyState</a></li><li><a href=/js/document/referrer/>referrer</a></li><li><a href=/js/document/scripts/>scripts</a></li><li><a href=/js/document/title/>title</a></li><li><a href=/js/document/url/>URL</a></li><li><a href=/js/document/visibilitystate/>visibilityState</a></li><li><a href=/js/document/write/>write</a></li><li><a href=/js/document/writeln/>writeln</a></li></ul></div><h2>DocumentFragment</h2><div><ul><li><a href=/js/documentfragment/documentfragment/>DocumentFragment</a></li></ul></div><h2>DocumentOrShadowRoot</h2><div><ul><li><a href=/js/documentorshadowroot/activeelement/>activeElement</a></li><li><a href=/js/documentorshadowroot/pictureinpictureelement/>pictureInPictureElement</a></li></ul></div><h2>DOMImplementation</h2><div><ul><li><a href=/js/domimplementation/createdocument/>createDocument</a></li><li><a href=/js/domimplementation/createdocumenttype/>createDocumentType</a></li><li><a href=/js/domimplementation/createhtmldocument/>createHTMLDocument</a></li></ul></div><h2>DOMStringList</h2><div><ul><li><a href=/js/domstringlist/contains/>contains</a></li><li><a href=/js/domstringlist/item/>item</a></li><li><a href=/js/domstringlist/length/>length</a></li></ul></div><h2>DOMTokenList</h2><div><ul><li><a href=/js/domtokenlist/add/>add</a></li><li><a href=/js/domtokenlist/contains/>contains</a></li><li><a href=/js/domtokenlist/item/>item</a></li><li><a href=/js/domtokenlist/length/>length</a></li><li><a href=/js/domtokenlist/remove/>remove</a></li><li><a href=/js/domtokenlist/replace/>replace</a></li><li><a href=/js/domtokenlist/supports/>supports</a></li><li><a href=/js/domtokenlist/toggle/>toggle</a></li><li><a href=/js/domtokenlist/value/>value</a></li></ul></div><h2>Element</h2><div><ul><li><a href=/js/element/attachshadow/>attachShadow</a></li><li><a href=/js/element/classlist/>classList</a></li><li><a href=/js/element/classname/>className</a></li><li><a href=/js/element/closest/>closest</a></li><li><a href=/js/element/getattribute/>getAttribute</a></li><li><a href=/js/element/getattributenames/>getAttributeNames</a></li><li><a href=/js/element/getattributens/>getAttributeNS</a></li><li><a href=/js/element/hasattribute/>hasAttribute</a></li><li><a href=/js/element/hasattributens/>hasAttributeNS</a></li><li><a href=/js/element/hasattributes/>hasAttributes</a></li><li><a href=/js/element/id/>id</a></li><li><a href=/js/element/innerhtml/>innerHTML</a></li><li><a href=/js/element/insertadjacenthtml/>insertAdjacentHTML</a></li><li><a href=/js/element/localname/>localName</a></li><li><a href=/js/element/matches/>matches</a></li><li><a href=/js/element/namespaceuri/>namespaceURI</a></li><li><a href=/js/element/outerhtml/>outerHTML</a></li><li><a href=/js/element/prefix/>prefix</a></li><li><a href=/js/element/removeattribute/>removeAttribute</a></li><li><a href=/js/element/removeattributens/>removeAttributeNS</a></li><li><a href=/js/element/setattribute/>setAttribute</a></li><li><a href=/js/element/setattributens/>setAttributeNS</a></li><li><a href=/js/element/shadowroot/>shadowRoot</a></li><li><a href=/js/element/slot/>slot</a></li><li><a href=/js/element/tagname/>tagName</a></li><li><a href=/js/element/toggleattribute/>toggleAttribute</a></li></ul></div><h2>Event</h2><div><ul><li><a href=/js/event/bubbles/>bubbles</a></li><li><a href=/js/event/cancelable/>cancelable</a></li><li><a href=/js/event/composed/>composed</a></li><li><a href=/js/event/composedpath/>composedPath</a></li><li><a href=/js/event/currenttarget/>currentTarget</a></li><li><a href=/js/event/defaultprevented/>defaultPrevented</a></li><li><a href=/js/event/event/>Event</a></li><li><a href=/js/event/eventphase/>eventPhase</a></li><li><a href=/js/event/istrusted/>isTrusted</a></li><li><a href=/js/event/preventdefault/>preventDefault</a></li><li><a href=/js/event/stopimmediatepropagation/>stopImmediatePropagation</a></li><li><a href=/js/event/stoppropagation/>stopPropagation</a></li><li><a href=/js/event/target/>target</a></li><li><a href=/js/event/timestamp/>timeStamp</a></li><li><a href=/js/event/type/>type</a></li></ul></div><h2>EventTarget</h2><div><ul><li><a href=/js/eventtarget/addeventlistener/>addEventListener</a></li><li><a href=/js/eventtarget/dispatchevent/>dispatchEvent</a></li><li><a href=/js/eventtarget/eventtarget/>EventTarget</a></li><li><a href=/js/eventtarget/removeeventlistener/>removeEventListener</a></li></ul></div><h2>HTMLAllCollection</h2><div><ul><li><a href=/js/htmlallcollection/item/>item</a></li><li><a href=/js/htmlallcollection/length/>length</a></li><li><a href=/js/htmlallcollection/nameditem/>namedItem</a></li></ul></div><h2>HTMLBaseElement</h2><div><ul><li><a href=/js/htmlbaseelement/href/>href</a></li><li><a href=/js/htmlbaseelement/target/>target</a></li></ul></div><h2>HTMLCollection</h2><div><ul><li><a href=/js/htmlcollection/item/>item</a></li><li><a href=/js/htmlcollection/length/>length</a></li><li><a href=/js/htmlcollection/nameditem/>namedItem</a></li></ul></div><h2>HTMLDialogElement</h2><div><ul><li><a href=/js/htmldialogelement/close/>close</a></li><li><a href=/js/htmldialogelement/open/>open</a></li><li><a href=/js/htmldialogelement/returnvalue/>returnValue</a></li><li><a href=/js/htmldialogelement/show/>show</a></li><li><a href=/js/htmldialogelement/showmodal/>showModal</a></li></ul></div><h2>HTMLElement</h2><div><ul><li><a href=/js/htmlelement/accesskey/>accessKey</a></li><li><a href=/js/htmlelement/accesskeylabel/>accessKeyLabel</a></li><li><a href=/js/htmlelement/attachinternals/>attachInternals</a></li><li><a href=/js/htmlelement/autocapitalize/>autocapitalize</a></li><li><a href=/js/htmlelement/autocorrect/>autocorrect</a></li><li><a href=/js/htmlelement/click/>click</a></li><li><a href=/js/htmlelement/constructor/>constructor</a></li><li><a href=/js/htmlelement/dir/>dir</a></li><li><a href=/js/htmlelement/draggable/>draggable</a></li><li><a href=/js/htmlelement/hidden/>hidden</a></li><li><a href=/js/htmlelement/hidepopover/>hidePopover</a></li><li><a href=/js/htmlelement/inert/>inert</a></li><li><a href=/js/htmlelement/innertext/>innerText</a></li><li><a href=/js/htmlelement/lang/>lang</a></li><li><a href=/js/htmlelement/outertext/>outerText</a></li><li><a href=/js/htmlelement/popover/>popover</a></li><li><a href=/js/htmlelement/showpopover/>showPopover</a></li><li><a href=/js/htmlelement/spellcheck/>spellcheck</a></li><li><a href=/js/htmlelement/title/>title</a></li><li><a href=/js/htmlelement/togglepopover/>togglePopover</a></li><li><a href=/js/htmlelement/translate/>translate</a></li><li><a href=/js/htmlelement/writingsuggestions/>writingSuggestions</a></li></ul></div><h2>HTMLFormControlsCollection</h2><div><ul><li><a href=/js/htmlformcontrolscollection/item/>item</a></li><li><a href=/js/htmlformcontrolscollection/length/>length</a></li><li><a href=/js/htmlformcontrolscollection/nameditem/>namedItem</a></li></ul></div><h2>HTMLLinkElement</h2><div><ul><li><a href=/js/htmllinkelement/crossorigin/>crossOrigin</a></li><li><a href=/js/htmllinkelement/href/>href</a></li><li><a href=/js/htmllinkelement/rel/>rel</a></li></ul></div><h2>HTMLOptionsCollection</h2><div><ul><li><a href=/js/htmloptionscollection/add/>add</a></li><li><a href=/js/htmloptionscollection/item/>item</a></li><li><a href=/js/htmloptionscollection/length/>length</a></li><li><a href=/js/htmloptionscollection/nameditem/>namedItem</a></li><li><a href=/js/htmloptionscollection/remove/>remove</a></li><li><a href=/js/htmloptionscollection/selectedindex/>selectedIndex</a></li></ul></div><h2>HTMLOrSVGElement</h2><div><ul><li><a href=/js/htmlorsvgelement/autofocus/>autofocus</a></li><li><a href=/js/htmlorsvgelement/blur/>blur</a></li><li><a href=/js/htmlorsvgelement/dataset/>dataset</a></li><li><a href=/js/htmlorsvgelement/focus/>focus</a></li><li><a href=/js/htmlorsvgelement/nonce/>nonce</a></li><li><a href=/js/htmlorsvgelement/tabindex/>tabIndex</a></li></ul></div><h2>HTMLVideoElement</h2><div><ul><li><a href=/js/htmlvideoelement/autopictureinpicture/>autoPictureInPicture</a></li><li><a href=/js/htmlvideoelement/disablepictureinpicture/>disablePictureInPicture</a></li><li><a href=/js/htmlvideoelement/requestpictureinpicture/>requestPictureInPicture</a></li></ul></div><h2>Iterations</h2><div><ul><li><a href=/js/iterations/do-while/>do-while</a></li><li><a href=/js/iterations/for/>for</a></li><li><a href=/js/iterations/for-await-of/>for-await-of</a></li><li><a href=/js/iterations/for-in/>for-in</a></li><li><a href=/js/iterations/for-of/>for-of</a></li><li><a href=/js/iterations/while/>while</a></li></ul></div><h2>Location</h2><div><ul><li><a href=/js/location/ancestororigins/>ancestorOrigins</a></li></ul></div><h2>MutationObserver</h2><div><ul><li><a href=/js/mutationobserver/disconnect/>disconnect</a></li><li><a href=/js/mutationobserver/mutationobserver/>MutationObserver</a></li><li><a href=/js/mutationobserver/observe/>observe</a></li><li><a href=/js/mutationobserver/takerecords/>takeRecords</a></li></ul></div><h2>MutationRecord</h2><div><ul><li><a href=/js/mutationrecord/addednodes/>addedNodes</a></li><li><a href=/js/mutationrecord/attributename/>attributeName</a></li><li><a href=/js/mutationrecord/attributenamespace/>attributeNamespace</a></li><li><a href=/js/mutationrecord/nextsibling/>nextSibling</a></li><li><a href=/js/mutationrecord/oldvalue/>oldValue</a></li><li><a href=/js/mutationrecord/previoussibling/>previousSibling</a></li><li><a href=/js/mutationrecord/removednodes/>removedNodes</a></li><li><a href=/js/mutationrecord/target/>target</a></li><li><a href=/js/mutationrecord/type/>type</a></li></ul></div><h2>Node</h2><div><ul><li><a href=/js/node/baseuri/>baseURI</a></li><li><a href=/js/node/childnodes/>childNodes</a></li><li><a href=/js/node/clonenode/>cloneNode</a></li><li><a href=/js/node/comparedocumentposition/>compareDocumentPosition</a></li><li><a href=/js/node/contains/>contains</a></li><li><a href=/js/node/firstchild/>firstChild</a></li><li><a href=/js/node/getrootnode/>getRootNode</a></li><li><a href=/js/node/haschildnodes/>hasChildNodes</a></li><li><a href=/js/node/isconnected/>isConnected</a></li><li><a href=/js/node/isequalnode/>isEqualNode</a></li><li><a href=/js/node/lastchild/>lastChild</a></li><li><a href=/js/node/nextsibling/>nextSibling</a></li><li><a href=/js/node/nodename/>nodeName</a></li><li><a href=/js/node/nodetype/>nodeType</a></li><li><a href=/js/node/normalize/>normalize</a></li><li><a href=/js/node/ownerdocument/>ownerDocument</a></li><li><a href=/js/node/parentelement/>parentElement</a></li><li><a href=/js/node/parentnode/>parentNode</a></li><li><a href=/js/node/previoussibling/>previousSibling</a></li></ul></div><h2>NodeList</h2><div><ul><li><a href=/js/nodelist/item/>item</a></li><li><a href=/js/nodelist/length/>length</a></li></ul></div><h2>NonDocumentTypeChildNode</h2><div><ul><li><a href=/js/nondocumenttypechildnode/nextelementsibling/>nextElementSibling</a></li><li><a href=/js/nondocumenttypechildnode/previouselementsibling/>previousElementSibling</a></li></ul></div><h2>NonElementParentNode</h2><div><ul><li><a href=/js/nonelementparentnode/getelementbyid/>getElementById</a></li></ul></div><h2>ParentNode</h2><div><ul><li><a href=/js/parentnode/append/>append</a></li><li><a href=/js/parentnode/children/>children</a></li><li><a href=/js/parentnode/firstelementchild/>firstElementChild</a></li><li><a href=/js/parentnode/lastelementchild/>lastElementChild</a></li><li><a href=/js/parentnode/prepend/>prepend</a></li><li><a href=/js/parentnode/queryselector/>querySelector</a></li><li><a href=/js/parentnode/queryselectorall/>querySelectorAll</a></li><li><a href=/js/parentnode/replacechildren/>replaceChildren</a></li></ul></div><h2>Prompts</h2><div><ul><li><a href=/js/prompts/alert/>alert</a></li><li><a href=/js/prompts/confirm/>confirm</a></li><li><a href=/js/prompts/prompt/>prompt</a></li></ul></div><h2>RadioNodeList</h2><div><ul><li><a href=/js/radionodelist/value/>value</a></li></ul></div><h2>Range</h2><div><ul><li><a href=/js/range/commonancestorcontainer/>commonAncestorContainer</a></li><li><a href=/js/range/comparepoint/>comparePoint</a></li><li><a href=/js/range/createcontextualfragment/>createContextualFragment</a></li><li><a href=/js/range/intersectsnode/>intersectsNode</a></li><li><a href=/js/range/range/>Range</a></li></ul></div><h2>Slottable</h2><div><ul><li><a href=/js/slottable/assignedslot/>assignedSlot</a></li></ul></div><h2>Statements</h2><div><ul><li><a href=/js/statements/if/>if</a></li><li><a href=/js/statements/switch/>switch</a></li><li><a href=/js/statements/try/>try</a></li></ul></div><h2>StaticRange</h2><div><ul><li><a href=/js/staticrange/staticrange/>StaticRange</a></li></ul></div><h2>Text</h2><div><ul><li><a href=/js/text/splittext/>splitText</a></li><li><a href=/js/text/text/>Text</a></li><li><a href=/js/text/wholetext/>wholeText</a></li></ul></div><h2>Window</h2><div><ul><li><a href=/js/window/location/>location</a></li></ul></div><h2>WindowOrWorkerGlobalScope</h2><div><ul><li><a href=/js/windoworworkerglobalscope/atob/>atob</a></li><li><a href=/js/windoworworkerglobalscope/btoa/>btoa</a></li><li><a href=/js/windoworworkerglobalscope/clearinterval/>clearInterval</a></li><li><a href=/js/windoworworkerglobalscope/cleartimeout/>clearTimeout</a></li><li><a href=/js/windoworworkerglobalscope/createimagebitmap/>createImageBitmap</a></li><li><a href=/js/windoworworkerglobalscope/crossoriginisolated/>crossOriginIsolated</a></li><li><a href=/js/windoworworkerglobalscope/issecurecontext/>isSecureContext</a></li><li><a href=/js/windoworworkerglobalscope/origin/>origin</a></li><li><a href=/js/windoworworkerglobalscope/queuemicrotask/>queueMicrotask</a></li><li><a href=/js/windoworworkerglobalscope/reporterror/>reportError</a></li><li><a href=/js/windoworworkerglobalscope/setinterval/>setInterval</a></li><li><a href=/js/windoworworkerglobalscope/settimeout/>setTimeout</a></li><li><a href=/js/windoworworkerglobalscope/structuredclone/>structuredClone</a></li></ul></div><h2>Other</h2><div><ul><li><a href=/js/array/>Array</a></li><li><a href=/js/comments/>Comments</a></li><li><a href=/js/date/>Date</a></li><li><a href=/js/enable/>Enable</a></li><li><a href=/js/functions/>Functions</a></li><li><a href=/js/infinity/>Infinity</a></li><li><a href=/js/print/>print</a></li></ul></div></div><div class=h1><a id=switch-php>PHP</a></div><div id=list-php><h2>Overview</h2><div><ul><li><a href=/php/>Overview</a></li></ul></div><h2>Array</h2><div><ul><li><a href=/php/array/array/>array</a></li><li><a href=/php/array/array_all/>array_all</a></li><li><a href=/php/array/array_any/>array_any</a></li><li><a href=/php/array/array_change_key_case/>array_change_key_case</a></li><li><a href=/php/array/array_chunk/>array_chunk</a></li><li><a href=/php/array/array_column/>array_column</a></li><li><a href=/php/array/array_combine/>array_combine</a></li><li><a href=/php/array/array_count_values/>array_count_values</a></li><li><a href=/php/array/array_diff/>array_diff</a></li><li><a href=/php/array/array_diff_assoc/>array_diff_assoc</a></li><li><a href=/php/array/array_diff_key/>array_diff_key</a></li><li><a href=/php/array/array_diff_uassoc/>array_diff_uassoc</a></li><li><a href=/php/array/array_diff_ukey/>array_diff_ukey</a></li><li><a href=/php/array/array_fill/>array_fill</a></li><li><a href=/php/array/array_fill_keys/>array_fill_keys</a></li><li><a href=/php/array/array_filter/>array_filter</a></li><li><a href=/php/array/array_find/>array_find</a></li><li><a href=/php/array/array_find_key/>array_find_key</a></li><li><a href=/php/array/array_first/>array_first</a></li><li><a href=/php/array/array_flip/>array_flip</a></li><li><a href=/php/array/array_intersect/>array_intersect</a></li><li><a href=/php/array/array_intersect_assoc/>array_intersect_assoc</a></li><li><a href=/php/array/array_intersect_key/>array_intersect_key</a></li><li><a href=/php/array/array_intersect_uassoc/>array_intersect_uassoc</a></li><li><a href=/php/array/array_intersect_ukey/>array_intersect_ukey</a></li><li><a href=/php/array/array_key_exists/>array_key_exists</a></li><li><a href=/php/array/array_key_first/>array_key_first</a></li><li><a href=/php/array/array_key_last/>array_key_last</a></li><li><a href=/php/array/array_keys/>array_keys</a></li><li><a href=/php/array/array_last/>array_last</a></li><li><a href=/php/array/array_map/>array_map</a></li><li><a href=/php/array/array_merge/>array_merge</a></li><li><a href=/php/array/array_merge_recursive/>array_merge_recursive</a></li><li><a href=/php/array/array_multisort/>array_multisort</a></li><li><a href=/php/array/array_pad/>array_pad</a></li><li><a href=/php/array/array_pop/>array_pop</a></li><li><a href=/php/array/array_product/>array_product</a></li><li><a href=/php/array/array_push/>array_push</a></li><li><a href=/php/array/array_rand/>array_rand</a></li><li><a href=/php/array/array_reduce/>array_reduce</a></li><li><a href=/php/array/array_replace/>array_replace</a></li><li><a href=/php/array/array_replace_recursive/>array_replace_recursive</a></li><li><a href=/php/array/array_reverse/>array_reverse</a></li><li><a href=/php/array/array_search/>array_search</a></li><li><a href=/php/array/array_shift/>array_shift</a></li><li><a href=/php/array/array_slice/>array_slice</a></li><li><a href=/php/array/array_splice/>array_splice</a></li><li><a href=/php/array/array_sum/>array_sum</a></li><li><a href=/php/array/array_udiff/>array_udiff</a></li><li><a href=/php/array/array_udiff_assoc/>array_udiff_assoc</a></li><li><a href=/php/array/array_udiff_uassoc/>array_udiff_uassoc</a></li><li><a href=/php/array/array_uintersect/>array_uintersect</a></li><li><a href=/php/array/array_uintersect_assoc/>array_uintersect_assoc</a></li><li><a href=/php/array/array_uintersect_uassoc/>array_uintersect_uassoc</a></li><li><a href=/php/array/array_unique/>array_unique</a></li><li><a href=/php/array/array_unshift/>array_unshift</a></li><li><a href=/php/array/array_values/>array_values</a></li><li><a href=/php/array/array_walk/>array_walk</a></li><li><a href=/php/array/array_walk_recursive/>array_walk_recursive</a></li><li><a href=/php/array/arsort/>arsort</a></li><li><a href=/php/array/asort/>asort</a></li><li><a href=/php/array/compact/>compact</a></li><li><a href=/php/array/count/>count</a></li><li><a href=/php/array/current/>current</a></li><li><a href=/php/array/end/>end</a></li><li><a href=/php/array/extract/>extract</a></li><li><a href=/php/array/in_array/>in_array</a></li><li><a href=/php/array/key/>key</a></li><li><a href=/php/array/key_exists/>key_exists</a></li><li><a href=/php/array/krsort/>krsort</a></li><li><a href=/php/array/ksort/>ksort</a></li><li><a href=/php/array/list/>list</a></li><li><a href=/php/array/natcasesort/>natcasesort</a></li><li><a href=/php/array/natsort/>natsort</a></li><li><a href=/php/array/next/>next</a></li><li><a href=/php/array/pos/>pos</a></li><li><a href=/php/array/prev/>prev</a></li><li><a href=/php/array/range/>range</a></li><li><a href=/php/array/reset/>reset</a></li><li><a href=/php/array/rsort/>rsort</a></li><li><a href=/php/array/shuffle/>shuffle</a></li><li><a href=/php/array/sizeof/>sizeof</a></li><li><a href=/php/array/sort/>sort</a></li><li><a href=/php/array/uasort/>uasort</a></li><li><a href=/php/array/uksort/>uksort</a></li><li><a href=/php/array/usort/>usort</a></li></ul></div><h2>BCMath</h2><div><ul><li><a href=/php/bcmath/bcadd/>bcadd</a></li><li><a href=/php/bcmath/bcceil/>bcceil</a></li><li><a href=/php/bcmath/bccomp/>bccomp</a></li><li><a href=/php/bcmath/bcdiv/>bcdiv</a></li><li><a href=/php/bcmath/bcdivmod/>bcdivmod</a></li><li><a href=/php/bcmath/bcfloor/>bcfloor</a></li><li><a href=/php/bcmath/bcmod/>bcmod</a></li><li><a href=/php/bcmath/bcmul/>bcmul</a></li><li><a href=/php/bcmath/bcpow/>bcpow</a></li><li><a href=/php/bcmath/bcpowmod/>bcpowmod</a></li><li><a href=/php/bcmath/bcround/>bcround</a></li><li><a href=/php/bcmath/bcscale/>bcscale</a></li><li><a href=/php/bcmath/bcsqrt/>bcsqrt</a></li><li><a href=/php/bcmath/bcsub/>bcsub</a></li></ul></div><h2>bzip2</h2><div><ul><li><a href=/php/bzip2/bzclose/>bzclose</a></li><li><a href=/php/bzip2/bzcompress/>bzcompress</a></li><li><a href=/php/bzip2/bzdecompress/>bzdecompress</a></li><li><a href=/php/bzip2/bzerrno/>bzerrno</a></li><li><a href=/php/bzip2/bzerror/>bzerror</a></li><li><a href=/php/bzip2/bzerrstr/>bzerrstr</a></li><li><a href=/php/bzip2/bzflush/>bzflush</a></li><li><a href=/php/bzip2/bzopen/>bzopen</a></li><li><a href=/php/bzip2/bzread/>bzread</a></li><li><a href=/php/bzip2/bzwrite/>bzwrite</a></li></ul></div><h2>Calendar</h2><div><ul><li><a href=/php/calendar/cal_days_in_month/>cal_days_in_month</a></li><li><a href=/php/calendar/cal_from_jd/>cal_from_jd</a></li><li><a href=/php/calendar/cal_info/>cal_info</a></li><li><a href=/php/calendar/cal_to_jd/>cal_to_jd</a></li><li><a href=/php/calendar/easter_date/>easter_date</a></li><li><a href=/php/calendar/easter_days/>easter_days</a></li><li><a href=/php/calendar/frenchtojd/>frenchtojd</a></li><li><a href=/php/calendar/gregoriantojd/>gregoriantojd</a></li><li><a href=/php/calendar/jddayofweek/>jddayofweek</a></li><li><a href=/php/calendar/jdmonthname/>jdmonthname</a></li><li><a href=/php/calendar/jdtofrench/>jdtofrench</a></li><li><a href=/php/calendar/jdtogregorian/>jdtogregorian</a></li><li><a href=/php/calendar/jdtojewish/>jdtojewish</a></li><li><a href=/php/calendar/jdtojulian/>jdtojulian</a></li><li><a href=/php/calendar/jdtounix/>jdtounix</a></li><li><a href=/php/calendar/jewishtojd/>jewishtojd</a></li><li><a href=/php/calendar/juliantojd/>juliantojd</a></li><li><a href=/php/calendar/unixtojd/>unixtojd</a></li></ul></div><h2>Class / Object</h2><div><ul><li><a href=/php/class-object/class_alias/>class_alias</a></li><li><a href=/php/class-object/class_exists/>class_exists</a></li><li><a href=/php/class-object/get_called_class/>get_called_class</a></li><li><a href=/php/class-object/get_class/>get_class</a></li><li><a href=/php/class-object/get_class_methods/>get_class_methods</a></li><li><a href=/php/class-object/get_class_vars/>get_class_vars</a></li><li><a href=/php/class-object/get_declared_classes/>get_declared_classes</a></li><li><a href=/php/class-object/get_declared_interfaces/>get_declared_interfaces</a></li><li><a href=/php/class-object/get_declared_traits/>get_declared_traits</a></li><li><a href=/php/class-object/get_object_vars/>get_object_vars</a></li><li><a href=/php/class-object/get_parent_class/>get_parent_class</a></li><li><a href=/php/class-object/interface_exists/>interface_exists</a></li><li><a href=/php/class-object/is_a/>is_a</a></li><li><a href=/php/class-object/is_subclass_of/>is_subclass_of</a></li><li><a href=/php/class-object/method_exists/>method_exists</a></li><li><a href=/php/class-object/property_exists/>property_exists</a></li><li><a href=/php/class-object/trait_exists/>trait_exists</a></li></ul></div><h2>Ctype</h2><div><ul><li><a href=/php/ctype/ctype_alnum/>ctype_alnum</a></li><li><a href=/php/ctype/ctype_alpha/>ctype_alpha</a></li><li><a href=/php/ctype/ctype_cntrl/>ctype_cntrl</a></li><li><a href=/php/ctype/ctype_digit/>ctype_digit</a></li><li><a href=/php/ctype/ctype_graph/>ctype_graph</a></li><li><a href=/php/ctype/ctype_lower/>ctype_lower</a></li><li><a href=/php/ctype/ctype_print/>ctype_print</a></li><li><a href=/php/ctype/ctype_punct/>ctype_punct</a></li><li><a href=/php/ctype/ctype_space/>ctype_space</a></li><li><a href=/php/ctype/ctype_upper/>ctype_upper</a></li><li><a href=/php/ctype/ctype_xdigit/>ctype_xdigit</a></li></ul></div><h2>cURL</h2><div><ul><li><a href=/php/curl/curl_close/>curl_close</a></li><li><a href=/php/curl/curl_copy_handle/>curl_copy_handle</a></li><li><a href=/php/curl/curl_errno/>curl_errno</a></li><li><a href=/php/curl/curl_error/>curl_error</a></li><li><a href=/php/curl/curl_escape/>curl_escape</a></li><li><a href=/php/curl/curl_exec/>curl_exec</a></li><li><a href=/php/curl/curl_getinfo/>curl_getinfo</a></li><li><a href=/php/curl/curl_init/>curl_init</a></li><li><a href=/php/curl/curl_multi_add_handle/>curl_multi_add_handle</a></li><li><a href=/php/curl/curl_multi_close/>curl_multi_close</a></li><li><a href=/php/curl/curl_multi_errno/>curl_multi_errno</a></li><li><a href=/php/curl/curl_multi_exec/>curl_multi_exec</a></li><li><a href=/php/curl/curl_multi_getcontent/>curl_multi_getcontent</a></li><li><a href=/php/curl/curl_multi_info_read/>curl_multi_info_read</a></li><li><a href=/php/curl/curl_multi_init/>curl_multi_init</a></li><li><a href=/php/curl/curl_multi_remove_handle/>curl_multi_remove_handle</a></li><li><a href=/php/curl/curl_multi_select/>curl_multi_select</a></li><li><a href=/php/curl/curl_multi_setopt/>curl_multi_setopt</a></li><li><a href=/php/curl/curl_multi_strerror/>curl_multi_strerror</a></li><li><a href=/php/curl/curl_pause/>curl_pause</a></li><li><a href=/php/curl/curl_reset/>curl_reset</a></li><li><a href=/php/curl/curl_setopt/>curl_setopt</a></li><li><a href=/php/curl/curl_setopt_array/>curl_setopt_array</a></li><li><a href=/php/curl/curl_share_close/>curl_share_close</a></li><li><a href=/php/curl/curl_share_errno/>curl_share_errno</a></li><li><a href=/php/curl/curl_share_init/>curl_share_init</a></li><li><a href=/php/curl/curl_share_init_persistent/>curl_share_init_persistent</a></li><li><a href=/php/curl/curl_share_setopt/>curl_share_setopt</a></li><li><a href=/php/curl/curl_share_strerror/>curl_share_strerror</a></li><li><a href=/php/curl/curl_strerror/>curl_strerror</a></li><li><a href=/php/curl/curl_unescape/>curl_unescape</a></li><li><a href=/php/curl/curl_upkeep/>curl_upkeep</a></li><li><a href=/php/curl/curl_version/>curl_version</a></li></ul></div><h2>Date / Time</h2><div><ul><li><a href=/php/date-time/checkdate/>checkdate</a></li><li><a href=/php/date-time/date/>date</a></li><li><a href=/php/date-time/date_add/>date_add</a></li><li><a href=/php/date-time/date_create/>date_create</a></li><li><a href=/php/date-time/date_create_from_format/>date_create_from_format</a></li><li><a href=/php/date-time/date_create_immutable/>date_create_immutable</a></li><li><a href=/php/date-time/date_create_immutable_from_format/>date_create_immutable_from_format</a></li><li><a href=/php/date-time/date_date_set/>date_date_set</a></li><li><a href=/php/date-time/date_default_timezone_get/>date_default_timezone_get</a></li><li><a href=/php/date-time/date_default_timezone_set/>date_default_timezone_set</a></li><li><a href=/php/date-time/date_diff/>date_diff</a></li><li><a href=/php/date-time/date_format/>date_format</a></li><li><a href=/php/date-time/date_get_last_errors/>date_get_last_errors</a></li><li><a href=/php/date-time/date_interval_create_from_date_string/>date_interval_create_from_date_string</a></li><li><a href=/php/date-time/date_interval_format/>date_interval_format</a></li><li><a href=/php/date-time/date_isodate_set/>date_isodate_set</a></li><li><a href=/php/date-time/date_modify/>date_modify</a></li><li><a href=/php/date-time/date_offset_get/>date_offset_get</a></li><li><a href=/php/date-time/date_parse/>date_parse</a></li><li><a href=/php/date-time/date_parse_from_format/>date_parse_from_format</a></li><li><a href=/php/date-time/date_sub/>date_sub</a></li><li><a href=/php/date-time/date_sun_info/>date_sun_info</a></li><li><a href=/php/date-time/date_sunrise/>date_sunrise</a></li><li><a href=/php/date-time/date_sunset/>date_sunset</a></li><li><a href=/php/date-time/date_time_set/>date_time_set</a></li><li><a href=/php/date-time/date_timestamp_get/>date_timestamp_get</a></li><li><a href=/php/date-time/date_timestamp_set/>date_timestamp_set</a></li><li><a href=/php/date-time/date_timezone_get/>date_timezone_get</a></li><li><a href=/php/date-time/date_timezone_set/>date_timezone_set</a></li><li><a href=/php/date-time/getdate/>getdate</a></li><li><a href=/php/date-time/gettimeofday/>gettimeofday</a></li><li><a href=/php/date-time/gmdate/>gmdate</a></li><li><a href=/php/date-time/gmmktime/>gmmktime</a></li><li><a href=/php/date-time/gmstrftime/>gmstrftime</a></li><li><a href=/php/date-time/idate/>idate</a></li><li><a href=/php/date-time/localtime/>localtime</a></li><li><a href=/php/date-time/microtime/>microtime</a></li><li><a href=/php/date-time/mktime/>mktime</a></li><li><a href=/php/date-time/strftime/>strftime</a></li><li><a href=/php/date-time/strptime/>strptime</a></li><li><a href=/php/date-time/strtotime/>strtotime</a></li><li><a href=/php/date-time/time/>time</a></li><li><a href=/php/date-time/timezone_abbreviations_list/>timezone_abbreviations_list</a></li><li><a href=/php/date-time/timezone_identifiers_list/>timezone_identifiers_list</a></li><li><a href=/php/date-time/timezone_location_get/>timezone_location_get</a></li><li><a href=/php/date-time/timezone_name_from_abbr/>timezone_name_from_abbr</a></li><li><a href=/php/date-time/timezone_name_get/>timezone_name_get</a></li><li><a href=/php/date-time/timezone_offset_get/>timezone_offset_get</a></li><li><a href=/php/date-time/timezone_open/>timezone_open</a></li><li><a href=/php/date-time/timezone_transitions_get/>timezone_transitions_get</a></li><li><a href=/php/date-time/timezone_version_get/>timezone_version_get</a></li></ul></div><h2>Directory</h2><div><ul><li><a href=/php/directory/chdir/>chdir</a></li><li><a href=/php/directory/chroot/>chroot</a></li><li><a href=/php/directory/closedir/>closedir</a></li><li><a href=/php/directory/dir/>dir</a></li><li><a href=/php/directory/getcwd/>getcwd</a></li><li><a href=/php/directory/opendir/>opendir</a></li><li><a href=/php/directory/readdir/>readdir</a></li><li><a href=/php/directory/rewinddir/>rewinddir</a></li><li><a href=/php/directory/scandir/>scandir</a></li></ul></div><h2>DOM</h2><div><ul><li><a href=/php/dom/dom_import_simplexml/>dom_import_simplexml</a></li></ul></div><h2>Error Handling</h2><div><ul><li><a href=/php/error-handling/debug_backtrace/>debug_backtrace</a></li><li><a href=/php/error-handling/debug_print_backtrace/>debug_print_backtrace</a></li><li><a href=/php/error-handling/error_clear_last/>error_clear_last</a></li><li><a href=/php/error-handling/error_get_last/>error_get_last</a></li><li><a href=/php/error-handling/error_log/>error_log</a></li><li><a href=/php/error-handling/error_reporting/>error_reporting</a></li><li><a href=/php/error-handling/get_error_handler/>get_error_handler</a></li><li><a href=/php/error-handling/get_exception_handler/>get_exception_handler</a></li><li><a href=/php/error-handling/restore_error_handler/>restore_error_handler</a></li><li><a href=/php/error-handling/restore_exception_handler/>restore_exception_handler</a></li><li><a href=/php/error-handling/set_error_handler/>set_error_handler</a></li><li><a href=/php/error-handling/set_exception_handler/>set_exception_handler</a></li><li><a href=/php/error-handling/trigger_error/>trigger_error</a></li><li><a href=/php/error-handling/user_error/>user_error</a></li></ul></div><h2>Exif</h2><div><ul><li><a href=/php/exif/exif_imagetype/>exif_imagetype</a></li><li><a href=/php/exif/exif_read_data/>exif_read_data</a></li><li><a href=/php/exif/exif_tagname/>exif_tagname</a></li><li><a href=/php/exif/exif_thumbnail/>exif_thumbnail</a></li></ul></div><h2>Fileinfo</h2><div><ul><li><a href=/php/fileinfo/finfo_buffer/>finfo_buffer</a></li><li><a href=/php/fileinfo/finfo_close/>finfo_close</a></li><li><a href=/php/fileinfo/finfo_file/>finfo_file</a></li><li><a href=/php/fileinfo/finfo_open/>finfo_open</a></li><li><a href=/php/fileinfo/finfo_set_flags/>finfo_set_flags</a></li><li><a href=/php/fileinfo/mime_content_type/>mime_content_type</a></li></ul></div><h2>Filesystem</h2><div><ul><li><a href=/php/filesystem/basename/>basename</a></li><li><a href=/php/filesystem/chgrp/>chgrp</a></li><li><a href=/php/filesystem/chmod/>chmod</a></li><li><a href=/php/filesystem/chown/>chown</a></li><li><a href=/php/filesystem/clearstatcache/>clearstatcache</a></li><li><a href=/php/filesystem/copy/>copy</a></li><li><a href=/php/filesystem/dirname/>dirname</a></li><li><a href=/php/filesystem/disk_free_space/>disk_free_space</a></li><li><a href=/php/filesystem/disk_total_space/>disk_total_space</a></li><li><a href=/php/filesystem/diskfreespace/>diskfreespace</a></li><li><a href=/php/filesystem/fclose/>fclose</a></li><li><a href=/php/filesystem/feof/>feof</a></li><li><a href=/php/filesystem/fflush/>fflush</a></li><li><a href=/php/filesystem/fgetc/>fgetc</a></li><li><a href=/php/filesystem/fgetcsv/>fgetcsv</a></li><li><a href=/php/filesystem/fgets/>fgets</a></li><li><a href=/php/filesystem/file/>file</a></li><li><a href=/php/filesystem/file_exists/>file_exists</a></li><li><a href=/php/filesystem/file_get_contents/>file_get_contents</a></li><li><a href=/php/filesystem/file_put_contents/>file_put_contents</a></li><li><a href=/php/filesystem/fileatime/>fileatime</a></li><li><a href=/php/filesystem/filectime/>filectime</a></li><li><a href=/php/filesystem/filegroup/>filegroup</a></li><li><a href=/php/filesystem/fileinode/>fileinode</a></li><li><a href=/php/filesystem/filemtime/>filemtime</a></li><li><a href=/php/filesystem/fileowner/>fileowner</a></li><li><a href=/php/filesystem/fileperms/>fileperms</a></li><li><a href=/php/filesystem/filesize/>filesize</a></li><li><a href=/php/filesystem/filetype/>filetype</a></li><li><a href=/php/filesystem/flock/>flock</a></li><li><a href=/php/filesystem/fnmatch/>fnmatch</a></li><li><a href=/php/filesystem/fopen/>fopen</a></li><li><a href=/php/filesystem/fpassthru/>fpassthru</a></li><li><a href=/php/filesystem/fputcsv/>fputcsv</a></li><li><a href=/php/filesystem/fputs/>fputs</a></li><li><a href=/php/filesystem/fread/>fread</a></li><li><a href=/php/filesystem/fscanf/>fscanf</a></li><li><a href=/php/filesystem/fseek/>fseek</a></li><li><a href=/php/filesystem/fstat/>fstat</a></li><li><a href=/php/filesystem/ftell/>ftell</a></li><li><a href=/php/filesystem/ftruncate/>ftruncate</a></li><li><a href=/php/filesystem/fwrite/>fwrite</a></li><li><a href=/php/filesystem/glob/>glob</a></li><li><a href=/php/filesystem/is_dir/>is_dir</a></li><li><a href=/php/filesystem/is_executable/>is_executable</a></li><li><a href=/php/filesystem/is_file/>is_file</a></li><li><a href=/php/filesystem/is_link/>is_link</a></li><li><a href=/php/filesystem/is_readable/>is_readable</a></li><li><a href=/php/filesystem/is_uploaded_file/>is_uploaded_file</a></li><li><a href=/php/filesystem/is_writable/>is_writable</a></li><li><a href=/php/filesystem/is_writeable/>is_writeable</a></li><li><a href=/php/filesystem/lchgrp/>lchgrp</a></li><li><a href=/php/filesystem/lchown/>lchown</a></li><li><a href=/php/filesystem/link/>link</a></li><li><a href=/php/filesystem/linkinfo/>linkinfo</a></li><li><a href=/php/filesystem/lstat/>lstat</a></li><li><a href=/php/filesystem/mkdir/>mkdir</a></li><li><a href=/php/filesystem/move_uploaded_file/>move_uploaded_file</a></li><li><a href=/php/filesystem/pathinfo/>pathinfo</a></li><li><a href=/php/filesystem/pclose/>pclose</a></li><li><a href=/php/filesystem/popen/>popen</a></li><li><a href=/php/filesystem/readfile/>readfile</a></li><li><a href=/php/filesystem/readlink/>readlink</a></li><li><a href=/php/filesystem/realpath/>realpath</a></li><li><a href=/php/filesystem/realpath_cache_get/>realpath_cache_get</a></li><li><a href=/php/filesystem/realpath_cache_size/>realpath_cache_size</a></li><li><a href=/php/filesystem/rename/>rename</a></li><li><a href=/php/filesystem/rewind/>rewind</a></li><li><a href=/php/filesystem/rmdir/>rmdir</a></li><li><a href=/php/filesystem/set_file_buffer/>set_file_buffer</a></li><li><a href=/php/filesystem/stat/>stat</a></li><li><a href=/php/filesystem/symlink/>symlink</a></li><li><a href=/php/filesystem/tempnam/>tempnam</a></li><li><a href=/php/filesystem/tmpfile/>tmpfile</a></li><li><a href=/php/filesystem/touch/>touch</a></li><li><a href=/php/filesystem/umask/>umask</a></li><li><a href=/php/filesystem/unlink/>unlink</a></li></ul></div><h2>Filter</h2><div><ul><li><a href=/php/filter/filter_has_var/>filter_has_var</a></li><li><a href=/php/filter/filter_id/>filter_id</a></li><li><a href=/php/filter/filter_input/>filter_input</a></li><li><a href=/php/filter/filter_input_array/>filter_input_array</a></li><li><a href=/php/filter/filter_list/>filter_list</a></li><li><a href=/php/filter/filter_var/>filter_var</a></li><li><a href=/php/filter/filter_var_array/>filter_var_array</a></li></ul></div><h2>Function Handling</h2><div><ul><li><a href=/php/function-handling/call_user_func/>call_user_func</a></li><li><a href=/php/function-handling/call_user_func_array/>call_user_func_array</a></li><li><a href=/php/function-handling/forward_static_call/>forward_static_call</a></li><li><a href=/php/function-handling/forward_static_call_array/>forward_static_call_array</a></li><li><a href=/php/function-handling/func_get_arg/>func_get_arg</a></li><li><a href=/php/function-handling/func_get_args/>func_get_args</a></li><li><a href=/php/function-handling/func_num_args/>func_num_args</a></li><li><a href=/php/function-handling/function_exists/>function_exists</a></li><li><a href=/php/function-handling/get_defined_functions/>get_defined_functions</a></li><li><a href=/php/function-handling/register_shutdown_function/>register_shutdown_function</a></li><li><a href=/php/function-handling/register_tick_function/>register_tick_function</a></li><li><a href=/php/function-handling/unregister_tick_function/>unregister_tick_function</a></li></ul></div><h2>GMP</h2><div><ul><li><a href=/php/gmp/gmp_abs/>gmp_abs</a></li><li><a href=/php/gmp/gmp_add/>gmp_add</a></li><li><a href=/php/gmp/gmp_and/>gmp_and</a></li><li><a href=/php/gmp/gmp_binomial/>gmp_binomial</a></li><li><a href=/php/gmp/gmp_clrbit/>gmp_clrbit</a></li><li><a href=/php/gmp/gmp_cmp/>gmp_cmp</a></li><li><a href=/php/gmp/gmp_com/>gmp_com</a></li><li><a href=/php/gmp/gmp_div/>gmp_div</a></li><li><a href=/php/gmp/gmp_div_q/>gmp_div_q</a></li><li><a href=/php/gmp/gmp_div_qr/>gmp_div_qr</a></li><li><a href=/php/gmp/gmp_div_r/>gmp_div_r</a></li><li><a href=/php/gmp/gmp_divexact/>gmp_divexact</a></li><li><a href=/php/gmp/gmp_export/>gmp_export</a></li><li><a href=/php/gmp/gmp_fact/>gmp_fact</a></li><li><a href=/php/gmp/gmp_gcd/>gmp_gcd</a></li><li><a href=/php/gmp/gmp_gcdext/>gmp_gcdext</a></li><li><a href=/php/gmp/gmp_hamdist/>gmp_hamdist</a></li><li><a href=/php/gmp/gmp_import/>gmp_import</a></li><li><a href=/php/gmp/gmp_init/>gmp_init</a></li><li><a href=/php/gmp/gmp_intval/>gmp_intval</a></li><li><a href=/php/gmp/gmp_invert/>gmp_invert</a></li><li><a href=/php/gmp/gmp_jacobi/>gmp_jacobi</a></li><li><a href=/php/gmp/gmp_kronecker/>gmp_kronecker</a></li><li><a href=/php/gmp/gmp_lcm/>gmp_lcm</a></li><li><a href=/php/gmp/gmp_legendre/>gmp_legendre</a></li><li><a href=/php/gmp/gmp_mod/>gmp_mod</a></li><li><a href=/php/gmp/gmp_mul/>gmp_mul</a></li><li><a href=/php/gmp/gmp_neg/>gmp_neg</a></li><li><a href=/php/gmp/gmp_nextprime/>gmp_nextprime</a></li><li><a href=/php/gmp/gmp_or/>gmp_or</a></li><li><a href=/php/gmp/gmp_perfect_power/>gmp_perfect_power</a></li><li><a href=/php/gmp/gmp_perfect_square/>gmp_perfect_square</a></li><li><a href=/php/gmp/gmp_popcount/>gmp_popcount</a></li><li><a href=/php/gmp/gmp_pow/>gmp_pow</a></li><li><a href=/php/gmp/gmp_powm/>gmp_powm</a></li><li><a href=/php/gmp/gmp_prob_prime/>gmp_prob_prime</a></li><li><a href=/php/gmp/gmp_random_bits/>gmp_random_bits</a></li><li><a href=/php/gmp/gmp_random_range/>gmp_random_range</a></li><li><a href=/php/gmp/gmp_random_seed/>gmp_random_seed</a></li><li><a href=/php/gmp/gmp_root/>gmp_root</a></li><li><a href=/php/gmp/gmp_rootrem/>gmp_rootrem</a></li><li><a href=/php/gmp/gmp_scan0/>gmp_scan0</a></li><li><a href=/php/gmp/gmp_scan1/>gmp_scan1</a></li><li><a href=/php/gmp/gmp_setbit/>gmp_setbit</a></li><li><a href=/php/gmp/gmp_sign/>gmp_sign</a></li><li><a href=/php/gmp/gmp_sqrt/>gmp_sqrt</a></li><li><a href=/php/gmp/gmp_sqrtrem/>gmp_sqrtrem</a></li><li><a href=/php/gmp/gmp_strval/>gmp_strval</a></li><li><a href=/php/gmp/gmp_sub/>gmp_sub</a></li><li><a href=/php/gmp/gmp_testbit/>gmp_testbit</a></li><li><a href=/php/gmp/gmp_xor/>gmp_xor</a></li></ul></div><h2>Hash</h2><div><ul><li><a href=/php/hash/hash/>hash</a></li><li><a href=/php/hash/hash_algos/>hash_algos</a></li><li><a href=/php/hash/hash_copy/>hash_copy</a></li><li><a href=/php/hash/hash_equals/>hash_equals</a></li><li><a href=/php/hash/hash_file/>hash_file</a></li><li><a href=/php/hash/hash_final/>hash_final</a></li><li><a href=/php/hash/hash_hkdf/>hash_hkdf</a></li><li><a href=/php/hash/hash_hmac/>hash_hmac</a></li><li><a href=/php/hash/hash_hmac_algos/>hash_hmac_algos</a></li><li><a href=/php/hash/hash_hmac_file/>hash_hmac_file</a></li><li><a href=/php/hash/hash_init/>hash_init</a></li><li><a href=/php/hash/hash_pbkdf2/>hash_pbkdf2</a></li><li><a href=/php/hash/hash_update/>hash_update</a></li><li><a href=/php/hash/hash_update_file/>hash_update_file</a></li><li><a href=/php/hash/hash_update_stream/>hash_update_stream</a></li></ul></div><h2>iconv</h2><div><ul><li><a href=/php/iconv/iconv/>iconv</a></li><li><a href=/php/iconv/iconv_get_encoding/>iconv_get_encoding</a></li><li><a href=/php/iconv/iconv_mime_decode/>iconv_mime_decode</a></li><li><a href=/php/iconv/iconv_mime_decode_headers/>iconv_mime_decode_headers</a></li><li><a href=/php/iconv/iconv_mime_encode/>iconv_mime_encode</a></li><li><a href=/php/iconv/iconv_set_encoding/>iconv_set_encoding</a></li><li><a href=/php/iconv/iconv_strlen/>iconv_strlen</a></li><li><a href=/php/iconv/iconv_strpos/>iconv_strpos</a></li><li><a href=/php/iconv/iconv_strrpos/>iconv_strrpos</a></li><li><a href=/php/iconv/iconv_substr/>iconv_substr</a></li><li><a href=/php/iconv/ob_iconv_handler/>ob_iconv_handler</a></li></ul></div><h2>Image</h2><div><ul><li><a href=/php/image/gd_info/>gd_info</a></li><li><a href=/php/image/getimagesize/>getimagesize</a></li><li><a href=/php/image/getimagesizefromstring/>getimagesizefromstring</a></li><li><a href=/php/image/image_type_to_extension/>image_type_to_extension</a></li><li><a href=/php/image/image_type_to_mime_type/>image_type_to_mime_type</a></li><li><a href=/php/image/imageaffine/>imageaffine</a></li><li><a href=/php/image/imageaffinematrixconcat/>imageaffinematrixconcat</a></li><li><a href=/php/image/imageaffinematrixget/>imageaffinematrixget</a></li><li><a href=/php/image/imagealphablending/>imagealphablending</a></li><li><a href=/php/image/imageantialias/>imageantialias</a></li><li><a href=/php/image/imagearc/>imagearc</a></li><li><a href=/php/image/imageavif/>imageavif</a></li><li><a href=/php/image/imagebmp/>imagebmp</a></li><li><a href=/php/image/imagechar/>imagechar</a></li><li><a href=/php/image/imagecharup/>imagecharup</a></li><li><a href=/php/image/imagecolorallocate/>imagecolorallocate</a></li><li><a href=/php/image/imagecolorallocatealpha/>imagecolorallocatealpha</a></li><li><a href=/php/image/imagecolorat/>imagecolorat</a></li><li><a href=/php/image/imagecolorclosest/>imagecolorclosest</a></li><li><a href=/php/image/imagecolorclosestalpha/>imagecolorclosestalpha</a></li><li><a href=/php/image/imagecolorclosesthwb/>imagecolorclosesthwb</a></li><li><a href=/php/image/imagecolordeallocate/>imagecolordeallocate</a></li><li><a href=/php/image/imagecolorexact/>imagecolorexact</a></li><li><a href=/php/image/imagecolorexactalpha/>imagecolorexactalpha</a></li><li><a href=/php/image/imagecolormatch/>imagecolormatch</a></li><li><a href=/php/image/imagecolorresolve/>imagecolorresolve</a></li><li><a href=/php/image/imagecolorresolvealpha/>imagecolorresolvealpha</a></li><li><a href=/php/image/imagecolorset/>imagecolorset</a></li><li><a href=/php/image/imagecolorsforindex/>imagecolorsforindex</a></li><li><a href=/php/image/imagecolorstotal/>imagecolorstotal</a></li><li><a href=/php/image/imagecolortransparent/>imagecolortransparent</a></li><li><a href=/php/image/imageconvolution/>imageconvolution</a></li><li><a href=/php/image/imagecopy/>imagecopy</a></li><li><a href=/php/image/imagecopymerge/>imagecopymerge</a></li><li><a href=/php/image/imagecopymergegray/>imagecopymergegray</a></li><li><a href=/php/image/imagecopyresampled/>imagecopyresampled</a></li><li><a href=/php/image/imagecopyresized/>imagecopyresized</a></li><li><a href=/php/image/imagecreate/>imagecreate</a></li><li><a href=/php/image/imagecreatefromavif/>imagecreatefromavif</a></li><li><a href=/php/image/imagecreatefrombmp/>imagecreatefrombmp</a></li><li><a href=/php/image/imagecreatefromgif/>imagecreatefromgif</a></li><li><a href=/php/image/imagecreatefromjpeg/>imagecreatefromjpeg</a></li><li><a href=/php/image/imagecreatefrompng/>imagecreatefrompng</a></li><li><a href=/php/image/imagecreatefromstring/>imagecreatefromstring</a></li><li><a href=/php/image/imagecreatefromtga/>imagecreatefromtga</a></li><li><a href=/php/image/imagecreatefromwbmp/>imagecreatefromwbmp</a></li><li><a href=/php/image/imagecreatefromwebp/>imagecreatefromwebp</a></li><li><a href=/php/image/imagecreatefromxbm/>imagecreatefromxbm</a></li><li><a href=/php/image/imagecreatefromxpm/>imagecreatefromxpm</a></li><li><a href=/php/image/imagecreatetruecolor/>imagecreatetruecolor</a></li><li><a href=/php/image/imagecrop/>imagecrop</a></li><li><a href=/php/image/imagecropauto/>imagecropauto</a></li><li><a href=/php/image/imagedashedline/>imagedashedline</a></li><li><a href=/php/image/imagedestroy/>imagedestroy</a></li><li><a href=/php/image/imageellipse/>imageellipse</a></li><li><a href=/php/image/imagefill/>imagefill</a></li><li><a href=/php/image/imagefilledarc/>imagefilledarc</a></li><li><a href=/php/image/imagefilledellipse/>imagefilledellipse</a></li><li><a href=/php/image/imagefilledpolygon/>imagefilledpolygon</a></li><li><a href=/php/image/imagefilledrectangle/>imagefilledrectangle</a></li><li><a href=/php/image/imagefilltoborder/>imagefilltoborder</a></li><li><a href=/php/image/imagefilter/>imagefilter</a></li><li><a href=/php/image/imageflip/>imageflip</a></li><li><a href=/php/image/imagefontheight/>imagefontheight</a></li><li><a href=/php/image/imagefontwidth/>imagefontwidth</a></li><li><a href=/php/image/imageftbbox/>imageftbbox</a></li><li><a href=/php/image/imagefttext/>imagefttext</a></li><li><a href=/php/image/imagegammacorrect/>imagegammacorrect</a></li><li><a href=/php/image/imagegetclip/>imagegetclip</a></li><li><a href=/php/image/imagegetinterpolation/>imagegetinterpolation</a></li><li><a href=/php/image/imagegif/>imagegif</a></li><li><a href=/php/image/imageinterlace/>imageinterlace</a></li><li><a href=/php/image/imageistruecolor/>imageistruecolor</a></li><li><a href=/php/image/imagejpeg/>imagejpeg</a></li><li><a href=/php/image/imagelayereffect/>imagelayereffect</a></li><li><a href=/php/image/imageline/>imageline</a></li><li><a href=/php/image/imageloadfont/>imageloadfont</a></li><li><a href=/php/image/imageopenpolygon/>imageopenpolygon</a></li><li><a href=/php/image/imagepalettecopy/>imagepalettecopy</a></li><li><a href=/php/image/imagepalettetotruecolor/>imagepalettetotruecolor</a></li><li><a href=/php/image/imagepng/>imagepng</a></li><li><a href=/php/image/imagepolygon/>imagepolygon</a></li><li><a href=/php/image/imagerectangle/>imagerectangle</a></li><li><a href=/php/image/imageresolution/>imageresolution</a></li><li><a href=/php/image/imagerotate/>imagerotate</a></li><li><a href=/php/image/imagesavealpha/>imagesavealpha</a></li><li><a href=/php/image/imagescale/>imagescale</a></li><li><a href=/php/image/imagesetbrush/>imagesetbrush</a></li><li><a href=/php/image/imagesetclip/>imagesetclip</a></li><li><a href=/php/image/imagesetinterpolation/>imagesetinterpolation</a></li><li><a href=/php/image/imagesetpixel/>imagesetpixel</a></li><li><a href=/php/image/imagesetstyle/>imagesetstyle</a></li><li><a href=/php/image/imagesetthickness/>imagesetthickness</a></li><li><a href=/php/image/imagesettile/>imagesettile</a></li><li><a href=/php/image/imagestring/>imagestring</a></li><li><a href=/php/image/imagestringup/>imagestringup</a></li><li><a href=/php/image/imagesx/>imagesx</a></li><li><a href=/php/image/imagesy/>imagesy</a></li><li><a href=/php/image/imagetruecolortopalette/>imagetruecolortopalette</a></li><li><a href=/php/image/imagettfbbox/>imagettfbbox</a></li><li><a href=/php/image/imagettftext/>imagettftext</a></li><li><a href=/php/image/imagetypes/>imagetypes</a></li><li><a href=/php/image/imagewbmp/>imagewbmp</a></li><li><a href=/php/image/imagewebp/>imagewebp</a></li><li><a href=/php/image/imagexbm/>imagexbm</a></li><li><a href=/php/image/iptcembed/>iptcembed</a></li><li><a href=/php/image/iptcparse/>iptcparse</a></li></ul></div><h2>JSON</h2><div><ul><li><a href=/php/json/json_decode/>json_decode</a></li><li><a href=/php/json/json_encode/>json_encode</a></li><li><a href=/php/json/json_last_error/>json_last_error</a></li><li><a href=/php/json/json_last_error_msg/>json_last_error_msg</a></li><li><a href=/php/json/json_validate/>json_validate</a></li></ul></div><h2>libxml</h2><div><ul><li><a href=/php/libxml/libxml_clear_errors/>libxml_clear_errors</a></li><li><a href=/php/libxml/libxml_get_errors/>libxml_get_errors</a></li><li><a href=/php/libxml/libxml_get_external_entity_loader/>libxml_get_external_entity_loader</a></li><li><a href=/php/libxml/libxml_get_last_error/>libxml_get_last_error</a></li><li><a href=/php/libxml/libxml_set_external_entity_loader/>libxml_set_external_entity_loader</a></li><li><a href=/php/libxml/libxml_set_streams_context/>libxml_set_streams_context</a></li><li><a href=/php/libxml/libxml_use_internal_errors/>libxml_use_internal_errors</a></li></ul></div><h2>Mail</h2><div><ul><li><a href=/php/mail/mail/>mail</a></li></ul></div><h2>Math</h2><div><ul><li><a href=/php/math/abs/>abs</a></li><li><a href=/php/math/acos/>acos</a></li><li><a href=/php/math/acosh/>acosh</a></li><li><a href=/php/math/asin/>asin</a></li><li><a href=/php/math/asinh/>asinh</a></li><li><a href=/php/math/atan/>atan</a></li><li><a href=/php/math/atan2/>atan2</a></li><li><a href=/php/math/atanh/>atanh</a></li><li><a href=/php/math/base_convert/>base_convert</a></li><li><a href=/php/math/bindec/>bindec</a></li><li><a href=/php/math/ceil/>ceil</a></li><li><a href=/php/math/cos/>cos</a></li><li><a href=/php/math/cosh/>cosh</a></li><li><a href=/php/math/decbin/>decbin</a></li><li><a href=/php/math/dechex/>dechex</a></li><li><a href=/php/math/decoct/>decoct</a></li><li><a href=/php/math/deg2rad/>deg2rad</a></li><li><a href=/php/math/exp/>exp</a></li><li><a href=/php/math/expm1/>expm1</a></li><li><a href=/php/math/fdiv/>fdiv</a></li><li><a href=/php/math/floor/>floor</a></li><li><a href=/php/math/fmod/>fmod</a></li><li><a href=/php/math/fpow/>fpow</a></li><li><a href=/php/math/hexdec/>hexdec</a></li><li><a href=/php/math/hypot/>hypot</a></li><li><a href=/php/math/intdiv/>intdiv</a></li><li><a href=/php/math/is_finite/>is_finite</a></li><li><a href=/php/math/is_infinite/>is_infinite</a></li><li><a href=/php/math/is_nan/>is_nan</a></li><li><a href=/php/math/log/>log</a></li><li><a href=/php/math/log10/>log10</a></li><li><a href=/php/math/log1p/>log1p</a></li><li><a href=/php/math/max/>max</a></li><li><a href=/php/math/min/>min</a></li><li><a href=/php/math/octdec/>octdec</a></li><li><a href=/php/math/pi/>pi</a></li><li><a href=/php/math/pow/>pow</a></li><li><a href=/php/math/rad2deg/>rad2deg</a></li><li><a href=/php/math/round/>round</a></li><li><a href=/php/math/sin/>sin</a></li><li><a href=/php/math/sinh/>sinh</a></li><li><a href=/php/math/sqrt/>sqrt</a></li><li><a href=/php/math/tan/>tan</a></li><li><a href=/php/math/tanh/>tanh</a></li></ul></div><h2>Miscellaneous</h2><div><ul><li><a href=/php/miscellaneous/__halt_compiler/>__halt_compiler</a></li><li><a href=/php/miscellaneous/connection_aborted/>connection_aborted</a></li><li><a href=/php/miscellaneous/connection_status/>connection_status</a></li><li><a href=/php/miscellaneous/constant/>constant</a></li><li><a href=/php/miscellaneous/define/>define</a></li><li><a href=/php/miscellaneous/defined/>defined</a></li><li><a href=/php/miscellaneous/die/>die</a></li><li><a href=/php/miscellaneous/eval/>eval</a></li><li><a href=/php/miscellaneous/exit/>exit</a></li><li><a href=/php/miscellaneous/highlight_file/>highlight_file</a></li><li><a href=/php/miscellaneous/highlight_string/>highlight_string</a></li><li><a href=/php/miscellaneous/hrtime/>hrtime</a></li><li><a href=/php/miscellaneous/ignore_user_abort/>ignore_user_abort</a></li><li><a href=/php/miscellaneous/pack/>pack</a></li><li><a href=/php/miscellaneous/php_strip_whitespace/>php_strip_whitespace</a></li><li><a href=/php/miscellaneous/show_source/>show_source</a></li><li><a href=/php/miscellaneous/sleep/>sleep</a></li><li><a href=/php/miscellaneous/sys_getloadavg/>sys_getloadavg</a></li><li><a href=/php/miscellaneous/time_nanosleep/>time_nanosleep</a></li><li><a href=/php/miscellaneous/time_sleep_until/>time_sleep_until</a></li><li><a href=/php/miscellaneous/uniqid/>uniqid</a></li><li><a href=/php/miscellaneous/unpack/>unpack</a></li><li><a href=/php/miscellaneous/usleep/>usleep</a></li></ul></div><h2>Multibyte String</h2><div><ul><li><a href=/php/multibyte-string/mb_check_encoding/>mb_check_encoding</a></li><li><a href=/php/multibyte-string/mb_chr/>mb_chr</a></li><li><a href=/php/multibyte-string/mb_convert_case/>mb_convert_case</a></li><li><a href=/php/multibyte-string/mb_convert_encoding/>mb_convert_encoding</a></li><li><a href=/php/multibyte-string/mb_convert_kana/>mb_convert_kana</a></li><li><a href=/php/multibyte-string/mb_convert_variables/>mb_convert_variables</a></li><li><a href=/php/multibyte-string/mb_decode_mimeheader/>mb_decode_mimeheader</a></li><li><a href=/php/multibyte-string/mb_decode_numericentity/>mb_decode_numericentity</a></li><li><a href=/php/multibyte-string/mb_detect_encoding/>mb_detect_encoding</a></li><li><a href=/php/multibyte-string/mb_detect_order/>mb_detect_order</a></li><li><a href=/php/multibyte-string/mb_encode_mimeheader/>mb_encode_mimeheader</a></li><li><a href=/php/multibyte-string/mb_encode_numericentity/>mb_encode_numericentity</a></li><li><a href=/php/multibyte-string/mb_encoding_aliases/>mb_encoding_aliases</a></li><li><a href=/php/multibyte-string/mb_ereg/>mb_ereg</a></li><li><a href=/php/multibyte-string/mb_ereg_match/>mb_ereg_match</a></li><li><a href=/php/multibyte-string/mb_ereg_replace/>mb_ereg_replace</a></li><li><a href=/php/multibyte-string/mb_ereg_replace_callback/>mb_ereg_replace_callback</a></li><li><a href=/php/multibyte-string/mb_ereg_search/>mb_ereg_search</a></li><li><a href=/php/multibyte-string/mb_ereg_search_getpos/>mb_ereg_search_getpos</a></li><li><a href=/php/multibyte-string/mb_ereg_search_getregs/>mb_ereg_search_getregs</a></li><li><a href=/php/multibyte-string/mb_ereg_search_init/>mb_ereg_search_init</a></li><li><a href=/php/multibyte-string/mb_ereg_search_pos/>mb_ereg_search_pos</a></li><li><a href=/php/multibyte-string/mb_ereg_search_regs/>mb_ereg_search_regs</a></li><li><a href=/php/multibyte-string/mb_ereg_search_setpos/>mb_ereg_search_setpos</a></li><li><a href=/php/multibyte-string/mb_eregi/>mb_eregi</a></li><li><a href=/php/multibyte-string/mb_eregi_replace/>mb_eregi_replace</a></li><li><a href=/php/multibyte-string/mb_get_info/>mb_get_info</a></li><li><a href=/php/multibyte-string/mb_http_input/>mb_http_input</a></li><li><a href=/php/multibyte-string/mb_http_output/>mb_http_output</a></li><li><a href=/php/multibyte-string/mb_internal_encoding/>mb_internal_encoding</a></li><li><a href=/php/multibyte-string/mb_language/>mb_language</a></li><li><a href=/php/multibyte-string/mb_lcfirst/>mb_lcfirst</a></li><li><a href=/php/multibyte-string/mb_list_encodings/>mb_list_encodings</a></li><li><a href=/php/multibyte-string/mb_ltrim/>mb_ltrim</a></li><li><a href=/php/multibyte-string/mb_ord/>mb_ord</a></li><li><a href=/php/multibyte-string/mb_output_handler/>mb_output_handler</a></li><li><a href=/php/multibyte-string/mb_parse_str/>mb_parse_str</a></li><li><a href=/php/multibyte-string/mb_preferred_mime_name/>mb_preferred_mime_name</a></li><li><a href=/php/multibyte-string/mb_regex_encoding/>mb_regex_encoding</a></li><li><a href=/php/multibyte-string/mb_regex_set_options/>mb_regex_set_options</a></li><li><a href=/php/multibyte-string/mb_rtrim/>mb_rtrim</a></li><li><a href=/php/multibyte-string/mb_scrub/>mb_scrub</a></li><li><a href=/php/multibyte-string/mb_send_mail/>mb_send_mail</a></li><li><a href=/php/multibyte-string/mb_split/>mb_split</a></li><li><a href=/php/multibyte-string/mb_str_pad/>mb_str_pad</a></li><li><a href=/php/multibyte-string/mb_str_split/>mb_str_split</a></li><li><a href=/php/multibyte-string/mb_strcut/>mb_strcut</a></li><li><a href=/php/multibyte-string/mb_strimwidth/>mb_strimwidth</a></li><li><a href=/php/multibyte-string/mb_stripos/>mb_stripos</a></li><li><a href=/php/multibyte-string/mb_stristr/>mb_stristr</a></li><li><a href=/php/multibyte-string/mb_strlen/>mb_strlen</a></li><li><a href=/php/multibyte-string/mb_strpos/>mb_strpos</a></li><li><a href=/php/multibyte-string/mb_strrchr/>mb_strrchr</a></li><li><a href=/php/multibyte-string/mb_strrichr/>mb_strrichr</a></li><li><a href=/php/multibyte-string/mb_strripos/>mb_strripos</a></li><li><a href=/php/multibyte-string/mb_strrpos/>mb_strrpos</a></li><li><a href=/php/multibyte-string/mb_strstr/>mb_strstr</a></li><li><a href=/php/multibyte-string/mb_strtolower/>mb_strtolower</a></li><li><a href=/php/multibyte-string/mb_strtoupper/>mb_strtoupper</a></li><li><a href=/php/multibyte-string/mb_strwidth/>mb_strwidth</a></li><li><a href=/php/multibyte-string/mb_substitute_character/>mb_substitute_character</a></li><li><a href=/php/multibyte-string/mb_substr/>mb_substr</a></li><li><a href=/php/multibyte-string/mb_substr_count/>mb_substr_count</a></li><li><a href=/php/multibyte-string/mb_trim/>mb_trim</a></li><li><a href=/php/multibyte-string/mb_ucfirst/>mb_ucfirst</a></li></ul></div><h2>Network</h2><div><ul><li><a href=/php/network/checkdnsrr/>checkdnsrr</a></li><li><a href=/php/network/closelog/>closelog</a></li><li><a href=/php/network/dns_check_record/>dns_check_record</a></li><li><a href=/php/network/dns_get_mx/>dns_get_mx</a></li><li><a href=/php/network/dns_get_record/>dns_get_record</a></li><li><a href=/php/network/fsockopen/>fsockopen</a></li><li><a href=/php/network/gethostbyaddr/>gethostbyaddr</a></li><li><a href=/php/network/gethostbyname/>gethostbyname</a></li><li><a href=/php/network/gethostbynamel/>gethostbynamel</a></li><li><a href=/php/network/gethostname/>gethostname</a></li><li><a href=/php/network/getmxrr/>getmxrr</a></li><li><a href=/php/network/getprotobyname/>getprotobyname</a></li><li><a href=/php/network/getprotobynumber/>getprotobynumber</a></li><li><a href=/php/network/getservbyname/>getservbyname</a></li><li><a href=/php/network/getservbyport/>getservbyport</a></li><li><a href=/php/network/header/>header</a></li><li><a href=/php/network/header_register_callback/>header_register_callback</a></li><li><a href=/php/network/header_remove/>header_remove</a></li><li><a href=/php/network/headers_list/>headers_list</a></li><li><a href=/php/network/headers_sent/>headers_sent</a></li><li><a href=/php/network/http_clear_last_response_headers/>http_clear_last_response_headers</a></li><li><a href=/php/network/http_get_last_response_headers/>http_get_last_response_headers</a></li><li><a href=/php/network/http_response_code/>http_response_code</a></li><li><a href=/php/network/inet_ntop/>inet_ntop</a></li><li><a href=/php/network/inet_pton/>inet_pton</a></li><li><a href=/php/network/ip2long/>ip2long</a></li><li><a href=/php/network/long2ip/>long2ip</a></li><li><a href=/php/network/openlog/>openlog</a></li><li><a href=/php/network/pfsockopen/>pfsockopen</a></li><li><a href=/php/network/setcookie/>setcookie</a></li><li><a href=/php/network/setrawcookie/>setrawcookie</a></li><li><a href=/php/network/socket_get_status/>socket_get_status</a></li><li><a href=/php/network/socket_set_blocking/>socket_set_blocking</a></li><li><a href=/php/network/socket_set_timeout/>socket_set_timeout</a></li><li><a href=/php/network/syslog/>syslog</a></li></ul></div><h2>Options / Information</h2><div><ul><li><a href=/php/options-information/assert/>assert</a></li><li><a href=/php/options-information/assert_options/>assert_options</a></li><li><a href=/php/options-information/cli_get_process_title/>cli_get_process_title</a></li><li><a href=/php/options-information/cli_set_process_title/>cli_set_process_title</a></li><li><a href=/php/options-information/dl/>dl</a></li><li><a href=/php/options-information/extension_loaded/>extension_loaded</a></li><li><a href=/php/options-information/gc_collect_cycles/>gc_collect_cycles</a></li><li><a href=/php/options-information/gc_disable/>gc_disable</a></li><li><a href=/php/options-information/gc_enable/>gc_enable</a></li><li><a href=/php/options-information/gc_enabled/>gc_enabled</a></li><li><a href=/php/options-information/gc_mem_caches/>gc_mem_caches</a></li><li><a href=/php/options-information/gc_status/>gc_status</a></li><li><a href=/php/options-information/get_cfg_var/>get_cfg_var</a></li><li><a href=/php/options-information/get_current_user/>get_current_user</a></li><li><a href=/php/options-information/get_defined_constants/>get_defined_constants</a></li><li><a href=/php/options-information/get_extension_funcs/>get_extension_funcs</a></li><li><a href=/php/options-information/get_include_path/>get_include_path</a></li><li><a href=/php/options-information/get_included_files/>get_included_files</a></li><li><a href=/php/options-information/get_loaded_extensions/>get_loaded_extensions</a></li><li><a href=/php/options-information/get_required_files/>get_required_files</a></li><li><a href=/php/options-information/get_resources/>get_resources</a></li><li><a href=/php/options-information/getenv/>getenv</a></li><li><a href=/php/options-information/getlastmod/>getlastmod</a></li><li><a href=/php/options-information/getmygid/>getmygid</a></li><li><a href=/php/options-information/getmyinode/>getmyinode</a></li><li><a href=/php/options-information/getmypid/>getmypid</a></li><li><a href=/php/options-information/getmyuid/>getmyuid</a></li><li><a href=/php/options-information/getopt/>getopt</a></li><li><a href=/php/options-information/getrusage/>getrusage</a></li><li><a href=/php/options-information/ini_alter/>ini_alter</a></li><li><a href=/php/options-information/ini_get/>ini_get</a></li><li><a href=/php/options-information/ini_get_all/>ini_get_all</a></li><li><a href=/php/options-information/ini_parse_quantity/>ini_parse_quantity</a></li><li><a href=/php/options-information/ini_restore/>ini_restore</a></li><li><a href=/php/options-information/ini_set/>ini_set</a></li><li><a href=/php/options-information/memory_get_peak_usage/>memory_get_peak_usage</a></li><li><a href=/php/options-information/memory_get_usage/>memory_get_usage</a></li><li><a href=/php/options-information/memory_reset_peak_usage/>memory_reset_peak_usage</a></li><li><a href=/php/options-information/php_ini_loaded_file/>php_ini_loaded_file</a></li><li><a href=/php/options-information/php_ini_scanned_files/>php_ini_scanned_files</a></li><li><a href=/php/options-information/php_sapi_name/>php_sapi_name</a></li><li><a href=/php/options-information/php_uname/>php_uname</a></li><li><a href=/php/options-information/phpcredits/>phpcredits</a></li><li><a href=/php/options-information/phpinfo/>phpinfo</a></li><li><a href=/php/options-information/phpversion/>phpversion</a></li><li><a href=/php/options-information/putenv/>putenv</a></li><li><a href=/php/options-information/set_include_path/>set_include_path</a></li><li><a href=/php/options-information/set_time_limit/>set_time_limit</a></li><li><a href=/php/options-information/sys_get_temp_dir/>sys_get_temp_dir</a></li><li><a href=/php/options-information/version_compare/>version_compare</a></li><li><a href=/php/options-information/zend_thread_id/>zend_thread_id</a></li><li><a href=/php/options-information/zend_version/>zend_version</a></li></ul></div><h2>Output Control</h2><div><ul><li><a href=/php/output-control/flush/>flush</a></li><li><a href=/php/output-control/ob_clean/>ob_clean</a></li><li><a href=/php/output-control/ob_end_clean/>ob_end_clean</a></li><li><a href=/php/output-control/ob_end_flush/>ob_end_flush</a></li><li><a href=/php/output-control/ob_flush/>ob_flush</a></li><li><a href=/php/output-control/ob_get_clean/>ob_get_clean</a></li><li><a href=/php/output-control/ob_get_contents/>ob_get_contents</a></li><li><a href=/php/output-control/ob_get_flush/>ob_get_flush</a></li><li><a href=/php/output-control/ob_get_length/>ob_get_length</a></li><li><a href=/php/output-control/ob_get_level/>ob_get_level</a></li><li><a href=/php/output-control/ob_get_status/>ob_get_status</a></li><li><a href=/php/output-control/ob_gzhandler/>ob_gzhandler</a></li><li><a href=/php/output-control/ob_implicit_flush/>ob_implicit_flush</a></li><li><a href=/php/output-control/ob_list_handlers/>ob_list_handlers</a></li><li><a href=/php/output-control/ob_start/>ob_start</a></li><li><a href=/php/output-control/output_add_rewrite_var/>output_add_rewrite_var</a></li><li><a href=/php/output-control/output_reset_rewrite_vars/>output_reset_rewrite_vars</a></li></ul></div><h2>PCNTL</h2><div><ul><li><a href=/php/pcntl/pcntl_alarm/>pcntl_alarm</a></li><li><a href=/php/pcntl/pcntl_async_signals/>pcntl_async_signals</a></li><li><a href=/php/pcntl/pcntl_errno/>pcntl_errno</a></li><li><a href=/php/pcntl/pcntl_exec/>pcntl_exec</a></li><li><a href=/php/pcntl/pcntl_fork/>pcntl_fork</a></li><li><a href=/php/pcntl/pcntl_get_last_error/>pcntl_get_last_error</a></li><li><a href=/php/pcntl/pcntl_getpriority/>pcntl_getpriority</a></li><li><a href=/php/pcntl/pcntl_rfork/>pcntl_rfork</a></li><li><a href=/php/pcntl/pcntl_setpriority/>pcntl_setpriority</a></li><li><a href=/php/pcntl/pcntl_signal/>pcntl_signal</a></li><li><a href=/php/pcntl/pcntl_signal_dispatch/>pcntl_signal_dispatch</a></li><li><a href=/php/pcntl/pcntl_signal_get_handler/>pcntl_signal_get_handler</a></li><li><a href=/php/pcntl/pcntl_sigprocmask/>pcntl_sigprocmask</a></li><li><a href=/php/pcntl/pcntl_sigtimedwait/>pcntl_sigtimedwait</a></li><li><a href=/php/pcntl/pcntl_sigwaitinfo/>pcntl_sigwaitinfo</a></li><li><a href=/php/pcntl/pcntl_strerror/>pcntl_strerror</a></li><li><a href=/php/pcntl/pcntl_unshare/>pcntl_unshare</a></li><li><a href=/php/pcntl/pcntl_wait/>pcntl_wait</a></li><li><a href=/php/pcntl/pcntl_waitpid/>pcntl_waitpid</a></li><li><a href=/php/pcntl/pcntl_wexitstatus/>pcntl_wexitstatus</a></li><li><a href=/php/pcntl/pcntl_wifexited/>pcntl_wifexited</a></li><li><a href=/php/pcntl/pcntl_wifsignaled/>pcntl_wifsignaled</a></li><li><a href=/php/pcntl/pcntl_wifstopped/>pcntl_wifstopped</a></li><li><a href=/php/pcntl/pcntl_wstopsig/>pcntl_wstopsig</a></li><li><a href=/php/pcntl/pcntl_wtermsig/>pcntl_wtermsig</a></li></ul></div><h2>PCRE</h2><div><ul><li><a href=/php/pcre/preg_filter/>preg_filter</a></li><li><a href=/php/pcre/preg_grep/>preg_grep</a></li><li><a href=/php/pcre/preg_last_error/>preg_last_error</a></li><li><a href=/php/pcre/preg_match/>preg_match</a></li><li><a href=/php/pcre/preg_match_all/>preg_match_all</a></li><li><a href=/php/pcre/preg_quote/>preg_quote</a></li><li><a href=/php/pcre/preg_replace/>preg_replace</a></li><li><a href=/php/pcre/preg_replace_callback/>preg_replace_callback</a></li><li><a href=/php/pcre/preg_replace_callback_array/>preg_replace_callback_array</a></li><li><a href=/php/pcre/preg_split/>preg_split</a></li></ul></div><h2>POSIX</h2><div><ul><li><a href=/php/posix/posix_access/>posix_access</a></li><li><a href=/php/posix/posix_ctermid/>posix_ctermid</a></li><li><a href=/php/posix/posix_eaccess/>posix_eaccess</a></li><li><a href=/php/posix/posix_errno/>posix_errno</a></li><li><a href=/php/posix/posix_fpathconf/>posix_fpathconf</a></li><li><a href=/php/posix/posix_get_last_error/>posix_get_last_error</a></li><li><a href=/php/posix/posix_getcwd/>posix_getcwd</a></li><li><a href=/php/posix/posix_getegid/>posix_getegid</a></li><li><a href=/php/posix/posix_geteuid/>posix_geteuid</a></li><li><a href=/php/posix/posix_getgid/>posix_getgid</a></li><li><a href=/php/posix/posix_getgrgid/>posix_getgrgid</a></li><li><a href=/php/posix/posix_getgrnam/>posix_getgrnam</a></li><li><a href=/php/posix/posix_getgroups/>posix_getgroups</a></li><li><a href=/php/posix/posix_getlogin/>posix_getlogin</a></li><li><a href=/php/posix/posix_getpgid/>posix_getpgid</a></li><li><a href=/php/posix/posix_getpgrp/>posix_getpgrp</a></li><li><a href=/php/posix/posix_getpid/>posix_getpid</a></li><li><a href=/php/posix/posix_getppid/>posix_getppid</a></li><li><a href=/php/posix/posix_getpwnam/>posix_getpwnam</a></li><li><a href=/php/posix/posix_getpwuid/>posix_getpwuid</a></li><li><a href=/php/posix/posix_getrlimit/>posix_getrlimit</a></li><li><a href=/php/posix/posix_getsid/>posix_getsid</a></li><li><a href=/php/posix/posix_getuid/>posix_getuid</a></li><li><a href=/php/posix/posix_initgroups/>posix_initgroups</a></li><li><a href=/php/posix/posix_isatty/>posix_isatty</a></li><li><a href=/php/posix/posix_kill/>posix_kill</a></li><li><a href=/php/posix/posix_mkfifo/>posix_mkfifo</a></li><li><a href=/php/posix/posix_mknod/>posix_mknod</a></li><li><a href=/php/posix/posix_pathconf/>posix_pathconf</a></li><li><a href=/php/posix/posix_setegid/>posix_setegid</a></li><li><a href=/php/posix/posix_seteuid/>posix_seteuid</a></li><li><a href=/php/posix/posix_setgid/>posix_setgid</a></li><li><a href=/php/posix/posix_setpgid/>posix_setpgid</a></li><li><a href=/php/posix/posix_setrlimit/>posix_setrlimit</a></li><li><a href=/php/posix/posix_setsid/>posix_setsid</a></li><li><a href=/php/posix/posix_setuid/>posix_setuid</a></li><li><a href=/php/posix/posix_strerror/>posix_strerror</a></li><li><a href=/php/posix/posix_sysconf/>posix_sysconf</a></li><li><a href=/php/posix/posix_times/>posix_times</a></li><li><a href=/php/posix/posix_ttyname/>posix_ttyname</a></li><li><a href=/php/posix/posix_uname/>posix_uname</a></li></ul></div><h2>Random</h2><div><ul><li><a href=/php/random/getrandmax/>getrandmax</a></li><li><a href=/php/random/lcg_value/>lcg_value</a></li><li><a href=/php/random/mt_getrandmax/>mt_getrandmax</a></li><li><a href=/php/random/mt_rand/>mt_rand</a></li><li><a href=/php/random/mt_srand/>mt_srand</a></li><li><a href=/php/random/rand/>rand</a></li><li><a href=/php/random/random_bytes/>random_bytes</a></li><li><a href=/php/random/random_int/>random_int</a></li><li><a href=/php/random/srand/>srand</a></li></ul></div><h2>Readline</h2><div><ul><li><a href=/php/readline/readline/>readline</a></li><li><a href=/php/readline/readline_add_history/>readline_add_history</a></li><li><a href=/php/readline/readline_callback_handler_install/>readline_callback_handler_install</a></li><li><a href=/php/readline/readline_callback_handler_remove/>readline_callback_handler_remove</a></li><li><a href=/php/readline/readline_callback_read_char/>readline_callback_read_char</a></li><li><a href=/php/readline/readline_clear_history/>readline_clear_history</a></li><li><a href=/php/readline/readline_completion_function/>readline_completion_function</a></li><li><a href=/php/readline/readline_info/>readline_info</a></li><li><a href=/php/readline/readline_list_history/>readline_list_history</a></li><li><a href=/php/readline/readline_on_new_line/>readline_on_new_line</a></li><li><a href=/php/readline/readline_read_history/>readline_read_history</a></li><li><a href=/php/readline/readline_redisplay/>readline_redisplay</a></li><li><a href=/php/readline/readline_write_history/>readline_write_history</a></li></ul></div><h2>ReflectionConstant</h2><div><ul><li><a href=/php/reflectionconstant/getname/>getName</a></li><li><a href=/php/reflectionconstant/getnamespacename/>getNamespaceName</a></li><li><a href=/php/reflectionconstant/getshortname/>getShortName</a></li><li><a href=/php/reflectionconstant/getvalue/>getValue</a></li><li><a href=/php/reflectionconstant/isdeprecated/>isDeprecated</a></li></ul></div><h2>Session</h2><div><ul><li><a href=/php/session/session_abort/>session_abort</a></li><li><a href=/php/session/session_cache_expire/>session_cache_expire</a></li><li><a href=/php/session/session_cache_limiter/>session_cache_limiter</a></li><li><a href=/php/session/session_commit/>session_commit</a></li><li><a href=/php/session/session_create_id/>session_create_id</a></li><li><a href=/php/session/session_decode/>session_decode</a></li><li><a href=/php/session/session_destroy/>session_destroy</a></li><li><a href=/php/session/session_encode/>session_encode</a></li><li><a href=/php/session/session_gc/>session_gc</a></li><li><a href=/php/session/session_get_cookie_params/>session_get_cookie_params</a></li><li><a href=/php/session/session_id/>session_id</a></li><li><a href=/php/session/session_module_name/>session_module_name</a></li><li><a href=/php/session/session_name/>session_name</a></li><li><a href=/php/session/session_regenerate_id/>session_regenerate_id</a></li><li><a href=/php/session/session_register_shutdown/>session_register_shutdown</a></li><li><a href=/php/session/session_reset/>session_reset</a></li><li><a href=/php/session/session_save_path/>session_save_path</a></li><li><a href=/php/session/session_set_cookie_params/>session_set_cookie_params</a></li><li><a href=/php/session/session_set_save_handler/>session_set_save_handler</a></li><li><a href=/php/session/session_start/>session_start</a></li><li><a href=/php/session/session_status/>session_status</a></li><li><a href=/php/session/session_unset/>session_unset</a></li><li><a href=/php/session/session_write_close/>session_write_close</a></li></ul></div><h2>Shmop</h2><div><ul><li><a href=/php/shmop/shmop_delete/>shmop_delete</a></li><li><a href=/php/shmop/shmop_open/>shmop_open</a></li><li><a href=/php/shmop/shmop_read/>shmop_read</a></li><li><a href=/php/shmop/shmop_size/>shmop_size</a></li><li><a href=/php/shmop/shmop_write/>shmop_write</a></li></ul></div><h2>SimpleXML</h2><div><ul><li><a href=/php/simplexml/simplexml_import_dom/>simplexml_import_dom</a></li><li><a href=/php/simplexml/simplexml_load_file/>simplexml_load_file</a></li><li><a href=/php/simplexml/simplexml_load_string/>simplexml_load_string</a></li></ul></div><h2>SNMP</h2><div><ul><li><a href=/php/snmp/snmp_get_quick_print/>snmp_get_quick_print</a></li><li><a href=/php/snmp/snmp_get_valueretrieval/>snmp_get_valueretrieval</a></li><li><a href=/php/snmp/snmp_read_mib/>snmp_read_mib</a></li><li><a href=/php/snmp/snmp_set_enum_print/>snmp_set_enum_print</a></li><li><a href=/php/snmp/snmp_set_oid_numeric_print/>snmp_set_oid_numeric_print</a></li><li><a href=/php/snmp/snmp_set_oid_output_format/>snmp_set_oid_output_format</a></li><li><a href=/php/snmp/snmp_set_quick_print/>snmp_set_quick_print</a></li><li><a href=/php/snmp/snmp_set_valueretrieval/>snmp_set_valueretrieval</a></li><li><a href=/php/snmp/snmp2_get/>snmp2_get</a></li><li><a href=/php/snmp/snmp2_getnext/>snmp2_getnext</a></li><li><a href=/php/snmp/snmp2_real_walk/>snmp2_real_walk</a></li><li><a href=/php/snmp/snmp2_set/>snmp2_set</a></li><li><a href=/php/snmp/snmp2_walk/>snmp2_walk</a></li><li><a href=/php/snmp/snmp3_get/>snmp3_get</a></li><li><a href=/php/snmp/snmp3_getnext/>snmp3_getnext</a></li><li><a href=/php/snmp/snmp3_real_walk/>snmp3_real_walk</a></li><li><a href=/php/snmp/snmp3_set/>snmp3_set</a></li><li><a href=/php/snmp/snmp3_walk/>snmp3_walk</a></li><li><a href=/php/snmp/snmpget/>snmpget</a></li><li><a href=/php/snmp/snmpgetnext/>snmpgetnext</a></li><li><a href=/php/snmp/snmprealwalk/>snmprealwalk</a></li><li><a href=/php/snmp/snmpset/>snmpset</a></li><li><a href=/php/snmp/snmpwalk/>snmpwalk</a></li><li><a href=/php/snmp/snmpwalkoid/>snmpwalkoid</a></li></ul></div><h2>Sockets</h2><div><ul><li><a href=/php/sockets/socket_accept/>socket_accept</a></li><li><a href=/php/sockets/socket_addrinfo_bind/>socket_addrinfo_bind</a></li><li><a href=/php/sockets/socket_addrinfo_connect/>socket_addrinfo_connect</a></li><li><a href=/php/sockets/socket_addrinfo_explain/>socket_addrinfo_explain</a></li><li><a href=/php/sockets/socket_addrinfo_lookup/>socket_addrinfo_lookup</a></li><li><a href=/php/sockets/socket_atmark/>socket_atmark</a></li><li><a href=/php/sockets/socket_bind/>socket_bind</a></li><li><a href=/php/sockets/socket_clear_error/>socket_clear_error</a></li><li><a href=/php/sockets/socket_close/>socket_close</a></li><li><a href=/php/sockets/socket_cmsg_space/>socket_cmsg_space</a></li><li><a href=/php/sockets/socket_connect/>socket_connect</a></li><li><a href=/php/sockets/socket_create/>socket_create</a></li><li><a href=/php/sockets/socket_create_listen/>socket_create_listen</a></li><li><a href=/php/sockets/socket_create_pair/>socket_create_pair</a></li><li><a href=/php/sockets/socket_export_stream/>socket_export_stream</a></li><li><a href=/php/sockets/socket_get_option/>socket_get_option</a></li><li><a href=/php/sockets/socket_getopt/>socket_getopt</a></li><li><a href=/php/sockets/socket_getpeername/>socket_getpeername</a></li><li><a href=/php/sockets/socket_getsockname/>socket_getsockname</a></li><li><a href=/php/sockets/socket_import_stream/>socket_import_stream</a></li><li><a href=/php/sockets/socket_last_error/>socket_last_error</a></li><li><a href=/php/sockets/socket_listen/>socket_listen</a></li><li><a href=/php/sockets/socket_read/>socket_read</a></li><li><a href=/php/sockets/socket_recv/>socket_recv</a></li><li><a href=/php/sockets/socket_recvfrom/>socket_recvfrom</a></li><li><a href=/php/sockets/socket_recvmsg/>socket_recvmsg</a></li><li><a href=/php/sockets/socket_select/>socket_select</a></li><li><a href=/php/sockets/socket_send/>socket_send</a></li><li><a href=/php/sockets/socket_sendmsg/>socket_sendmsg</a></li><li><a href=/php/sockets/socket_sendto/>socket_sendto</a></li><li><a href=/php/sockets/socket_set_block/>socket_set_block</a></li><li><a href=/php/sockets/socket_set_nonblock/>socket_set_nonblock</a></li><li><a href=/php/sockets/socket_set_option/>socket_set_option</a></li><li><a href=/php/sockets/socket_setopt/>socket_setopt</a></li><li><a href=/php/sockets/socket_shutdown/>socket_shutdown</a></li><li><a href=/php/sockets/socket_strerror/>socket_strerror</a></li><li><a href=/php/sockets/socket_write/>socket_write</a></li><li><a href=/php/sockets/socket_wsaprotocol_info_export/>socket_wsaprotocol_info_export</a></li><li><a href=/php/sockets/socket_wsaprotocol_info_import/>socket_wsaprotocol_info_import</a></li><li><a href=/php/sockets/socket_wsaprotocol_info_release/>socket_wsaprotocol_info_release</a></li></ul></div><h2>SPL</h2><div><ul><li><a href=/php/spl/class_implements/>class_implements</a></li><li><a href=/php/spl/class_parents/>class_parents</a></li><li><a href=/php/spl/class_uses/>class_uses</a></li><li><a href=/php/spl/iterator_apply/>iterator_apply</a></li><li><a href=/php/spl/iterator_count/>iterator_count</a></li><li><a href=/php/spl/iterator_to_array/>iterator_to_array</a></li><li><a href=/php/spl/spl_autoload/>spl_autoload</a></li><li><a href=/php/spl/spl_autoload_call/>spl_autoload_call</a></li><li><a href=/php/spl/spl_autoload_extensions/>spl_autoload_extensions</a></li><li><a href=/php/spl/spl_autoload_functions/>spl_autoload_functions</a></li><li><a href=/php/spl/spl_autoload_register/>spl_autoload_register</a></li><li><a href=/php/spl/spl_autoload_unregister/>spl_autoload_unregister</a></li><li><a href=/php/spl/spl_classes/>spl_classes</a></li><li><a href=/php/spl/spl_object_hash/>spl_object_hash</a></li><li><a href=/php/spl/spl_object_id/>spl_object_id</a></li></ul></div><h2>Stream</h2><div><ul><li><a href=/php/stream/stream_bucket_append/>stream_bucket_append</a></li><li><a href=/php/stream/stream_bucket_make_writeable/>stream_bucket_make_writeable</a></li><li><a href=/php/stream/stream_bucket_new/>stream_bucket_new</a></li><li><a href=/php/stream/stream_bucket_prepend/>stream_bucket_prepend</a></li><li><a href=/php/stream/stream_context_create/>stream_context_create</a></li><li><a href=/php/stream/stream_context_get_default/>stream_context_get_default</a></li><li><a href=/php/stream/stream_context_get_options/>stream_context_get_options</a></li><li><a href=/php/stream/stream_context_get_params/>stream_context_get_params</a></li><li><a href=/php/stream/stream_context_set_default/>stream_context_set_default</a></li><li><a href=/php/stream/stream_context_set_option/>stream_context_set_option</a></li><li><a href=/php/stream/stream_context_set_options/>stream_context_set_options</a></li><li><a href=/php/stream/stream_context_set_params/>stream_context_set_params</a></li><li><a href=/php/stream/stream_copy_to_stream/>stream_copy_to_stream</a></li><li><a href=/php/stream/stream_filter_append/>stream_filter_append</a></li><li><a href=/php/stream/stream_filter_prepend/>stream_filter_prepend</a></li><li><a href=/php/stream/stream_filter_register/>stream_filter_register</a></li><li><a href=/php/stream/stream_filter_remove/>stream_filter_remove</a></li><li><a href=/php/stream/stream_get_contents/>stream_get_contents</a></li><li><a href=/php/stream/stream_get_filters/>stream_get_filters</a></li><li><a href=/php/stream/stream_get_line/>stream_get_line</a></li><li><a href=/php/stream/stream_get_meta_data/>stream_get_meta_data</a></li><li><a href=/php/stream/stream_get_transports/>stream_get_transports</a></li><li><a href=/php/stream/stream_get_wrappers/>stream_get_wrappers</a></li><li><a href=/php/stream/stream_is_local/>stream_is_local</a></li><li><a href=/php/stream/stream_isatty/>stream_isatty</a></li><li><a href=/php/stream/stream_notification_callback/>stream_notification_callback</a></li><li><a href=/php/stream/stream_register_wrapper/>stream_register_wrapper</a></li><li><a href=/php/stream/stream_resolve_include_path/>stream_resolve_include_path</a></li><li><a href=/php/stream/stream_select/>stream_select</a></li><li><a href=/php/stream/stream_set_blocking/>stream_set_blocking</a></li><li><a href=/php/stream/stream_set_chunk_size/>stream_set_chunk_size</a></li><li><a href=/php/stream/stream_set_read_buffer/>stream_set_read_buffer</a></li><li><a href=/php/stream/stream_set_timeout/>stream_set_timeout</a></li><li><a href=/php/stream/stream_set_write_buffer/>stream_set_write_buffer</a></li><li><a href=/php/stream/stream_socket_accept/>stream_socket_accept</a></li><li><a href=/php/stream/stream_socket_client/>stream_socket_client</a></li><li><a href=/php/stream/stream_socket_enable_crypto/>stream_socket_enable_crypto</a></li><li><a href=/php/stream/stream_socket_get_name/>stream_socket_get_name</a></li><li><a href=/php/stream/stream_socket_pair/>stream_socket_pair</a></li><li><a href=/php/stream/stream_socket_recvfrom/>stream_socket_recvfrom</a></li><li><a href=/php/stream/stream_socket_sendto/>stream_socket_sendto</a></li><li><a href=/php/stream/stream_socket_server/>stream_socket_server</a></li><li><a href=/php/stream/stream_socket_shutdown/>stream_socket_shutdown</a></li><li><a href=/php/stream/stream_supports_lock/>stream_supports_lock</a></li><li><a href=/php/stream/stream_wrapper_register/>stream_wrapper_register</a></li><li><a href=/php/stream/stream_wrapper_restore/>stream_wrapper_restore</a></li><li><a href=/php/stream/stream_wrapper_unregister/>stream_wrapper_unregister</a></li></ul></div><h2>String</h2><div><ul><li><a href=/php/string/addcslashes/>addcslashes</a></li><li><a href=/php/string/addslashes/>addslashes</a></li><li><a href=/php/string/bin2hex/>bin2hex</a></li><li><a href=/php/string/chop/>chop</a></li><li><a href=/php/string/chr/>chr</a></li><li><a href=/php/string/chunk_split/>chunk_split</a></li><li><a href=/php/string/convert_uudecode/>convert_uudecode</a></li><li><a href=/php/string/convert_uuencode/>convert_uuencode</a></li><li><a href=/php/string/count_chars/>count_chars</a></li><li><a href=/php/string/crc32/>crc32</a></li><li><a href=/php/string/crypt/>crypt</a></li><li><a href=/php/string/echo/>echo</a></li><li><a href=/php/string/explode/>explode</a></li><li><a href=/php/string/fprintf/>fprintf</a></li><li><a href=/php/string/get_html_translation_table/>get_html_translation_table</a></li><li><a href=/php/string/hebrev/>hebrev</a></li><li><a href=/php/string/hebrevc/>hebrevc</a></li><li><a href=/php/string/hex2bin/>hex2bin</a></li><li><a href=/php/string/html_entity_decode/>html_entity_decode</a></li><li><a href=/php/string/htmlentities/>htmlentities</a></li><li><a href=/php/string/htmlspecialchars/>htmlspecialchars</a></li><li><a href=/php/string/htmlspecialchars_decode/>htmlspecialchars_decode</a></li><li><a href=/php/string/implode/>implode</a></li><li><a href=/php/string/join/>join</a></li><li><a href=/php/string/lcfirst/>lcfirst</a></li><li><a href=/php/string/levenshtein/>levenshtein</a></li><li><a href=/php/string/localeconv/>localeconv</a></li><li><a href=/php/string/ltrim/>ltrim</a></li><li><a href=/php/string/md5/>md5</a></li><li><a href=/php/string/md5_file/>md5_file</a></li><li><a href=/php/string/metaphone/>metaphone</a></li><li><a href=/php/string/nl_langinfo/>nl_langinfo</a></li><li><a href=/php/string/nl2br/>nl2br</a></li><li><a href=/php/string/number_format/>number_format</a></li><li><a href=/php/string/ord/>ord</a></li><li><a href=/php/string/parse_str/>parse_str</a></li><li><a href=/php/string/print/>print</a></li><li><a href=/php/string/printf/>printf</a></li><li><a href=/php/string/quoted_printable_decode/>quoted_printable_decode</a></li><li><a href=/php/string/quoted_printable_encode/>quoted_printable_encode</a></li><li><a href=/php/string/quotemeta/>quotemeta</a></li><li><a href=/php/string/rtrim/>rtrim</a></li><li><a href=/php/string/setlocale/>setlocale</a></li><li><a href=/php/string/sha1/>sha1</a></li><li><a href=/php/string/sha1_file/>sha1_file</a></li><li><a href=/php/string/similar_text/>similar_text</a></li><li><a href=/php/string/soundex/>soundex</a></li><li><a href=/php/string/sprintf/>sprintf</a></li><li><a href=/php/string/sscanf/>sscanf</a></li><li><a href=/php/string/str_contains/>str_contains</a></li><li><a href=/php/string/str_decrement/>str_decrement</a></li><li><a href=/php/string/str_ends_with/>str_ends_with</a></li><li><a href=/php/string/str_getcsv/>str_getcsv</a></li><li><a href=/php/string/str_increment/>str_increment</a></li><li><a href=/php/string/str_ireplace/>str_ireplace</a></li><li><a href=/php/string/str_pad/>str_pad</a></li><li><a href=/php/string/str_repeat/>str_repeat</a></li><li><a href=/php/string/str_replace/>str_replace</a></li><li><a href=/php/string/str_rot13/>str_rot13</a></li><li><a href=/php/string/str_shuffle/>str_shuffle</a></li><li><a href=/php/string/str_split/>str_split</a></li><li><a href=/php/string/str_starts_with/>str_starts_with</a></li><li><a href=/php/string/str_word_count/>str_word_count</a></li><li><a href=/php/string/strcasecmp/>strcasecmp</a></li><li><a href=/php/string/strchr/>strchr</a></li><li><a href=/php/string/strcmp/>strcmp</a></li><li><a href=/php/string/strcoll/>strcoll</a></li><li><a href=/php/string/strcspn/>strcspn</a></li><li><a href=/php/string/strip_tags/>strip_tags</a></li><li><a href=/php/string/stripcslashes/>stripcslashes</a></li><li><a href=/php/string/stripos/>stripos</a></li><li><a href=/php/string/stripslashes/>stripslashes</a></li><li><a href=/php/string/stristr/>stristr</a></li><li><a href=/php/string/strlen/>strlen</a></li><li><a href=/php/string/strnatcasecmp/>strnatcasecmp</a></li><li><a href=/php/string/strnatcmp/>strnatcmp</a></li><li><a href=/php/string/strncasecmp/>strncasecmp</a></li><li><a href=/php/string/strncmp/>strncmp</a></li><li><a href=/php/string/strpbrk/>strpbrk</a></li><li><a href=/php/string/strpos/>strpos</a></li><li><a href=/php/string/strrchr/>strrchr</a></li><li><a href=/php/string/strrev/>strrev</a></li><li><a href=/php/string/strripos/>strripos</a></li><li><a href=/php/string/strrpos/>strrpos</a></li><li><a href=/php/string/strspn/>strspn</a></li><li><a href=/php/string/strstr/>strstr</a></li><li><a href=/php/string/strtok/>strtok</a></li><li><a href=/php/string/strtolower/>strtolower</a></li><li><a href=/php/string/strtoupper/>strtoupper</a></li><li><a href=/php/string/strtr/>strtr</a></li><li><a href=/php/string/substr/>substr</a></li><li><a href=/php/string/substr_compare/>substr_compare</a></li><li><a href=/php/string/substr_count/>substr_count</a></li><li><a href=/php/string/substr_replace/>substr_replace</a></li><li><a href=/php/string/trim/>trim</a></li><li><a href=/php/string/ucfirst/>ucfirst</a></li><li><a href=/php/string/ucwords/>ucwords</a></li><li><a href=/php/string/vfprintf/>vfprintf</a></li><li><a href=/php/string/vprintf/>vprintf</a></li><li><a href=/php/string/vsprintf/>vsprintf</a></li><li><a href=/php/string/wordwrap/>wordwrap</a></li></ul></div><h2>Tokenizer</h2><div><ul><li><a href=/php/tokenizer/token_get_all/>token_get_all</a></li><li><a href=/php/tokenizer/token_name/>token_name</a></li></ul></div><h2>URL</h2><div><ul><li><a href=/php/url/base64_decode/>base64_decode</a></li><li><a href=/php/url/base64_encode/>base64_encode</a></li><li><a href=/php/url/get_headers/>get_headers</a></li><li><a href=/php/url/get_meta_tags/>get_meta_tags</a></li><li><a href=/php/url/http_build_query/>http_build_query</a></li><li><a href=/php/url/parse_url/>parse_url</a></li><li><a href=/php/url/rawurldecode/>rawurldecode</a></li><li><a href=/php/url/rawurlencode/>rawurlencode</a></li><li><a href=/php/url/urldecode/>urldecode</a></li><li><a href=/php/url/urlencode/>urlencode</a></li></ul></div><h2>Variable Handling</h2><div><ul><li><a href=/php/variable-handling/boolval/>boolval</a></li><li><a href=/php/variable-handling/debug_zval_dump/>debug_zval_dump</a></li><li><a href=/php/variable-handling/doubleval/>doubleval</a></li><li><a href=/php/variable-handling/empty/>empty</a></li><li><a href=/php/variable-handling/floatval/>floatval</a></li><li><a href=/php/variable-handling/get_debug_type/>get_debug_type</a></li><li><a href=/php/variable-handling/get_defined_vars/>get_defined_vars</a></li><li><a href=/php/variable-handling/get_resource_id/>get_resource_id</a></li><li><a href=/php/variable-handling/get_resource_type/>get_resource_type</a></li><li><a href=/php/variable-handling/gettype/>gettype</a></li><li><a href=/php/variable-handling/intval/>intval</a></li><li><a href=/php/variable-handling/is_array/>is_array</a></li><li><a href=/php/variable-handling/is_bool/>is_bool</a></li><li><a href=/php/variable-handling/is_callable/>is_callable</a></li><li><a href=/php/variable-handling/is_countable/>is_countable</a></li><li><a href=/php/variable-handling/is_double/>is_double</a></li><li><a href=/php/variable-handling/is_float/>is_float</a></li><li><a href=/php/variable-handling/is_int/>is_int</a></li><li><a href=/php/variable-handling/is_integer/>is_integer</a></li><li><a href=/php/variable-handling/is_iterable/>is_iterable</a></li><li><a href=/php/variable-handling/is_long/>is_long</a></li><li><a href=/php/variable-handling/is_null/>is_null</a></li><li><a href=/php/variable-handling/is_numeric/>is_numeric</a></li><li><a href=/php/variable-handling/is_object/>is_object</a></li><li><a href=/php/variable-handling/is_real/>is_real</a></li><li><a href=/php/variable-handling/is_resource/>is_resource</a></li><li><a href=/php/variable-handling/is_scalar/>is_scalar</a></li><li><a href=/php/variable-handling/is_string/>is_string</a></li><li><a href=/php/variable-handling/isset/>isset</a></li><li><a href=/php/variable-handling/print_r/>print_r</a></li><li><a href=/php/variable-handling/serialize/>serialize</a></li><li><a href=/php/variable-handling/settype/>settype</a></li><li><a href=/php/variable-handling/strval/>strval</a></li><li><a href=/php/variable-handling/unserialize/>unserialize</a></li><li><a href=/php/variable-handling/unset/>unset</a></li><li><a href=/php/variable-handling/var_dump/>var_dump</a></li><li><a href=/php/variable-handling/var_export/>var_export</a></li></ul></div><h2>zlib</h2><div><ul><li><a href=/php/zlib/deflate_add/>deflate_add</a></li><li><a href=/php/zlib/deflate_init/>deflate_init</a></li><li><a href=/php/zlib/gzclose/>gzclose</a></li><li><a href=/php/zlib/gzcompress/>gzcompress</a></li><li><a href=/php/zlib/gzdecode/>gzdecode</a></li><li><a href=/php/zlib/gzdeflate/>gzdeflate</a></li><li><a href=/php/zlib/gzencode/>gzencode</a></li><li><a href=/php/zlib/gzeof/>gzeof</a></li><li><a href=/php/zlib/gzfile/>gzfile</a></li><li><a href=/php/zlib/gzgetc/>gzgetc</a></li><li><a href=/php/zlib/gzgets/>gzgets</a></li><li><a href=/php/zlib/gzinflate/>gzinflate</a></li><li><a href=/php/zlib/gzopen/>gzopen</a></li><li><a href=/php/zlib/gzpassthru/>gzpassthru</a></li><li><a href=/php/zlib/gzputs/>gzputs</a></li><li><a href=/php/zlib/gzread/>gzread</a></li><li><a href=/php/zlib/gzrewind/>gzrewind</a></li><li><a href=/php/zlib/gzseek/>gzseek</a></li><li><a href=/php/zlib/gztell/>gztell</a></li><li><a href=/php/zlib/gzuncompress/>gzuncompress</a></li><li><a href=/php/zlib/gzwrite/>gzwrite</a></li><li><a href=/php/zlib/inflate_add/>inflate_add</a></li><li><a href=/php/zlib/inflate_get_read_len/>inflate_get_read_len</a></li><li><a href=/php/zlib/inflate_get_status/>inflate_get_status</a></li><li><a href=/php/zlib/inflate_init/>inflate_init</a></li><li><a href=/php/zlib/ob_gzhandler/>ob_gzhandler</a></li><li><a href=/php/zlib/readgzfile/>readgzfile</a></li><li><a href=/php/zlib/zlib_decode/>zlib_decode</a></li><li><a href=/php/zlib/zlib_encode/>zlib_encode</a></li><li><a href=/php/zlib/zlib_get_coding_type/>zlib_get_coding_type</a></li></ul></div></div><div class=h1><a id=switch-svg>SVG</a></div><div id=list-svg><h2>Overview</h2><div><ul><li><a href=/svg/>Overview</a></li></ul></div><h2>Attributes</h2><div><ul><li><a href=/svg/attributes/accumulate/>accumulate</a></li><li><a href=/svg/attributes/additive/>additive</a></li><li><a href=/svg/attributes/amplitude/>amplitude</a></li><li><a href=/svg/attributes/attributename/>attributeName</a></li><li><a href=/svg/attributes/azimuth/>azimuth</a></li><li><a href=/svg/attributes/basefrequency/>baseFrequency</a></li><li><a href=/svg/attributes/begin/>begin</a></li><li><a href=/svg/attributes/bias/>bias</a></li><li><a href=/svg/attributes/by/>by</a></li><li><a href=/svg/attributes/calcmode/>calcMode</a></li><li><a href=/svg/attributes/clippathunits/>clipPathUnits</a></li><li><a href=/svg/attributes/crossorigin/>crossorigin</a></li><li><a href=/svg/attributes/cx/>cx</a></li><li><a href=/svg/attributes/cy/>cy</a></li><li><a href=/svg/attributes/d/>d</a></li><li><a href=/svg/attributes/diffuseconstant/>diffuseConstant</a></li><li><a href=/svg/attributes/divisor/>divisor</a></li><li><a href=/svg/attributes/download/>download</a></li><li><a href=/svg/attributes/dur/>dur</a></li><li><a href=/svg/attributes/dx/>dx</a></li><li><a href=/svg/attributes/dy/>dy</a></li><li><a href=/svg/attributes/edgemode/>edgeMode</a></li><li><a href=/svg/attributes/elevation/>elevation</a></li><li><a href=/svg/attributes/end/>end</a></li><li><a href=/svg/attributes/exponent/>exponent</a></li><li><a href=/svg/attributes/fill/>fill</a></li><li><a href=/svg/attributes/filterunits/>filterUnits</a></li><li><a href=/svg/attributes/flood-color/>flood-color</a></li><li><a href=/svg/attributes/flood-opacity/>flood-opacity</a></li><li><a href=/svg/attributes/fr/>fr</a></li><li><a href=/svg/attributes/from/>from</a></li><li><a href=/svg/attributes/fx/>fx</a></li><li><a href=/svg/attributes/fy/>fy</a></li><li><a href=/svg/attributes/gradienttransform/>gradientTransform</a></li><li><a href=/svg/attributes/gradientunits/>gradientUnits</a></li><li><a href=/svg/attributes/height/>height</a></li><li><a href=/svg/attributes/href/>href</a></li><li><a href=/svg/attributes/hreflang/>hreflang</a></li><li><a href=/svg/attributes/id/>id</a></li><li><a href=/svg/attributes/in/>in</a></li><li><a href=/svg/attributes/in2/>in2</a></li><li><a href=/svg/attributes/intercept/>intercept</a></li><li><a href=/svg/attributes/k1/>k1</a></li><li><a href=/svg/attributes/k2/>k2</a></li><li><a href=/svg/attributes/k3/>k3</a></li><li><a href=/svg/attributes/k4/>k4</a></li><li><a href=/svg/attributes/kernelmatrix/>kernelMatrix</a></li><li><a href=/svg/attributes/keypoints/>keyPoints</a></li><li><a href=/svg/attributes/keysplines/>keySplines</a></li><li><a href=/svg/attributes/keytimes/>keyTimes</a></li><li><a href=/svg/attributes/lengthadjust/>lengthAdjust</a></li><li><a href=/svg/attributes/limitingconeangle/>limitingConeAngle</a></li><li><a href=/svg/attributes/markerheight/>markerHeight</a></li><li><a href=/svg/attributes/markerunits/>markerUnits</a></li><li><a href=/svg/attributes/markerwidth/>markerWidth</a></li><li><a href=/svg/attributes/maskcontentunits/>maskContentUnits</a></li><li><a href=/svg/attributes/maskunits/>maskUnits</a></li><li><a href=/svg/attributes/max/>max</a></li><li><a href=/svg/attributes/media/>media</a></li><li><a href=/svg/attributes/method/>method</a></li><li><a href=/svg/attributes/min/>min</a></li><li><a href=/svg/attributes/mode/>mode</a></li><li><a href=/svg/attributes/no-composite/>no-composite</a></li><li><a href=/svg/attributes/numoctaves/>numOctaves</a></li><li><a href=/svg/attributes/offset/>offset</a></li><li><a href=/svg/attributes/onbegin/>onbegin</a></li><li><a href=/svg/attributes/onend/>onend</a></li><li><a href=/svg/attributes/onrepeat/>onrepeat</a></li><li><a href=/svg/attributes/operator/>operator</a></li><li><a href=/svg/attributes/order/>order</a></li><li><a href=/svg/attributes/orient/>orient</a></li><li><a href=/svg/attributes/origin/>origin</a></li><li><a href=/svg/attributes/path/>path</a></li><li><a href=/svg/attributes/pathlength/>pathLength</a></li><li><a href=/svg/attributes/patterncontentunits/>patternContentUnits</a></li><li><a href=/svg/attributes/patterntransform/>patternTransform</a></li><li><a href=/svg/attributes/patternunits/>patternUnits</a></li><li><a href=/svg/attributes/ping/>ping</a></li><li><a href=/svg/attributes/points/>points</a></li><li><a href=/svg/attributes/pointsatx/>pointsAtX</a></li><li><a href=/svg/attributes/pointsaty/>pointsAtY</a></li><li><a href=/svg/attributes/pointsatz/>pointsAtZ</a></li><li><a href=/svg/attributes/preservealpha/>preserveAlpha</a></li><li><a href=/svg/attributes/preserveaspectratio/>preserveAspectRatio</a></li><li><a href=/svg/attributes/primitiveunits/>primitiveUnits</a></li><li><a href=/svg/attributes/r/>r</a></li><li><a href=/svg/attributes/radius/>radius</a></li><li><a href=/svg/attributes/referrerpolicy/>referrerPolicy</a></li><li><a href=/svg/attributes/refx/>refx</a></li><li><a href=/svg/attributes/refy/>refy</a></li><li><a href=/svg/attributes/rel/>rel</a></li><li><a href=/svg/attributes/repeatcount/>repeatCount</a></li><li><a href=/svg/attributes/repeatdur/>repeatDur</a></li><li><a href=/svg/attributes/requiredextensions/>requiredExtensions</a></li><li><a href=/svg/attributes/restart/>restart</a></li><li><a href=/svg/attributes/rotate/>rotate</a></li><li><a href=/svg/attributes/rx/>rx</a></li><li><a href=/svg/attributes/ry/>ry</a></li><li><a href=/svg/attributes/scale/>scale</a></li><li><a href=/svg/attributes/seed/>seed</a></li><li><a href=/svg/attributes/side/>side</a></li><li><a href=/svg/attributes/slope/>slope</a></li><li><a href=/svg/attributes/spacing/>spacing</a></li><li><a href=/svg/attributes/specularconstant/>specularConstant</a></li><li><a href=/svg/attributes/specularexponent/>specularExponent</a></li><li><a href=/svg/attributes/spreadmethod/>spreadMethod</a></li><li><a href=/svg/attributes/startoffset/>startoffset</a></li><li><a href=/svg/attributes/stddeviation/>stdDeviation</a></li><li><a href=/svg/attributes/stitchtiles/>stitchTiles</a></li><li><a href=/svg/attributes/stop-color/>stop-color</a></li><li><a href=/svg/attributes/stop-opacity/>stop-opacity</a></li><li><a href=/svg/attributes/surfacescale/>surfaceScale</a></li><li><a href=/svg/attributes/systemlanguage/>systemLanguage</a></li><li><a href=/svg/attributes/tabindex/>tabindex</a></li><li><a href=/svg/attributes/tablevalues/>tableValues</a></li><li><a href=/svg/attributes/target/>target</a></li><li><a href=/svg/attributes/targetx/>targetX</a></li><li><a href=/svg/attributes/targety/>targetY</a></li><li><a href=/svg/attributes/textlength/>textLength</a></li><li><a href=/svg/attributes/title/>title</a></li><li><a href=/svg/attributes/to/>to</a></li><li><a href=/svg/attributes/transform/>transform</a></li><li><a href=/svg/attributes/type/>type</a></li><li><a href=/svg/attributes/values/>values</a></li><li><a href=/svg/attributes/viewbox/>viewBox</a></li><li><a href=/svg/attributes/width/>width</a></li><li><a href=/svg/attributes/x/>x</a></li><li><a href=/svg/attributes/x1/>x1</a></li><li><a href=/svg/attributes/x2/>x2</a></li><li><a href=/svg/attributes/xchannelselector/>xChannelSelector</a></li><li><a href=/svg/attributes/y/>y</a></li><li><a href=/svg/attributes/y1/>y1</a></li><li><a href=/svg/attributes/y2/>y2</a></li><li><a href=/svg/attributes/ychannelselector/>yChannelSelector</a></li><li><a href=/svg/attributes/z/>z</a></li><li><a href=/svg/attributes/zoomandpan/>zoomAndPan</a></li></ul></div><h2>Elements</h2><div><ul><li><a href=/svg/elements/a/>a</a></li><li><a href=/svg/elements/animate/>animate</a></li><li><a href=/svg/elements/animatemotion/>animateMotion</a></li><li><a href=/svg/elements/animatetransform/>animateTransform</a></li><li><a href=/svg/elements/circle/>circle</a></li><li><a href=/svg/elements/clippath/>clipPath</a></li><li><a href=/svg/elements/defs/>defs</a></li><li><a href=/svg/elements/desc/>desc</a></li><li><a href=/svg/elements/discard/>discard</a></li><li><a href=/svg/elements/ellipse/>ellipse</a></li><li><a href=/svg/elements/feblend/>feBlend</a></li><li><a href=/svg/elements/fecolormatrix/>feColorMatrix</a></li><li><a href=/svg/elements/fecomponenttransfer/>feComponentTransfer</a></li><li><a href=/svg/elements/fecomposite/>feComposite</a></li><li><a href=/svg/elements/feconvolvematrix/>feConvolveMatrix</a></li><li><a href=/svg/elements/fediffuselighting/>feDiffuseLighting</a></li><li><a href=/svg/elements/fedisplacementmap/>feDisplacementMap</a></li><li><a href=/svg/elements/fedistantlight/>feDistantLight</a></li><li><a href=/svg/elements/fedropshadow/>feDropShadow</a></li><li><a href=/svg/elements/feflood/>feFlood</a></li><li><a href=/svg/elements/fefunca/>feFuncA</a></li><li><a href=/svg/elements/fefuncb/>feFuncB</a></li><li><a href=/svg/elements/fefuncg/>feFuncG</a></li><li><a href=/svg/elements/fefuncr/>feFuncR</a></li><li><a href=/svg/elements/fegaussianblur/>feGaussianBlur</a></li><li><a href=/svg/elements/feimage/>feImage</a></li><li><a href=/svg/elements/femerge/>feMerge</a></li><li><a href=/svg/elements/femergenode/>feMergeNode</a></li><li><a href=/svg/elements/femorphology/>feMorphology</a></li><li><a href=/svg/elements/feoffset/>feOffset</a></li><li><a href=/svg/elements/fepointlight/>fePointLight</a></li><li><a href=/svg/elements/fespecularlighting/>feSpecularLighting</a></li><li><a href=/svg/elements/fespotlight/>feSpotLight</a></li><li><a href=/svg/elements/fetile/>feTile</a></li><li><a href=/svg/elements/feturbulence/>feTurbulence</a></li><li><a href=/svg/elements/filter/>filter</a></li><li><a href=/svg/elements/foreignobject/>foreignObject</a></li><li><a href=/svg/elements/g/>g</a></li><li><a href=/svg/elements/image/>image</a></li><li><a href=/svg/elements/line/>line</a></li><li><a href=/svg/elements/lineargradient/>linearGradient</a></li><li><a href=/svg/elements/marker/>marker</a></li><li><a href=/svg/elements/mask/>mask</a></li><li><a href=/svg/elements/metadata/>metadata</a></li><li><a href=/svg/elements/mpath/>mpath</a></li><li><a href=/svg/elements/path/>path</a></li><li><a href=/svg/elements/pattern/>pattern</a></li><li><a href=/svg/elements/polygon/>polygon</a></li><li><a href=/svg/elements/polyline/>polyline</a></li><li><a href=/svg/elements/radialgradient/>radialGradient</a></li><li><a href=/svg/elements/rect/>rect</a></li><li><a href=/svg/elements/script/>script</a></li><li><a href=/svg/elements/set/>set</a></li><li><a href=/svg/elements/stop/>stop</a></li><li><a href=/svg/elements/style/>style</a></li><li><a href=/svg/elements/svg/>svg</a></li><li><a href=/svg/elements/switch/>switch</a></li><li><a href=/svg/elements/symbol/>symbol</a></li><li><a href=/svg/elements/text/>text</a></li><li><a href=/svg/elements/textpath/>textPath</a></li><li><a href=/svg/elements/title/>title</a></li><li><a href=/svg/elements/tspan/>tspan</a></li><li><a href=/svg/elements/unknown/>unknown</a></li><li><a href=/svg/elements/use/>use</a></li><li><a href=/svg/elements/view/>view</a></li></ul></div><h2>Values</h2><div><ul><li><a href=/svg/values/_blank/>_blank</a></li><li><a href=/svg/values/_parent/>_parent</a></li><li><a href=/svg/values/_self/>_self</a></li><li><a href=/svg/values/_top/>_top</a></li><li><a href=/svg/values/a/>A</a></li><li><a href=/svg/values/align/>align</a></li><li><a href=/svg/values/alpha-value/>alpha-value</a></li><li><a href=/svg/values/always/>always</a></li><li><a href=/svg/values/angle/>angle</a></li><li><a href=/svg/values/anonymous/>anonymous</a></li><li><a href=/svg/values/arithmetic/>arithmetic</a></li><li><a href=/svg/values/atop/>atop</a></li><li><a href=/svg/values/auto/>auto</a></li><li><a href=/svg/values/auto-start-reverse/>auto-start-reverse</a></li><li><a href=/svg/values/auto-reverse/>auto-reverse</a></li><li><a href=/svg/values/b/>B</a></li><li><a href=/svg/values/backgroundalpha/>BackgroundAlpha</a></li><li><a href=/svg/values/backgroundimage/>BackgroundImage</a></li><li><a href=/svg/values/begin-value-list/>begin-value-list</a></li><li><a href=/svg/values/blend-mode/>blend-mode</a></li><li><a href=/svg/values/bottom/>bottom</a></li><li><a href=/svg/values/center/>center</a></li><li><a href=/svg/values/clock-value/>clock-value</a></li><li><a href=/svg/values/color/>color</a></li><li><a href=/svg/values/control-point/>control-point</a></li><li><a href=/svg/values/currentcolor/>currentColor</a></li><li><a href=/svg/values/default/>default</a></li><li><a href=/svg/values/dilate/>dilate</a></li><li><a href=/svg/values/disable/>disable</a></li><li><a href=/svg/values/discrete/>discrete</a></li><li><a href=/svg/values/duplicate/>duplicate</a></li><li><a href=/svg/values/empty-string/>empty-string</a></li><li><a href=/svg/values/end-value-list/>end-value-list</a></li><li><a href=/svg/values/erode/>erode</a></li><li><a href=/svg/values/exact/>exact</a></li><li><a href=/svg/values/false/>false</a></li><li><a href=/svg/values/fillpaint/>FillPaint</a></li><li><a href=/svg/values/filter-primitive-reference/>filter-primitive-reference</a></li><li><a href=/svg/values/fractalnoise/>fractalNoise</a></li><li><a href=/svg/values/freeze/>freeze</a></li><li><a href=/svg/values/g/>G</a></li><li><a href=/svg/values/gamma/>gamma</a></li><li><a href=/svg/values/height/>height</a></li><li><a href=/svg/values/huerotate/>hueRotate</a></li><li><a href=/svg/values/icccolor/>icccolor</a></li><li><a href=/svg/values/id/>id</a></li><li><a href=/svg/values/identity/>identity</a></li><li><a href=/svg/values/in/>in</a></li><li><a href=/svg/values/indefinite/>indefinite</a></li><li><a href=/svg/values/integer/>integer</a></li><li><a href=/svg/values/left/>left</a></li><li><a href=/svg/values/length/>length</a></li><li><a href=/svg/values/length-percentage/>length-percentage</a></li><li><a href=/svg/values/lighter/>lighter</a></li><li><a href=/svg/values/linear/>linear</a></li><li><a href=/svg/values/list/>list</a></li><li><a href=/svg/values/list-of-numbers/>list-of-numbers</a></li><li><a href=/svg/values/luminancetoalpha/>luminanceToAlpha</a></li><li><a href=/svg/values/magnify/>magnify</a></li><li><a href=/svg/values/matrix/>matrix</a></li><li><a href=/svg/values/media/>media</a></li><li><a href=/svg/values/meetorslice/>meetOrSlice</a></li><li><a href=/svg/values/min-x/>min-x</a></li><li><a href=/svg/values/min-y/>min-y</a></li><li><a href=/svg/values/name/>name</a></li><li><a href=/svg/values/never/>never</a></li><li><a href=/svg/values/no-composite/>no-composite</a></li><li><a href=/svg/values/no-referrer/>no-referrer</a></li><li><a href=/svg/values/no-referrer-when-downgrade/>no-referrer-when-downgrade</a></li><li><a href=/svg/values/none/>none</a></li><li><a href=/svg/values/nostitch/>noStitch</a></li><li><a href=/svg/values/number/>number</a></li><li><a href=/svg/values/number-optional-number/>number-optional-number</a></li><li><a href=/svg/values/objectboundingbox/>objectBoundingBox</a></li><li><a href=/svg/values/origin/>origin</a></li><li><a href=/svg/values/origin-when-cross-origin/>origin-when-cross-origin</a></li><li><a href=/svg/values/out/>out</a></li><li><a href=/svg/values/over/>over</a></li><li><a href=/svg/values/paced/>paced</a></li><li><a href=/svg/values/pad/>pad</a></li><li><a href=/svg/values/path-data/>path-data</a></li><li><a href=/svg/values/percentage/>percentage</a></li><li><a href=/svg/values/points/>points</a></li><li><a href=/svg/values/r/>R</a></li><li><a href=/svg/values/reflect/>reflect</a></li><li><a href=/svg/values/remove/>remove</a></li><li><a href=/svg/values/repeat/>repeat</a></li><li><a href=/svg/values/replace/>replace</a></li><li><a href=/svg/values/right/>right</a></li><li><a href=/svg/values/rotate/>rotate</a></li><li><a href=/svg/values/same-origin/>same-origin</a></li><li><a href=/svg/values/saturate/>saturate</a></li><li><a href=/svg/values/scale/>scale</a></li><li><a href=/svg/values/script/>script</a></li><li><a href=/svg/values/set-of-comma-separated-tokens/>set-of-comma-separated-tokens</a></li><li><a href=/svg/values/set-of-space-separated-tokens/>set-of-space-separated-tokens</a></li><li><a href=/svg/values/skewx/>skewx</a></li><li><a href=/svg/values/skewy/>skewy</a></li><li><a href=/svg/values/sourcealpha/>SourceAlpha</a></li><li><a href=/svg/values/sourcegraphic/>SourceGraphic</a></li><li><a href=/svg/values/spacing/>spacing</a></li><li><a href=/svg/values/spacingandglyphs/>spacingAndGlyphs</a></li><li><a href=/svg/values/spline/>spline</a></li><li><a href=/svg/values/stitch/>stitch</a></li><li><a href=/svg/values/stretch/>stretch</a></li><li><a href=/svg/values/strict-origin/>strict-origin</a></li><li><a href=/svg/values/strict-origin-when-cross-origin/>strict-origin-when-cross-origin</a></li><li><a href=/svg/values/string/>string</a></li><li><a href=/svg/values/strokepaint/>StrokePaint</a></li><li><a href=/svg/values/strokewidth/>strokeWidth</a></li><li><a href=/svg/values/sum/>sum</a></li><li><a href=/svg/values/table/>table</a></li><li><a href=/svg/values/tokens/>tokens</a></li><li><a href=/svg/values/top/>top</a></li><li><a href=/svg/values/transform-list/>transform-list</a></li><li><a href=/svg/values/translate/>translate</a></li><li><a href=/svg/values/true/>true</a></li><li><a href=/svg/values/turbulence/>turbulence</a></li><li><a href=/svg/values/unsafe-url/>unsafe-url</a></li><li><a href=/svg/values/url/>url</a></li><li><a href=/svg/values/use-credentials/>use-credentials</a></li><li><a href=/svg/values/userspaceonuse/>userSpaceOnUse</a></li><li><a href=/svg/values/valid-integer/>valid-integer</a></li><li><a href=/svg/values/value/>value</a></li><li><a href=/svg/values/whennotactive/>whenNotActive</a></li><li><a href=/svg/values/width/>width</a></li><li><a href=/svg/values/wrap/>wrap</a></li><li><a href=/svg/values/xml-name/>XML-Name</a></li><li><a href=/svg/values/xor/>xor</a></li></ul></div></div><div class=h1><a id=switch-applications>APPLICATIONS</a></div><div id=list-applications><h2>Overview</h2><div><ul><li><a href=/applications/>Overview</a></li></ul></div><h2>Bible</h2><div><ul><li><a href=/applications/Bible-passages/>Bible Passages</a></li><li><a href=/applications/Bible-pictures/>Bible Pictures</a></li><li><a href=/applications/Jesus-loves-the-little-children/>Jesus Loves the Little Children</a></li><li><a href=/applications/merry-Christmas/>Merry Christmas</a></li><li><a href=/applications/one-man-one-woman-one-lifetime/>One Man. One Woman. One Lifetime.</a></li><li><a href=/applications/The-Armor-of-God/>The Armor of God</a></li></ul></div><h2>Cards</h2><div><ul><li><a href=/applications/euchre/>Euchre</a></li><li><a href=/applications/sevens/>Sevens</a></li><li><a href=/applications/solitaire/>Solitaire</a></li></ul></div><h2>LEGO</h2><div><ul><li><a href=/applications/lego-cannonball-bingo/>LEGO Cannonball Bingo</a></li><li><a href=/applications/lego-pandamonium/>LEGO Pandamonium</a></li><li><a href=/applications/lego-pirate-plunder/>LEGO Pirate Plunder</a></li><li><a href=/applications/lego-the-machine/>LEGO The Machine</a></li></ul></div><h2>Other</h2><div><ul><li><a href=/applications/miniature-golf/>Miniature Golf</a></li><li><a href=/applications/space-station/>Space Station</a></li></ul></div></div><div class=h1><a href=/editor/>EDITOR</a></div><div class=h1><a href=/favicon/>FAVICON</a></div><div class=h1><a href=/htaccess/>.HTACCESS</a></div><div class=h1><a href=/acme.sh/>ACME.SH</a></div><div class=h1><a id=switch-flash>FLASH</a></div><div id=list-flash><div class=h2><a href=/flash/detect/>DETECT</a></div><div class=h2><a id=switch-flash-actionscript>ACTIONSCRIPT</a></div><div id=list-flash-actionscript><h3>Overview</h3><div><ul><li><a href=/flash/actionscript/>Overview</a></li></ul></div><h3>Assets</h3><div><ul><li><a href=/flash/actionscript/embed/>Embed</a></li><li><a href=/flash/actionscript/load/>Load</a></li></ul></div></div><div class=h2><a id=switch-flash-as3dmod>AS3DMOD</a></div><div id=list-flash-as3dmod><h3>Overview</h3><div><ul><li><a href=/flash/as3dmod/>Overview</a></li></ul></div><h3>Modifiers</h3><div><ul><li><a href=/flash/as3dmod/bend/>Bend</a></li><li><a href=/flash/as3dmod/bloat/>Bloat</a></li><li><a href=/flash/as3dmod/cloth/>Cloth</a></li><li><a href=/flash/as3dmod/noise/>Noise</a></li><li><a href=/flash/as3dmod/perlin/>Perlin</a></li><li><a href=/flash/as3dmod/pivot/>Pivot</a></li><li><a href=/flash/as3dmod/skew/>Skew</a></li><li><a href=/flash/as3dmod/taper/>Taper</a></li><li><a href=/flash/as3dmod/twist/>Twist</a></li></ul></div><h3>Other</h3><div><ul><li><a href=/flash/as3dmod/flag/>Flag</a></li></ul></div></div><div class=h2><a href=/flash/flartoolkit/>FLARTOOLKIT</a></div><div class=h2><a id=switch-flash-jiglibflash>JIGLIBFLASH</a></div><div id=list-flash-jiglibflash><h3>Overview</h3><div><ul><li><a href=/flash/jiglibflash/>Overview</a></li></ul></div><h3>Objects</h3><div><ul><li><a href=/flash/jiglibflash/jbox/>JBox</a></li><li><a href=/flash/jiglibflash/jcapsule/>JCapsule</a></li><li><a href=/flash/jiglibflash/jplane/>JPlane</a></li><li><a href=/flash/jiglibflash/jsphere/>JSphere</a></li></ul></div><h3>Other</h3><div><ul><li><a href=/flash/jiglibflash/physics/>Physics</a></li></ul></div></div><div class=h2><a id=switch-flash-papervision3d>PAPERVISION3D</a></div><div id=list-flash-papervision3d><h3>Overview</h3><div><ul><li><a href=/flash/papervision3d/>Overview</a></li></ul></div><h3>Install</h3><div><ul><li><a href=/flash/papervision3d/install/>Install</a></li></ul></div><h3>Example</h3><div><ul><li><a href=/flash/papervision3d/1/>1</a></li><li><a href=/flash/papervision3d/2/>2</a></li><li><a href=/flash/papervision3d/3/>3</a></li><li><a href=/flash/papervision3d/4/>4</a></li><li><a href=/flash/papervision3d/5/>5</a></li></ul></div><h3>Cameras</h3><div><ul><li><a href=/flash/papervision3d/camera3d/>Camera3D</a></li><li><a href=/flash/papervision3d/debugcamera3d/>DebugCamera3D</a></li><li><a href=/flash/papervision3d/springcamera3d/>SpringCamera3D</a></li></ul></div><h3>Core</h3><div><ul><li><a href=/flash/papervision3d/lines3d/>Lines3D</a></li><li><a href=/flash/papervision3d/fogfilter/>FogFilter</a></li></ul></div><h3>Light</h3><div><ul><li><a href=/flash/papervision3d/pointlight3d/>PointLight3D</a></li></ul></div><h3>Materials</h3><div><ul><li><a href=/flash/papervision3d/bitmapfilematerial/>BitmapFileMaterial</a></li><li><a href=/flash/papervision3d/bitmapmaterial/>BitmapMaterial</a></li><li><a href=/flash/papervision3d/bitmapviewportmaterial/>BitmapViewportMaterial</a></li><li><a href=/flash/papervision3d/colormaterial/>ColorMaterial</a></li><li><a href=/flash/papervision3d/compositematerial/>CompositeMaterial</a></li><li><a href=/flash/papervision3d/moviematerial/>MovieMaterial</a></li><li><a href=/flash/papervision3d/wireframematerial/>WireframeMaterial</a></li></ul></div><h3>Shade Materials</h3><div><ul><li><a href=/flash/papervision3d/cellmaterial/>CellMaterial</a></li><li><a href=/flash/papervision3d/envmapmaterial/>EnvMapMaterial</a></li><li><a href=/flash/papervision3d/flatshadematerial/>FlatShadeMaterial</a></li><li><a href=/flash/papervision3d/gouraudmaterial/>GouraudMaterial</a></li><li><a href=/flash/papervision3d/phongmaterial/>PhongMaterial</a></li></ul></div><h3>Special Material</h3><div><ul><li><a href=/flash/papervision3d/particlematerial/>ParticleMaterial</a></li></ul></div><h3>Parser Objects</h3><div><ul><li><a href=/flash/papervision3d/dae/>DAE</a></li><li><a href=/flash/papervision3d/kmz/>KMZ</a></li></ul></div><h3>Primitive Objects</h3><div><ul><li><a href=/flash/papervision3d/arrow/>Arrow</a></li><li><a href=/flash/papervision3d/cone/>Cone</a></li><li><a href=/flash/papervision3d/cube/>Cube</a></li><li><a href=/flash/papervision3d/cylinder/>Cylinder</a></li><li><a href=/flash/papervision3d/paperplane/>PaperPlane</a></li><li><a href=/flash/papervision3d/plane/>Plane</a></li><li><a href=/flash/papervision3d/sphere/>Sphere</a></li></ul></div><h3>Special Objects</h3><div><ul><li><a href=/flash/papervision3d/particlefield/>ParticleField</a></li><li><a href=/flash/papervision3d/ucs/>UCS</a></li></ul></div><h3>Render</h3><div><ul><li><a href=/flash/papervision3d/basicrenderengine/>BasicRenderEngine</a></li><li><a href=/flash/papervision3d/lazyrenderengine/>LazyRenderEngine</a></li><li><a href=/flash/papervision3d/quadrantrenderengine/>QuadrantRenderEngine</a></li></ul></div><h3>Scene</h3><div><ul><li><a href=/flash/papervision3d/scene3d/>Scene3D</a></li></ul></div><h3>Typography</h3><div><ul><li><a href=/flash/papervision3d/text3d/>Text3D</a></li></ul></div><h3>Views</h3><div><ul><li><a href=/flash/papervision3d/basicview/>BasicView</a></li><li><a href=/flash/papervision3d/reflectionview/>ReflectionView</a></li><li><a href=/flash/papervision3d/statsview/>StatsView</a></li><li><a href=/flash/papervision3d/viewport3d/>Viewport3D</a></li></ul></div><h3>View Layers</h3><div><ul><li><a href=/flash/papervision3d/bitmapeffectlayer/>BitmapEffectLayer</a></li><li><a href=/flash/papervision3d/viewportlayer/>ViewportLayer</a></li></ul></div><h3>Other</h3><div><ul><li><a href=/flash/papervision3d/anaglyph/>Anaglyph</a></li><li><a href=/flash/papervision3d/camera-move/>Camera Move</a></li><li><a href=/flash/papervision3d/camera-rotate/>Camera Rotate</a></li><li><a href=/flash/papervision3d/camera-target-move/>Camera Target Move</a></li><li><a href=/flash/papervision3d/object-move/>Object Move</a></li><li><a href=/flash/papervision3d/object-rotate/>Object Rotate</a></li><li><a href=/flash/papervision3d/object-scale/>Object Scale</a></li><li><a href=/flash/papervision3d/panorama/>Panorama</a></li></ul></div></div></div><div class=h1><a id=switch-sketchup>SKETCHUP</a></div><div id=list-sketchup><h2>Overview</h2><div><ul><li><a href=/sketchup/>Overview</a></li></ul></div><h2>Plugins</h2><div><ul><li><a href=/sketchup/papervision3d/>Papervision3D</a></li><li><a href=/sketchup/triangulate/>Triangulate</a></li></ul></div></div><div class=h1><a id=switch-unity>UNITY</a></div><div id=list-unity><h2>Overview</h2><div><ul><li><a href=/unity/>Overview</a></li></ul></div><h2>Detect</h2><div><ul><li><a href=/unity/detect/>Detect</a></li></ul></div><h2>Games</h2><div><ul><li><a href=/unity/air-hockey/>Air Hockey</a></li><li><a href=/unity/foosball/>Foosball</a></li><li><a href=/unity/pool/>Pool</a></li></ul></div><h2>Unity</h2><div><ul><li><a href=/unity/car/>Car</a></li><li><a href=/unity/lerpz-escapes/>Lerpz Escapes</a></li><li><a href=/unity/mecanim/>Mecanim</a></li></ul></div></div><div class=h1><a id=switch-xcode>XCODE</a></div><div id=list-xcode><h2>Overview</h2><div><ul><li><a href=/xcode/>Overview</a></li></ul></div><h2>Example</h2><div><ul><li><a href=/xcode/1/>1</a></li><li><a href=/xcode/2/>2</a></li><li><a href=/xcode/3/>3</a></li><li><a href=/xcode/4/>4</a></li><li><a href=/xcode/5/>5</a></li><li><a href=/xcode/6/>6</a></li></ul></div><h2>CSV2Plist</h2><div><ul><li><a href=/xcode/csv2plist/>CSV2Plist</a></li></ul></div><h2>UI</h2><div><ul><li><a href=/xcode/uiactivityindicatorview/>UIActivityIndicatorView</a></li><li><a href=/xcode/uibutton/>UIButton</a></li><li><a href=/xcode/uiimageview/>UIImageView</a></li><li><a href=/xcode/uilabel/>UILabel</a></li><li><a href=/xcode/uipagecontrol/>UIPageControl</a></li><li><a href=/xcode/uiprogressview/>UIProgressView</a></li><li><a href=/xcode/uisegmentedcontrol/>UISegmentedControl</a></li><li><a href=/xcode/uislider/>UISlider</a></li><li><a href=/xcode/uistepper/>UIStepper</a></li><li><a href=/xcode/uiswitch/>UISwitch</a></li><li><a href=/xcode/uitextfield/>UITextField</a></li></ul></div></div><div class=h1><a href=/about/>ABOUT</a></div><div class=h1><a href=/terms/>TERMS</a></div></div></div><div id=background><video loop muted src=/assets/mp4/1/16.mp4></video></div></body></html><!doctype html><html lang=en><head><meta charset=utf-8><meta content=width=device-width name=viewport><meta content=osbo.com name=description><title>osbo.com</title><link defer href=/assets/css/ rel=stylesheet><link defer href=/assets/svg/ rel=icon><script defer src=/assets/js/></script><script>var _mtm = window._mtm = window._mtm || [];_mtm.push({"mtm.startTime": (new Date().getTime()), "event": "mtm.Start"});(function(){var d=document, g=d.createElement("script"), s=d.querySelector("script");g.async=true; g.src="/matomo/js/container_Gm7CI6wt.js"; s.parentNode.insertBefore(g,s);})();</script></head><body><div id=foreground><header><a href=/><img alt=Home id=home src=/assets/svg/Home.svg title=Home></a><img alt=Menu id=menu src=/assets/svg/Menu.svg title=Menu><form action=/search/><input id=search-site name=search-site title=Search type=search></form></header><footer><a href=#><img alt=Top id=top src=/assets/svg/Top.svg title=Top></a></footer></div><div id=zeroground><div id=content><header><div id=topnav><a href=/Jesus/>Jesus</a> · <a href=/Bible/>Bible</a> · <a href=/html/>HTML</a> · <a href=/css/>CSS</a> · <a href=/js/>JS</a> · <a href=/php/>PHP</a> · <a href=/svg/>SVG</a> · <a href=/applications/>Applications</a></div></header><div class=banner><script defer src=https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4239362730750625 crossorigin=anonymous></script><ins class=adsbygoogle data-ad-client=ca-pub-4239362730750625 data-ad-slot=5564639719><a href=https://samaritanspurse.org/occ/ target=_blank><img alt="Samaritan's Purse Operation Christmas Child" src=/assets/svg/SamaritansPurseOperationChristmasChild2.svg title="Samaritan's Purse Operation Christmas Child"></a></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div><main><h1><a href>Bible Image Editor</a></h1><div id=myid style=height:100vh><script>const Bibleversionarray =
[
[
"العربية",
[
["ASVD", "الكتاب المقدس ترجمة فانديك وسميث (ASVD)"],
],
],
[
"česky",
[
["CSBKR", "Bible Kralická 1613 (CSBKR)"],
],
],
[
"Dansk",
[
["DA1871", "Danske Bibel 1871 (DA1871)"],
],
],
[
"Deutsch",
[
["DELUT", "Luther Bible 1912 (DELUT)"],
["ELB", "Elberfelder 1905 (ELB)"],
["ELB71", "Elberfelder 1871 (ELB71)"],
],
],
[
"English",
[
["ASV", "American Standard Version (ASV)"],
["KJV", "King James Version (KJV)"],
["WEB", "World English Bible (WEB)"],
],
],
[
"Español",
[
["RVES", "Reina-Valera Antigua (RVES)"],
],
],
[
"Suomi",
[
["FI1776", "Finnish 1776 (FI1776)"],
["FINPR", "Finnish 1938 (FINPR)"],
],
],
[
"Français",
[
["FMAR", "Martin 1744 (FMAR)"],
["FRDBY", "Bible Darby en français (FRDBY)"],
["LSG", "Louis Segond 1910 (LSG)"],
["OST", "Ostervald (OST)"],
],
],
[
"Magyar",
[
["KAR", "Károli 1590 (KAR)"],
],
],
[
"Bahasa Indonesia",
[
["IDBAR", "Terjemahan Baru (IDBAR)"],
],
],
[
"Italiano",
[
["IGD", "Giovanni Diodati Bibbia (IGD)"],
["ITRIV", "Italian Riveduta 1927 (ITRIV)"],
],
],
[
"日本語",
[
["JA1955", "Colloquial Japanese 1955 (JA1955)"],
],
],
[
"Malagasy",
[
["MG1865", "Malagasy Bible (MG1865)"],
],
],
[
"te reo Māori",
[
["MAOR", "Maori Bible (MAOR)"],
],
],
[
"한국어",
[
["KORVB", "개역한글 (KORVB)"],
],
],
[
"Nederlands",
[
["SV1750", "Statenvertaling (SV1750)"],
],
],
[
"Norsk",
[
["NORSK", "Det Norsk Bibelselskap 1930 (NORSK)"],
],
],
[
"Polski",
[
["PBG", "Biblia Gdańska (PBG)"],
],
],
[
"Português",
[
["AA", "Almeida Atualizada (AA)"],
],
],
[
"Română",
[
["RMNN", "Romanian Cornilescu 1928 (RMNN)"],
["VDC", "Versiunea Dumitru Cornilescu (VDC)"],
["VDCC", "Versiunea Dumitru Cornilescu Corectată (VDCC)"],
],
],
[
"Pyccкий",
[
["RURSV", "Синодальный перевод (RURSV)"],
],
],
[
"Shqip",
[
["ALBB", "Albanian Bible (ALBB)"],
],
],
[
"Svenska",
[
["SK73", "Karl XII 1873 (SK73)"],
["SVEN", "Svenska 1917 (SVEN)"],
],
],
[
"Wikang Tagalog",
[
["TLAB", "Ang Biblia (TLAB)"],
],
],
[
"українська",
[
["UBIO", "Біблія в пер. Івана Огієнка 1962 (UBIO)"],
["UKRK", "Біблія в пер. П.Куліша та І.Пулюя 1905 (UKRK)"],
],
],
[
"Tiếng Việt",
[
["VI1934", "Vietnamese Bible 1934 (VI1934)"],
],
],
[
"简体中文",
[
["CUVS", "简体和合本 (CUVS)"],
],
],
[
"繁體中文",
[
["CUV", "和合本 (CUV)"],
],
],
];
const Biblebookarray =
[
//"Genesis",
//"John",
];
const Bibleversearray =
[
//"In the beginning God created the heaven and the earth.",
//"For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life.",
];
const tabarray =
[
"canvas",
"image",
"message",
"reference",
"passage",
"save",
];
const borderstylearray =
[
"none",
"dashed",
"dotted",
"double",
"groove",
//"hidden",
"inset",
"outset",
"ridge",
"solid",
];
const horizontalarray =
[
"left",
"center",
"right",
"justify",
];
const verticalarray =
[
"start",
"center",
"end",
];
const writingmodearray =
[
"horizontal-tb",
"vertical-lr",
"vertical-rl",
"sideways-lr",
"sideways-rl",
];
const fontfamilyarray =
[
//generic family
"cursive",
"fantasy",
"monospace",
"sans-serif",
"serif",
//web safe
//"arial",//sans-serif
//"brush script",//serif
"courier",
//"garamond",//serif
"georgia",
"tahoma",
//"times new roman",//serif
"trebuchet ms",
"verdana",
//popular
//"avenir",//serif
//"bodoni",//serif
"franklin gothic",
//"frutiger",//serif
//"futura",//serif
//"helvetica",//sans-serif
//"rockwell",//serif
//"univers",//serif
];
const fontstylearray =
[
"normal",
"italic",
//"oblique",
];
const fontvariantarray =
[
"normal",
"small-caps",
];
const fontweightarray =
[
"normal",
"bold",
//"bolder",
//"lighter",
];
const maxheight = 10000;
const maxwidth = 10000;
const image = document.createElement("img");
const text = document.createElement("img");
function bodyload()
{
//const body = document.body;
//body.id = "myid";
const style = myid.style;
//style.height = "100vh";
style.overflow = "hidden";
}
addEventListener("load", bodyload);
function window1load()
{
const div = document.createElement("div");
div.id = "window1";
myid.append(div);
const style = div.style;
style.height = "50vh";
style.margin = "0";
}
addEventListener("load", window1load);
function window2load()
{
const div = document.createElement("div");
div.id = "window2";
myid.append(div);
const style = div.style;
style.height = "32px";
style.margin = "16px 0 0";
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", window2load);
function window3load()
{
const div = document.createElement("div");
div.id = "window3";
myid.append(div);
const style = div.style;
style.height = "calc(50vh - 48px)";
style.margin = "0";
style.overflowX = "hidden";
}
addEventListener("load", window3load);
function canvasload()
{
const canvas = document.createElement("canvas");
canvas.height = 1080;
canvas.id = "canvas";
canvas.width = 1920;
window1.append(canvas);
const style = canvas.style;
style.position = "relative";
}
addEventListener("load", canvasload);
function canvasupdate()
{
//console.log("canup");
const ww = innerWidth - 96;
const wh = innerHeight * 0.5;
const cw = canvas.width;
const ch = canvas.height;
const x = (ww - cw) * 0.5;
const y = (wh - ch) * 0.5;
const sw = ww / cw;
const sh = wh / ch;
const s = Math.min(sw, sh);
const style = canvas.style;
style.left = `${x}px`;
style.top = `${y}px`;
style.transform = `scale(${s})`;
}
addEventListener("load", canvasupdate);
function resize()
{
canvasupdate();
}
addEventListener("resize", resize);
function svgupdate()
{
//console.log("svgup");
const svg =
`<svg height="${canvas.height}" width="${canvas.width}" xmlns="http://www.w3.org/2000/svg">
<style>
div
{
background-color: ${canvas.backgroundcolor};
height: 100%;
}
img
{
box-sizing: border-box;
position: absolute;
background-color: ${image.backgroundcolor};
filter: blur(${image.filterblur}px) brightness(${image.filterbrightness}%) contrast(${image.filtercontrast}%) grayscale(${image.filtergrayscale}%) hue-rotate(${image.filterhuerotate}deg) invert(${image.filterinvert}%) opacity(${image.filteropacity}%) saturate(${image.filtersaturate}%) sepia(${image.filtersepia}%);
height: ${image.height}px;
left: ${image.myx}px;
margin: ${image.margintop}px ${image.marginright}px ${image.marginbottom}px ${image.marginleft}px;
padding: ${image.paddingtop}px ${image.paddingright}px ${image.paddingbottom}px ${image.paddingleft}px;
object-fit: ${image.objectfit};
//opacity: ${image.opacity};
top: ${image.myy}px;
width: ${image.width}px;
}
text
{
box-sizing: border-box;
display: grid;
overflow: hidden;
position: absolute;
}
text:nth-of-type(1)
{
white-space: pre;
align-items: ${text.messagevertical};
backdrop-filter: blur(${text.messagebackdropfilterblur}px) brightness(${text.messagebackdropfilterbrightness}%) contrast(${text.messagebackdropfiltercontrast}%) grayscale(${text.messagebackdropfiltergrayscale}%) hue-rotate(${text.messagebackdropfilterhuerotate}deg) invert(${text.messagebackdropfilterinvert}%) saturate(${text.messagebackdropfiltersaturate}%) sepia(${text.messagebackdropfiltersepia}%);
background-color: ${text.messagebackgroundcolor};
border-color: ${text.messagebordercolor};
border-radius: ${text.messageborderradius}px;
border-style: ${text.messageborderstyle};
border-width: ${text.messageborderwidth}px;
color: ${text.messagecolor};
font-family: ${text.messagefontfamily};
font-size: ${text.messagefontsize}px;
font-style: ${text.messagefontstyle};
font-variant: ${text.messagefontvariant};
font-weight: ${text.messagefontweight};
height: ${text.messageheight}px;
left: ${text.messagex}px;
margin: ${text.messagemargintop}px ${text.messagemarginright}px ${text.messagemarginbottom}px ${text.messagemarginleft}px;
padding: ${text.messagepaddingtop}px ${text.messagepaddingright}px ${text.messagepaddingbottom}px ${text.messagepaddingleft}px;
text-align: ${text.messagehorizontal};
top: ${text.messagey}px;
width: ${text.messagewidth}px;
writing-mode: ${text.messagewritingmode};
}
text:nth-of-type(2)
{
align-items: ${text.referencevertical};
background-color: ${text.referencebackgroundcolor};
border-color: ${text.referencebordercolor};
border-radius: ${text.referenceborderradius}px;
border-style: ${text.referenceborderstyle};
border-width: ${text.referenceborderwidth}px;
color: ${text.referencecolor};
font-family: ${text.referencefontfamily};
font-size: ${text.referencefontsize}px;
font-style: ${text.referencefontstyle};
font-variant: ${text.referencefontvariant};
font-weight: ${text.referencefontweight};
height: ${text.referenceheight}px;
left: ${text.referencex}px;
margin: ${text.referencemargintop}px ${text.referencemarginright}px ${text.referencemarginbottom}px ${text.referencemarginleft}px;
padding: ${text.referencepaddingtop}px ${text.referencepaddingright}px ${text.referencepaddingbottom}px ${text.referencepaddingleft}px;
text-align: ${text.referencehorizontal};
top: ${text.referencey}px;
width: ${text.referencewidth}px;
writing-mode: ${text.referencewritingmode};
}
text:nth-of-type(3)
{
align-items: ${text.passagevertical};
background-color: ${text.passagebackgroundcolor};
border-color: ${text.passagebordercolor};
border-radius: ${text.passageborderradius}px;
border-style: ${text.passageborderstyle};
border-width: ${text.passageborderwidth}px;
color: ${text.passagecolor};
font-family: ${text.passagefontfamily};
font-size: ${text.passagefontsize}px;
font-style: ${text.passagefontstyle};
font-variant: ${text.passagefontvariant};
font-weight: ${text.passagefontweight};
height: ${text.passageheight}px;
left: ${text.passagex}px;
margin: ${text.passagemargintop}px ${text.passagemarginright}px ${text.passagemarginbottom}px ${text.passagemarginleft}px;
padding: ${text.passagepaddingtop}px ${text.passagepaddingright}px ${text.passagepaddingbottom}px ${text.passagepaddingleft}px;
text-align: ${text.passagehorizontal};
top: ${text.passagey}px;
width: ${text.passagewidth}px;
writing-mode: ${text.passagewritingmode};
}
</style>
<foreignObject height="100%" width="100%">
<div xmlns="http://www.w3.org/1999/xhtml">
<img src="${image.dataurl}"/>
<text>${text.messagetext}</text>
<text>${text.referencetextbook}${text.referencetextchapter}${text.referencetextverse}${text.referencetextverseend}${text.referencetextversion}</text>
<text>${text.passagetextverse}${text.passagetextverseend}</text>
</div>
</foreignObject>
</svg>`;
text.src = `data:image/svg+xml,${svg}`;
}
function textupdate()
{
const context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
context.drawImage(text, 0, 0);
}
text.addEventListener("load", textupdate);
function tabload()
{
for(const [key, value] of tabarray.entries())
{
const button = document.createElement("button");
button.className = "tab";
if(value == "save")
{
button.className = "tab current";
}
button.id = "tab" + tabarray[key];
//button.innerHTML = `${key + 1}) ${tabarray[key]}`;
button.innerHTML = tabarray[key];
button.value = "tabcontent" + tabarray[key];
button.addEventListener("click", tabupdate);
window2.append(button);
/*
const style = button.style;
style.backgroundColor = "#000";
style.color = "#fff";
style.border = "none";
style.fontSize = "16px";
style.padding = "16px";
style.transition = "0.5s";
//*/
}
}
addEventListener("load", tabload);
function tabupdate(m)
{
const mytarget = m.target;
//*
for(const t of document.querySelectorAll(".tab"))
{
//const style = t.style;
//style.backgroundColor = "#000";
//style.color = "#fff";
t.className = t.className.replace(" current", "");
}
//const style = document.querySelector("#"+mytarget.id).style;
//style.backgroundColor = "#fff";
//style.color = "#000";
mytarget.className += " current";
//*/
for(const t of document.querySelectorAll(".tabcontent"))
{
const style = t.style;
style.contentVisibility = "hidden";
}
document.querySelector("#"+mytarget.value).style.contentVisibility = "visible";
}
function tabcontentload()
{
for(const [key, value] of tabarray.entries())
{
const div = document.createElement("div");
div.className = "tabcontent";
div.id = "tabcontent" + tabarray[key];
window3.append(div);
//*
const style = div.style;
if(value != "save")
{
style.contentVisibility = "hidden";
}
style.margin = "0";
//style.transitionDuration = "0.5s";
//*/
}
}
addEventListener("load", tabcontentload);
function canvaswidthload()
{
const div = document.createElement("div");
div.id = "canvaswidth";
div.innerHTML = "width";
tabcontentcanvas.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", canvaswidthload);
function canvaswidthnumberload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const input = document.createElement("input");
input.id = "canvaswidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width;
input.addEventListener("input", canvaswidthnumberupdate);
canvaswidth.append(input);
//canvaswidthnumberupdate();
}
addEventListener("load", canvaswidthnumberload);
function canvaswidthnumberupdate()
{
const v = canvaswidthnumber.value;
canvaswidthrange.value = v;
canvas.width = v;
canvasupdate();
svgupdate();
}
function canvaswidthrangeload()
{
//const br = document.createElement("br");
//canvaswidth.append(br);
const input = document.createElement("input");
input.id = "canvaswidthrange";
input.max = canvaswidthnumber.max;
input.min = canvaswidthnumber.min;
input.type = "range";
input.value = canvaswidthnumber.value;
input.addEventListener("input", canvaswidthrangeupdate);
canvaswidth.append(input);
canvaswidthrangeupdate();
}
addEventListener("load", canvaswidthrangeload);
function canvaswidthrangeupdate()
{
const v = canvaswidthrange.value;
canvaswidthnumber.value = v;
canvas.width = v;
canvasupdate();
svgupdate();
}
function canvaswidthnaturalload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", canvaswidthnaturalupdate);
canvaswidth.append(button);
}
addEventListener("load", canvaswidthnaturalload);
function canvaswidthnaturalupdate()
{
canvaswidthnumber.value = image.naturalWidth;
canvaswidthnumberupdate();
}
function canvaswidthexactload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const array =
[
["800",800],
["1280",1280],
["1366",1366],
["1536",1536],
["1600",1600],
["1920",1920],
["2304",2304],
["2560",2560],
["3840",3840],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvaswidthexactupdate);
canvaswidth.append(button);
}
}
addEventListener("load", canvaswidthexactload);
function canvaswidthexactupdate(e)
{
canvaswidthnumber.value = Number(e.target.value);
canvaswidthnumberupdate();
}
function canvaswidthincrementload()
{
const br = document.createElement("br");
canvaswidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvaswidthincrementupdate);
canvaswidth.append(button);
}
}
addEventListener("load", canvaswidthincrementload);
function canvaswidthincrementupdate(e)
{
const v = Number(canvaswidthnumber.value) + Number(e.target.value);
if((canvaswidthnumber.min <= v) && (v <= canvaswidthnumber.max))
{
canvaswidthnumber.value = v;
canvaswidthnumberupdate();
}
}
function canvasheightload()
{
const div = document.createElement("div");
div.id = "canvasheight";
div.innerHTML = "height";
tabcontentcanvas.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", canvasheightload);
function canvasheightnumberload()
{
const br = document.createElement("br");
canvasheight.append(br);
const input = document.createElement("input");
input.id = "canvasheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = canvas.height;
input.addEventListener("input", canvasheightnumberupdate);
canvasheight.append(input);
//canvasheightnumberupdate();
}
addEventListener("load", canvasheightnumberload);
function canvasheightnumberupdate()
{
const v = canvasheightnumber.value;
canvasheightrange.value = v;
canvas.height = v;
canvasupdate();
svgupdate();
}
function canvasheightrangeload()
{
//const br = document.createElement("br");
//canvasheight.append(br);
const input = document.createElement("input");
input.id = "canvasheightrange";
input.max = canvasheightnumber.max;
input.min = canvasheightnumber.min;
input.type = "range";
input.value = canvasheightnumber.value;
input.addEventListener("input", canvasheightrangeupdate);
canvasheight.append(input);
canvasheightrangeupdate();
}
addEventListener("load", canvasheightrangeload);
function canvasheightrangeupdate()
{
const v = canvasheightrange.value;
canvasheightnumber.value = v;
canvas.height = v;
canvasupdate();
svgupdate();
}
function canvasheightnaturalload()
{
const br = document.createElement("br");
canvasheight.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", canvasheightnaturalupdate);
canvasheight.append(button);
}
addEventListener("load", canvasheightnaturalload);
function canvasheightnaturalupdate()
{
canvasheightnumber.value = image.naturalHeight;
canvasheightnumberupdate();
}
function canvasheightexactload()
{
const br = document.createElement("br");
canvasheight.append(br);
const array =
[
["600",600],
["720",720],
["768",768],
["864",864],
["900",900],
["1080",1080],
["1296",1296],
["1440",1440],
["2160",2160],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasheightexactupdate);
canvasheight.append(button);
}
}
addEventListener("load", canvasheightexactload);
function canvasheightexactupdate(e)
{
canvasheightnumber.value = Number(e.target.value);
canvasheightnumberupdate();
}
function canvasheightincrementload()
{
const br = document.createElement("br");
canvasheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasheightincrementupdate);
canvasheight.append(button);
}
}
addEventListener("load", canvasheightincrementload);
function canvasheightincrementupdate(e)
{
const v = Number(canvasheightnumber.value) + Number(e.target.value);
if((canvasheightnumber.min <= v) && (v <= canvasheightnumber.max))
{
canvasheightnumber.value = v;
canvasheightnumberupdate();
}
}
function canvasbackgroundcolorload()
{
const div = document.createElement("div");
div.id = "canvasbackgroundcolor";
div.innerHTML = "background-color";
tabcontentcanvas.append(div);
}
addEventListener("load", canvasbackgroundcolorload);
function canvasbackgroundcolorcolorload()
{
const br = document.createElement("br");
canvasbackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "canvasbackgroundcolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", canvasbackgroundcolorcolorupdate);
canvasbackgroundcolor.append(input);
//canvasbackgroundcolorcolorset();
}
addEventListener("load", canvasbackgroundcolorcolorload);
function canvasbackgroundcolorcolorset()
{
const c = canvasbackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = canvasbackgroundalphanumber.value;
canvas.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function canvasbackgroundcolorcolorupdate()
{
canvasbackgroundcolorcolorset();
svgupdate();
}
function canvasbackgroundcolorexactload()
{
const br = document.createElement("br");
canvasbackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasbackgroundcolorexactupdate);
canvasbackgroundcolor.append(button);
}
}
addEventListener("load", canvasbackgroundcolorexactload);
function canvasbackgroundcolorexactupdate(e)
{
canvasbackgroundcolorcolor.value = e.target.value;
canvasbackgroundcolorcolorupdate();
}
function canvasbackgroundalphaload()
{
const div = document.createElement("div");
div.id = "canvasbackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentcanvas.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", canvasbackgroundalphaload);
function canvasbackgroundalphanumberload()
{
const br = document.createElement("br");
canvasbackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "canvasbackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", canvasbackgroundalphanumberupdate);
canvasbackgroundalpha.append(input);
//canvasbackgroundalphanumberset();
}
addEventListener("load", canvasbackgroundalphanumberload);
function canvasbackgroundalphanumberset()
{
const c = canvasbackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = canvasbackgroundalphanumber.value;
canvasbackgroundalpharange.value = a;
canvas.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function canvasbackgroundalphanumberupdate()
{
canvasbackgroundalphanumberset();
svgupdate();
}
function canvasbackgroundalpharangeload()
{
//const br = document.createElement("br");
//canvasbackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "canvasbackgroundalpharange";
input.max = canvasbackgroundalphanumber.max;
input.min = canvasbackgroundalphanumber.min;
input.step = canvasbackgroundalphanumber.step;
input.type = "range";
input.value = canvasbackgroundalphanumber.value;
input.addEventListener("input", canvasbackgroundalpharangeupdate);
canvasbackgroundalpha.append(input);
canvasbackgroundalpharangeset();
}
addEventListener("load", canvasbackgroundalpharangeload);
function canvasbackgroundalpharangeset()
{
const c = canvasbackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = canvasbackgroundalpharange.value;
canvasbackgroundalphanumber.value = a;
canvas.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function canvasbackgroundalpharangeupdate()
{
canvasbackgroundalpharangeset();
svgupdate();
}
function canvasbackgroundalphaexactload()
{
const br = document.createElement("br");
canvasbackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasbackgroundalphaexactupdate);
canvasbackgroundalpha.append(button);
}
}
addEventListener("load", canvasbackgroundalphaexactload);
function canvasbackgroundalphaexactupdate(e)
{
canvasbackgroundalphanumber.value = Number(e.target.value);
canvasbackgroundalphanumberupdate();
}
function canvasbackgroundalphaincrementload()
{
const br = document.createElement("br");
canvasbackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", canvasbackgroundalphaincrementupdate);
canvasbackgroundalpha.append(button);
}
}
addEventListener("load", canvasbackgroundalphaincrementload);
function canvasbackgroundalphaincrementupdate(e)
{
let v = Number(canvasbackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((canvasbackgroundalphanumber.min <= v) && (v <= canvasbackgroundalphanumber.max))
{
canvasbackgroundalphanumber.value = v;
canvasbackgroundalphanumberupdate();
}
}
function myfunction1(e)
{
//console.log(myvideo.duration);
const myvideo = e.target;
myvideo.currentTime = 0;
}
function myfunction2(e)
{
//console.log(myvideo.currentTime);
const myvideo = e.target;
const mycanvas = document.createElement("canvas");
mycanvas.height = myvideo.videoHeight;
mycanvas.width = myvideo.videoWidth;
const mycontext = mycanvas.getContext("2d");
mycontext.drawImage(myvideo, 0, 0, mycanvas.width, mycanvas.height);
//const myimg = new Image();
//myimg.src = mycanvas.toDataURL();
image.src = mycanvas.toDataURL();
}
function imageload2()
{
//image.src = "/assets/svg/Happy.svg";
const date = new Date();
const month = date.getUTCMonth() + 1;
const day = date.getUTCDate();
const myvideo = document.createElement("video");
myvideo.addEventListener("loadedmetadata", myfunction1);
myvideo.addEventListener("seeked", myfunction2);
myvideo.src = `/assets/mp4/${month}/${day}.mp4`;
}
addEventListener("load", imageload2);
function imageload3()
{
fetch(image.src)
.then(r => r.blob())
.then(b =>
{
const reader = new FileReader();
reader.readAsDataURL(b);
reader.onloadend = () =>
{
//console.log("imageload3");
image.dataurl = reader.result;
svgupdate();
};
});
}
image.addEventListener("load", imageload3);
function imagefileload()
{
const div = document.createElement("div");
div.id = "imagefile";
div.innerHTML = "file";
tabcontentimage.append(div);
}
addEventListener("load", imagefileload);
function imagefilefileload()
{
const br = document.createElement("br");
imagefile.append(br);
const input = document.createElement("input");
input.id = "imagefilefile";
input.type = "file";
input.addEventListener("change", imagefilefileupdate);
imagefile.append(input);
}
addEventListener("load", imagefilefileload);
function imagefilefileupdate()
{
const f = imagefilefile.files[0];
image.src = URL.createObjectURL(f);
}
function imagefitload()
{
const div = document.createElement("div");
div.id = "imagefit";
div.innerHTML = "fit";
tabcontentimage.append(div);
}
addEventListener("load", imagefitload);
function imagefitselectload()
{
const br = document.createElement("br");
imagefit.append(br);
const select = document.createElement("select");
select.id = "imagefitselect";
select.addEventListener("input", imagefitselectupdate);
imagefit.append(select);
const array =
[
"contain",
"cover",
];
for(const value of array)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
imagefitselect.value = array[1];
imagefitselectset();
}
addEventListener("load", imagefitselectload);
function imagefitselectset()
{
image.objectfit = imagefitselect.value;
}
function imagefitselectupdate()
{
imagefitselectset();
svgupdate();
}
function imagewidthload()
{
const div = document.createElement("div");
div.id = "imagewidth";
div.innerHTML = "width";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagewidthload);
function imagewidthnumberload()
{
const br = document.createElement("br");
imagewidth.append(br);
const input = document.createElement("input");
input.id = "imagewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width;
input.addEventListener("input", imagewidthnumberupdate);
imagewidth.append(input);
//imagewidthnumberset();
}
addEventListener("load", imagewidthnumberload);
function imagewidthnumberset()
{
const v = imagewidthnumber.value;
imagewidthrange.value = v;
image.width = v;
}
function imagewidthnumberupdate()
{
imagewidthnumberset();
svgupdate();
}
function imagewidthrangeload()
{
//const br = document.createElement("br");
//imagewidth.append(br);
const input = document.createElement("input");
input.id = "imagewidthrange";
input.max = imagewidthnumber.max;
input.min = imagewidthnumber.min;
input.type = "range";
input.value = imagewidthnumber.value;
input.addEventListener("input", imagewidthrangeupdate);
imagewidth.append(input);
imagewidthrangeset();
}
addEventListener("load", imagewidthrangeload);
function imagewidthrangeset()
{
const v = imagewidthrange.value;
imagewidthnumber.value = v;
image.width = v;
}
function imagewidthrangeupdate()
{
imagewidthrangeset();
svgupdate();
}
/*
function imagewidthnaturalload()
{
const br = document.createElement("br");
imagewidth.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", imagewidthnaturalupdate);
imagewidth.append(button);
}
addEventListener("load", imagewidthnaturalload);
function imagewidthnaturalupdate()
{
imagewidthnumber.value = image.naturalWidth;
imagewidthnumberupdate();
}
//*/
function imagewidthexactload()
{
const br = document.createElement("br");
imagewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagewidthexactupdate);
imagewidth.append(button);
}
}
addEventListener("load", imagewidthexactload);
function imagewidthexactupdate(e)
{
imagewidthnumber.value = canvas.width * Number(e.target.value);
imagewidthnumberupdate();
}
function imagewidthincrementload()
{
const br = document.createElement("br");
imagewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagewidthincrementupdate);
imagewidth.append(button);
}
}
addEventListener("load", imagewidthincrementload);
function imagewidthincrementupdate(e)
{
const v = Number(imagewidthnumber.value) + Number(e.target.value);
if((imagewidthnumber.min <= v) && (v <= imagewidthnumber.max))
{
imagewidthnumber.value = v;
imagewidthnumberupdate();
}
}
function imageheightload()
{
const div = document.createElement("div");
div.id = "imageheight";
div.innerHTML = "height";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imageheightload);
function imageheightnumberload()
{
const br = document.createElement("br");
imageheight.append(br);
const input = document.createElement("input");
input.id = "imageheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = canvas.height;
input.addEventListener("input", imageheightnumberupdate);
imageheight.append(input);
//imageheightnumberset();
}
addEventListener("load", imageheightnumberload);
function imageheightnumberset()
{
const v = imageheightnumber.value;
imageheightrange.value = v;
image.height = v;
}
function imageheightnumberupdate()
{
imageheightnumberset();
svgupdate();
}
function imageheightrangeload()
{
//const br = document.createElement("br");
//imageheight.append(br);
const input = document.createElement("input");
input.id = "imageheightrange";
input.max = imageheightnumber.max;
input.min = imageheightnumber.min;
input.type = "range";
input.value = imageheightnumber.value;
input.addEventListener("input", imageheightrangeupdate);
imageheight.append(input);
imageheightrangeset();
}
addEventListener("load", imageheightrangeload);
function imageheightrangeset()
{
const v = imageheightrange.value;
imageheightnumber.value = v;
image.height = v;
}
function imageheightrangeupdate()
{
imageheightrangeset();
svgupdate();
}
/*
function imageheightnaturalload()
{
const br = document.createElement("br");
imageheight.append(br);
const button = document.createElement("button");
button.innerHTML = "image";
button.addEventListener("click", imageheightnaturalupdate);
imageheight.append(button);
}
addEventListener("load", imageheightnaturalload);
function imageheightnaturalupdate()
{
imageheightnumber.value = image.naturalHeight;
imageheightnumberupdate();
}
//*/
function imageheightexactload()
{
const br = document.createElement("br");
imageheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageheightexactupdate);
imageheight.append(button);
}
}
addEventListener("load", imageheightexactload);
function imageheightexactupdate(e)
{
imageheightnumber.value = canvas.height * Number(e.target.value);
imageheightnumberupdate();
}
function imageheightincrementload()
{
const br = document.createElement("br");
imageheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageheightincrementupdate);
imageheight.append(button);
}
}
addEventListener("load", imageheightincrementload);
function imageheightincrementupdate(e)
{
const v = Number(imageheightnumber.value) + Number(e.target.value);
if((imageheightnumber.min <= v) && (v <= imageheightnumber.max))
{
imageheightnumber.value = v;
imageheightnumberupdate();
}
}
function imagexload()
{
const div = document.createElement("div");
div.id = "imagex";
div.innerHTML = "x";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagexload);
function imagexnumberload()
{
const br = document.createElement("br");
imagex.append(br);
const input = document.createElement("input");
input.id = "imagexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagexnumberupdate);
imagex.append(input);
//imagexnumberset();
}
addEventListener("load", imagexnumberload);
function imagexnumberset()
{
const v = imagexnumber.value;
imagexrange.value = v;
image.myx = v;
}
function imagexnumberupdate()
{
imagexnumberset();
svgupdate();
}
function imagexrangeload()
{
//const br = document.createElement("br");
//imagex.append(br);
const input = document.createElement("input");
input.id = "imagexrange";
input.max = imagexnumber.max;
input.min = imagexnumber.min;
input.type = "range";
input.value = imagexnumber.value;
input.addEventListener("input", imagexrangeupdate);
imagex.append(input);
imagexrangeset();
}
addEventListener("load", imagexrangeload);
function imagexrangeset()
{
const v = imagexrange.value;
imagexnumber.value = v;
image.myx = v;
}
function imagexrangeupdate()
{
imagexrangeset();
svgupdate();
}
function imagexexactload()
{
const br = document.createElement("br");
imagex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagexexactupdate);
imagex.append(button);
}
}
addEventListener("load", imagexexactload);
function imagexexactupdate(e)
{
imagexnumber.value = (canvas.width - image.width) * Number(e.target.value);
imagexnumberupdate();
}
function imagexincrementload()
{
const br = document.createElement("br");
imagex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagexincrementupdate);
imagex.append(button);
}
}
addEventListener("load", imagexincrementload);
function imagexincrementupdate(e)
{
const v = Number(imagexnumber.value) + Number(e.target.value);
if((imagexnumber.min <= v) && (v <= imagexnumber.max))
{
imagexnumber.value = v;
imagexnumberupdate();
}
}
function imageyload()
{
const div = document.createElement("div");
div.id = "imagey";
div.innerHTML = "y";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imageyload);
function imageynumberload()
{
const br = document.createElement("br");
imagey.append(br);
const input = document.createElement("input");
input.id = "imageynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 0;
input.addEventListener("input", imageynumberupdate);
imagey.append(input);
//imageynumberset();
}
addEventListener("load", imageynumberload);
function imageynumberset()
{
const v = imageynumber.value;
imageyrange.value = v;
image.myy = v;
}
function imageynumberupdate()
{
imageynumberset();
svgupdate();
}
function imageyrangeload()
{
//const br = document.createElement("br");
//imagey.append(br);
const input = document.createElement("input");
input.id = "imageyrange";
input.max = imageynumber.max;
input.min = imageynumber.min;
input.type = "range";
input.value = imageynumber.value;
input.addEventListener("input", imageyrangeupdate);
imagey.append(input);
imageyrangeset();
}
addEventListener("load", imageyrangeload);
function imageyrangeset()
{
const v = imageyrange.value;
imageynumber.value = v;
image.myy = v;
}
function imageyrangeupdate()
{
imageyrangeset();
svgupdate();
}
function imageyexactload()
{
const br = document.createElement("br");
imagey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageyexactupdate);
imagey.append(button);
}
}
addEventListener("load", imageyexactload);
function imageyexactupdate(e)
{
imageynumber.value = (canvas.height - image.height) * Number(e.target.value);
imageynumberupdate();
}
function imageyincrementload()
{
const br = document.createElement("br");
imagey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageyincrementupdate);
imagey.append(button);
}
}
addEventListener("load", imageyincrementload);
function imageyincrementupdate(e)
{
const v = Number(imageynumber.value) + Number(e.target.value);
if((imageynumber.min <= v) && (v <= imageynumber.max))
{
imageynumber.value = v;
imageynumberupdate();
}
}
function imagebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "imagebackgroundcolor";
div.innerHTML = "background-color";
tabcontentimage.append(div);
}
addEventListener("load", imagebackgroundcolorload);
function imagebackgroundcolorcolorload()
{
const br = document.createElement("br");
imagebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "imagebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", imagebackgroundcolorcolorupdate);
imagebackgroundcolor.append(input);
//imagebackgroundcolorcolorset();
}
addEventListener("load", imagebackgroundcolorcolorload);
function imagebackgroundcolorcolorset()
{
const c = imagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = imagebackgroundalphanumber.value;
image.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function imagebackgroundcolorcolorupdate()
{
imagebackgroundcolorcolorset();
svgupdate();
}
function imagebackgroundcolorexactload()
{
const br = document.createElement("br");
imagebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagebackgroundcolorexactupdate);
imagebackgroundcolor.append(button);
}
}
addEventListener("load", imagebackgroundcolorexactload);
function imagebackgroundcolorexactupdate(e)
{
imagebackgroundcolorcolor.value = e.target.value;
imagebackgroundcolorcolorupdate();
}
function imagebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "imagebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagebackgroundalphaload);
function imagebackgroundalphanumberload()
{
const br = document.createElement("br");
imagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "imagebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagebackgroundalphanumberupdate);
imagebackgroundalpha.append(input);
//imagebackgroundalphanumberset();
}
addEventListener("load", imagebackgroundalphanumberload);
function imagebackgroundalphanumberset()
{
const c = imagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = imagebackgroundalphanumber.value;
imagebackgroundalpharange.value = a;
image.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function imagebackgroundalphanumberupdate()
{
imagebackgroundalphanumberset();
svgupdate();
}
function imagebackgroundalpharangeload()
{
//const br = document.createElement("br");
//imagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "imagebackgroundalpharange";
input.max = imagebackgroundalphanumber.max;
input.min = imagebackgroundalphanumber.min;
input.step = imagebackgroundalphanumber.step;
input.type = "range";
input.value = imagebackgroundalphanumber.value;
input.addEventListener("input", imagebackgroundalpharangeupdate);
imagebackgroundalpha.append(input);
imagebackgroundalpharangeset();
}
addEventListener("load", imagebackgroundalpharangeload);
function imagebackgroundalpharangeset()
{
const c = imagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = imagebackgroundalpharange.value;
imagebackgroundalphanumber.value = a;
image.backgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function imagebackgroundalpharangeupdate()
{
imagebackgroundalpharangeset();
svgupdate();
}
function imagebackgroundalphaexactload()
{
const br = document.createElement("br");
imagebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagebackgroundalphaexactupdate);
imagebackgroundalpha.append(button);
}
}
addEventListener("load", imagebackgroundalphaexactload);
function imagebackgroundalphaexactupdate(e)
{
imagebackgroundalphanumber.value = Number(e.target.value);
imagebackgroundalphanumberupdate();
}
function imagebackgroundalphaincrementload()
{
const br = document.createElement("br");
imagebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagebackgroundalphaincrementupdate);
imagebackgroundalpha.append(button);
}
}
addEventListener("load", imagebackgroundalphaincrementload);
function imagebackgroundalphaincrementupdate(e)
{
let v = Number(imagebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((imagebackgroundalphanumber.min <= v) && (v <= imagebackgroundalphanumber.max))
{
imagebackgroundalphanumber.value = v;
imagebackgroundalphanumberupdate();
}
}
/*
function imageopacityload()
{
const div = document.createElement("div");
div.id = "imageopacity";
div.innerHTML = "opacity";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imageopacityload);
function imageopacitynumberload()
{
const br = document.createElement("br");
imageopacity.append(br);
const input = document.createElement("input");
input.id = "imageopacitynumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", imageopacitynumberupdate);
imageopacity.append(input);
//imageopacitynumberset();
}
addEventListener("load", imageopacitynumberload);
function imageopacitynumberset()
{
const v = imageopacitynumber.value;
imageopacityrange.value = v;
image.opacity = v;
}
function imageopacitynumberupdate()
{
imageopacitynumberset();
svgupdate();
}
function imageopacityrangeload()
{
const input = document.createElement("input");
input.id = "imageopacityrange";
input.max = imageopacitynumber.max;
input.min = imageopacitynumber.min;
input.step = imageopacitynumber.step;
input.type = "range";
input.value = imageopacitynumber.value;
input.addEventListener("input", imageopacityrangeupdate);
imageopacity.append(input);
imageopacityrangeset();
}
addEventListener("load", imageopacityrangeload);
function imageopacityrangeset()
{
const v = imageopacityrange.value;
imageopacitynumber.value = v;
image.opacity = v;
}
function imageopacityrangeupdate()
{
imageopacityrangeset();
svgupdate();
}
function imageopacityexactload()
{
const br = document.createElement("br");
imageopacity.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageopacityexactupdate);
imageopacity.append(button);
}
}
addEventListener("load", imageopacityexactload);
function imageopacityexactupdate(e)
{
imageopacitynumber.value = Number(e.target.value);
imageopacitynumberupdate();
}
function imageopacityincrementload()
{
const br = document.createElement("br");
imageopacity.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imageopacityincrementupdate);
imageopacity.append(button);
}
}
addEventListener("load", imageopacityincrementload);
function imageopacityincrementupdate(e)
{
let v = Number(imageopacitynumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((imageopacitynumber.min <= v) && (v <= imageopacitynumber.max))
{
imageopacitynumber.value = v;
imageopacitynumberupdate();
}
}
//*/
function imagefilterblurload()
{
const div = document.createElement("div");
div.id = "imagefilterblur";
div.innerHTML = "filter-blur";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterblurload);
function imagefilterblurnumberload()
{
const br = document.createElement("br");
imagefilterblur.append(br);
const input = document.createElement("input");
input.id = "imagefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefilterblurnumberupdate);
imagefilterblur.append(input);
//imagefilterblurnumberset();
}
addEventListener("load", imagefilterblurnumberload);
function imagefilterblurnumberset()
{
const v = imagefilterblurnumber.value;
imagefilterblurrange.value = v;
image.filterblur = v;
}
function imagefilterblurnumberupdate()
{
imagefilterblurnumberset();
svgupdate();
}
function imagefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "imagefilterblurrange";
input.max = imagefilterblurnumber.max;
input.min = imagefilterblurnumber.min;
input.step = imagefilterblurnumber.step;
input.type = "range";
input.value = imagefilterblurnumber.value;
input.addEventListener("input", imagefilterblurrangeupdate);
imagefilterblur.append(input);
imagefilterblurrangeset();
}
addEventListener("load", imagefilterblurrangeload);
function imagefilterblurrangeset()
{
const v = imagefilterblurrange.value;
imagefilterblurnumber.value = v;
image.filterblur = v;
}
function imagefilterblurrangeupdate()
{
imagefilterblurrangeset();
svgupdate();
}
function imagefilterblurexactload()
{
const br = document.createElement("br");
imagefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterblurexactupdate);
imagefilterblur.append(button);
}
}
addEventListener("load", imagefilterblurexactload);
function imagefilterblurexactupdate(e)
{
imagefilterblurnumber.value = Number(e.target.value);
imagefilterblurnumberupdate();
}
function imagefilterblurincrementload()
{
const br = document.createElement("br");
imagefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterblurincrementupdate);
imagefilterblur.append(button);
}
}
addEventListener("load", imagefilterblurincrementload);
function imagefilterblurincrementupdate(e)
{
const v = Number(imagefilterblurnumber.value) + Number(e.target.value);
if((imagefilterblurnumber.min <= v) && (v <= imagefilterblurnumber.max))
{
imagefilterblurnumber.value = v;
imagefilterblurnumberupdate();
}
}
function imagefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "imagefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterbrightnessload);
function imagefilterbrightnessnumberload()
{
const br = document.createElement("br");
imagefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "imagefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefilterbrightnessnumberupdate);
imagefilterbrightness.append(input);
//imagefilterbrightnessnumberset();
}
addEventListener("load", imagefilterbrightnessnumberload);
function imagefilterbrightnessnumberset()
{
const v = imagefilterbrightnessnumber.value;
imagefilterbrightnessrange.value = v;
image.filterbrightness = v;
}
function imagefilterbrightnessnumberupdate()
{
imagefilterbrightnessnumberset();
svgupdate();
}
function imagefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "imagefilterbrightnessrange";
input.max = imagefilterbrightnessnumber.max;
input.min = imagefilterbrightnessnumber.min;
input.step = imagefilterbrightnessnumber.step;
input.type = "range";
input.value = imagefilterbrightnessnumber.value;
input.addEventListener("input", imagefilterbrightnessrangeupdate);
imagefilterbrightness.append(input);
imagefilterbrightnessrangeset();
}
addEventListener("load", imagefilterbrightnessrangeload);
function imagefilterbrightnessrangeset()
{
const v = imagefilterbrightnessrange.value;
imagefilterbrightnessnumber.value = v;
image.filterbrightness = v;
}
function imagefilterbrightnessrangeupdate()
{
imagefilterbrightnessrangeset();
svgupdate();
}
function imagefilterbrightnessexactload()
{
const br = document.createElement("br");
imagefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterbrightnessexactupdate);
imagefilterbrightness.append(button);
}
}
addEventListener("load", imagefilterbrightnessexactload);
function imagefilterbrightnessexactupdate(e)
{
imagefilterbrightnessnumber.value = Number(e.target.value);
imagefilterbrightnessnumberupdate();
}
function imagefilterbrightnessincrementload()
{
const br = document.createElement("br");
imagefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterbrightnessincrementupdate);
imagefilterbrightness.append(button);
}
}
addEventListener("load", imagefilterbrightnessincrementload);
function imagefilterbrightnessincrementupdate(e)
{
const v = Number(imagefilterbrightnessnumber.value) + Number(e.target.value);
if((imagefilterbrightnessnumber.min <= v) && (v <= imagefilterbrightnessnumber.max))
{
imagefilterbrightnessnumber.value = v;
imagefilterbrightnessnumberupdate();
}
}
function imagefiltercontrastload()
{
const div = document.createElement("div");
div.id = "imagefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltercontrastload);
function imagefiltercontrastnumberload()
{
const br = document.createElement("br");
imagefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "imagefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefiltercontrastnumberupdate);
imagefiltercontrast.append(input);
//imagefiltercontrastnumberset();
}
addEventListener("load", imagefiltercontrastnumberload);
function imagefiltercontrastnumberset()
{
const v = imagefiltercontrastnumber.value;
imagefiltercontrastrange.value = v;
image.filtercontrast = v;
}
function imagefiltercontrastnumberupdate()
{
imagefiltercontrastnumberset();
svgupdate();
}
function imagefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "imagefiltercontrastrange";
input.max = imagefiltercontrastnumber.max;
input.min = imagefiltercontrastnumber.min;
input.step = imagefiltercontrastnumber.step;
input.type = "range";
input.value = imagefiltercontrastnumber.value;
input.addEventListener("input", imagefiltercontrastrangeupdate);
imagefiltercontrast.append(input);
imagefiltercontrastrangeset();
}
addEventListener("load", imagefiltercontrastrangeload);
function imagefiltercontrastrangeset()
{
const v = imagefiltercontrastrange.value;
imagefiltercontrastnumber.value = v;
image.filtercontrast = v;
}
function imagefiltercontrastrangeupdate()
{
imagefiltercontrastrangeset();
svgupdate();
}
function imagefiltercontrastexactload()
{
const br = document.createElement("br");
imagefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltercontrastexactupdate);
imagefiltercontrast.append(button);
}
}
addEventListener("load", imagefiltercontrastexactload);
function imagefiltercontrastexactupdate(e)
{
imagefiltercontrastnumber.value = Number(e.target.value);
imagefiltercontrastnumberupdate();
}
function imagefiltercontrastincrementload()
{
const br = document.createElement("br");
imagefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltercontrastincrementupdate);
imagefiltercontrast.append(button);
}
}
addEventListener("load", imagefiltercontrastincrementload);
function imagefiltercontrastincrementupdate(e)
{
const v = Number(imagefiltercontrastnumber.value) + Number(e.target.value);
if((imagefiltercontrastnumber.min <= v) && (v <= imagefiltercontrastnumber.max))
{
imagefiltercontrastnumber.value = v;
imagefiltercontrastnumberupdate();
}
}
function imagefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "imagefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltergrayscaleload);
function imagefiltergrayscalenumberload()
{
const br = document.createElement("br");
imagefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "imagefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefiltergrayscalenumberupdate);
imagefiltergrayscale.append(input);
//imagefiltergrayscalenumberset();
}
addEventListener("load", imagefiltergrayscalenumberload);
function imagefiltergrayscalenumberset()
{
const v = imagefiltergrayscalenumber.value;
imagefiltergrayscalerange.value = v;
image.filtergrayscale = v;
}
function imagefiltergrayscalenumberupdate()
{
imagefiltergrayscalenumberset();
svgupdate();
}
function imagefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "imagefiltergrayscalerange";
input.max = imagefiltergrayscalenumber.max;
input.min = imagefiltergrayscalenumber.min;
input.step = imagefiltergrayscalenumber.step;
input.type = "range";
input.value = imagefiltergrayscalenumber.value;
input.addEventListener("input", imagefiltergrayscalerangeupdate);
imagefiltergrayscale.append(input);
imagefiltergrayscalerangeset();
}
addEventListener("load", imagefiltergrayscalerangeload);
function imagefiltergrayscalerangeset()
{
const v = imagefiltergrayscalerange.value;
imagefiltergrayscalenumber.value = v;
image.filtergrayscale = v;
}
function imagefiltergrayscalerangeupdate()
{
imagefiltergrayscalerangeset();
svgupdate();
}
function imagefiltergrayscaleexactload()
{
const br = document.createElement("br");
imagefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltergrayscaleexactupdate);
imagefiltergrayscale.append(button);
}
}
addEventListener("load", imagefiltergrayscaleexactload);
function imagefiltergrayscaleexactupdate(e)
{
imagefiltergrayscalenumber.value = Number(e.target.value);
imagefiltergrayscalenumberupdate();
}
function imagefiltergrayscaleincrementload()
{
const br = document.createElement("br");
imagefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltergrayscaleincrementupdate);
imagefiltergrayscale.append(button);
}
}
addEventListener("load", imagefiltergrayscaleincrementload);
function imagefiltergrayscaleincrementupdate(e)
{
const v = Number(imagefiltergrayscalenumber.value) + Number(e.target.value);
if((imagefiltergrayscalenumber.min <= v) && (v <= imagefiltergrayscalenumber.max))
{
imagefiltergrayscalenumber.value = v;
imagefiltergrayscalenumberupdate();
}
}
function imagefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "imagefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterhuerotateload);
function imagefilterhuerotatenumberload()
{
const br = document.createElement("br");
imagefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "imagefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefilterhuerotatenumberupdate);
imagefilterhuerotate.append(input);
//imagefilterhuerotatenumberset();
}
addEventListener("load", imagefilterhuerotatenumberload);
function imagefilterhuerotatenumberset()
{
const v = imagefilterhuerotatenumber.value;
imagefilterhuerotaterange.value = v;
image.filterhuerotate = v;
}
function imagefilterhuerotatenumberupdate()
{
imagefilterhuerotatenumberset();
svgupdate();
}
function imagefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "imagefilterhuerotaterange";
input.max = imagefilterhuerotatenumber.max;
input.min = imagefilterhuerotatenumber.min;
input.step = imagefilterhuerotatenumber.step;
input.type = "range";
input.value = imagefilterhuerotatenumber.value;
input.addEventListener("input", imagefilterhuerotaterangeupdate);
imagefilterhuerotate.append(input);
imagefilterhuerotaterangeset();
}
addEventListener("load", imagefilterhuerotaterangeload);
function imagefilterhuerotaterangeset()
{
const v = imagefilterhuerotaterange.value;
imagefilterhuerotatenumber.value = v;
image.filterhuerotate = v;
}
function imagefilterhuerotaterangeupdate()
{
imagefilterhuerotaterangeset();
svgupdate();
}
function imagefilterhuerotateexactload()
{
const br = document.createElement("br");
imagefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterhuerotateexactupdate);
imagefilterhuerotate.append(button);
}
}
addEventListener("load", imagefilterhuerotateexactload);
function imagefilterhuerotateexactupdate(e)
{
imagefilterhuerotatenumber.value = Number(e.target.value);
imagefilterhuerotatenumberupdate();
}
function imagefilterhuerotateincrementload()
{
const br = document.createElement("br");
imagefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterhuerotateincrementupdate);
imagefilterhuerotate.append(button);
}
}
addEventListener("load", imagefilterhuerotateincrementload);
function imagefilterhuerotateincrementupdate(e)
{
const v = Number(imagefilterhuerotatenumber.value) + Number(e.target.value);
if((imagefilterhuerotatenumber.min <= v) && (v <= imagefilterhuerotatenumber.max))
{
imagefilterhuerotatenumber.value = v;
imagefilterhuerotatenumberupdate();
}
}
function imagefilterinvertload()
{
const div = document.createElement("div");
div.id = "imagefilterinvert";
div.innerHTML = "filter-invert";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilterinvertload);
function imagefilterinvertnumberload()
{
const br = document.createElement("br");
imagefilterinvert.append(br);
const input = document.createElement("input");
input.id = "imagefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefilterinvertnumberupdate);
imagefilterinvert.append(input);
//imagefilterinvertnumberset();
}
addEventListener("load", imagefilterinvertnumberload);
function imagefilterinvertnumberset()
{
const v = imagefilterinvertnumber.value;
imagefilterinvertrange.value = v;
image.filterinvert = v;
}
function imagefilterinvertnumberupdate()
{
imagefilterinvertnumberset();
svgupdate();
}
function imagefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "imagefilterinvertrange";
input.max = imagefilterinvertnumber.max;
input.min = imagefilterinvertnumber.min;
input.step = imagefilterinvertnumber.step;
input.type = "range";
input.value = imagefilterinvertnumber.value;
input.addEventListener("input", imagefilterinvertrangeupdate);
imagefilterinvert.append(input);
imagefilterinvertrangeset();
}
addEventListener("load", imagefilterinvertrangeload);
function imagefilterinvertrangeset()
{
const v = imagefilterinvertrange.value;
imagefilterinvertnumber.value = v;
image.filterinvert = v;
}
function imagefilterinvertrangeupdate()
{
imagefilterinvertrangeset();
svgupdate();
}
function imagefilterinvertexactload()
{
const br = document.createElement("br");
imagefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterinvertexactupdate);
imagefilterinvert.append(button);
}
}
addEventListener("load", imagefilterinvertexactload);
function imagefilterinvertexactupdate(e)
{
imagefilterinvertnumber.value = Number(e.target.value);
imagefilterinvertnumberupdate();
}
function imagefilterinvertincrementload()
{
const br = document.createElement("br");
imagefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilterinvertincrementupdate);
imagefilterinvert.append(button);
}
}
addEventListener("load", imagefilterinvertincrementload);
function imagefilterinvertincrementupdate(e)
{
const v = Number(imagefilterinvertnumber.value) + Number(e.target.value);
if((imagefilterinvertnumber.min <= v) && (v <= imagefilterinvertnumber.max))
{
imagefilterinvertnumber.value = v;
imagefilterinvertnumberupdate();
}
}
function imagefilteropacityload()
{
const div = document.createElement("div");
div.id = "imagefilteropacity";
div.innerHTML = "filter-opacity";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefilteropacityload);
function imagefilteropacitynumberload()
{
const br = document.createElement("br");
imagefilteropacity.append(br);
const input = document.createElement("input");
input.id = "imagefilteropacitynumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefilteropacitynumberupdate);
imagefilteropacity.append(input);
//imagefilteropacitynumberset();
}
addEventListener("load", imagefilteropacitynumberload);
function imagefilteropacitynumberset()
{
const v = imagefilteropacitynumber.value;
imagefilteropacityrange.value = v;
image.filteropacity = v;
}
function imagefilteropacitynumberupdate()
{
imagefilteropacitynumberset();
svgupdate();
}
function imagefilteropacityrangeload()
{
const input = document.createElement("input");
input.id = "imagefilteropacityrange";
input.max = imagefilteropacitynumber.max;
input.min = imagefilteropacitynumber.min;
input.step = imagefilteropacitynumber.step;
input.type = "range";
input.value = imagefilteropacitynumber.value;
input.addEventListener("input", imagefilteropacityrangeupdate);
imagefilteropacity.append(input);
imagefilteropacityrangeset();
}
addEventListener("load", imagefilteropacityrangeload);
function imagefilteropacityrangeset()
{
const v = imagefilteropacityrange.value;
imagefilteropacitynumber.value = v;
image.filteropacity = v;
}
function imagefilteropacityrangeupdate()
{
imagefilteropacityrangeset();
svgupdate();
}
function imagefilteropacityexactload()
{
const br = document.createElement("br");
imagefilteropacity.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100 (initial)",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilteropacityexactupdate);
imagefilteropacity.append(button);
}
}
addEventListener("load", imagefilteropacityexactload);
function imagefilteropacityexactupdate(e)
{
imagefilteropacitynumber.value = Number(e.target.value);
imagefilteropacitynumberupdate();
}
function imagefilteropacityincrementload()
{
const br = document.createElement("br");
imagefilteropacity.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefilteropacityincrementupdate);
imagefilteropacity.append(button);
}
}
addEventListener("load", imagefilteropacityincrementload);
function imagefilteropacityincrementupdate(e)
{
const v = Number(imagefilteropacitynumber.value) + Number(e.target.value);
if((imagefilteropacitynumber.min <= v) && (v <= imagefilteropacitynumber.max))
{
imagefilteropacitynumber.value = v;
imagefilteropacitynumberupdate();
}
}
function imagefiltersaturateload()
{
const div = document.createElement("div");
div.id = "imagefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltersaturateload);
function imagefiltersaturatenumberload()
{
const br = document.createElement("br");
imagefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "imagefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", imagefiltersaturatenumberupdate);
imagefiltersaturate.append(input);
//imagefiltersaturatenumberset();
}
addEventListener("load", imagefiltersaturatenumberload);
function imagefiltersaturatenumberset()
{
const v = imagefiltersaturatenumber.value;
imagefiltersaturaterange.value = v;
image.filtersaturate = v;
}
function imagefiltersaturatenumberupdate()
{
imagefiltersaturatenumberset();
svgupdate();
}
function imagefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "imagefiltersaturaterange";
input.max = imagefiltersaturatenumber.max;
input.min = imagefiltersaturatenumber.min;
input.step = imagefiltersaturatenumber.step;
input.type = "range";
input.value = imagefiltersaturatenumber.value;
input.addEventListener("input", imagefiltersaturaterangeupdate);
imagefiltersaturate.append(input);
imagefiltersaturaterangeset();
}
addEventListener("load", imagefiltersaturaterangeload);
function imagefiltersaturaterangeset()
{
const v = imagefiltersaturaterange.value;
imagefiltersaturatenumber.value = v;
image.filtersaturate = v;
}
function imagefiltersaturaterangeupdate()
{
imagefiltersaturaterangeset();
svgupdate();
}
function imagefiltersaturateexactload()
{
const br = document.createElement("br");
imagefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersaturateexactupdate);
imagefiltersaturate.append(button);
}
}
addEventListener("load", imagefiltersaturateexactload);
function imagefiltersaturateexactupdate(e)
{
imagefiltersaturatenumber.value = Number(e.target.value);
imagefiltersaturatenumberupdate();
}
function imagefiltersaturateincrementload()
{
const br = document.createElement("br");
imagefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersaturateincrementupdate);
imagefiltersaturate.append(button);
}
}
addEventListener("load", imagefiltersaturateincrementload);
function imagefiltersaturateincrementupdate(e)
{
const v = Number(imagefiltersaturatenumber.value) + Number(e.target.value);
if((imagefiltersaturatenumber.min <= v) && (v <= imagefiltersaturatenumber.max))
{
imagefiltersaturatenumber.value = v;
imagefiltersaturatenumberupdate();
}
}
function imagefiltersepiaload()
{
const div = document.createElement("div");
div.id = "imagefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentimage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", imagefiltersepiaload);
function imagefiltersepianumberload()
{
const br = document.createElement("br");
imagefiltersepia.append(br);
const input = document.createElement("input");
input.id = "imagefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagefiltersepianumberupdate);
imagefiltersepia.append(input);
//imagefiltersepianumberset();
}
addEventListener("load", imagefiltersepianumberload);
function imagefiltersepianumberset()
{
const v = imagefiltersepianumber.value;
imagefiltersepiarange.value = v;
image.filtersepia = v;
}
function imagefiltersepianumberupdate()
{
imagefiltersepianumberset();
svgupdate();
}
function imagefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "imagefiltersepiarange";
input.max = imagefiltersepianumber.max;
input.min = imagefiltersepianumber.min;
input.step = imagefiltersepianumber.step;
input.type = "range";
input.value = imagefiltersepianumber.value;
input.addEventListener("input", imagefiltersepiarangeupdate);
imagefiltersepia.append(input);
imagefiltersepiarangeset();
}
addEventListener("load", imagefiltersepiarangeload);
function imagefiltersepiarangeset()
{
const v = imagefiltersepiarange.value;
imagefiltersepianumber.value = v;
image.filtersepia = v;
}
function imagefiltersepiarangeupdate()
{
imagefiltersepiarangeset();
svgupdate();
}
function imagefiltersepiaexactload()
{
const br = document.createElement("br");
imagefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersepiaexactupdate);
imagefiltersepia.append(button);
}
}
addEventListener("load", imagefiltersepiaexactload);
function imagefiltersepiaexactupdate(e)
{
imagefiltersepianumber.value = Number(e.target.value);
imagefiltersepianumberupdate();
}
function imagefiltersepiaincrementload()
{
const br = document.createElement("br");
imagefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", imagefiltersepiaincrementupdate);
imagefiltersepia.append(button);
}
}
addEventListener("load", imagefiltersepiaincrementload);
function imagefiltersepiaincrementupdate(e)
{
const v = Number(imagefiltersepianumber.value) + Number(e.target.value);
if((imagefiltersepianumber.min <= v) && (v <= imagefiltersepianumber.max))
{
imagefiltersepianumber.value = v;
imagefiltersepianumberupdate();
}
}
/*
function imagemargintopload()
{
const div = document.createElement("div");
div.id = "imagemargintop";
div.innerHTML = "margin-top";
tabcontentimage.append(div);
}
addEventListener("load", imagemargintopload);
function imagemargintopnumberload()
{
const br = document.createElement("br");
imagemargintop.append(br);
const input = document.createElement("input");
input.id = "imagemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemargintopnumberupdate);
imagemargintop.append(input);
//imagemargintopnumberset();
}
addEventListener("load", imagemargintopnumberload);
function imagemargintopnumberset()
{
const v = Number(imagemargintopnumber.value);
imagemargintoprange.value = v;
image.margintop = v;
}
function imagemargintopnumberupdate()
{
imagemargintopnumberset();
svgupdate();
}
function imagemargintoprangeload()
{
const input = document.createElement("input");
input.id = "imagemargintoprange";
input.max = imagemargintopnumber.max;
input.min = imagemargintopnumber.min;
input.type = "range";
input.value = imagemargintopnumber.value;
input.addEventListener("input", imagemargintoprangeupdate);
imagemargintop.append(input);
imagemargintoprangeset();
}
addEventListener("load", imagemargintoprangeload);
function imagemargintoprangeset()
{
const v = Number(imagemargintoprange.value);
imagemargintopnumber.value = v;
image.margintop = v;
}
function imagemargintoprangeupdate()
{
imagemargintoprangeset();
svgupdate();
}
function imagemarginbottomload()
{
const div = document.createElement("div");
div.id = "imagemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentimage.append(div);
}
addEventListener("load", imagemarginbottomload);
function imagemarginbottomnumberload()
{
const br = document.createElement("br");
imagemarginbottom.append(br);
const input = document.createElement("input");
input.id = "imagemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemarginbottomnumberupdate);
imagemarginbottom.append(input);
//imagemarginbottomnumberset();
}
addEventListener("load", imagemarginbottomnumberload);
function imagemarginbottomnumberset()
{
const v = Number(imagemarginbottomnumber.value);
imagemarginbottomrange.value = v;
image.marginbottom = v;
}
function imagemarginbottomnumberupdate()
{
imagemarginbottomnumberset();
svgupdate();
}
function imagemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "imagemarginbottomrange";
input.max = imagemarginbottomnumber.max;
input.min = imagemarginbottomnumber.min;
input.type = "range";
input.value = imagemarginbottomnumber.value;
input.addEventListener("input", imagemarginbottomrangeupdate);
imagemarginbottom.append(input);
imagemarginbottomrangeset();
}
addEventListener("load", imagemarginbottomrangeload);
function imagemarginbottomrangeset()
{
const v = Number(imagemarginbottomrange.value);
imagemarginbottomnumber.value = v;
image.marginbottom = v;
}
function imagemarginbottomrangeupdate()
{
imagemarginbottomrangeset();
svgupdate();
}
function imagemarginleftload()
{
const div = document.createElement("div");
div.id = "imagemarginleft";
div.innerHTML = "margin-left";
tabcontentimage.append(div);
}
addEventListener("load", imagemarginleftload);
function imagemarginleftnumberload()
{
const br = document.createElement("br");
imagemarginleft.append(br);
const input = document.createElement("input");
input.id = "imagemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemarginleftnumberupdate);
imagemarginleft.append(input);
//imagemarginleftnumberset();
}
addEventListener("load", imagemarginleftnumberload);
function imagemarginleftnumberset()
{
const v = Number(imagemarginleftnumber.value);
imagemarginleftrange.value = v;
image.marginleft = v;
}
function imagemarginleftnumberupdate()
{
imagemarginleftnumberset();
svgupdate();
}
function imagemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "imagemarginleftrange";
input.max = imagemarginleftnumber.max;
input.min = imagemarginleftnumber.min;
input.type = "range";
input.value = imagemarginleftnumber.value;
input.addEventListener("input", imagemarginleftrangeupdate);
imagemarginleft.append(input);
imagemarginleftrangeset();
}
addEventListener("load", imagemarginleftrangeload);
function imagemarginleftrangeset()
{
const v = Number(imagemarginleftrange.value);
imagemarginleftnumber.value = v;
image.marginleft = v;
}
function imagemarginleftrangeupdate()
{
imagemarginleftrangeset();
svgupdate();
}
function imagemarginrightload()
{
const div = document.createElement("div");
div.id = "imagemarginright";
div.innerHTML = "margin-right";
tabcontentimage.append(div);
}
addEventListener("load", imagemarginrightload);
function imagemarginrightnumberload()
{
const br = document.createElement("br");
imagemarginright.append(br);
const input = document.createElement("input");
input.id = "imagemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagemarginrightnumberupdate);
imagemarginright.append(input);
//imagemarginrightnumberset();
}
addEventListener("load", imagemarginrightnumberload);
function imagemarginrightnumberset()
{
const v = Number(imagemarginrightnumber.value);
imagemarginrightrange.value = v;
image.marginright = v;
}
function imagemarginrightnumberupdate()
{
imagemarginrightnumberset();
svgupdate();
}
function imagemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "imagemarginrightrange";
input.max = imagemarginrightnumber.max;
input.min = imagemarginrightnumber.min;
input.type = "range";
input.value = imagemarginrightnumber.value;
input.addEventListener("input", imagemarginrightrangeupdate);
imagemarginright.append(input);
imagemarginrightrangeset();
}
addEventListener("load", imagemarginrightrangeload);
function imagemarginrightrangeset()
{
const v = Number(imagemarginrightrange.value);
imagemarginrightnumber.value = v;
image.marginright = v;
}
function imagemarginrightrangeupdate()
{
imagemarginrightrangeset();
svgupdate();
}
function imagepaddingtopload()
{
const div = document.createElement("div");
div.id = "imagepaddingtop";
div.innerHTML = "padding-top";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingtopload);
function imagepaddingtopnumberload()
{
const br = document.createElement("br");
imagepaddingtop.append(br);
const input = document.createElement("input");
input.id = "imagepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingtopnumberupdate);
imagepaddingtop.append(input);
//imagepaddingtopnumberset();
}
addEventListener("load", imagepaddingtopnumberload);
function imagepaddingtopnumberset()
{
const v = Number(imagepaddingtopnumber.value);
imagepaddingtoprange.value = v;
image.paddingtop = v;
}
function imagepaddingtopnumberupdate()
{
imagepaddingtopnumberset();
svgupdate();
}
function imagepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingtoprange";
input.max = imagepaddingtopnumber.max;
input.min = imagepaddingtopnumber.min;
input.type = "range";
input.value = imagepaddingtopnumber.value;
input.addEventListener("input", imagepaddingtoprangeupdate);
imagepaddingtop.append(input);
imagepaddingtoprangeset();
}
addEventListener("load", imagepaddingtoprangeload);
function imagepaddingtoprangeset()
{
const v = Number(imagepaddingtoprange.value);
imagepaddingtopnumber.value = v;
image.paddingtop = v;
}
function imagepaddingtoprangeupdate()
{
imagepaddingtoprangeset();
svgupdate();
}
function imagepaddingbottomload()
{
const div = document.createElement("div");
div.id = "imagepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingbottomload);
function imagepaddingbottomnumberload()
{
const br = document.createElement("br");
imagepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "imagepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingbottomnumberupdate);
imagepaddingbottom.append(input);
//imagepaddingbottomnumberset();
}
addEventListener("load", imagepaddingbottomnumberload);
function imagepaddingbottomnumberset()
{
const v = Number(imagepaddingbottomnumber.value);
imagepaddingbottomrange.value = v;
image.paddingbottom = v;
}
function imagepaddingbottomnumberupdate()
{
imagepaddingbottomnumberset();
svgupdate();
}
function imagepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingbottomrange";
input.max = imagepaddingbottomnumber.max;
input.min = imagepaddingbottomnumber.min;
input.type = "range";
input.value = imagepaddingbottomnumber.value;
input.addEventListener("input", imagepaddingbottomrangeupdate);
imagepaddingbottom.append(input);
imagepaddingbottomrangeset();
}
addEventListener("load", imagepaddingbottomrangeload);
function imagepaddingbottomrangeset()
{
const v = Number(imagepaddingbottomrange.value);
imagepaddingbottomnumber.value = v;
image.paddingbottom = v;
}
function imagepaddingbottomrangeupdate()
{
imagepaddingbottomrangeset();
svgupdate();
}
function imagepaddingleftload()
{
const div = document.createElement("div");
div.id = "imagepaddingleft";
div.innerHTML = "padding-left";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingleftload);
function imagepaddingleftnumberload()
{
const br = document.createElement("br");
imagepaddingleft.append(br);
const input = document.createElement("input");
input.id = "imagepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingleftnumberupdate);
imagepaddingleft.append(input);
//imagepaddingleftnumberset();
}
addEventListener("load", imagepaddingleftnumberload);
function imagepaddingleftnumberset()
{
const v = Number(imagepaddingleftnumber.value);
imagepaddingleftrange.value = v;
image.paddingleft = v;
}
function imagepaddingleftnumberupdate()
{
imagepaddingleftnumberset();
svgupdate();
}
function imagepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingleftrange";
input.max = imagepaddingleftnumber.max;
input.min = imagepaddingleftnumber.min;
input.type = "range";
input.value = imagepaddingleftnumber.value;
input.addEventListener("input", imagepaddingleftrangeupdate);
imagepaddingleft.append(input);
imagepaddingleftrangeset();
}
addEventListener("load", imagepaddingleftrangeload);
function imagepaddingleftrangeset()
{
const v = Number(imagepaddingleftrange.value);
imagepaddingleftnumber.value = v;
image.paddingleft = v;
}
function imagepaddingleftrangeupdate()
{
imagepaddingleftrangeset();
svgupdate();
}
function imagepaddingrightload()
{
const div = document.createElement("div");
div.id = "imagepaddingright";
div.innerHTML = "padding-right";
tabcontentimage.append(div);
}
addEventListener("load", imagepaddingrightload);
function imagepaddingrightnumberload()
{
const br = document.createElement("br");
imagepaddingright.append(br);
const input = document.createElement("input");
input.id = "imagepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", imagepaddingrightnumberupdate);
imagepaddingright.append(input);
//imagepaddingrightnumberset();
}
addEventListener("load", imagepaddingrightnumberload);
function imagepaddingrightnumberset()
{
const v = Number(imagepaddingrightnumber.value);
imagepaddingrightrange.value = v;
image.paddingright = v;
}
function imagepaddingrightnumberupdate()
{
imagepaddingrightnumberset();
svgupdate();
}
function imagepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "imagepaddingrightrange";
input.max = imagepaddingrightnumber.max;
input.min = imagepaddingrightnumber.min;
input.type = "range";
input.value = imagepaddingrightnumber.value;
input.addEventListener("input", imagepaddingrightrangeupdate);
imagepaddingright.append(input);
imagepaddingrightrangeset();
}
addEventListener("load", imagepaddingrightrangeload);
function imagepaddingrightrangeset()
{
const v = Number(imagepaddingrightrange.value);
imagepaddingrightnumber.value = v;
image.paddingright = v;
}
function imagepaddingrightrangeupdate()
{
imagepaddingrightrangeset();
svgupdate();
}
//*/
function messagetextload()
{
const div = document.createElement("div");
div.id = "messagetext";
div.innerHTML = "text";
tabcontentmessage.append(div);
}
addEventListener("load", messagetextload);
function messagetexttextareaload()
{
const br = document.createElement("br");
messagetext.append(br);
const textarea = document.createElement("textarea");
textarea.id = "messagetexttextarea";
textarea.addEventListener("input", messagetexttextareaupdate);
messagetext.append(textarea);
textarea.value = "Jesus loves you!";
messagetexttextareaset();
}
addEventListener("load", messagetexttextareaload);
function messagetexttextareaset()
{
text.messagetext = messagetexttextarea.value;
}
function messagetexttextareaupdate()
{
messagetexttextareaset();
svgupdate();
}
function messagewidthload()
{
const div = document.createElement("div");
div.id = "messagewidth";
div.innerHTML = "width";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagewidthload);
function messagewidthnumberload()
{
const br = document.createElement("br");
messagewidth.append(br);
const input = document.createElement("input");
input.id = "messagewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width - 100;
input.addEventListener("input", messagewidthnumberupdate);
messagewidth.append(input);
//messagewidthnumberset();
}
addEventListener("load", messagewidthnumberload);
function messagewidthnumberset()
{
const v = Number(messagewidthnumber.value);
messagewidthrange.value = v;
text.messagewidth = v;
}
function messagewidthnumberupdate()
{
messagewidthnumberset();
svgupdate();
}
function messagewidthrangeload()
{
const input = document.createElement("input");
input.id = "messagewidthrange";
input.max = messagewidthnumber.max;
input.min = messagewidthnumber.min;
input.type = "range";
input.value = messagewidthnumber.value;
input.addEventListener("input", messagewidthrangeupdate);
messagewidth.append(input);
messagewidthrangeset();
}
addEventListener("load", messagewidthrangeload);
function messagewidthrangeset()
{
const v = Number(messagewidthrange.value);
messagewidthnumber.value = v;
text.messagewidth = v;
}
function messagewidthrangeupdate()
{
messagewidthrangeset();
svgupdate();
}
function messagewidthexactload()
{
const br = document.createElement("br");
messagewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagewidthexactupdate);
messagewidth.append(button);
}
}
addEventListener("load", messagewidthexactload);
function messagewidthexactupdate(e)
{
messagewidthnumber.value = canvas.width * Number(e.target.value);
messagewidthnumberupdate();
}
function messagewidthincrementload()
{
const br = document.createElement("br");
messagewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagewidthincrementupdate);
messagewidth.append(button);
}
}
addEventListener("load", messagewidthincrementload);
function messagewidthincrementupdate(e)
{
const v = Number(messagewidthnumber.value) + Number(e.target.value);
if((messagewidthnumber.min <= v) && (v <= messagewidthnumber.max))
{
messagewidthnumber.value = v;
messagewidthnumberupdate();
}
}
function messageheightload()
{
const div = document.createElement("div");
div.id = "messageheight";
div.innerHTML = "height";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageheightload);
function messageheightnumberload()
{
const br = document.createElement("br");
messageheight.append(br);
const input = document.createElement("input");
input.id = "messageheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = 300;
input.addEventListener("input", messageheightnumberupdate);
messageheight.append(input);
//messageheightnumberset();
}
addEventListener("load", messageheightnumberload);
function messageheightnumberset()
{
const v = Number(messageheightnumber.value);
messageheightrange.value = v;
text.messageheight = v;
}
function messageheightnumberupdate()
{
messageheightnumberset();
svgupdate();
}
function messageheightrangeload()
{
const input = document.createElement("input");
input.id = "messageheightrange";
input.max = messageheightnumber.max;
input.min = messageheightnumber.min;
input.type = "range";
input.value = messageheightnumber.value;
input.addEventListener("input", messageheightrangeupdate);
messageheight.append(input);
messageheightrangeset();
}
addEventListener("load", messageheightrangeload);
function messageheightrangeset()
{
const v = Number(messageheightrange.value);
messageheightnumber.value = v;
text.messageheight = v;
}
function messageheightrangeupdate()
{
messageheightrangeset();
svgupdate();
}
function messageheightexactload()
{
const br = document.createElement("br");
messageheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageheightexactupdate);
messageheight.append(button);
}
}
addEventListener("load", messageheightexactload);
function messageheightexactupdate(e)
{
messageheightnumber.value = canvas.height * Number(e.target.value);
messageheightnumberupdate();
}
function messageheightincrementload()
{
const br = document.createElement("br");
messageheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageheightincrementupdate);
messageheight.append(button);
}
}
addEventListener("load", messageheightincrementload);
function messageheightincrementupdate(e)
{
const v = Number(messageheightnumber.value) + Number(e.target.value);
if((messageheightnumber.min <= v) && (v <= messageheightnumber.max))
{
messageheightnumber.value = v;
messageheightnumberupdate();
}
}
function messagexload()
{
const div = document.createElement("div");
div.id = "messagex";
div.innerHTML = "x";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagexload);
function messagexnumberload()
{
const br = document.createElement("br");
messagex.append(br);
const input = document.createElement("input");
input.id = "messagexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 50;
input.addEventListener("input", messagexnumberupdate);
messagex.append(input);
//messagexnumberset();
}
addEventListener("load", messagexnumberload);
function messagexnumberset()
{
const v = Number(messagexnumber.value);
messagexrange.value = v;
text.messagex = v;
}
function messagexnumberupdate()
{
messagexnumberset();
svgupdate();
}
function messagexrangeload()
{
const input = document.createElement("input");
input.id = "messagexrange";
input.max = messagexnumber.max;
input.min = messagexnumber.min;
input.type = "range";
input.value = messagexnumber.value;
input.addEventListener("input", messagexrangeupdate);
messagex.append(input);
messagexrangeset();
}
addEventListener("load", messagexrangeload);
function messagexrangeset()
{
const v = Number(messagexrange.value);
messagexnumber.value = v;
text.messagex = v;
}
function messagexrangeupdate()
{
messagexrangeset();
svgupdate();
}
function messagexexactload()
{
const br = document.createElement("br");
messagex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagexexactupdate);
messagex.append(button);
}
}
addEventListener("load", messagexexactload);
function messagexexactupdate(e)
{
//messagexnumber.value = (canvas.width - text.messagewidth - text.messagepaddingleft - text.messagepaddingright) * Number(e.target.value);
messagexnumber.value = (canvas.width - text.messagewidth) * Number(e.target.value);
messagexnumberupdate();
}
function messagexincrementload()
{
const br = document.createElement("br");
messagex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagexincrementupdate);
messagex.append(button);
}
}
addEventListener("load", messagexincrementload);
function messagexincrementupdate(e)
{
const v = Number(messagexnumber.value) + Number(e.target.value);
if((messagexnumber.min <= v) && (v <= messagexnumber.max))
{
messagexnumber.value = v;
messagexnumberupdate();
}
}
function messageyload()
{
const div = document.createElement("div");
div.id = "messagey";
div.innerHTML = "y";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageyload);
function messageynumberload()
{
const br = document.createElement("br");
messagey.append(br);
const input = document.createElement("input");
input.id = "messageynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 50;
input.addEventListener("input", messageynumberupdate);
messagey.append(input);
//messageynumberset();
}
addEventListener("load", messageynumberload);
function messageynumberset()
{
const v = Number(messageynumber.value);
messageyrange.value = v;
text.messagey = v;
}
function messageynumberupdate()
{
messageynumberset();
svgupdate();
}
function messageyrangeload()
{
const input = document.createElement("input");
input.id = "messageyrange";
input.max = messageynumber.max;
input.min = messageynumber.min;
input.type = "range";
input.value = messageynumber.value;
input.addEventListener("input", messageyrangeupdate);
messagey.append(input);
messageyrangeset();
}
addEventListener("load", messageyrangeload);
function messageyrangeset()
{
const v = Number(messageyrange.value);
messageynumber.value = v;
text.messagey = v;
}
function messageyrangeupdate()
{
messageyrangeset();
svgupdate();
}
function messageyexactload()
{
const br = document.createElement("br");
messagey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageyexactupdate);
messagey.append(button);
}
}
addEventListener("load", messageyexactload);
function messageyexactupdate(e)
{
//messageynumber.value = (canvas.height - text.messageheight - text.messagepaddingtop - text.messagepaddingbottom) * Number(e.target.value);
messageynumber.value = (canvas.height - text.messageheight) * Number(e.target.value);
messageynumberupdate();
}
function messageyincrementload()
{
const br = document.createElement("br");
messagey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageyincrementupdate);
messagey.append(button);
}
}
addEventListener("load", messageyincrementload);
function messageyincrementupdate(e)
{
const v = Number(messageynumber.value) + Number(e.target.value);
if((messageynumber.min <= v) && (v <= messageynumber.max))
{
messageynumber.value = v;
messageynumberupdate();
}
}
function messagebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "messagebackgroundcolor";
div.innerHTML = "background-color";
tabcontentmessage.append(div);
}
addEventListener("load", messagebackgroundcolorload);
function messagebackgroundcolorcolorload()
{
const br = document.createElement("br");
messagebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "messagebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", messagebackgroundcolorcolorupdate);
messagebackgroundcolor.append(input);
//messagebackgroundcolorcolorset();
}
addEventListener("load", messagebackgroundcolorcolorload);
function messagebackgroundcolorcolorset()
{
const c = messagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagebackgroundalphanumber.value;
text.messagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebackgroundcolorcolorupdate()
{
messagebackgroundcolorcolorset();
svgupdate();
}
function messagebackgroundcolorexactload()
{
const br = document.createElement("br");
messagebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebackgroundcolorexactupdate);
messagebackgroundcolor.append(button);
}
}
addEventListener("load", messagebackgroundcolorexactload);
function messagebackgroundcolorexactupdate(e)
{
messagebackgroundcolorcolor.value = e.target.value;
messagebackgroundcolorcolorupdate();
}
function messagebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "messagebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagebackgroundalphaload);
function messagebackgroundalphanumberload()
{
const br = document.createElement("br");
messagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "messagebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0.5;
input.addEventListener("input", messagebackgroundalphanumberupdate);
messagebackgroundalpha.append(input);
//messagebackgroundalphanumberset();
}
addEventListener("load", messagebackgroundalphanumberload);
function messagebackgroundalphanumberset()
{
const c = messagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagebackgroundalphanumber.value;
messagebackgroundalpharange.value = a;
text.messagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebackgroundalphanumberupdate()
{
messagebackgroundalphanumberset();
svgupdate();
}
function messagebackgroundalpharangeload()
{
const input = document.createElement("input");
input.id = "messagebackgroundalpharange";
input.max = messagebackgroundalphanumber.max;
input.min = messagebackgroundalphanumber.min;
input.step = messagebackgroundalphanumber.step;
input.type = "range";
input.value = messagebackgroundalphanumber.value;
input.addEventListener("input", messagebackgroundalpharangeupdate);
messagebackgroundalpha.append(input);
messagebackgroundalpharangeset();
}
addEventListener("load", messagebackgroundalpharangeload);
function messagebackgroundalpharangeset()
{
const c = messagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagebackgroundalpharange.value;
messagebackgroundalphanumber.value = a;
text.messagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebackgroundalpharangeupdate()
{
messagebackgroundalpharangeset();
svgupdate();
}
function messagebackgroundalphaexactload()
{
const br = document.createElement("br");
messagebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebackgroundalphaexactupdate);
messagebackgroundalpha.append(button);
}
}
addEventListener("load", messagebackgroundalphaexactload);
function messagebackgroundalphaexactupdate(e)
{
messagebackgroundalphanumber.value = Number(e.target.value);
messagebackgroundalphanumberupdate();
}
function messagebackgroundalphaincrementload()
{
const br = document.createElement("br");
messagebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebackgroundalphaincrementupdate);
messagebackgroundalpha.append(button);
}
}
addEventListener("load", messagebackgroundalphaincrementload);
function messagebackgroundalphaincrementupdate(e)
{
let v = Number(messagebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((messagebackgroundalphanumber.min <= v) && (v <= messagebackgroundalphanumber.max))
{
messagebackgroundalphanumber.value = v;
messagebackgroundalphanumberupdate();
}
}
function messagebordercolorload()
{
const div = document.createElement("div");
div.id = "messagebordercolor";
div.innerHTML = "border-color";
tabcontentmessage.append(div);
}
addEventListener("load", messagebordercolorload);
function messagebordercolorcolorload()
{
const br = document.createElement("br");
messagebordercolor.append(br);
const input = document.createElement("input");
input.id = "messagebordercolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", messagebordercolorcolorupdate);
messagebordercolor.append(input);
//messagebordercolorcolorset();
}
addEventListener("load", messagebordercolorcolorload);
function messagebordercolorcolorset()
{
const c = messagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messageborderalphanumber.value;
text.messagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagebordercolorcolorupdate()
{
messagebordercolorcolorset();
svgupdate();
}
function messagebordercolorexactload()
{
const br = document.createElement("br");
messagebordercolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagebordercolorexactupdate);
messagebordercolor.append(button);
}
}
addEventListener("load", messagebordercolorexactload);
function messagebordercolorexactupdate(e)
{
messagebordercolorcolor.value = e.target.value;
messagebordercolorcolorupdate();
}
function messageborderalphaload()
{
const div = document.createElement("div");
div.id = "messageborderalpha";
div.innerHTML = "border-alpha";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageborderalphaload);
function messageborderalphanumberload()
{
const br = document.createElement("br");
messageborderalpha.append(br);
const input = document.createElement("input");
input.id = "messageborderalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", messageborderalphanumberupdate);
messageborderalpha.append(input);
//messageborderalphanumberset();
}
addEventListener("load", messageborderalphanumberload);
function messageborderalphanumberset()
{
const c = messagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messageborderalphanumber.value;
messageborderalpharange.value = a;
text.messagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messageborderalphanumberupdate()
{
messageborderalphanumberset();
svgupdate();
}
function messageborderalpharangeload()
{
const input = document.createElement("input");
input.id = "messageborderalpharange";
input.max = messageborderalphanumber.max;
input.min = messageborderalphanumber.min;
input.step = messageborderalphanumber.step;
input.type = "range";
input.value = messageborderalphanumber.value;
input.addEventListener("input", messageborderalpharangeupdate);
messageborderalpha.append(input);
messageborderalpharangeset();
}
addEventListener("load", messageborderalpharangeload);
function messageborderalpharangeset()
{
const c = messagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messageborderalpharange.value;
messageborderalphanumber.value = a;
text.messagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messageborderalpharangeupdate()
{
messageborderalpharangeset();
svgupdate();
}
function messageborderalphaexactload()
{
const br = document.createElement("br");
messageborderalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderalphaexactupdate);
messageborderalpha.append(button);
}
}
addEventListener("load", messageborderalphaexactload);
function messageborderalphaexactupdate(e)
{
messageborderalphanumber.value = Number(e.target.value);
messageborderalphanumberupdate();
}
function messageborderalphaincrementload()
{
const br = document.createElement("br");
messageborderalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderalphaincrementupdate);
messageborderalpha.append(button);
}
}
addEventListener("load", messageborderalphaincrementload);
function messageborderalphaincrementupdate(e)
{
let v = Number(messageborderalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((messageborderalphanumber.min <= v) && (v <= messageborderalphanumber.max))
{
messageborderalphanumber.value = v;
messageborderalphanumberupdate();
}
}
function messageborderradiusload()
{
const div = document.createElement("div");
div.id = "messageborderradius";
div.innerHTML = "border-radius";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageborderradiusload);
function messageborderradiusnumberload()
{
const br = document.createElement("br");
messageborderradius.append(br);
const input = document.createElement("input");
input.id = "messageborderradiusnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 50;
input.addEventListener("input", messageborderradiusnumberupdate);
messageborderradius.append(input);
//messageborderradiusnumberset();
}
addEventListener("load", messageborderradiusnumberload);
function messageborderradiusnumberset()
{
const v = Number(messageborderradiusnumber.value);
messageborderradiusrange.value = v;
text.messageborderradius = v;
}
function messageborderradiusnumberupdate()
{
messageborderradiusnumberset();
svgupdate();
}
function messageborderradiusrangeload()
{
const input = document.createElement("input");
input.id = "messageborderradiusrange";
input.max = messageborderradiusnumber.max;
input.min = messageborderradiusnumber.min;
input.type = "range";
input.value = messageborderradiusnumber.value;
input.addEventListener("input", messageborderradiusrangeupdate);
messageborderradius.append(input);
messageborderradiusrangeset();
}
addEventListener("load", messageborderradiusrangeload);
function messageborderradiusrangeset()
{
const v = Number(messageborderradiusrange.value);
messageborderradiusnumber.value = v;
text.messageborderradius = v;
}
function messageborderradiusrangeupdate()
{
messageborderradiusrangeset();
svgupdate();
}
function messageborderradiusexactload()
{
const br = document.createElement("br");
messageborderradius.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderradiusexactupdate);
messageborderradius.append(button);
}
}
addEventListener("load", messageborderradiusexactload);
function messageborderradiusexactupdate(e)
{
messageborderradiusnumber.value = Number(e.target.value);
messageborderradiusnumberupdate();
}
function messageborderradiusincrementload()
{
const br = document.createElement("br");
messageborderradius.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderradiusincrementupdate);
messageborderradius.append(button);
}
}
addEventListener("load", messageborderradiusincrementload);
function messageborderradiusincrementupdate(e)
{
const v = Number(messageborderradiusnumber.value) + Number(e.target.value);
if((messageborderradiusnumber.min <= v) && (v <= messageborderradiusnumber.max))
{
messageborderradiusnumber.value = v;
messageborderradiusnumberupdate();
}
}
function messageborderstyleload()
{
const div = document.createElement("div");
div.id = "messageborderstyle";
div.innerHTML = "border-style";
tabcontentmessage.append(div);
}
addEventListener("load", messageborderstyleload);
function messageborderstyleselectload()
{
const br = document.createElement("br");
messageborderstyle.append(br);
const select = document.createElement("select");
select.id = "messageborderstyleselect";
select.addEventListener("input", messageborderstyleselectupdate);
messageborderstyle.append(select);
for(const value of borderstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
//select.value = borderstylearray[8];
messageborderstyleselectset();
}
addEventListener("load", messageborderstyleselectload);
function messageborderstyleselectset()
{
text.messageborderstyle = messageborderstyleselect.value;
}
function messageborderstyleselectupdate()
{
messageborderstyleselectset();
svgupdate();
}
function messageborderwidthload()
{
const div = document.createElement("div");
div.id = "messageborderwidth";
div.innerHTML = "border-width";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messageborderwidthload);
function messageborderwidthnumberload()
{
const br = document.createElement("br");
messageborderwidth.append(br);
const input = document.createElement("input");
input.id = "messageborderwidthnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 25;
input.addEventListener("input", messageborderwidthnumberupdate);
messageborderwidth.append(input);
//messageborderwidthnumberset();
}
addEventListener("load", messageborderwidthnumberload);
function messageborderwidthnumberset()
{
const v = Number(messageborderwidthnumber.value);
messageborderwidthrange.value = v;
text.messageborderwidth = v;
}
function messageborderwidthnumberupdate()
{
messageborderwidthnumberset();
svgupdate();
}
function messageborderwidthrangeload()
{
const input = document.createElement("input");
input.id = "messageborderwidthrange";
input.max = messageborderwidthnumber.max;
input.min = messageborderwidthnumber.min;
input.type = "range";
input.value = messageborderwidthnumber.value;
input.addEventListener("input", messageborderwidthrangeupdate);
messageborderwidth.append(input);
messageborderwidthrangeset();
}
addEventListener("load", messageborderwidthrangeload);
function messageborderwidthrangeset()
{
const v = Number(messageborderwidthrange.value);
messageborderwidthnumber.value = v;
text.messageborderwidth = v;
}
function messageborderwidthrangeupdate()
{
messageborderwidthrangeset();
svgupdate();
}
function messageborderwidthexactload()
{
const br = document.createElement("br");
messageborderwidth.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderwidthexactupdate);
messageborderwidth.append(button);
}
}
addEventListener("load", messageborderwidthexactload);
function messageborderwidthexactupdate(e)
{
messageborderwidthnumber.value = Number(e.target.value);
messageborderwidthnumberupdate();
}
function messageborderwidthincrementload()
{
const br = document.createElement("br");
messageborderwidth.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messageborderwidthincrementupdate);
messageborderwidth.append(button);
}
}
addEventListener("load", messageborderwidthincrementload);
function messageborderwidthincrementupdate(e)
{
const v = Number(messageborderwidthnumber.value) + Number(e.target.value);
if((messageborderwidthnumber.min <= v) && (v <= messageborderwidthnumber.max))
{
messageborderwidthnumber.value = v;
messageborderwidthnumberupdate();
}
}
function messagehorizontalload()
{
const div = document.createElement("div");
div.id = "messagehorizontal";
div.innerHTML = "horizontal";
tabcontentmessage.append(div);
}
addEventListener("load", messagehorizontalload);
function messagehorizontalselectload()
{
const br = document.createElement("br");
messagehorizontal.append(br);
const select = document.createElement("select");
select.id = "messagehorizontalselect";
select.addEventListener("input", messagehorizontalselectupdate);
messagehorizontal.append(select);
for(const value of horizontalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = horizontalarray[1];
messagehorizontalselectset();
}
addEventListener("load", messagehorizontalselectload);
function messagehorizontalselectset()
{
text.messagehorizontal = messagehorizontalselect.value;
}
function messagehorizontalselectupdate()
{
messagehorizontalselectset();
svgupdate();
}
function messageverticalload()
{
const div = document.createElement("div");
div.id = "messagevertical";
div.innerHTML = "vertical";
tabcontentmessage.append(div);
}
addEventListener("load", messageverticalload);
function messageverticalselectload()
{
const br = document.createElement("br");
messagevertical.append(br);
const select = document.createElement("select");
select.id = "messageverticalselect";
select.addEventListener("input", messageverticalselectupdate);
messagevertical.append(select);
for(const value of verticalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = verticalarray[1];
messageverticalselectset();
}
addEventListener("load", messageverticalselectload);
function messageverticalselectset()
{
text.messagevertical = messageverticalselect.value;
}
function messageverticalselectupdate()
{
messageverticalselectset();
svgupdate();
}
function messagewritingmodeload()
{
const div = document.createElement("div");
div.id = "messagewritingmode";
div.innerHTML = "writing-mode";
tabcontentmessage.append(div);
}
addEventListener("load", messagewritingmodeload);
function messagewritingmodeselectload()
{
const br = document.createElement("br");
messagewritingmode.append(br);
const select = document.createElement("select");
select.id = "messagewritingmodeselect";
select.addEventListener("input", messagewritingmodeselectupdate);
messagewritingmode.append(select);
for(const value of writingmodearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagewritingmodeselectset();
}
addEventListener("load", messagewritingmodeselectload);
function messagewritingmodeselectset()
{
text.messagewritingmode = messagewritingmodeselect.value;
}
function messagewritingmodeselectupdate()
{
messagewritingmodeselectset();
svgupdate();
}
function messagefontfamilyload()
{
const div = document.createElement("div");
div.id = "messagefontfamily";
div.innerHTML = "font-family";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontfamilyload);
function messagefontfamilyselectload()
{
const br = document.createElement("br");
messagefontfamily.append(br);
const select = document.createElement("select");
select.id = "messagefontfamilyselect";
select.addEventListener("input", messagefontfamilyselectupdate);
messagefontfamily.append(select);
for(const value of fontfamilyarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontfamilyselectset();
}
addEventListener("load", messagefontfamilyselectload);
function messagefontfamilyselectset()
{
text.messagefontfamily = messagefontfamilyselect.value;
}
function messagefontfamilyselectupdate()
{
messagefontfamilyselectset();
svgupdate();
}
function messagefontsizeload()
{
const div = document.createElement("div");
div.id = "messagefontsize";
div.innerHTML = "font-size";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontsizeload);
function messagefontsizenumberload()
{
const br = document.createElement("br");
messagefontsize.append(br);
const input = document.createElement("input");
input.id = "messagefontsizenumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 140;
input.addEventListener("input", messagefontsizenumberupdate);
messagefontsize.append(input);
//messagefontsizenumberset();
}
addEventListener("load", messagefontsizenumberload);
function messagefontsizenumberset()
{
const v = Number(messagefontsizenumber.value);
messagefontsizerange.value = v;
text.messagefontsize = v;
}
function messagefontsizenumberupdate()
{
messagefontsizenumberset();
svgupdate();
}
function messagefontsizerangeload()
{
const input = document.createElement("input");
input.id = "messagefontsizerange";
input.max = messagefontsizenumber.max;
input.min = messagefontsizenumber.min;
input.type = "range";
input.value = messagefontsizenumber.value;
input.addEventListener("input", messagefontsizerangeupdate);
messagefontsize.append(input);
messagefontsizerangeset();
}
addEventListener("load", messagefontsizerangeload);
function messagefontsizerangeset()
{
const v = Number(messagefontsizerange.value);
messagefontsizenumber.value = v;
text.messagefontsize = v;
}
function messagefontsizerangeupdate()
{
messagefontsizerangeset();
svgupdate();
}
function messagefontsizeexactload()
{
const br = document.createElement("br");
messagefontsize.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefontsizeexactupdate);
messagefontsize.append(button);
}
}
addEventListener("load", messagefontsizeexactload);
function messagefontsizeexactupdate(e)
{
messagefontsizenumber.value = Number(e.target.value);
messagefontsizenumberupdate();
}
function messagefontsizeincrementload()
{
const br = document.createElement("br");
messagefontsize.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefontsizeincrementupdate);
messagefontsize.append(button);
}
}
addEventListener("load", messagefontsizeincrementload);
function messagefontsizeincrementupdate(e)
{
const v = Number(messagefontsizenumber.value) + Number(e.target.value);
if((messagefontsizenumber.min <= v) && (v <= messagefontsizenumber.max))
{
messagefontsizenumber.value = v;
messagefontsizenumberupdate();
}
}
/*
function messagefontsizefitload()
{
const button = document.createElement("button");
button.innerHTML = "fit";
button.addEventListener("click", messagefontsizefitupdate);
messagefontsize.append(button);
}
addEventListener("load", messagefontsizefitload);
function messagefontsizefitupdate()
{
const t = document.createElement("div");
messagefontsize.append(t);
t.innerHTML = text.bookname;
t.style.fontSize = `${messagefontsizenumber.value}px`;
const h1 = text.messagewidth;
const h2 = text.messageheight;
const h3 = t.offsetWidth;
const h4 = t.offsetHeight;
const h5 = messagefontsizenumber.value;
//const h4 = t.offsetParent;//t.style.fontSize;
//const h5 = t.clientHeight;//text.style.height;
//const h6 = text.height;
//const h7 = text.getBoundingClientRect().height;
//const h8 = text.style.lineHeight;
//const h9 = canvas.getBoundingClientRect().height;
console.log(h1, h2, h3, h4, h5);
//t.hidden = true;
if(h2 < h4)
{
messagefontsizenumber.value -= 1;
messagefit();
}
messagefontsizenumberupdate();
}
//*/
function messagefontstyleload()
{
const div = document.createElement("div");
div.id = "messagefontstyle";
div.innerHTML = "font-style";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontstyleload);
function messagefontstyleselectload()
{
const br = document.createElement("br");
messagefontstyle.append(br);
const select = document.createElement("select");
select.id = "messagefontstyleselect";
select.addEventListener("input", messagefontstyleselectupdate);
messagefontstyle.append(select);
for(const value of fontstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontstyleselectset();
}
addEventListener("load", messagefontstyleselectload);
function messagefontstyleselectset()
{
text.messagefontstyle = messagefontstyleselect.value;
}
function messagefontstyleselectupdate()
{
messagefontstyleselectset();
svgupdate();
}
function messagefontvariantload()
{
const div = document.createElement("div");
div.id = "messagefontvariant";
div.innerHTML = "font-variant";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontvariantload);
function messagefontvariantselectload()
{
const br = document.createElement("br");
messagefontvariant.append(br);
const select = document.createElement("select");
select.id = "messagefontvariantselect";
select.addEventListener("input", messagefontvariantselectupdate);
messagefontvariant.append(select);
for(const value of fontvariantarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontvariantselectset();
}
addEventListener("load", messagefontvariantselectload);
function messagefontvariantselectset()
{
text.messagefontvariant = messagefontvariantselect.value;
}
function messagefontvariantselectupdate()
{
messagefontvariantselectset();
svgupdate();
}
function messagefontweightload()
{
const div = document.createElement("div");
div.id = "messagefontweight";
div.innerHTML = "font-weight";
tabcontentmessage.append(div);
}
addEventListener("load", messagefontweightload);
function messagefontweightselectload()
{
const br = document.createElement("br");
messagefontweight.append(br);
const select = document.createElement("select");
select.id = "messagefontweightselect";
select.addEventListener("input", messagefontweightselectupdate);
messagefontweight.append(select);
for(const value of fontweightarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
messagefontweightselectset();
}
addEventListener("load", messagefontweightselectload);
function messagefontweightselectset()
{
text.messagefontweight = messagefontweightselect.value;
}
function messagefontweightselectupdate()
{
messagefontweightselectset();
svgupdate();
}
function messagecolorload()
{
const div = document.createElement("div");
div.id = "messagecolor";
div.innerHTML = "color";
tabcontentmessage.append(div);
}
addEventListener("load", messagecolorload);
function messagecolorcolorload()
{
const br = document.createElement("br");
messagecolor.append(br);
const input = document.createElement("input");
input.id = "messagecolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", messagecolorcolorupdate);
messagecolor.append(input);
//messagecolorcolorset();
}
addEventListener("load", messagecolorcolorload);
function messagecolorcolorset()
{
const c = messagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagealphanumber.value;
text.messagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagecolorcolorupdate()
{
messagecolorcolorset();
svgupdate();
}
function messagecolorexactload()
{
const br = document.createElement("br");
messagecolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagecolorexactupdate);
messagecolor.append(button);
}
}
addEventListener("load", messagecolorexactload);
function messagecolorexactupdate(e)
{
messagecolorcolor.value = e.target.value;
messagecolorcolorupdate();
}
function messagealphaload()
{
const div = document.createElement("div");
div.id = "messagealpha";
div.innerHTML = "alpha";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagealphaload);
function messagealphanumberload()
{
const br = document.createElement("br");
messagealpha.append(br);
const input = document.createElement("input");
input.id = "messagealphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", messagealphanumberupdate);
messagealpha.append(input);
//messagealphanumberset();
}
addEventListener("load", messagealphanumberload);
function messagealphanumberset()
{
const c = messagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagealphanumber.value;
messagealpharange.value = a;
text.messagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagealphanumberupdate()
{
messagealphanumberset();
svgupdate();
}
function messagealpharangeload()
{
const input = document.createElement("input");
input.id = "messagealpharange";
input.max = messagealphanumber.max;
input.min = messagealphanumber.min;
input.step = messagealphanumber.step;
input.type = "range";
input.value = messagealphanumber.value;
input.addEventListener("input", messagealpharangeupdate);
messagealpha.append(input);
messagealpharangeset();
}
addEventListener("load", messagealpharangeload);
function messagealpharangeset()
{
const c = messagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = messagealpharange.value;
messagealphanumber.value = a;
text.messagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function messagealpharangeupdate()
{
messagealpharangeset();
svgupdate();
}
function messagealphaexactload()
{
const br = document.createElement("br");
messagealpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagealphaexactupdate);
messagealpha.append(button);
}
}
addEventListener("load", messagealphaexactload);
function messagealphaexactupdate(e)
{
messagealphanumber.value = Number(e.target.value);
messagealphanumberupdate();
}
function messagealphaincrementload()
{
const br = document.createElement("br");
messagealpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagealphaincrementupdate);
messagealpha.append(button);
}
}
addEventListener("load", messagealphaincrementload);
function messagealphaincrementupdate(e)
{
let v = Number(messagealphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((messagealphanumber.min <= v) && (v <= messagealphanumber.max))
{
messagealphanumber.value = v;
messagealphanumberupdate();
}
}
/*leftoff
function messagefilterblurload()
{
const div = document.createElement("div");
div.id = "messagefilterblur";
div.innerHTML = "filter-blur";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterblurload);
function messagefilterblurnumberload()
{
const br = document.createElement("br");
messagefilterblur.append(br);
const input = document.createElement("input");
input.id = "messagefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefilterblurnumberupdate);
messagefilterblur.append(input);
//messagefilterblurnumberset();
}
addEventListener("load", messagefilterblurnumberload);
function messagefilterblurnumberset()
{
const v = messagefilterblurnumber.value;
messagefilterblurrange.value = v;
text.messagebackdropfilterblur = v;
}
function messagefilterblurnumberupdate()
{
messagefilterblurnumberset();
svgupdate();
}
function messagefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "messagefilterblurrange";
input.max = messagefilterblurnumber.max;
input.min = messagefilterblurnumber.min;
input.step = messagefilterblurnumber.step;
input.type = "range";
input.value = messagefilterblurnumber.value;
input.addEventListener("input", messagefilterblurrangeupdate);
messagefilterblur.append(input);
messagefilterblurrangeset();
}
addEventListener("load", messagefilterblurrangeload);
function messagefilterblurrangeset()
{
const v = messagefilterblurrange.value;
messagefilterblurnumber.value = v;
text.messagebackdropfilterblur = v;
}
function messagefilterblurrangeupdate()
{
messagefilterblurrangeset();
svgupdate();
}
function messagefilterblurexactload()
{
const br = document.createElement("br");
messagefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterblurexactupdate);
messagefilterblur.append(button);
}
}
addEventListener("load", messagefilterblurexactload);
function messagefilterblurexactupdate(e)
{
messagefilterblurnumber.value = Number(e.target.value);
messagefilterblurnumberupdate();
}
function messagefilterblurincrementload()
{
const br = document.createElement("br");
messagefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterblurincrementupdate);
messagefilterblur.append(button);
}
}
addEventListener("load", messagefilterblurincrementload);
function messagefilterblurincrementupdate(e)
{
const v = Number(messagefilterblurnumber.value) + Number(e.target.value);
if((messagefilterblurnumber.min <= v) && (v <= messagefilterblurnumber.max))
{
messagefilterblurnumber.value = v;
messagefilterblurnumberupdate();
}
}
function messagefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "messagefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterbrightnessload);
function messagefilterbrightnessnumberload()
{
const br = document.createElement("br");
messagefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "messagefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", messagefilterbrightnessnumberupdate);
messagefilterbrightness.append(input);
//messagefilterbrightnessnumberset();
}
addEventListener("load", messagefilterbrightnessnumberload);
function messagefilterbrightnessnumberset()
{
const v = messagefilterbrightnessnumber.value;
messagefilterbrightnessrange.value = v;
text.messagebackdropfilterbrightness = v;
}
function messagefilterbrightnessnumberupdate()
{
messagefilterbrightnessnumberset();
svgupdate();
}
function messagefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "messagefilterbrightnessrange";
input.max = messagefilterbrightnessnumber.max;
input.min = messagefilterbrightnessnumber.min;
input.step = messagefilterbrightnessnumber.step;
input.type = "range";
input.value = messagefilterbrightnessnumber.value;
input.addEventListener("input", messagefilterbrightnessrangeupdate);
messagefilterbrightness.append(input);
messagefilterbrightnessrangeset();
}
addEventListener("load", messagefilterbrightnessrangeload);
function messagefilterbrightnessrangeset()
{
const v = messagefilterbrightnessrange.value;
messagefilterbrightnessnumber.value = v;
text.messagebackdropfilterbrightness = v;
}
function messagefilterbrightnessrangeupdate()
{
messagefilterbrightnessrangeset();
svgupdate();
}
function messagefilterbrightnessexactload()
{
const br = document.createElement("br");
messagefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterbrightnessexactupdate);
messagefilterbrightness.append(button);
}
}
addEventListener("load", messagefilterbrightnessexactload);
function messagefilterbrightnessexactupdate(e)
{
messagefilterbrightnessnumber.value = Number(e.target.value);
messagefilterbrightnessnumberupdate();
}
function messagefilterbrightnessincrementload()
{
const br = document.createElement("br");
messagefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterbrightnessincrementupdate);
messagefilterbrightness.append(button);
}
}
addEventListener("load", messagefilterbrightnessincrementload);
function messagefilterbrightnessincrementupdate(e)
{
const v = Number(messagefilterbrightnessnumber.value) + Number(e.target.value);
if((messagefilterbrightnessnumber.min <= v) && (v <= messagefilterbrightnessnumber.max))
{
messagefilterbrightnessnumber.value = v;
messagefilterbrightnessnumberupdate();
}
}
function messagefiltercontrastload()
{
const div = document.createElement("div");
div.id = "messagefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltercontrastload);
function messagefiltercontrastnumberload()
{
const br = document.createElement("br");
messagefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "messagefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", messagefiltercontrastnumberupdate);
messagefiltercontrast.append(input);
//messagefiltercontrastnumberset();
}
addEventListener("load", messagefiltercontrastnumberload);
function messagefiltercontrastnumberset()
{
const v = messagefiltercontrastnumber.value;
messagefiltercontrastrange.value = v;
text.messagebackdropfiltercontrast = v;
}
function messagefiltercontrastnumberupdate()
{
messagefiltercontrastnumberset();
svgupdate();
}
function messagefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "messagefiltercontrastrange";
input.max = messagefiltercontrastnumber.max;
input.min = messagefiltercontrastnumber.min;
input.step = messagefiltercontrastnumber.step;
input.type = "range";
input.value = messagefiltercontrastnumber.value;
input.addEventListener("input", messagefiltercontrastrangeupdate);
messagefiltercontrast.append(input);
messagefiltercontrastrangeset();
}
addEventListener("load", messagefiltercontrastrangeload);
function messagefiltercontrastrangeset()
{
const v = messagefiltercontrastrange.value;
messagefiltercontrastnumber.value = v;
text.messagebackdropfiltercontrast = v;
}
function messagefiltercontrastrangeupdate()
{
messagefiltercontrastrangeset();
svgupdate();
}
function messagefiltercontrastexactload()
{
const br = document.createElement("br");
messagefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltercontrastexactupdate);
messagefiltercontrast.append(button);
}
}
addEventListener("load", messagefiltercontrastexactload);
function messagefiltercontrastexactupdate(e)
{
messagefiltercontrastnumber.value = Number(e.target.value);
messagefiltercontrastnumberupdate();
}
function messagefiltercontrastincrementload()
{
const br = document.createElement("br");
messagefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltercontrastincrementupdate);
messagefiltercontrast.append(button);
}
}
addEventListener("load", messagefiltercontrastincrementload);
function messagefiltercontrastincrementupdate(e)
{
const v = Number(messagefiltercontrastnumber.value) + Number(e.target.value);
if((messagefiltercontrastnumber.min <= v) && (v <= messagefiltercontrastnumber.max))
{
messagefiltercontrastnumber.value = v;
messagefiltercontrastnumberupdate();
}
}
function messagefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "messagefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltergrayscaleload);
function messagefiltergrayscalenumberload()
{
const br = document.createElement("br");
messagefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "messagefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefiltergrayscalenumberupdate);
messagefiltergrayscale.append(input);
//messagefiltergrayscalenumberset();
}
addEventListener("load", messagefiltergrayscalenumberload);
function messagefiltergrayscalenumberset()
{
const v = messagefiltergrayscalenumber.value;
messagefiltergrayscalerange.value = v;
text.messagebackdropfiltergrayscale = v;
}
function messagefiltergrayscalenumberupdate()
{
messagefiltergrayscalenumberset();
svgupdate();
}
function messagefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "messagefiltergrayscalerange";
input.max = messagefiltergrayscalenumber.max;
input.min = messagefiltergrayscalenumber.min;
input.step = messagefiltergrayscalenumber.step;
input.type = "range";
input.value = messagefiltergrayscalenumber.value;
input.addEventListener("input", messagefiltergrayscalerangeupdate);
messagefiltergrayscale.append(input);
messagefiltergrayscalerangeset();
}
addEventListener("load", messagefiltergrayscalerangeload);
function messagefiltergrayscalerangeset()
{
const v = messagefiltergrayscalerange.value;
messagefiltergrayscalenumber.value = v;
text.messagebackdropfiltergrayscale = v;
}
function messagefiltergrayscalerangeupdate()
{
messagefiltergrayscalerangeset();
svgupdate();
}
function messagefiltergrayscaleexactload()
{
const br = document.createElement("br");
messagefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltergrayscaleexactupdate);
messagefiltergrayscale.append(button);
}
}
addEventListener("load", messagefiltergrayscaleexactload);
function messagefiltergrayscaleexactupdate(e)
{
messagefiltergrayscalenumber.value = Number(e.target.value);
messagefiltergrayscalenumberupdate();
}
function messagefiltergrayscaleincrementload()
{
const br = document.createElement("br");
messagefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltergrayscaleincrementupdate);
messagefiltergrayscale.append(button);
}
}
addEventListener("load", messagefiltergrayscaleincrementload);
function messagefiltergrayscaleincrementupdate(e)
{
const v = Number(messagefiltergrayscalenumber.value) + Number(e.target.value);
if((messagefiltergrayscalenumber.min <= v) && (v <= messagefiltergrayscalenumber.max))
{
messagefiltergrayscalenumber.value = v;
messagefiltergrayscalenumberupdate();
}
}
function messagefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "messagefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterhuerotateload);
function messagefilterhuerotatenumberload()
{
const br = document.createElement("br");
messagefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "messagefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefilterhuerotatenumberupdate);
messagefilterhuerotate.append(input);
//messagefilterhuerotatenumberset();
}
addEventListener("load", messagefilterhuerotatenumberload);
function messagefilterhuerotatenumberset()
{
const v = messagefilterhuerotatenumber.value;
messagefilterhuerotaterange.value = v;
text.messagebackdropfilterhuerotate = v;
}
function messagefilterhuerotatenumberupdate()
{
messagefilterhuerotatenumberset();
svgupdate();
}
function messagefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "messagefilterhuerotaterange";
input.max = messagefilterhuerotatenumber.max;
input.min = messagefilterhuerotatenumber.min;
input.step = messagefilterhuerotatenumber.step;
input.type = "range";
input.value = messagefilterhuerotatenumber.value;
input.addEventListener("input", messagefilterhuerotaterangeupdate);
messagefilterhuerotate.append(input);
messagefilterhuerotaterangeset();
}
addEventListener("load", messagefilterhuerotaterangeload);
function messagefilterhuerotaterangeset()
{
const v = messagefilterhuerotaterange.value;
messagefilterhuerotatenumber.value = v;
text.messagebackdropfilterhuerotate = v;
}
function messagefilterhuerotaterangeupdate()
{
messagefilterhuerotaterangeset();
svgupdate();
}
function messagefilterhuerotateexactload()
{
const br = document.createElement("br");
messagefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterhuerotateexactupdate);
messagefilterhuerotate.append(button);
}
}
addEventListener("load", messagefilterhuerotateexactload);
function messagefilterhuerotateexactupdate(e)
{
messagefilterhuerotatenumber.value = Number(e.target.value);
messagefilterhuerotatenumberupdate();
}
function messagefilterhuerotateincrementload()
{
const br = document.createElement("br");
messagefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterhuerotateincrementupdate);
messagefilterhuerotate.append(button);
}
}
addEventListener("load", messagefilterhuerotateincrementload);
function messagefilterhuerotateincrementupdate(e)
{
const v = Number(messagefilterhuerotatenumber.value) + Number(e.target.value);
if((messagefilterhuerotatenumber.min <= v) && (v <= messagefilterhuerotatenumber.max))
{
messagefilterhuerotatenumber.value = v;
messagefilterhuerotatenumberupdate();
}
}
function messagefilterinvertload()
{
const div = document.createElement("div");
div.id = "messagefilterinvert";
div.innerHTML = "filter-invert";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefilterinvertload);
function messagefilterinvertnumberload()
{
const br = document.createElement("br");
messagefilterinvert.append(br);
const input = document.createElement("input");
input.id = "messagefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefilterinvertnumberupdate);
messagefilterinvert.append(input);
//messagefilterinvertnumberset();
}
addEventListener("load", messagefilterinvertnumberload);
function messagefilterinvertnumberset()
{
const v = messagefilterinvertnumber.value;
messagefilterinvertrange.value = v;
text.messagebackdropfilterinvert = v;
}
function messagefilterinvertnumberupdate()
{
messagefilterinvertnumberset();
svgupdate();
}
function messagefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "messagefilterinvertrange";
input.max = messagefilterinvertnumber.max;
input.min = messagefilterinvertnumber.min;
input.step = messagefilterinvertnumber.step;
input.type = "range";
input.value = messagefilterinvertnumber.value;
input.addEventListener("input", messagefilterinvertrangeupdate);
messagefilterinvert.append(input);
messagefilterinvertrangeset();
}
addEventListener("load", messagefilterinvertrangeload);
function messagefilterinvertrangeset()
{
const v = messagefilterinvertrange.value;
messagefilterinvertnumber.value = v;
text.messagebackdropfilterinvert = v;
}
function messagefilterinvertrangeupdate()
{
messagefilterinvertrangeset();
svgupdate();
}
function messagefilterinvertexactload()
{
const br = document.createElement("br");
messagefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterinvertexactupdate);
messagefilterinvert.append(button);
}
}
addEventListener("load", messagefilterinvertexactload);
function messagefilterinvertexactupdate(e)
{
messagefilterinvertnumber.value = Number(e.target.value);
messagefilterinvertnumberupdate();
}
function messagefilterinvertincrementload()
{
const br = document.createElement("br");
messagefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefilterinvertincrementupdate);
messagefilterinvert.append(button);
}
}
addEventListener("load", messagefilterinvertincrementload);
function messagefilterinvertincrementupdate(e)
{
const v = Number(messagefilterinvertnumber.value) + Number(e.target.value);
if((messagefilterinvertnumber.min <= v) && (v <= messagefilterinvertnumber.max))
{
messagefilterinvertnumber.value = v;
messagefilterinvertnumberupdate();
}
}
function messagefiltersaturateload()
{
const div = document.createElement("div");
div.id = "messagefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltersaturateload);
function messagefiltersaturatenumberload()
{
const br = document.createElement("br");
messagefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "messagefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", messagefiltersaturatenumberupdate);
messagefiltersaturate.append(input);
//messagefiltersaturatenumberset();
}
addEventListener("load", messagefiltersaturatenumberload);
function messagefiltersaturatenumberset()
{
const v = messagefiltersaturatenumber.value;
messagefiltersaturaterange.value = v;
text.messagebackdropfiltersaturate = v;
}
function messagefiltersaturatenumberupdate()
{
messagefiltersaturatenumberset();
svgupdate();
}
function messagefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "messagefiltersaturaterange";
input.max = messagefiltersaturatenumber.max;
input.min = messagefiltersaturatenumber.min;
input.step = messagefiltersaturatenumber.step;
input.type = "range";
input.value = messagefiltersaturatenumber.value;
input.addEventListener("input", messagefiltersaturaterangeupdate);
messagefiltersaturate.append(input);
messagefiltersaturaterangeset();
}
addEventListener("load", messagefiltersaturaterangeload);
function messagefiltersaturaterangeset()
{
const v = messagefiltersaturaterange.value;
messagefiltersaturatenumber.value = v;
text.messagebackdropfiltersaturate = v;
}
function messagefiltersaturaterangeupdate()
{
messagefiltersaturaterangeset();
svgupdate();
}
function messagefiltersaturateexactload()
{
const br = document.createElement("br");
messagefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersaturateexactupdate);
messagefiltersaturate.append(button);
}
}
addEventListener("load", messagefiltersaturateexactload);
function messagefiltersaturateexactupdate(e)
{
messagefiltersaturatenumber.value = Number(e.target.value);
messagefiltersaturatenumberupdate();
}
function messagefiltersaturateincrementload()
{
const br = document.createElement("br");
messagefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersaturateincrementupdate);
messagefiltersaturate.append(button);
}
}
addEventListener("load", messagefiltersaturateincrementload);
function messagefiltersaturateincrementupdate(e)
{
const v = Number(messagefiltersaturatenumber.value) + Number(e.target.value);
if((messagefiltersaturatenumber.min <= v) && (v <= messagefiltersaturatenumber.max))
{
messagefiltersaturatenumber.value = v;
messagefiltersaturatenumberupdate();
}
}
function messagefiltersepiaload()
{
const div = document.createElement("div");
div.id = "messagefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentmessage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", messagefiltersepiaload);
function messagefiltersepianumberload()
{
const br = document.createElement("br");
messagefiltersepia.append(br);
const input = document.createElement("input");
input.id = "messagefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagefiltersepianumberupdate);
messagefiltersepia.append(input);
//messagefiltersepianumberset();
}
addEventListener("load", messagefiltersepianumberload);
function messagefiltersepianumberset()
{
const v = messagefiltersepianumber.value;
messagefiltersepiarange.value = v;
text.messagebackdropfiltersepia = v;
}
function messagefiltersepianumberupdate()
{
messagefiltersepianumberset();
svgupdate();
}
function messagefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "messagefiltersepiarange";
input.max = messagefiltersepianumber.max;
input.min = messagefiltersepianumber.min;
input.step = messagefiltersepianumber.step;
input.type = "range";
input.value = messagefiltersepianumber.value;
input.addEventListener("input", messagefiltersepiarangeupdate);
messagefiltersepia.append(input);
messagefiltersepiarangeset();
}
addEventListener("load", messagefiltersepiarangeload);
function messagefiltersepiarangeset()
{
const v = messagefiltersepiarange.value;
messagefiltersepianumber.value = v;
text.messagebackdropfiltersepia = v;
}
function messagefiltersepiarangeupdate()
{
messagefiltersepiarangeset();
svgupdate();
}
function messagefiltersepiaexactload()
{
const br = document.createElement("br");
messagefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersepiaexactupdate);
messagefiltersepia.append(button);
}
}
addEventListener("load", messagefiltersepiaexactload);
function messagefiltersepiaexactupdate(e)
{
messagefiltersepianumber.value = Number(e.target.value);
messagefiltersepianumberupdate();
}
function messagefiltersepiaincrementload()
{
const br = document.createElement("br");
messagefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", messagefiltersepiaincrementupdate);
messagefiltersepia.append(button);
}
}
addEventListener("load", messagefiltersepiaincrementload);
function messagefiltersepiaincrementupdate(e)
{
const v = Number(messagefiltersepianumber.value) + Number(e.target.value);
if((messagefiltersepianumber.min <= v) && (v <= messagefiltersepianumber.max))
{
messagefiltersepianumber.value = v;
messagefiltersepianumberupdate();
}
}
//*/
/*
function messagemargintopload()
{
const div = document.createElement("div");
div.id = "messagemargintop";
div.innerHTML = "margin-top";
tabcontentmessage.append(div);
}
addEventListener("load", messagemargintopload);
function messagemargintopnumberload()
{
const br = document.createElement("br");
messagemargintop.append(br);
const input = document.createElement("input");
input.id = "messagemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemargintopnumberupdate);
messagemargintop.append(input);
//messagemargintopnumberset();
}
addEventListener("load", messagemargintopnumberload);
function messagemargintopnumberset()
{
const v = Number(messagemargintopnumber.value);
messagemargintoprange.value = v;
text.messagemargintop = v;
}
function messagemargintopnumberupdate()
{
messagemargintopnumberset();
svgupdate();
}
function messagemargintoprangeload()
{
const input = document.createElement("input");
input.id = "messagemargintoprange";
input.max = messagemargintopnumber.max;
input.min = messagemargintopnumber.min;
input.type = "range";
input.value = messagemargintopnumber.value;
input.addEventListener("input", messagemargintoprangeupdate);
messagemargintop.append(input);
messagemargintoprangeset();
}
addEventListener("load", messagemargintoprangeload);
function messagemargintoprangeset()
{
const v = Number(messagemargintoprange.value);
messagemargintopnumber.value = v;
text.messagemargintop = v;
}
function messagemargintoprangeupdate()
{
messagemargintoprangeset();
svgupdate();
}
function messagemarginbottomload()
{
const div = document.createElement("div");
div.id = "messagemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentmessage.append(div);
}
addEventListener("load", messagemarginbottomload);
function messagemarginbottomnumberload()
{
const br = document.createElement("br");
messagemarginbottom.append(br);
const input = document.createElement("input");
input.id = "messagemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemarginbottomnumberupdate);
messagemarginbottom.append(input);
//messagemarginbottomnumberset();
}
addEventListener("load", messagemarginbottomnumberload);
function messagemarginbottomnumberset()
{
const v = Number(messagemarginbottomnumber.value);
messagemarginbottomrange.value = v;
text.messagemarginbottom = v;
}
function messagemarginbottomnumberupdate()
{
messagemarginbottomnumberset();
svgupdate();
}
function messagemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "messagemarginbottomrange";
input.max = messagemarginbottomnumber.max;
input.min = messagemarginbottomnumber.min;
input.type = "range";
input.value = messagemarginbottomnumber.value;
input.addEventListener("input", messagemarginbottomrangeupdate);
messagemarginbottom.append(input);
messagemarginbottomrangeset();
}
addEventListener("load", messagemarginbottomrangeload);
function messagemarginbottomrangeset()
{
const v = Number(messagemarginbottomrange.value);
messagemarginbottomnumber.value = v;
text.messagemarginbottom = v;
}
function messagemarginbottomrangeupdate()
{
messagemarginbottomrangeset();
svgupdate();
}
function messagemarginleftload()
{
const div = document.createElement("div");
div.id = "messagemarginleft";
div.innerHTML = "margin-left";
tabcontentmessage.append(div);
}
addEventListener("load", messagemarginleftload);
function messagemarginleftnumberload()
{
const br = document.createElement("br");
messagemarginleft.append(br);
const input = document.createElement("input");
input.id = "messagemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemarginleftnumberupdate);
messagemarginleft.append(input);
//messagemarginleftnumberset();
}
addEventListener("load", messagemarginleftnumberload);
function messagemarginleftnumberset()
{
const v = Number(messagemarginleftnumber.value);
messagemarginleftrange.value = v;
text.messagemarginleft = v;
}
function messagemarginleftnumberupdate()
{
messagemarginleftnumberset();
svgupdate();
}
function messagemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "messagemarginleftrange";
input.max = messagemarginleftnumber.max;
input.min = messagemarginleftnumber.min;
input.type = "range";
input.value = messagemarginleftnumber.value;
input.addEventListener("input", messagemarginleftrangeupdate);
messagemarginleft.append(input);
messagemarginleftrangeset();
}
addEventListener("load", messagemarginleftrangeload);
function messagemarginleftrangeset()
{
const v = Number(messagemarginleftrange.value);
messagemarginleftnumber.value = v;
text.messagemarginleft = v;
}
function messagemarginleftrangeupdate()
{
messagemarginleftrangeset();
svgupdate();
}
function messagemarginrightload()
{
const div = document.createElement("div");
div.id = "messagemarginright";
div.innerHTML = "margin-right";
tabcontentmessage.append(div);
}
addEventListener("load", messagemarginrightload);
function messagemarginrightnumberload()
{
const br = document.createElement("br");
messagemarginright.append(br);
const input = document.createElement("input");
input.id = "messagemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagemarginrightnumberupdate);
messagemarginright.append(input);
//messagemarginrightnumberset();
}
addEventListener("load", messagemarginrightnumberload);
function messagemarginrightnumberset()
{
const v = Number(messagemarginrightnumber.value);
messagemarginrightrange.value = v;
text.messagemarginright = v;
}
function messagemarginrightnumberupdate()
{
messagemarginrightnumberset();
svgupdate();
}
function messagemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "messagemarginrightrange";
input.max = messagemarginrightnumber.max;
input.min = messagemarginrightnumber.min;
input.type = "range";
input.value = messagemarginrightnumber.value;
input.addEventListener("input", messagemarginrightrangeupdate);
messagemarginright.append(input);
messagemarginrightrangeset();
}
addEventListener("load", messagemarginrightrangeload);
function messagemarginrightrangeset()
{
const v = Number(messagemarginrightrange.value);
messagemarginrightnumber.value = v;
text.messagemarginright = v;
}
function messagemarginrightrangeupdate()
{
messagemarginrightrangeset();
svgupdate();
}
function messagepaddingtopload()
{
const div = document.createElement("div");
div.id = "messagepaddingtop";
div.innerHTML = "padding-top";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingtopload);
function messagepaddingtopnumberload()
{
const br = document.createElement("br");
messagepaddingtop.append(br);
const input = document.createElement("input");
input.id = "messagepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingtopnumberupdate);
messagepaddingtop.append(input);
//messagepaddingtopnumberset();
}
addEventListener("load", messagepaddingtopnumberload);
function messagepaddingtopnumberset()
{
const v = Number(messagepaddingtopnumber.value);
messagepaddingtoprange.value = v;
text.messagepaddingtop = v;
}
function messagepaddingtopnumberupdate()
{
messagepaddingtopnumberset();
svgupdate();
}
function messagepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingtoprange";
input.max = messagepaddingtopnumber.max;
input.min = messagepaddingtopnumber.min;
input.type = "range";
input.value = messagepaddingtopnumber.value;
input.addEventListener("input", messagepaddingtoprangeupdate);
messagepaddingtop.append(input);
messagepaddingtoprangeset();
}
addEventListener("load", messagepaddingtoprangeload);
function messagepaddingtoprangeset()
{
const v = Number(messagepaddingtoprange.value);
messagepaddingtopnumber.value = v;
text.messagepaddingtop = v;
}
function messagepaddingtoprangeupdate()
{
messagepaddingtoprangeset();
svgupdate();
}
function messagepaddingbottomload()
{
const div = document.createElement("div");
div.id = "messagepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingbottomload);
function messagepaddingbottomnumberload()
{
const br = document.createElement("br");
messagepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "messagepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingbottomnumberupdate);
messagepaddingbottom.append(input);
//messagepaddingbottomnumberset();
}
addEventListener("load", messagepaddingbottomnumberload);
function messagepaddingbottomnumberset()
{
const v = Number(messagepaddingbottomnumber.value);
messagepaddingbottomrange.value = v;
text.messagepaddingbottom = v;
}
function messagepaddingbottomnumberupdate()
{
messagepaddingbottomnumberset();
svgupdate();
}
function messagepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingbottomrange";
input.max = messagepaddingbottomnumber.max;
input.min = messagepaddingbottomnumber.min;
input.type = "range";
input.value = messagepaddingbottomnumber.value;
input.addEventListener("input", messagepaddingbottomrangeupdate);
messagepaddingbottom.append(input);
messagepaddingbottomrangeset();
}
addEventListener("load", messagepaddingbottomrangeload);
function messagepaddingbottomrangeset()
{
const v = Number(messagepaddingbottomrange.value);
messagepaddingbottomnumber.value = v;
text.messagepaddingbottom = v;
}
function messagepaddingbottomrangeupdate()
{
messagepaddingbottomrangeset();
svgupdate();
}
function messagepaddingleftload()
{
const div = document.createElement("div");
div.id = "messagepaddingleft";
div.innerHTML = "padding-left";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingleftload);
function messagepaddingleftnumberload()
{
const br = document.createElement("br");
messagepaddingleft.append(br);
const input = document.createElement("input");
input.id = "messagepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingleftnumberupdate);
messagepaddingleft.append(input);
//messagepaddingleftnumberset();
}
addEventListener("load", messagepaddingleftnumberload);
function messagepaddingleftnumberset()
{
const v = Number(messagepaddingleftnumber.value);
messagepaddingleftrange.value = v;
text.messagepaddingleft = v;
}
function messagepaddingleftnumberupdate()
{
messagepaddingleftnumberset();
svgupdate();
}
function messagepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingleftrange";
input.max = messagepaddingleftnumber.max;
input.min = messagepaddingleftnumber.min;
input.type = "range";
input.value = messagepaddingleftnumber.value;
input.addEventListener("input", messagepaddingleftrangeupdate);
messagepaddingleft.append(input);
messagepaddingleftrangeset();
}
addEventListener("load", messagepaddingleftrangeload);
function messagepaddingleftrangeset()
{
const v = Number(messagepaddingleftrange.value);
messagepaddingleftnumber.value = v;
text.messagepaddingleft = v;
}
function messagepaddingleftrangeupdate()
{
messagepaddingleftrangeset();
svgupdate();
}
function messagepaddingrightload()
{
const div = document.createElement("div");
div.id = "messagepaddingright";
div.innerHTML = "padding-right";
tabcontentmessage.append(div);
}
addEventListener("load", messagepaddingrightload);
function messagepaddingrightnumberload()
{
const br = document.createElement("br");
messagepaddingright.append(br);
const input = document.createElement("input");
input.id = "messagepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", messagepaddingrightnumberupdate);
messagepaddingright.append(input);
//messagepaddingrightnumberset();
}
addEventListener("load", messagepaddingrightnumberload);
function messagepaddingrightnumberset()
{
const v = Number(messagepaddingrightnumber.value);
messagepaddingrightrange.value = v;
text.messagepaddingright = v;
}
function messagepaddingrightnumberupdate()
{
messagepaddingrightnumberset();
svgupdate();
}
function messagepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "messagepaddingrightrange";
input.max = messagepaddingrightnumber.max;
input.min = messagepaddingrightnumber.min;
input.type = "range";
input.value = messagepaddingrightnumber.value;
input.addEventListener("input", messagepaddingrightrangeupdate);
messagepaddingright.append(input);
messagepaddingrightrangeset();
}
addEventListener("load", messagepaddingrightrangeload);
function messagepaddingrightrangeset()
{
const v = Number(messagepaddingrightrange.value);
messagepaddingrightnumber.value = v;
text.messagepaddingright = v;
}
function messagepaddingrightrangeupdate()
{
messagepaddingrightrangeset();
svgupdate();
}
//*/
function referenceversionload()
{
const div = document.createElement("div");
div.id = "referenceversion";
div.innerHTML = "version";
tabcontentreference.append(div);
}
addEventListener("load", referenceversionload);
function referenceversionselectload()
{
const br = document.createElement("br");
referenceversion.append(br);
const select = document.createElement("select");
select.id = "referenceversionselect";
select.addEventListener("input", referenceversionselectupdate);
referenceversion.append(select);
referenceversionselectload2();
}
addEventListener("load", referenceversionselectload);
function referenceversionselectload2()
{
for(const value of Bibleversionarray)
{
const optgroup = document.createElement("optgroup");
optgroup.label = value[0];
referenceversionselect.append(optgroup);
for(const v of value[1])
{
const option = document.createElement("option");
option.innerHTML = v[1];
option.value = v[0];
optgroup.append(option);
}
}
referenceversionselect.value = Bibleversionarray[4][1][1][0];
referenceversionselectset();
}
function referenceversionselectset()
{
text.version = referenceversionselect.options.selectedIndex + 1;
text.versionname = referenceversionselect.value;
text.referencetextversion = "";
if(text.versionbool)
{
text.referencetextversion = ` ${text.versionname}`;
}
}
function referenceversionselectupdate()
{
referenceversionselectset();
/*
referencebookselectload2();
referencechapterselectload2();
referenceverseselectload2();
referenceverseendselectload2();
svgupdate();
//*/
Bibleload();
}
function referenceversioncheckboxload()
{
const input = document.createElement("input");
input.type = "checkbox";
input.addEventListener("click", referenceversioncheckboxupdate);
referenceversion.append(input);
}
addEventListener("load", referenceversioncheckboxload);
function referenceversioncheckboxupdate()
{
text.versionbool = !text.versionbool;
//referenceversionselectupdate();
referenceversionselectset();
svgupdate();
}
function Bibleload()
{
//console.log("Bibleload");
fetch(`/assets/txt/new/${text.versionname}.txt`)
.then(r => r.text())
.then(t =>
{
const split = t.split("@");
//console.log(split);
const b = split[1].trim();
//console.log(b);
const c = b.split("\n");
//console.log(c);
for(const [key, value] of c.entries())
{
const split = value.split("#");
const b = split[1];
Biblebookarray[key] = b;
//console.log(Biblebookarray[key]);
}
const v = split[2].trim();
//console.log(v);
const w = v.split("\n");
//console.log(w);
for(const value of w)
{
const split = value.split("#");
const b = Number(split[0]);
const c = Number(split[1]);
const v = Number(split[2]);
const t = split[3];
if(!Array.isArray(Bibleversearray[b]))
{
Bibleversearray[b] = [];
}
if(!Array.isArray(Bibleversearray[b][c]))
{
Bibleversearray[b][c] = [];
}
Bibleversearray[b][c][v] = t;
//console.log(b, c, v, t);
}
//imageload2();
//referenceversionselectload2();
//*
referencebookselectload2();
referencechapterselectload2()
referenceverseselectload2();
referenceverseendselectload2();
//*/
//canvasupdate();
svgupdate();
});
}
addEventListener("load", Bibleload);
function referencebookload()
{
const div = document.createElement("div");
div.id = "referencebook";
div.innerHTML = "book";
tabcontentreference.append(div);
}
addEventListener("load", referencebookload);
function referencebookselectload()
{
const br = document.createElement("br");
referencebook.append(br);
const select = document.createElement("select");
select.id = "referencebookselect";
select.addEventListener("input", referencebookselectupdate);
referencebook.append(select);
text.referencetextbook = "Genesis";
//referencebookselectload2();
}
addEventListener("load", referencebookselectload);
function referencebookselectload2()
{
for(let i = referencebookselect.options.length - 1; i >= 0; --i)
{
referencebookselect.remove(i);
}
for(const value of Biblebookarray)
{
const option = document.createElement("option");
option.innerHTML = value;
referencebookselect.add(option);
}
//referencebookselect.value = Biblebookarray[42];
referencebookselectset();
}
function referencebookselectset()
{
text.book = referencebookselect.options.selectedIndex + 1;
text.bookname = referencebookselect.value;
text.referencetextbook = text.bookname;
}
function referencebookselectupdate()
{
referencebookselectset();
referencechapterselectload2();
referenceverseselectload2();
referenceverseendselectload2();
svgupdate();
}
function referencechapterload()
{
const div = document.createElement("div");
div.id = "referencechapter";
div.innerHTML = "chapter";
tabcontentreference.append(div);
}
addEventListener("load", referencechapterload);
function referencechapterselectload()
{
const br = document.createElement("br");
referencechapter.append(br);
const select = document.createElement("select");
select.id = "referencechapterselect";
select.addEventListener("input", referencechapterselectupdate);
referencechapter.append(select);
text.referencetextchapter = " 1";
//referencechapterselectload2();
}
addEventListener("load", referencechapterselectload);
function referencechapterselectload2()
{
for(let i = referencechapterselect.options.length - 1; i >= 0; --i)
{
referencechapterselect.remove(i);
}
for(let i = 1; i < Bibleversearray[text.book].length; ++i)
{
const option = document.createElement("option");
option.innerHTML = i;
referencechapterselect.add(option);
}
referencechapterselect.value = 1;
referencechapterselectset();
}
function referencechapterselectset()
{
text.chapter = referencechapterselect.value;
text.referencetextchapter = ` ${text.chapter}`;
}
function referencechapterselectupdate()
{
referencechapterselectset();
referenceverseselectload2();
referenceverseendselectload2();
svgupdate();
}
function referenceverseload()
{
const div = document.createElement("div");
div.id = "referenceverse";
div.innerHTML = "verse-start";
tabcontentreference.append(div);
}
addEventListener("load", referenceverseload);
function referenceverseselectload()
{
const br = document.createElement("br");
referenceverse.append(br);
const select = document.createElement("select");
select.id = "referenceverseselect";
select.addEventListener("input", referenceverseselectupdate);
referenceverse.append(select);
text.referencetextverse = ":1";
text.passagetextverse = "In the beginning God created the heaven and the earth.";
//referenceverseselectload2();
}
addEventListener("load", referenceverseselectload);
function referenceverseselectload2()
{
for(let i = referenceverseselect.options.length - 1; i >= 0; --i)
{
referenceverseselect.remove(i);
}
for(let i = 1; i < Bibleversearray[text.book][text.chapter].length; ++i)
{
const option = document.createElement("option");
option.innerHTML = i;
referenceverseselect.add(option);
}
referenceverseselect.value = 1;
referenceverseselectset();
}
function referenceverseselectset()
{
text.verse = referenceverseselect.value;
text.referencetextverse = `:${text.verse}`;
text.passagetextverse = Bibleversearray[text.book][text.chapter][text.verse];
}
function referenceverseselectupdate()
{
referenceverseselectset();
referenceverseendselectload2();
svgupdate();
}
function referenceverseendload()
{
const div = document.createElement("div");
div.id = "referenceverseend";
div.innerHTML = "verse-end";
tabcontentreference.append(div);
}
addEventListener("load", referenceverseendload);
function referenceverseendselectload()
{
const br = document.createElement("br");
referenceverseend.append(br);
const select = document.createElement("select");
select.id = "referenceverseendselect";
select.addEventListener("input", referenceverseendselectupdate);
referenceverseend.append(select);
text.referencetextverseend = "";
text.passagetextverseend = "";
//referenceverseendselectload2();
}
addEventListener("load", referenceverseendselectload);
function referenceverseendselectload2()
{
for(let i = referenceverseendselect.options.length - 1; i >= 0; --i)
{
referenceverseendselect.remove(i);
}
for(let i = referenceverseselect.value; i < Bibleversearray[text.book][text.chapter].length; ++i)
{
const option = document.createElement("option");
option.innerHTML = i;
referenceverseendselect.add(option);
}
referenceverseendselect.value = referenceverseselect.value;
referenceverseendselectset();
}
function referenceverseendselectset()
{
text.verseend = referenceverseendselect.value;
//text.referencetext = `${text.bookname} ${text.chapter}:${text.verse}`;
//text.passagetext = `${Bibleversearray[text.book][text.chapter][text.verse]}`;
text.referencetextverseend = "";
text.passagetextverseend = "";
if(text.verse != text.verseend)
{
//text.referencetext += `-${text.verseend}`;
text.referencetextverseend = `-${text.verseend}`;
for(let i = Number(text.verse) + 1; i <= text.verseend; ++i)
{
//text.passagetext += ` ${Bibleversearray[text.book][text.chapter][i]}`;
text.passagetextverseend += ` ${Bibleversearray[text.book][text.chapter][i]}`;
}
}
//if(text.versionbool)
//{
// text.referencetext += ` ${text.versionname}`;
//}
//console.log(text.referencetext);
//console.log(text.passagetext);
}
function referenceverseendselectupdate()
{
referenceverseendselectset();
svgupdate();
}
function referencewidthload()
{
const div = document.createElement("div");
div.id = "referencewidth";
div.innerHTML = "width";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencewidthload);
function referencewidthnumberload()
{
const br = document.createElement("br");
referencewidth.append(br);
const input = document.createElement("input");
input.id = "referencewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width - 100;
input.addEventListener("input", referencewidthnumberupdate);
referencewidth.append(input);
//referencewidthnumberset();
}
addEventListener("load", referencewidthnumberload);
function referencewidthnumberset()
{
const v = Number(referencewidthnumber.value);
referencewidthrange.value = v;
text.referencewidth = v;
}
function referencewidthnumberupdate()
{
referencewidthnumberset();
svgupdate();
}
function referencewidthrangeload()
{
const input = document.createElement("input");
input.id = "referencewidthrange";
input.max = referencewidthnumber.max;
input.min = referencewidthnumber.min;
input.type = "range";
input.value = referencewidthnumber.value;
input.addEventListener("input", referencewidthrangeupdate);
referencewidth.append(input);
referencewidthrangeset();
}
addEventListener("load", referencewidthrangeload);
function referencewidthrangeset()
{
const v = Number(referencewidthrange.value);
referencewidthnumber.value = v;
text.referencewidth = v;
}
function referencewidthrangeupdate()
{
referencewidthrangeset();
svgupdate();
}
function referencewidthexactload()
{
const br = document.createElement("br");
referencewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencewidthexactupdate);
referencewidth.append(button);
}
}
addEventListener("load", referencewidthexactload);
function referencewidthexactupdate(e)
{
referencewidthnumber.value = canvas.width * Number(e.target.value);
referencewidthnumberupdate();
}
function referencewidthincrementload()
{
const br = document.createElement("br");
referencewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencewidthincrementupdate);
referencewidth.append(button);
}
}
addEventListener("load", referencewidthincrementload);
function referencewidthincrementupdate(e)
{
const v = Number(referencewidthnumber.value) + Number(e.target.value);
if((referencewidthnumber.min <= v) && (v <= referencewidthnumber.max))
{
referencewidthnumber.value = v;
referencewidthnumberupdate();
}
}
function referenceheightload()
{
const div = document.createElement("div");
div.id = "referenceheight";
div.innerHTML = "height";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceheightload);
function referenceheightnumberload()
{
const br = document.createElement("br");
referenceheight.append(br);
const input = document.createElement("input");
input.id = "referenceheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = 280;
input.addEventListener("input", referenceheightnumberupdate);
referenceheight.append(input);
//referenceheightnumberset();
}
addEventListener("load", referenceheightnumberload);
function referenceheightnumberset()
{
const v = Number(referenceheightnumber.value);
referenceheightrange.value = v;
text.referenceheight = v;
}
function referenceheightnumberupdate()
{
referenceheightnumberset();
svgupdate();
}
function referenceheightrangeload()
{
const input = document.createElement("input");
input.id = "referenceheightrange";
input.max = referenceheightnumber.max;
input.min = referenceheightnumber.min;
input.type = "range";
input.value = referenceheightnumber.value;
input.addEventListener("input", referenceheightrangeupdate);
referenceheight.append(input);
referenceheightrangeset();
}
addEventListener("load", referenceheightrangeload);
function referenceheightrangeset()
{
const v = Number(referenceheightrange.value);
referenceheightnumber.value = v;
text.referenceheight = v;
}
function referenceheightrangeupdate()
{
referenceheightrangeset();
svgupdate();
}
function referenceheightexactload()
{
const br = document.createElement("br");
referenceheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceheightexactupdate);
referenceheight.append(button);
}
}
addEventListener("load", referenceheightexactload);
function referenceheightexactupdate(e)
{
referenceheightnumber.value = canvas.height * Number(e.target.value);
referenceheightnumberupdate();
}
function referenceheightincrementload()
{
const br = document.createElement("br");
referenceheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceheightincrementupdate);
referenceheight.append(button);
}
}
addEventListener("load", referenceheightincrementload);
function referenceheightincrementupdate(e)
{
const v = Number(referenceheightnumber.value) + Number(e.target.value);
if((referenceheightnumber.min <= v) && (v <= referenceheightnumber.max))
{
referenceheightnumber.value = v;
referenceheightnumberupdate();
}
}
function referencexload()
{
const div = document.createElement("div");
div.id = "referencex";
div.innerHTML = "x";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencexload);
function referencexnumberload()
{
const br = document.createElement("br");
referencex.append(br);
const input = document.createElement("input");
input.id = "referencexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 50;
input.addEventListener("input", referencexnumberupdate);
referencex.append(input);
//referencexnumberset();
}
addEventListener("load", referencexnumberload);
function referencexnumberset()
{
const v = Number(referencexnumber.value);
referencexrange.value = v;
text.referencex = v;
}
function referencexnumberupdate()
{
referencexnumberset();
svgupdate();
}
function referencexrangeload()
{
const input = document.createElement("input");
input.id = "referencexrange";
input.max = referencexnumber.max;
input.min = referencexnumber.min;
input.type = "range";
input.value = referencexnumber.value;
input.addEventListener("input", referencexrangeupdate);
referencex.append(input);
referencexrangeset();
}
addEventListener("load", referencexrangeload);
function referencexrangeset()
{
const v = Number(referencexrange.value);
referencexnumber.value = v;
text.referencex = v;
}
function referencexrangeupdate()
{
referencexrangeset();
svgupdate();
}
function referencexexactload()
{
const br = document.createElement("br");
referencex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencexexactupdate);
referencex.append(button);
}
}
addEventListener("load", referencexexactload);
function referencexexactupdate(e)
{
//referencexnumber.value = (canvas.width - text.referencewidth - text.referencepaddingleft - text.referencepaddingright) * Number(e.target.value);
referencexnumber.value = (canvas.width - text.referencewidth) * Number(e.target.value);
referencexnumberupdate();
}
function referencexincrementload()
{
const br = document.createElement("br");
referencex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencexincrementupdate);
referencex.append(button);
}
}
addEventListener("load", referencexincrementload);
function referencexincrementupdate(e)
{
const v = Number(referencexnumber.value) + Number(e.target.value);
if((referencexnumber.min <= v) && (v <= referencexnumber.max))
{
referencexnumber.value = v;
referencexnumberupdate();
}
}
function referenceyload()
{
const div = document.createElement("div");
div.id = "referencey";
div.innerHTML = "y";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceyload);
function referenceynumberload()
{
const br = document.createElement("br");
referencey.append(br);
const input = document.createElement("input");
input.id = "referenceynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 400;
input.addEventListener("input", referenceynumberupdate);
referencey.append(input);
//referenceynumberset();
}
addEventListener("load", referenceynumberload);
function referenceynumberset()
{
const v = Number(referenceynumber.value);
referenceyrange.value = v;
text.referencey = v;
}
function referenceynumberupdate()
{
referenceynumberset();
svgupdate();
}
function referenceyrangeload()
{
const input = document.createElement("input");
input.id = "referenceyrange";
input.max = referenceynumber.max;
input.min = referenceynumber.min;
input.type = "range";
input.value = referenceynumber.value;
input.addEventListener("input", referenceyrangeupdate);
referencey.append(input);
referenceyrangeset();
}
addEventListener("load", referenceyrangeload);
function referenceyrangeset()
{
const v = Number(referenceyrange.value);
referenceynumber.value = v;
text.referencey = v;
}
function referenceyrangeupdate()
{
referenceyrangeset();
svgupdate();
}
function referenceyexactload()
{
const br = document.createElement("br");
referencey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceyexactupdate);
referencey.append(button);
}
}
addEventListener("load", referenceyexactload);
function referenceyexactupdate(e)
{
//referenceynumber.value = (canvas.height - text.referenceheight - text.referencepaddingtop - text.referencepaddingbottom) * Number(e.target.value);
referenceynumber.value = (canvas.height - text.referenceheight) * Number(e.target.value);
referenceynumberupdate();
}
function referenceyincrementload()
{
const br = document.createElement("br");
referencey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceyincrementupdate);
referencey.append(button);
}
}
addEventListener("load", referenceyincrementload);
function referenceyincrementupdate(e)
{
const v = Number(referenceynumber.value) + Number(e.target.value);
if((referenceynumber.min <= v) && (v <= referenceynumber.max))
{
referenceynumber.value = v;
referenceynumberupdate();
}
}
function referencebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "referencebackgroundcolor";
div.innerHTML = "background-color";
tabcontentreference.append(div);
}
addEventListener("load", referencebackgroundcolorload);
function referencebackgroundcolorcolorload()
{
const br = document.createElement("br");
referencebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "referencebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", referencebackgroundcolorcolorupdate);
referencebackgroundcolor.append(input);
//referencebackgroundcolorcolorset();
}
addEventListener("load", referencebackgroundcolorcolorload);
function referencebackgroundcolorcolorset()
{
const c = referencebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencebackgroundalphanumber.value;
text.referencebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebackgroundcolorcolorupdate()
{
referencebackgroundcolorcolorset();
svgupdate();
}
function referencebackgroundcolorexactload()
{
const br = document.createElement("br");
referencebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebackgroundcolorexactupdate);
referencebackgroundcolor.append(button);
}
}
addEventListener("load", referencebackgroundcolorexactload);
function referencebackgroundcolorexactupdate(e)
{
referencebackgroundcolorcolor.value = e.target.value;
referencebackgroundcolorcolorupdate();
}
function referencebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "referencebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencebackgroundalphaload);
function referencebackgroundalphanumberload()
{
const br = document.createElement("br");
referencebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "referencebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0.5;
input.addEventListener("input", referencebackgroundalphanumberupdate);
referencebackgroundalpha.append(input);
//referencebackgroundalphanumberset();
}
addEventListener("load", referencebackgroundalphanumberload);
function referencebackgroundalphanumberset()
{
const c = referencebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencebackgroundalphanumber.value;
referencebackgroundalpharange.value = a;
text.referencebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebackgroundalphanumberupdate()
{
referencebackgroundalphanumberset();
svgupdate();
}
function referencebackgroundalpharangeload()
{
const input = document.createElement("input");
input.id = "referencebackgroundalpharange";
input.max = referencebackgroundalphanumber.max;
input.min = referencebackgroundalphanumber.min;
input.step = referencebackgroundalphanumber.step;
input.type = "range";
input.value = referencebackgroundalphanumber.value;
input.addEventListener("input", referencebackgroundalpharangeupdate);
referencebackgroundalpha.append(input);
referencebackgroundalpharangeset();
}
addEventListener("load", referencebackgroundalpharangeload);
function referencebackgroundalpharangeset()
{
const c = referencebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencebackgroundalpharange.value;
referencebackgroundalphanumber.value = a;
text.referencebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebackgroundalpharangeupdate()
{
referencebackgroundalpharangeset();
svgupdate();
}
function referencebackgroundalphaexactload()
{
const br = document.createElement("br");
referencebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebackgroundalphaexactupdate);
referencebackgroundalpha.append(button);
}
}
addEventListener("load", referencebackgroundalphaexactload);
function referencebackgroundalphaexactupdate(e)
{
referencebackgroundalphanumber.value = Number(e.target.value);
referencebackgroundalphanumberupdate();
}
function referencebackgroundalphaincrementload()
{
const br = document.createElement("br");
referencebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebackgroundalphaincrementupdate);
referencebackgroundalpha.append(button);
}
}
addEventListener("load", referencebackgroundalphaincrementload);
function referencebackgroundalphaincrementupdate(e)
{
let v = Number(referencebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((referencebackgroundalphanumber.min <= v) && (v <= referencebackgroundalphanumber.max))
{
referencebackgroundalphanumber.value = v;
referencebackgroundalphanumberupdate();
}
}
function referencebordercolorload()
{
const div = document.createElement("div");
div.id = "referencebordercolor";
div.innerHTML = "border-color";
tabcontentreference.append(div);
}
addEventListener("load", referencebordercolorload);
function referencebordercolorcolorload()
{
const br = document.createElement("br");
referencebordercolor.append(br);
const input = document.createElement("input");
input.id = "referencebordercolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", referencebordercolorcolorupdate);
referencebordercolor.append(input);
//referencebordercolorcolorset();
}
addEventListener("load", referencebordercolorcolorload);
function referencebordercolorcolorset()
{
const c = referencebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referenceborderalphanumber.value;
text.referencebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencebordercolorcolorupdate()
{
referencebordercolorcolorset();
svgupdate();
}
function referencebordercolorexactload()
{
const br = document.createElement("br");
referencebordercolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencebordercolorexactupdate);
referencebordercolor.append(button);
}
}
addEventListener("load", referencebordercolorexactload);
function referencebordercolorexactupdate(e)
{
referencebordercolorcolor.value = e.target.value;
referencebordercolorcolorupdate();
}
function referenceborderalphaload()
{
const div = document.createElement("div");
div.id = "referenceborderalpha";
div.innerHTML = "border-alpha";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceborderalphaload);
function referenceborderalphanumberload()
{
const br = document.createElement("br");
referenceborderalpha.append(br);
const input = document.createElement("input");
input.id = "referenceborderalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", referenceborderalphanumberupdate);
referenceborderalpha.append(input);
//referenceborderalphanumberset();
}
addEventListener("load", referenceborderalphanumberload);
function referenceborderalphanumberset()
{
const c = referencebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referenceborderalphanumber.value;
referenceborderalpharange.value = a;
text.referencebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referenceborderalphanumberupdate()
{
referenceborderalphanumberset();
svgupdate();
}
function referenceborderalpharangeload()
{
const input = document.createElement("input");
input.id = "referenceborderalpharange";
input.max = referenceborderalphanumber.max;
input.min = referenceborderalphanumber.min;
input.step = referenceborderalphanumber.step;
input.type = "range";
input.value = referenceborderalphanumber.value;
input.addEventListener("input", referenceborderalpharangeupdate);
referenceborderalpha.append(input);
referenceborderalpharangeset();
}
addEventListener("load", referenceborderalpharangeload);
function referenceborderalpharangeset()
{
const c = referencebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referenceborderalpharange.value;
referenceborderalphanumber.value = a;
text.referencebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referenceborderalpharangeupdate()
{
referenceborderalpharangeset();
svgupdate();
}
function referenceborderalphaexactload()
{
const br = document.createElement("br");
referenceborderalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderalphaexactupdate);
referenceborderalpha.append(button);
}
}
addEventListener("load", referenceborderalphaexactload);
function referenceborderalphaexactupdate(e)
{
referenceborderalphanumber.value = Number(e.target.value);
referenceborderalphanumberupdate();
}
function referenceborderalphaincrementload()
{
const br = document.createElement("br");
referenceborderalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderalphaincrementupdate);
referenceborderalpha.append(button);
}
}
addEventListener("load", referenceborderalphaincrementload);
function referenceborderalphaincrementupdate(e)
{
let v = Number(referenceborderalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((referenceborderalphanumber.min <= v) && (v <= referenceborderalphanumber.max))
{
referenceborderalphanumber.value = v;
referenceborderalphanumberupdate();
}
}
function referenceborderradiusload()
{
const div = document.createElement("div");
div.id = "referenceborderradius";
div.innerHTML = "border-radius";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceborderradiusload);
function referenceborderradiusnumberload()
{
const br = document.createElement("br");
referenceborderradius.append(br);
const input = document.createElement("input");
input.id = "referenceborderradiusnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 50;
input.addEventListener("input", referenceborderradiusnumberupdate);
referenceborderradius.append(input);
//referenceborderradiusnumberset();
}
addEventListener("load", referenceborderradiusnumberload);
function referenceborderradiusnumberset()
{
const v = Number(referenceborderradiusnumber.value);
referenceborderradiusrange.value = v;
text.referenceborderradius = v;
}
function referenceborderradiusnumberupdate()
{
referenceborderradiusnumberset();
svgupdate();
}
function referenceborderradiusrangeload()
{
const input = document.createElement("input");
input.id = "referenceborderradiusrange";
input.max = referenceborderradiusnumber.max;
input.min = referenceborderradiusnumber.min;
input.type = "range";
input.value = referenceborderradiusnumber.value;
input.addEventListener("input", referenceborderradiusrangeupdate);
referenceborderradius.append(input);
referenceborderradiusrangeset();
}
addEventListener("load", referenceborderradiusrangeload);
function referenceborderradiusrangeset()
{
const v = Number(referenceborderradiusrange.value);
referenceborderradiusnumber.value = v;
text.referenceborderradius = v;
}
function referenceborderradiusrangeupdate()
{
referenceborderradiusrangeset();
svgupdate();
}
function referenceborderradiusexactload()
{
const br = document.createElement("br");
referenceborderradius.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderradiusexactupdate);
referenceborderradius.append(button);
}
}
addEventListener("load", referenceborderradiusexactload);
function referenceborderradiusexactupdate(e)
{
referenceborderradiusnumber.value = Number(e.target.value);
referenceborderradiusnumberupdate();
}
function referenceborderradiusincrementload()
{
const br = document.createElement("br");
referenceborderradius.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderradiusincrementupdate);
referenceborderradius.append(button);
}
}
addEventListener("load", referenceborderradiusincrementload);
function referenceborderradiusincrementupdate(e)
{
const v = Number(referenceborderradiusnumber.value) + Number(e.target.value);
if((referenceborderradiusnumber.min <= v) && (v <= referenceborderradiusnumber.max))
{
referenceborderradiusnumber.value = v;
referenceborderradiusnumberupdate();
}
}
function referenceborderstyleload()
{
const div = document.createElement("div");
div.id = "referenceborderstyle";
div.innerHTML = "border-style";
tabcontentreference.append(div);
}
addEventListener("load", referenceborderstyleload);
function referenceborderstyleselectload()
{
const br = document.createElement("br");
referenceborderstyle.append(br);
const select = document.createElement("select");
select.id = "referenceborderstyleselect";
select.addEventListener("input", referenceborderstyleselectupdate);
referenceborderstyle.append(select);
for(const value of borderstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
//select.value = borderstylearray[8];
referenceborderstyleselectset();
}
addEventListener("load", referenceborderstyleselectload);
function referenceborderstyleselectset()
{
text.referenceborderstyle = referenceborderstyleselect.value;
}
function referenceborderstyleselectupdate()
{
referenceborderstyleselectset();
svgupdate();
}
function referenceborderwidthload()
{
const div = document.createElement("div");
div.id = "referenceborderwidth";
div.innerHTML = "border-width";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referenceborderwidthload);
function referenceborderwidthnumberload()
{
const br = document.createElement("br");
referenceborderwidth.append(br);
const input = document.createElement("input");
input.id = "referenceborderwidthnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 25;
input.addEventListener("input", referenceborderwidthnumberupdate);
referenceborderwidth.append(input);
//referenceborderwidthnumberset();
}
addEventListener("load", referenceborderwidthnumberload);
function referenceborderwidthnumberset()
{
const v = Number(referenceborderwidthnumber.value);
referenceborderwidthrange.value = v;
text.referenceborderwidth = v;
}
function referenceborderwidthnumberupdate()
{
referenceborderwidthnumberset();
svgupdate();
}
function referenceborderwidthrangeload()
{
const input = document.createElement("input");
input.id = "referenceborderwidthrange";
input.max = referenceborderwidthnumber.max;
input.min = referenceborderwidthnumber.min;
input.type = "range";
input.value = referenceborderwidthnumber.value;
input.addEventListener("input", referenceborderwidthrangeupdate);
referenceborderwidth.append(input);
referenceborderwidthrangeset();
}
addEventListener("load", referenceborderwidthrangeload);
function referenceborderwidthrangeset()
{
const v = Number(referenceborderwidthrange.value);
referenceborderwidthnumber.value = v;
text.referenceborderwidth = v;
}
function referenceborderwidthrangeupdate()
{
referenceborderwidthrangeset();
svgupdate();
}
function referenceborderwidthexactload()
{
const br = document.createElement("br");
referenceborderwidth.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderwidthexactupdate);
referenceborderwidth.append(button);
}
}
addEventListener("load", referenceborderwidthexactload);
function referenceborderwidthexactupdate(e)
{
referenceborderwidthnumber.value = Number(e.target.value);
referenceborderwidthnumberupdate();
}
function referenceborderwidthincrementload()
{
const br = document.createElement("br");
referenceborderwidth.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referenceborderwidthincrementupdate);
referenceborderwidth.append(button);
}
}
addEventListener("load", referenceborderwidthincrementload);
function referenceborderwidthincrementupdate(e)
{
const v = Number(referenceborderwidthnumber.value) + Number(e.target.value);
if((referenceborderwidthnumber.min <= v) && (v <= referenceborderwidthnumber.max))
{
referenceborderwidthnumber.value = v;
referenceborderwidthnumberupdate();
}
}
function referencehorizontalload()
{
const div = document.createElement("div");
div.id = "referencehorizontal";
div.innerHTML = "horizontal";
tabcontentreference.append(div);
}
addEventListener("load", referencehorizontalload);
function referencehorizontalselectload()
{
const br = document.createElement("br");
referencehorizontal.append(br);
const select = document.createElement("select");
select.id = "referencehorizontalselect";
select.addEventListener("input", referencehorizontalselectupdate);
referencehorizontal.append(select);
for(const value of horizontalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = horizontalarray[1];
referencehorizontalselectset();
}
addEventListener("load", referencehorizontalselectload);
function referencehorizontalselectset()
{
text.referencehorizontal = referencehorizontalselect.value;
}
function referencehorizontalselectupdate()
{
referencehorizontalselectset();
svgupdate();
}
function referenceverticalload()
{
const div = document.createElement("div");
div.id = "referencevertical";
div.innerHTML = "vertical";
tabcontentreference.append(div);
}
addEventListener("load", referenceverticalload);
function referenceverticalselectload()
{
const br = document.createElement("br");
referencevertical.append(br);
const select = document.createElement("select");
select.id = "referenceverticalselect";
select.addEventListener("input", referenceverticalselectupdate);
referencevertical.append(select);
for(const value of verticalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = verticalarray[1];
referenceverticalselectset();
}
addEventListener("load", referenceverticalselectload);
function referenceverticalselectset()
{
text.referencevertical = referenceverticalselect.value;
}
function referenceverticalselectupdate()
{
referenceverticalselectset();
svgupdate();
}
function referencewritingmodeload()
{
const div = document.createElement("div");
div.id = "referencewritingmode";
div.innerHTML = "writing-mode";
tabcontentreference.append(div);
}
addEventListener("load", referencewritingmodeload);
function referencewritingmodeselectload()
{
const br = document.createElement("br");
referencewritingmode.append(br);
const select = document.createElement("select");
select.id = "referencewritingmodeselect";
select.addEventListener("input", referencewritingmodeselectupdate);
referencewritingmode.append(select);
for(const value of writingmodearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencewritingmodeselectset();
}
addEventListener("load", referencewritingmodeselectload);
function referencewritingmodeselectset()
{
text.referencewritingmode = referencewritingmodeselect.value;
}
function referencewritingmodeselectupdate()
{
referencewritingmodeselectset();
svgupdate();
}
function referencefontfamilyload()
{
const div = document.createElement("div");
div.id = "referencefontfamily";
div.innerHTML = "font-family";
tabcontentreference.append(div);
}
addEventListener("load", referencefontfamilyload);
function referencefontfamilyselectload()
{
const br = document.createElement("br");
referencefontfamily.append(br);
const select = document.createElement("select");
select.id = "referencefontfamilyselect";
select.addEventListener("input", referencefontfamilyselectupdate);
referencefontfamily.append(select);
for(const value of fontfamilyarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontfamilyselectset();
}
addEventListener("load", referencefontfamilyselectload);
function referencefontfamilyselectset()
{
text.referencefontfamily = referencefontfamilyselect.value;
}
function referencefontfamilyselectupdate()
{
referencefontfamilyselectset();
svgupdate();
}
function referencefontsizeload()
{
const div = document.createElement("div");
div.id = "referencefontsize";
div.innerHTML = "font-size";
tabcontentreference.append(div);
}
addEventListener("load", referencefontsizeload);
function referencefontsizenumberload()
{
const br = document.createElement("br");
referencefontsize.append(br);
const input = document.createElement("input");
input.id = "referencefontsizenumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefontsizenumberupdate);
referencefontsize.append(input);
//referencefontsizenumberset();
}
addEventListener("load", referencefontsizenumberload);
function referencefontsizenumberset()
{
const v = Number(referencefontsizenumber.value);
referencefontsizerange.value = v;
text.referencefontsize = v;
}
function referencefontsizenumberupdate()
{
referencefontsizenumberset();
svgupdate();
}
function referencefontsizerangeload()
{
const input = document.createElement("input");
input.id = "referencefontsizerange";
input.max = referencefontsizenumber.max;
input.min = referencefontsizenumber.min;
input.type = "range";
input.value = referencefontsizenumber.value;
input.addEventListener("input", referencefontsizerangeupdate);
referencefontsize.append(input);
referencefontsizerangeset();
}
addEventListener("load", referencefontsizerangeload);
function referencefontsizerangeset()
{
const v = Number(referencefontsizerange.value);
referencefontsizenumber.value = v;
text.referencefontsize = v;
}
function referencefontsizerangeupdate()
{
referencefontsizerangeset();
svgupdate();
}
function referencefontsizeexactload()
{
const br = document.createElement("br");
referencefontsize.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefontsizeexactupdate);
referencefontsize.append(button);
}
}
addEventListener("load", referencefontsizeexactload);
function referencefontsizeexactupdate(e)
{
referencefontsizenumber.value = Number(e.target.value);
referencefontsizenumberupdate();
}
function referencefontsizeincrementload()
{
const br = document.createElement("br");
referencefontsize.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefontsizeincrementupdate);
referencefontsize.append(button);
}
}
addEventListener("load", referencefontsizeincrementload);
function referencefontsizeincrementupdate(e)
{
const v = Number(referencefontsizenumber.value) + Number(e.target.value);
if((referencefontsizenumber.min <= v) && (v <= referencefontsizenumber.max))
{
referencefontsizenumber.value = v;
referencefontsizenumberupdate();
}
}
/*
function referencefontsizefitload()
{
const button = document.createElement("button");
button.innerHTML = "fit";
button.addEventListener("click", referencefontsizefitupdate);
referencefontsize.append(button);
}
addEventListener("load", referencefontsizefitload);
function referencefontsizefitupdate()
{
const t = document.createElement("div");
referencefontsize.append(t);
t.innerHTML = text.bookname;
t.style.fontSize = `${referencefontsizenumber.value}px`;
const h1 = text.referencewidth;
const h2 = text.referenceheight;
const h3 = t.offsetWidth;
const h4 = t.offsetHeight;
const h5 = referencefontsizenumber.value;
//const h4 = t.offsetParent;//t.style.fontSize;
//const h5 = t.clientHeight;//text.style.height;
//const h6 = text.height;
//const h7 = text.getBoundingClientRect().height;
//const h8 = text.style.lineHeight;
//const h9 = canvas.getBoundingClientRect().height;
console.log(h1, h2, h3, h4, h5);
//t.hidden = true;
if(h2 < h4)
{
referencefontsizenumber.value -= 1;
referencefit();
}
referencefontsizenumberupdate();
}
//*/
function referencefontstyleload()
{
const div = document.createElement("div");
div.id = "referencefontstyle";
div.innerHTML = "font-style";
tabcontentreference.append(div);
}
addEventListener("load", referencefontstyleload);
function referencefontstyleselectload()
{
const br = document.createElement("br");
referencefontstyle.append(br);
const select = document.createElement("select");
select.id = "referencefontstyleselect";
select.addEventListener("input", referencefontstyleselectupdate);
referencefontstyle.append(select);
for(const value of fontstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontstyleselectset();
}
addEventListener("load", referencefontstyleselectload);
function referencefontstyleselectset()
{
text.referencefontstyle = referencefontstyleselect.value;
}
function referencefontstyleselectupdate()
{
referencefontstyleselectset();
svgupdate();
}
function referencefontvariantload()
{
const div = document.createElement("div");
div.id = "referencefontvariant";
div.innerHTML = "font-variant";
tabcontentreference.append(div);
}
addEventListener("load", referencefontvariantload);
function referencefontvariantselectload()
{
const br = document.createElement("br");
referencefontvariant.append(br);
const select = document.createElement("select");
select.id = "referencefontvariantselect";
select.addEventListener("input", referencefontvariantselectupdate);
referencefontvariant.append(select);
for(const value of fontvariantarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontvariantselectset();
}
addEventListener("load", referencefontvariantselectload);
function referencefontvariantselectset()
{
text.referencefontvariant = referencefontvariantselect.value;
}
function referencefontvariantselectupdate()
{
referencefontvariantselectset();
svgupdate();
}
function referencefontweightload()
{
const div = document.createElement("div");
div.id = "referencefontweight";
div.innerHTML = "font-weight";
tabcontentreference.append(div);
}
addEventListener("load", referencefontweightload);
function referencefontweightselectload()
{
const br = document.createElement("br");
referencefontweight.append(br);
const select = document.createElement("select");
select.id = "referencefontweightselect";
select.addEventListener("input", referencefontweightselectupdate);
referencefontweight.append(select);
for(const value of fontweightarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
referencefontweightselectset();
}
addEventListener("load", referencefontweightselectload);
function referencefontweightselectset()
{
text.referencefontweight = referencefontweightselect.value;
}
function referencefontweightselectupdate()
{
referencefontweightselectset();
svgupdate();
}
function referencecolorload()
{
const div = document.createElement("div");
div.id = "referencecolor";
div.innerHTML = "color";
tabcontentreference.append(div);
}
addEventListener("load", referencecolorload);
function referencecolorcolorload()
{
const br = document.createElement("br");
referencecolor.append(br);
const input = document.createElement("input");
input.id = "referencecolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", referencecolorcolorupdate);
referencecolor.append(input);
//referencecolorcolorset();
}
addEventListener("load", referencecolorcolorload);
function referencecolorcolorset()
{
const c = referencecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencealphanumber.value;
text.referencecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencecolorcolorupdate()
{
referencecolorcolorset();
svgupdate();
}
function referencecolorexactload()
{
const br = document.createElement("br");
referencecolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencecolorexactupdate);
referencecolor.append(button);
}
}
addEventListener("load", referencecolorexactload);
function referencecolorexactupdate(e)
{
referencecolorcolor.value = e.target.value;
referencecolorcolorupdate();
}
function referencealphaload()
{
const div = document.createElement("div");
div.id = "referencealpha";
div.innerHTML = "alpha";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencealphaload);
function referencealphanumberload()
{
const br = document.createElement("br");
referencealpha.append(br);
const input = document.createElement("input");
input.id = "referencealphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", referencealphanumberupdate);
referencealpha.append(input);
//referencealphanumberset();
}
addEventListener("load", referencealphanumberload);
function referencealphanumberset()
{
const c = referencecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencealphanumber.value;
referencealpharange.value = a;
text.referencecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencealphanumberupdate()
{
referencealphanumberset();
svgupdate();
}
function referencealpharangeload()
{
const input = document.createElement("input");
input.id = "referencealpharange";
input.max = referencealphanumber.max;
input.min = referencealphanumber.min;
input.step = referencealphanumber.step;
input.type = "range";
input.value = referencealphanumber.value;
input.addEventListener("input", referencealpharangeupdate);
referencealpha.append(input);
referencealpharangeset();
}
addEventListener("load", referencealpharangeload);
function referencealpharangeset()
{
const c = referencecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = referencealpharange.value;
referencealphanumber.value = a;
text.referencecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function referencealpharangeupdate()
{
referencealpharangeset();
svgupdate();
}
function referencealphaexactload()
{
const br = document.createElement("br");
referencealpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencealphaexactupdate);
referencealpha.append(button);
}
}
addEventListener("load", referencealphaexactload);
function referencealphaexactupdate(e)
{
referencealphanumber.value = Number(e.target.value);
referencealphanumberupdate();
}
function referencealphaincrementload()
{
const br = document.createElement("br");
referencealpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencealphaincrementupdate);
referencealpha.append(button);
}
}
addEventListener("load", referencealphaincrementload);
function referencealphaincrementupdate(e)
{
let v = Number(referencealphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((referencealphanumber.min <= v) && (v <= referencealphanumber.max))
{
referencealphanumber.value = v;
referencealphanumberupdate();
}
}
/*leftoff
function referencefilterblurload()
{
const div = document.createElement("div");
div.id = "referencefilterblur";
div.innerHTML = "filter-blur";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterblurload);
function referencefilterblurnumberload()
{
const br = document.createElement("br");
referencefilterblur.append(br);
const input = document.createElement("input");
input.id = "referencefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefilterblurnumberupdate);
referencefilterblur.append(input);
//referencefilterblurnumberset();
}
addEventListener("load", referencefilterblurnumberload);
function referencefilterblurnumberset()
{
const v = referencefilterblurnumber.value;
referencefilterblurrange.value = v;
text.referencebackdropfilterblur = v;
}
function referencefilterblurnumberupdate()
{
referencefilterblurnumberset();
svgupdate();
}
function referencefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "referencefilterblurrange";
input.max = referencefilterblurnumber.max;
input.min = referencefilterblurnumber.min;
input.step = referencefilterblurnumber.step;
input.type = "range";
input.value = referencefilterblurnumber.value;
input.addEventListener("input", referencefilterblurrangeupdate);
referencefilterblur.append(input);
referencefilterblurrangeset();
}
addEventListener("load", referencefilterblurrangeload);
function referencefilterblurrangeset()
{
const v = referencefilterblurrange.value;
referencefilterblurnumber.value = v;
text.referencebackdropfilterblur = v;
}
function referencefilterblurrangeupdate()
{
referencefilterblurrangeset();
svgupdate();
}
function referencefilterblurexactload()
{
const br = document.createElement("br");
referencefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterblurexactupdate);
referencefilterblur.append(button);
}
}
addEventListener("load", referencefilterblurexactload);
function referencefilterblurexactupdate(e)
{
referencefilterblurnumber.value = Number(e.target.value);
referencefilterblurnumberupdate();
}
function referencefilterblurincrementload()
{
const br = document.createElement("br");
referencefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterblurincrementupdate);
referencefilterblur.append(button);
}
}
addEventListener("load", referencefilterblurincrementload);
function referencefilterblurincrementupdate(e)
{
const v = Number(referencefilterblurnumber.value) + Number(e.target.value);
if((referencefilterblurnumber.min <= v) && (v <= referencefilterblurnumber.max))
{
referencefilterblurnumber.value = v;
referencefilterblurnumberupdate();
}
}
function referencefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "referencefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterbrightnessload);
function referencefilterbrightnessnumberload()
{
const br = document.createElement("br");
referencefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "referencefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefilterbrightnessnumberupdate);
referencefilterbrightness.append(input);
//referencefilterbrightnessnumberset();
}
addEventListener("load", referencefilterbrightnessnumberload);
function referencefilterbrightnessnumberset()
{
const v = referencefilterbrightnessnumber.value;
referencefilterbrightnessrange.value = v;
text.referencebackdropfilterbrightness = v;
}
function referencefilterbrightnessnumberupdate()
{
referencefilterbrightnessnumberset();
svgupdate();
}
function referencefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "referencefilterbrightnessrange";
input.max = referencefilterbrightnessnumber.max;
input.min = referencefilterbrightnessnumber.min;
input.step = referencefilterbrightnessnumber.step;
input.type = "range";
input.value = referencefilterbrightnessnumber.value;
input.addEventListener("input", referencefilterbrightnessrangeupdate);
referencefilterbrightness.append(input);
referencefilterbrightnessrangeset();
}
addEventListener("load", referencefilterbrightnessrangeload);
function referencefilterbrightnessrangeset()
{
const v = referencefilterbrightnessrange.value;
referencefilterbrightnessnumber.value = v;
text.referencebackdropfilterbrightness = v;
}
function referencefilterbrightnessrangeupdate()
{
referencefilterbrightnessrangeset();
svgupdate();
}
function referencefilterbrightnessexactload()
{
const br = document.createElement("br");
referencefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterbrightnessexactupdate);
referencefilterbrightness.append(button);
}
}
addEventListener("load", referencefilterbrightnessexactload);
function referencefilterbrightnessexactupdate(e)
{
referencefilterbrightnessnumber.value = Number(e.target.value);
referencefilterbrightnessnumberupdate();
}
function referencefilterbrightnessincrementload()
{
const br = document.createElement("br");
referencefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterbrightnessincrementupdate);
referencefilterbrightness.append(button);
}
}
addEventListener("load", referencefilterbrightnessincrementload);
function referencefilterbrightnessincrementupdate(e)
{
const v = Number(referencefilterbrightnessnumber.value) + Number(e.target.value);
if((referencefilterbrightnessnumber.min <= v) && (v <= referencefilterbrightnessnumber.max))
{
referencefilterbrightnessnumber.value = v;
referencefilterbrightnessnumberupdate();
}
}
function referencefiltercontrastload()
{
const div = document.createElement("div");
div.id = "referencefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltercontrastload);
function referencefiltercontrastnumberload()
{
const br = document.createElement("br");
referencefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "referencefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefiltercontrastnumberupdate);
referencefiltercontrast.append(input);
//referencefiltercontrastnumberset();
}
addEventListener("load", referencefiltercontrastnumberload);
function referencefiltercontrastnumberset()
{
const v = referencefiltercontrastnumber.value;
referencefiltercontrastrange.value = v;
text.referencebackdropfiltercontrast = v;
}
function referencefiltercontrastnumberupdate()
{
referencefiltercontrastnumberset();
svgupdate();
}
function referencefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "referencefiltercontrastrange";
input.max = referencefiltercontrastnumber.max;
input.min = referencefiltercontrastnumber.min;
input.step = referencefiltercontrastnumber.step;
input.type = "range";
input.value = referencefiltercontrastnumber.value;
input.addEventListener("input", referencefiltercontrastrangeupdate);
referencefiltercontrast.append(input);
referencefiltercontrastrangeset();
}
addEventListener("load", referencefiltercontrastrangeload);
function referencefiltercontrastrangeset()
{
const v = referencefiltercontrastrange.value;
referencefiltercontrastnumber.value = v;
text.referencebackdropfiltercontrast = v;
}
function referencefiltercontrastrangeupdate()
{
referencefiltercontrastrangeset();
svgupdate();
}
function referencefiltercontrastexactload()
{
const br = document.createElement("br");
referencefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltercontrastexactupdate);
referencefiltercontrast.append(button);
}
}
addEventListener("load", referencefiltercontrastexactload);
function referencefiltercontrastexactupdate(e)
{
referencefiltercontrastnumber.value = Number(e.target.value);
referencefiltercontrastnumberupdate();
}
function referencefiltercontrastincrementload()
{
const br = document.createElement("br");
referencefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltercontrastincrementupdate);
referencefiltercontrast.append(button);
}
}
addEventListener("load", referencefiltercontrastincrementload);
function referencefiltercontrastincrementupdate(e)
{
const v = Number(referencefiltercontrastnumber.value) + Number(e.target.value);
if((referencefiltercontrastnumber.min <= v) && (v <= referencefiltercontrastnumber.max))
{
referencefiltercontrastnumber.value = v;
referencefiltercontrastnumberupdate();
}
}
function referencefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "referencefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltergrayscaleload);
function referencefiltergrayscalenumberload()
{
const br = document.createElement("br");
referencefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "referencefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefiltergrayscalenumberupdate);
referencefiltergrayscale.append(input);
//referencefiltergrayscalenumberset();
}
addEventListener("load", referencefiltergrayscalenumberload);
function referencefiltergrayscalenumberset()
{
const v = referencefiltergrayscalenumber.value;
referencefiltergrayscalerange.value = v;
text.referencebackdropfiltergrayscale = v;
}
function referencefiltergrayscalenumberupdate()
{
referencefiltergrayscalenumberset();
svgupdate();
}
function referencefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "referencefiltergrayscalerange";
input.max = referencefiltergrayscalenumber.max;
input.min = referencefiltergrayscalenumber.min;
input.step = referencefiltergrayscalenumber.step;
input.type = "range";
input.value = referencefiltergrayscalenumber.value;
input.addEventListener("input", referencefiltergrayscalerangeupdate);
referencefiltergrayscale.append(input);
referencefiltergrayscalerangeset();
}
addEventListener("load", referencefiltergrayscalerangeload);
function referencefiltergrayscalerangeset()
{
const v = referencefiltergrayscalerange.value;
referencefiltergrayscalenumber.value = v;
text.referencebackdropfiltergrayscale = v;
}
function referencefiltergrayscalerangeupdate()
{
referencefiltergrayscalerangeset();
svgupdate();
}
function referencefiltergrayscaleexactload()
{
const br = document.createElement("br");
referencefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltergrayscaleexactupdate);
referencefiltergrayscale.append(button);
}
}
addEventListener("load", referencefiltergrayscaleexactload);
function referencefiltergrayscaleexactupdate(e)
{
referencefiltergrayscalenumber.value = Number(e.target.value);
referencefiltergrayscalenumberupdate();
}
function referencefiltergrayscaleincrementload()
{
const br = document.createElement("br");
referencefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltergrayscaleincrementupdate);
referencefiltergrayscale.append(button);
}
}
addEventListener("load", referencefiltergrayscaleincrementload);
function referencefiltergrayscaleincrementupdate(e)
{
const v = Number(referencefiltergrayscalenumber.value) + Number(e.target.value);
if((referencefiltergrayscalenumber.min <= v) && (v <= referencefiltergrayscalenumber.max))
{
referencefiltergrayscalenumber.value = v;
referencefiltergrayscalenumberupdate();
}
}
function referencefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "referencefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterhuerotateload);
function referencefilterhuerotatenumberload()
{
const br = document.createElement("br");
referencefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "referencefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefilterhuerotatenumberupdate);
referencefilterhuerotate.append(input);
//referencefilterhuerotatenumberset();
}
addEventListener("load", referencefilterhuerotatenumberload);
function referencefilterhuerotatenumberset()
{
const v = referencefilterhuerotatenumber.value;
referencefilterhuerotaterange.value = v;
text.referencebackdropfilterhuerotate = v;
}
function referencefilterhuerotatenumberupdate()
{
referencefilterhuerotatenumberset();
svgupdate();
}
function referencefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "referencefilterhuerotaterange";
input.max = referencefilterhuerotatenumber.max;
input.min = referencefilterhuerotatenumber.min;
input.step = referencefilterhuerotatenumber.step;
input.type = "range";
input.value = referencefilterhuerotatenumber.value;
input.addEventListener("input", referencefilterhuerotaterangeupdate);
referencefilterhuerotate.append(input);
referencefilterhuerotaterangeset();
}
addEventListener("load", referencefilterhuerotaterangeload);
function referencefilterhuerotaterangeset()
{
const v = referencefilterhuerotaterange.value;
referencefilterhuerotatenumber.value = v;
text.referencebackdropfilterhuerotate = v;
}
function referencefilterhuerotaterangeupdate()
{
referencefilterhuerotaterangeset();
svgupdate();
}
function referencefilterhuerotateexactload()
{
const br = document.createElement("br");
referencefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterhuerotateexactupdate);
referencefilterhuerotate.append(button);
}
}
addEventListener("load", referencefilterhuerotateexactload);
function referencefilterhuerotateexactupdate(e)
{
referencefilterhuerotatenumber.value = Number(e.target.value);
referencefilterhuerotatenumberupdate();
}
function referencefilterhuerotateincrementload()
{
const br = document.createElement("br");
referencefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterhuerotateincrementupdate);
referencefilterhuerotate.append(button);
}
}
addEventListener("load", referencefilterhuerotateincrementload);
function referencefilterhuerotateincrementupdate(e)
{
const v = Number(referencefilterhuerotatenumber.value) + Number(e.target.value);
if((referencefilterhuerotatenumber.min <= v) && (v <= referencefilterhuerotatenumber.max))
{
referencefilterhuerotatenumber.value = v;
referencefilterhuerotatenumberupdate();
}
}
function referencefilterinvertload()
{
const div = document.createElement("div");
div.id = "referencefilterinvert";
div.innerHTML = "filter-invert";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefilterinvertload);
function referencefilterinvertnumberload()
{
const br = document.createElement("br");
referencefilterinvert.append(br);
const input = document.createElement("input");
input.id = "referencefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefilterinvertnumberupdate);
referencefilterinvert.append(input);
//referencefilterinvertnumberset();
}
addEventListener("load", referencefilterinvertnumberload);
function referencefilterinvertnumberset()
{
const v = referencefilterinvertnumber.value;
referencefilterinvertrange.value = v;
text.referencebackdropfilterinvert = v;
}
function referencefilterinvertnumberupdate()
{
referencefilterinvertnumberset();
svgupdate();
}
function referencefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "referencefilterinvertrange";
input.max = referencefilterinvertnumber.max;
input.min = referencefilterinvertnumber.min;
input.step = referencefilterinvertnumber.step;
input.type = "range";
input.value = referencefilterinvertnumber.value;
input.addEventListener("input", referencefilterinvertrangeupdate);
referencefilterinvert.append(input);
referencefilterinvertrangeset();
}
addEventListener("load", referencefilterinvertrangeload);
function referencefilterinvertrangeset()
{
const v = referencefilterinvertrange.value;
referencefilterinvertnumber.value = v;
text.referencebackdropfilterinvert = v;
}
function referencefilterinvertrangeupdate()
{
referencefilterinvertrangeset();
svgupdate();
}
function referencefilterinvertexactload()
{
const br = document.createElement("br");
referencefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterinvertexactupdate);
referencefilterinvert.append(button);
}
}
addEventListener("load", referencefilterinvertexactload);
function referencefilterinvertexactupdate(e)
{
referencefilterinvertnumber.value = Number(e.target.value);
referencefilterinvertnumberupdate();
}
function referencefilterinvertincrementload()
{
const br = document.createElement("br");
referencefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefilterinvertincrementupdate);
referencefilterinvert.append(button);
}
}
addEventListener("load", referencefilterinvertincrementload);
function referencefilterinvertincrementupdate(e)
{
const v = Number(referencefilterinvertnumber.value) + Number(e.target.value);
if((referencefilterinvertnumber.min <= v) && (v <= referencefilterinvertnumber.max))
{
referencefilterinvertnumber.value = v;
referencefilterinvertnumberupdate();
}
}
function referencefiltersaturateload()
{
const div = document.createElement("div");
div.id = "referencefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltersaturateload);
function referencefiltersaturatenumberload()
{
const br = document.createElement("br");
referencefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "referencefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", referencefiltersaturatenumberupdate);
referencefiltersaturate.append(input);
//referencefiltersaturatenumberset();
}
addEventListener("load", referencefiltersaturatenumberload);
function referencefiltersaturatenumberset()
{
const v = referencefiltersaturatenumber.value;
referencefiltersaturaterange.value = v;
text.referencebackdropfiltersaturate = v;
}
function referencefiltersaturatenumberupdate()
{
referencefiltersaturatenumberset();
svgupdate();
}
function referencefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "referencefiltersaturaterange";
input.max = referencefiltersaturatenumber.max;
input.min = referencefiltersaturatenumber.min;
input.step = referencefiltersaturatenumber.step;
input.type = "range";
input.value = referencefiltersaturatenumber.value;
input.addEventListener("input", referencefiltersaturaterangeupdate);
referencefiltersaturate.append(input);
referencefiltersaturaterangeset();
}
addEventListener("load", referencefiltersaturaterangeload);
function referencefiltersaturaterangeset()
{
const v = referencefiltersaturaterange.value;
referencefiltersaturatenumber.value = v;
text.referencebackdropfiltersaturate = v;
}
function referencefiltersaturaterangeupdate()
{
referencefiltersaturaterangeset();
svgupdate();
}
function referencefiltersaturateexactload()
{
const br = document.createElement("br");
referencefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersaturateexactupdate);
referencefiltersaturate.append(button);
}
}
addEventListener("load", referencefiltersaturateexactload);
function referencefiltersaturateexactupdate(e)
{
referencefiltersaturatenumber.value = Number(e.target.value);
referencefiltersaturatenumberupdate();
}
function referencefiltersaturateincrementload()
{
const br = document.createElement("br");
referencefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersaturateincrementupdate);
referencefiltersaturate.append(button);
}
}
addEventListener("load", referencefiltersaturateincrementload);
function referencefiltersaturateincrementupdate(e)
{
const v = Number(referencefiltersaturatenumber.value) + Number(e.target.value);
if((referencefiltersaturatenumber.min <= v) && (v <= referencefiltersaturatenumber.max))
{
referencefiltersaturatenumber.value = v;
referencefiltersaturatenumberupdate();
}
}
function referencefiltersepiaload()
{
const div = document.createElement("div");
div.id = "referencefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentreference.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", referencefiltersepiaload);
function referencefiltersepianumberload()
{
const br = document.createElement("br");
referencefiltersepia.append(br);
const input = document.createElement("input");
input.id = "referencefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencefiltersepianumberupdate);
referencefiltersepia.append(input);
//referencefiltersepianumberset();
}
addEventListener("load", referencefiltersepianumberload);
function referencefiltersepianumberset()
{
const v = referencefiltersepianumber.value;
referencefiltersepiarange.value = v;
text.referencebackdropfiltersepia = v;
}
function referencefiltersepianumberupdate()
{
referencefiltersepianumberset();
svgupdate();
}
function referencefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "referencefiltersepiarange";
input.max = referencefiltersepianumber.max;
input.min = referencefiltersepianumber.min;
input.step = referencefiltersepianumber.step;
input.type = "range";
input.value = referencefiltersepianumber.value;
input.addEventListener("input", referencefiltersepiarangeupdate);
referencefiltersepia.append(input);
referencefiltersepiarangeset();
}
addEventListener("load", referencefiltersepiarangeload);
function referencefiltersepiarangeset()
{
const v = referencefiltersepiarange.value;
referencefiltersepianumber.value = v;
text.referencebackdropfiltersepia = v;
}
function referencefiltersepiarangeupdate()
{
referencefiltersepiarangeset();
svgupdate();
}
function referencefiltersepiaexactload()
{
const br = document.createElement("br");
referencefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersepiaexactupdate);
referencefiltersepia.append(button);
}
}
addEventListener("load", referencefiltersepiaexactload);
function referencefiltersepiaexactupdate(e)
{
referencefiltersepianumber.value = Number(e.target.value);
referencefiltersepianumberupdate();
}
function referencefiltersepiaincrementload()
{
const br = document.createElement("br");
referencefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", referencefiltersepiaincrementupdate);
referencefiltersepia.append(button);
}
}
addEventListener("load", referencefiltersepiaincrementload);
function referencefiltersepiaincrementupdate(e)
{
const v = Number(referencefiltersepianumber.value) + Number(e.target.value);
if((referencefiltersepianumber.min <= v) && (v <= referencefiltersepianumber.max))
{
referencefiltersepianumber.value = v;
referencefiltersepianumberupdate();
}
}
//*/
/*
function referencemargintopload()
{
const div = document.createElement("div");
div.id = "referencemargintop";
div.innerHTML = "margin-top";
tabcontentreference.append(div);
}
addEventListener("load", referencemargintopload);
function referencemargintopnumberload()
{
const br = document.createElement("br");
referencemargintop.append(br);
const input = document.createElement("input");
input.id = "referencemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemargintopnumberupdate);
referencemargintop.append(input);
//referencemargintopnumberset();
}
addEventListener("load", referencemargintopnumberload);
function referencemargintopnumberset()
{
const v = Number(referencemargintopnumber.value);
referencemargintoprange.value = v;
text.referencemargintop = v;
}
function referencemargintopnumberupdate()
{
referencemargintopnumberset();
svgupdate();
}
function referencemargintoprangeload()
{
const input = document.createElement("input");
input.id = "referencemargintoprange";
input.max = referencemargintopnumber.max;
input.min = referencemargintopnumber.min;
input.type = "range";
input.value = referencemargintopnumber.value;
input.addEventListener("input", referencemargintoprangeupdate);
referencemargintop.append(input);
referencemargintoprangeset();
}
addEventListener("load", referencemargintoprangeload);
function referencemargintoprangeset()
{
const v = Number(referencemargintoprange.value);
referencemargintopnumber.value = v;
text.referencemargintop = v;
}
function referencemargintoprangeupdate()
{
referencemargintoprangeset();
svgupdate();
}
function referencemarginbottomload()
{
const div = document.createElement("div");
div.id = "referencemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentreference.append(div);
}
addEventListener("load", referencemarginbottomload);
function referencemarginbottomnumberload()
{
const br = document.createElement("br");
referencemarginbottom.append(br);
const input = document.createElement("input");
input.id = "referencemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemarginbottomnumberupdate);
referencemarginbottom.append(input);
//referencemarginbottomnumberset();
}
addEventListener("load", referencemarginbottomnumberload);
function referencemarginbottomnumberset()
{
const v = Number(referencemarginbottomnumber.value);
referencemarginbottomrange.value = v;
text.referencemarginbottom = v;
}
function referencemarginbottomnumberupdate()
{
referencemarginbottomnumberset();
svgupdate();
}
function referencemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "referencemarginbottomrange";
input.max = referencemarginbottomnumber.max;
input.min = referencemarginbottomnumber.min;
input.type = "range";
input.value = referencemarginbottomnumber.value;
input.addEventListener("input", referencemarginbottomrangeupdate);
referencemarginbottom.append(input);
referencemarginbottomrangeset();
}
addEventListener("load", referencemarginbottomrangeload);
function referencemarginbottomrangeset()
{
const v = Number(referencemarginbottomrange.value);
referencemarginbottomnumber.value = v;
text.referencemarginbottom = v;
}
function referencemarginbottomrangeupdate()
{
referencemarginbottomrangeset();
svgupdate();
}
function referencemarginleftload()
{
const div = document.createElement("div");
div.id = "referencemarginleft";
div.innerHTML = "margin-left";
tabcontentreference.append(div);
}
addEventListener("load", referencemarginleftload);
function referencemarginleftnumberload()
{
const br = document.createElement("br");
referencemarginleft.append(br);
const input = document.createElement("input");
input.id = "referencemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemarginleftnumberupdate);
referencemarginleft.append(input);
//referencemarginleftnumberset();
}
addEventListener("load", referencemarginleftnumberload);
function referencemarginleftnumberset()
{
const v = Number(referencemarginleftnumber.value);
referencemarginleftrange.value = v;
text.referencemarginleft = v;
}
function referencemarginleftnumberupdate()
{
referencemarginleftnumberset();
svgupdate();
}
function referencemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "referencemarginleftrange";
input.max = referencemarginleftnumber.max;
input.min = referencemarginleftnumber.min;
input.type = "range";
input.value = referencemarginleftnumber.value;
input.addEventListener("input", referencemarginleftrangeupdate);
referencemarginleft.append(input);
referencemarginleftrangeset();
}
addEventListener("load", referencemarginleftrangeload);
function referencemarginleftrangeset()
{
const v = Number(referencemarginleftrange.value);
referencemarginleftnumber.value = v;
text.referencemarginleft = v;
}
function referencemarginleftrangeupdate()
{
referencemarginleftrangeset();
svgupdate();
}
function referencemarginrightload()
{
const div = document.createElement("div");
div.id = "referencemarginright";
div.innerHTML = "margin-right";
tabcontentreference.append(div);
}
addEventListener("load", referencemarginrightload);
function referencemarginrightnumberload()
{
const br = document.createElement("br");
referencemarginright.append(br);
const input = document.createElement("input");
input.id = "referencemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencemarginrightnumberupdate);
referencemarginright.append(input);
//referencemarginrightnumberset();
}
addEventListener("load", referencemarginrightnumberload);
function referencemarginrightnumberset()
{
const v = Number(referencemarginrightnumber.value);
referencemarginrightrange.value = v;
text.referencemarginright = v;
}
function referencemarginrightnumberupdate()
{
referencemarginrightnumberset();
svgupdate();
}
function referencemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "referencemarginrightrange";
input.max = referencemarginrightnumber.max;
input.min = referencemarginrightnumber.min;
input.type = "range";
input.value = referencemarginrightnumber.value;
input.addEventListener("input", referencemarginrightrangeupdate);
referencemarginright.append(input);
referencemarginrightrangeset();
}
addEventListener("load", referencemarginrightrangeload);
function referencemarginrightrangeset()
{
const v = Number(referencemarginrightrange.value);
referencemarginrightnumber.value = v;
text.referencemarginright = v;
}
function referencemarginrightrangeupdate()
{
referencemarginrightrangeset();
svgupdate();
}
function referencepaddingtopload()
{
const div = document.createElement("div");
div.id = "referencepaddingtop";
div.innerHTML = "padding-top";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingtopload);
function referencepaddingtopnumberload()
{
const br = document.createElement("br");
referencepaddingtop.append(br);
const input = document.createElement("input");
input.id = "referencepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingtopnumberupdate);
referencepaddingtop.append(input);
//referencepaddingtopnumberset();
}
addEventListener("load", referencepaddingtopnumberload);
function referencepaddingtopnumberset()
{
const v = Number(referencepaddingtopnumber.value);
referencepaddingtoprange.value = v;
text.referencepaddingtop = v;
}
function referencepaddingtopnumberupdate()
{
referencepaddingtopnumberset();
svgupdate();
}
function referencepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingtoprange";
input.max = referencepaddingtopnumber.max;
input.min = referencepaddingtopnumber.min;
input.type = "range";
input.value = referencepaddingtopnumber.value;
input.addEventListener("input", referencepaddingtoprangeupdate);
referencepaddingtop.append(input);
referencepaddingtoprangeset();
}
addEventListener("load", referencepaddingtoprangeload);
function referencepaddingtoprangeset()
{
const v = Number(referencepaddingtoprange.value);
referencepaddingtopnumber.value = v;
text.referencepaddingtop = v;
}
function referencepaddingtoprangeupdate()
{
referencepaddingtoprangeset();
svgupdate();
}
function referencepaddingbottomload()
{
const div = document.createElement("div");
div.id = "referencepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingbottomload);
function referencepaddingbottomnumberload()
{
const br = document.createElement("br");
referencepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "referencepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingbottomnumberupdate);
referencepaddingbottom.append(input);
//referencepaddingbottomnumberset();
}
addEventListener("load", referencepaddingbottomnumberload);
function referencepaddingbottomnumberset()
{
const v = Number(referencepaddingbottomnumber.value);
referencepaddingbottomrange.value = v;
text.referencepaddingbottom = v;
}
function referencepaddingbottomnumberupdate()
{
referencepaddingbottomnumberset();
svgupdate();
}
function referencepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingbottomrange";
input.max = referencepaddingbottomnumber.max;
input.min = referencepaddingbottomnumber.min;
input.type = "range";
input.value = referencepaddingbottomnumber.value;
input.addEventListener("input", referencepaddingbottomrangeupdate);
referencepaddingbottom.append(input);
referencepaddingbottomrangeset();
}
addEventListener("load", referencepaddingbottomrangeload);
function referencepaddingbottomrangeset()
{
const v = Number(referencepaddingbottomrange.value);
referencepaddingbottomnumber.value = v;
text.referencepaddingbottom = v;
}
function referencepaddingbottomrangeupdate()
{
referencepaddingbottomrangeset();
svgupdate();
}
function referencepaddingleftload()
{
const div = document.createElement("div");
div.id = "referencepaddingleft";
div.innerHTML = "padding-left";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingleftload);
function referencepaddingleftnumberload()
{
const br = document.createElement("br");
referencepaddingleft.append(br);
const input = document.createElement("input");
input.id = "referencepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingleftnumberupdate);
referencepaddingleft.append(input);
//referencepaddingleftnumberset();
}
addEventListener("load", referencepaddingleftnumberload);
function referencepaddingleftnumberset()
{
const v = Number(referencepaddingleftnumber.value);
referencepaddingleftrange.value = v;
text.referencepaddingleft = v;
}
function referencepaddingleftnumberupdate()
{
referencepaddingleftnumberset();
svgupdate();
}
function referencepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingleftrange";
input.max = referencepaddingleftnumber.max;
input.min = referencepaddingleftnumber.min;
input.type = "range";
input.value = referencepaddingleftnumber.value;
input.addEventListener("input", referencepaddingleftrangeupdate);
referencepaddingleft.append(input);
referencepaddingleftrangeset();
}
addEventListener("load", referencepaddingleftrangeload);
function referencepaddingleftrangeset()
{
const v = Number(referencepaddingleftrange.value);
referencepaddingleftnumber.value = v;
text.referencepaddingleft = v;
}
function referencepaddingleftrangeupdate()
{
referencepaddingleftrangeset();
svgupdate();
}
function referencepaddingrightload()
{
const div = document.createElement("div");
div.id = "referencepaddingright";
div.innerHTML = "padding-right";
tabcontentreference.append(div);
}
addEventListener("load", referencepaddingrightload);
function referencepaddingrightnumberload()
{
const br = document.createElement("br");
referencepaddingright.append(br);
const input = document.createElement("input");
input.id = "referencepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", referencepaddingrightnumberupdate);
referencepaddingright.append(input);
//referencepaddingrightnumberset();
}
addEventListener("load", referencepaddingrightnumberload);
function referencepaddingrightnumberset()
{
const v = Number(referencepaddingrightnumber.value);
referencepaddingrightrange.value = v;
text.referencepaddingright = v;
}
function referencepaddingrightnumberupdate()
{
referencepaddingrightnumberset();
svgupdate();
}
function referencepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "referencepaddingrightrange";
input.max = referencepaddingrightnumber.max;
input.min = referencepaddingrightnumber.min;
input.type = "range";
input.value = referencepaddingrightnumber.value;
input.addEventListener("input", referencepaddingrightrangeupdate);
referencepaddingright.append(input);
referencepaddingrightrangeset();
}
addEventListener("load", referencepaddingrightrangeload);
function referencepaddingrightrangeset()
{
const v = Number(referencepaddingrightrange.value);
referencepaddingrightnumber.value = v;
text.referencepaddingright = v;
}
function referencepaddingrightrangeupdate()
{
referencepaddingrightrangeset();
svgupdate();
}
//*/
function passagewidthload()
{
const div = document.createElement("div");
div.id = "passagewidth";
div.innerHTML = "width";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagewidthload);
function passagewidthnumberload()
{
const br = document.createElement("br");
passagewidth.append(br);
const input = document.createElement("input");
input.id = "passagewidthnumber";
input.max = maxwidth;
input.min = 0;
input.type = "number";
input.value = canvas.width - 100;
input.addEventListener("input", passagewidthnumberupdate);
passagewidth.append(input);
//passagewidthnumberset();
}
addEventListener("load", passagewidthnumberload);
function passagewidthnumberset()
{
const v = Number(passagewidthnumber.value);
passagewidthrange.value = v;
text.passagewidth = v;
}
function passagewidthnumberupdate()
{
passagewidthnumberset();
svgupdate();
}
function passagewidthrangeload()
{
const input = document.createElement("input");
input.id = "passagewidthrange";
input.max = passagewidthnumber.max;
input.min = passagewidthnumber.min;
input.type = "range";
input.value = passagewidthnumber.value;
input.addEventListener("input", passagewidthrangeupdate);
passagewidth.append(input);
passagewidthrangeset();
}
addEventListener("load", passagewidthrangeload);
function passagewidthrangeset()
{
const v = Number(passagewidthrange.value);
passagewidthnumber.value = v;
text.passagewidth = v;
}
function passagewidthrangeupdate()
{
passagewidthrangeset();
svgupdate();
}
function passagewidthexactload()
{
const br = document.createElement("br");
passagewidth.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagewidthexactupdate);
passagewidth.append(button);
}
}
addEventListener("load", passagewidthexactload);
function passagewidthexactupdate(e)
{
passagewidthnumber.value = canvas.width * Number(e.target.value);
passagewidthnumberupdate();
}
function passagewidthincrementload()
{
const br = document.createElement("br");
passagewidth.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagewidthincrementupdate);
passagewidth.append(button);
}
}
addEventListener("load", passagewidthincrementload);
function passagewidthincrementupdate(e)
{
const v = Number(passagewidthnumber.value) + Number(e.target.value);
if((passagewidthnumber.min <= v) && (v <= passagewidthnumber.max))
{
passagewidthnumber.value = v;
passagewidthnumberupdate();
}
}
function passageheightload()
{
const div = document.createElement("div");
div.id = "passageheight";
div.innerHTML = "height";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageheightload);
function passageheightnumberload()
{
const br = document.createElement("br");
passageheight.append(br);
const input = document.createElement("input");
input.id = "passageheightnumber";
input.max = maxheight;
input.min = 0;
input.type = "number";
input.value = 300;
input.addEventListener("input", passageheightnumberupdate);
passageheight.append(input);
//passageheightnumberset();
}
addEventListener("load", passageheightnumberload);
function passageheightnumberset()
{
const v = Number(passageheightnumber.value);
passageheightrange.value = v;
text.passageheight = v;
}
function passageheightnumberupdate()
{
passageheightnumberset();
svgupdate();
}
function passageheightrangeload()
{
const input = document.createElement("input");
input.id = "passageheightrange";
input.max = passageheightnumber.max;
input.min = passageheightnumber.min;
input.type = "range";
input.value = passageheightnumber.value;
input.addEventListener("input", passageheightrangeupdate);
passageheight.append(input);
passageheightrangeset();
}
addEventListener("load", passageheightrangeload);
function passageheightrangeset()
{
const v = Number(passageheightrange.value);
passageheightnumber.value = v;
text.passageheight = v;
}
function passageheightrangeupdate()
{
passageheightrangeset();
svgupdate();
}
function passageheightexactload()
{
const br = document.createElement("br");
passageheight.append(br);
const array =
[
["25%",0.25],
["50%",0.5],
["75%",0.75],
["100%",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageheightexactupdate);
passageheight.append(button);
}
}
addEventListener("load", passageheightexactload);
function passageheightexactupdate(e)
{
passageheightnumber.value = canvas.height * Number(e.target.value);
passageheightnumberupdate();
}
function passageheightincrementload()
{
const br = document.createElement("br");
passageheight.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageheightincrementupdate);
passageheight.append(button);
}
}
addEventListener("load", passageheightincrementload);
function passageheightincrementupdate(e)
{
const v = Number(passageheightnumber.value) + Number(e.target.value);
if((passageheightnumber.min <= v) && (v <= passageheightnumber.max))
{
passageheightnumber.value = v;
passageheightnumberupdate();
}
}
function passagexload()
{
const div = document.createElement("div");
div.id = "passagex";
div.innerHTML = "x";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagexload);
function passagexnumberload()
{
const br = document.createElement("br");
passagex.append(br);
const input = document.createElement("input");
input.id = "passagexnumber";
input.max = maxwidth;
input.min = -maxwidth;
input.type = "number";
input.value = 50;
input.addEventListener("input", passagexnumberupdate);
passagex.append(input);
//passagexnumberset();
}
addEventListener("load", passagexnumberload);
function passagexnumberset()
{
const v = Number(passagexnumber.value);
passagexrange.value = v;
text.passagex = v;
}
function passagexnumberupdate()
{
passagexnumberset();
svgupdate();
}
function passagexrangeload()
{
const input = document.createElement("input");
input.id = "passagexrange";
input.max = passagexnumber.max;
input.min = passagexnumber.min;
input.type = "range";
input.value = passagexnumber.value;
input.addEventListener("input", passagexrangeupdate);
passagex.append(input);
passagexrangeset();
}
addEventListener("load", passagexrangeload);
function passagexrangeset()
{
const v = Number(passagexrange.value);
passagexnumber.value = v;
text.passagex = v;
}
function passagexrangeupdate()
{
passagexrangeset();
svgupdate();
}
function passagexexactload()
{
const br = document.createElement("br");
passagex.append(br);
const array =
[
["left",0],
["center",0.5],
["right",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagexexactupdate);
passagex.append(button);
}
}
addEventListener("load", passagexexactload);
function passagexexactupdate(e)
{
//passagexnumber.value = (canvas.width - text.passagewidth - text.passagepaddingleft - text.passagepaddingright) * Number(e.target.value);
passagexnumber.value = (canvas.width - text.passagewidth) * Number(e.target.value);
passagexnumberupdate();
}
function passagexincrementload()
{
const br = document.createElement("br");
passagex.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagexincrementupdate);
passagex.append(button);
}
}
addEventListener("load", passagexincrementload);
function passagexincrementupdate(e)
{
const v = Number(passagexnumber.value) + Number(e.target.value);
if((passagexnumber.min <= v) && (v <= passagexnumber.max))
{
passagexnumber.value = v;
passagexnumberupdate();
}
}
function passageyload()
{
const div = document.createElement("div");
div.id = "passagey";
div.innerHTML = "y";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageyload);
function passageynumberload()
{
const br = document.createElement("br");
passagey.append(br);
const input = document.createElement("input");
input.id = "passageynumber";
input.max = maxheight;
input.min = -maxheight;
input.type = "number";
input.value = 730;
input.addEventListener("input", passageynumberupdate);
passagey.append(input);
//passageynumberset();
}
addEventListener("load", passageynumberload);
function passageynumberset()
{
const v = Number(passageynumber.value);
passageyrange.value = v;
text.passagey = v;
}
function passageynumberupdate()
{
passageynumberset();
svgupdate();
}
function passageyrangeload()
{
const input = document.createElement("input");
input.id = "passageyrange";
input.max = passageynumber.max;
input.min = passageynumber.min;
input.type = "range";
input.value = passageynumber.value;
input.addEventListener("input", passageyrangeupdate);
passagey.append(input);
passageyrangeset();
}
addEventListener("load", passageyrangeload);
function passageyrangeset()
{
const v = Number(passageyrange.value);
passageynumber.value = v;
text.passagey = v;
}
function passageyrangeupdate()
{
passageyrangeset();
svgupdate();
}
function passageyexactload()
{
const br = document.createElement("br");
passagey.append(br);
const array =
[
["top",0],
["center",0.5],
["bottom",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageyexactupdate);
passagey.append(button);
}
}
addEventListener("load", passageyexactload);
function passageyexactupdate(e)
{
//passageynumber.value = (canvas.height - text.passageheight - text.passagepaddingtop - text.passagepaddingbottom) * Number(e.target.value);
passageynumber.value = (canvas.height - text.passageheight) * Number(e.target.value);
passageynumberupdate();
}
function passageyincrementload()
{
const br = document.createElement("br");
passagey.append(br);
const array =
[
["-1000",-1000],
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
["+1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageyincrementupdate);
passagey.append(button);
}
}
addEventListener("load", passageyincrementload);
function passageyincrementupdate(e)
{
const v = Number(passageynumber.value) + Number(e.target.value);
if((passageynumber.min <= v) && (v <= passageynumber.max))
{
passageynumber.value = v;
passageynumberupdate();
}
}
function passagebackgroundcolorload()
{
const div = document.createElement("div");
div.id = "passagebackgroundcolor";
div.innerHTML = "background-color";
tabcontentpassage.append(div);
}
addEventListener("load", passagebackgroundcolorload);
function passagebackgroundcolorcolorload()
{
const br = document.createElement("br");
passagebackgroundcolor.append(br);
const input = document.createElement("input");
input.id = "passagebackgroundcolorcolor";
input.type = "color";
input.value = "#ffffff";
input.addEventListener("input", passagebackgroundcolorcolorupdate);
passagebackgroundcolor.append(input);
//passagebackgroundcolorcolorset();
}
addEventListener("load", passagebackgroundcolorcolorload);
function passagebackgroundcolorcolorset()
{
const c = passagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagebackgroundalphanumber.value;
text.passagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebackgroundcolorcolorupdate()
{
passagebackgroundcolorcolorset();
svgupdate();
}
function passagebackgroundcolorexactload()
{
const br = document.createElement("br");
passagebackgroundcolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebackgroundcolorexactupdate);
passagebackgroundcolor.append(button);
}
}
addEventListener("load", passagebackgroundcolorexactload);
function passagebackgroundcolorexactupdate(e)
{
passagebackgroundcolorcolor.value = e.target.value;
passagebackgroundcolorcolorupdate();
}
function passagebackgroundalphaload()
{
const div = document.createElement("div");
div.id = "passagebackgroundalpha";
div.innerHTML = "background-alpha";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagebackgroundalphaload);
function passagebackgroundalphanumberload()
{
const br = document.createElement("br");
passagebackgroundalpha.append(br);
const input = document.createElement("input");
input.id = "passagebackgroundalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 0.5;
input.addEventListener("input", passagebackgroundalphanumberupdate);
passagebackgroundalpha.append(input);
//passagebackgroundalphanumberset();
}
addEventListener("load", passagebackgroundalphanumberload);
function passagebackgroundalphanumberset()
{
const c = passagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagebackgroundalphanumber.value;
passagebackgroundalpharange.value = a;
text.passagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebackgroundalphanumberupdate()
{
passagebackgroundalphanumberset();
svgupdate();
}
function passagebackgroundalpharangeload()
{
const input = document.createElement("input");
input.id = "passagebackgroundalpharange";
input.max = passagebackgroundalphanumber.max;
input.min = passagebackgroundalphanumber.min;
input.step = passagebackgroundalphanumber.step;
input.type = "range";
input.value = passagebackgroundalphanumber.value;
input.addEventListener("input", passagebackgroundalpharangeupdate);
passagebackgroundalpha.append(input);
passagebackgroundalpharangeset();
}
addEventListener("load", passagebackgroundalpharangeload);
function passagebackgroundalpharangeset()
{
const c = passagebackgroundcolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagebackgroundalpharange.value;
passagebackgroundalphanumber.value = a;
text.passagebackgroundcolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebackgroundalpharangeupdate()
{
passagebackgroundalpharangeset();
svgupdate();
}
function passagebackgroundalphaexactload()
{
const br = document.createElement("br");
passagebackgroundalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebackgroundalphaexactupdate);
passagebackgroundalpha.append(button);
}
}
addEventListener("load", passagebackgroundalphaexactload);
function passagebackgroundalphaexactupdate(e)
{
passagebackgroundalphanumber.value = Number(e.target.value);
passagebackgroundalphanumberupdate();
}
function passagebackgroundalphaincrementload()
{
const br = document.createElement("br");
passagebackgroundalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebackgroundalphaincrementupdate);
passagebackgroundalpha.append(button);
}
}
addEventListener("load", passagebackgroundalphaincrementload);
function passagebackgroundalphaincrementupdate(e)
{
let v = Number(passagebackgroundalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((passagebackgroundalphanumber.min <= v) && (v <= passagebackgroundalphanumber.max))
{
passagebackgroundalphanumber.value = v;
passagebackgroundalphanumberupdate();
}
}
function passagebordercolorload()
{
const div = document.createElement("div");
div.id = "passagebordercolor";
div.innerHTML = "border-color";
tabcontentpassage.append(div);
}
addEventListener("load", passagebordercolorload);
function passagebordercolorcolorload()
{
const br = document.createElement("br");
passagebordercolor.append(br);
const input = document.createElement("input");
input.id = "passagebordercolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", passagebordercolorcolorupdate);
passagebordercolor.append(input);
//passagebordercolorcolorset();
}
addEventListener("load", passagebordercolorcolorload);
function passagebordercolorcolorset()
{
const c = passagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passageborderalphanumber.value;
text.passagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagebordercolorcolorupdate()
{
passagebordercolorcolorset();
svgupdate();
}
function passagebordercolorexactload()
{
const br = document.createElement("br");
passagebordercolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagebordercolorexactupdate);
passagebordercolor.append(button);
}
}
addEventListener("load", passagebordercolorexactload);
function passagebordercolorexactupdate(e)
{
passagebordercolorcolor.value = e.target.value;
passagebordercolorcolorupdate();
}
function passageborderalphaload()
{
const div = document.createElement("div");
div.id = "passageborderalpha";
div.innerHTML = "border-alpha";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageborderalphaload);
function passageborderalphanumberload()
{
const br = document.createElement("br");
passageborderalpha.append(br);
const input = document.createElement("input");
input.id = "passageborderalphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", passageborderalphanumberupdate);
passageborderalpha.append(input);
//passageborderalphanumberset();
}
addEventListener("load", passageborderalphanumberload);
function passageborderalphanumberset()
{
const c = passagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passageborderalphanumber.value;
passageborderalpharange.value = a;
text.passagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passageborderalphanumberupdate()
{
passageborderalphanumberset();
svgupdate();
}
function passageborderalpharangeload()
{
const input = document.createElement("input");
input.id = "passageborderalpharange";
input.max = passageborderalphanumber.max;
input.min = passageborderalphanumber.min;
input.step = passageborderalphanumber.step;
input.type = "range";
input.value = passageborderalphanumber.value;
input.addEventListener("input", passageborderalpharangeupdate);
passageborderalpha.append(input);
passageborderalpharangeset();
}
addEventListener("load", passageborderalpharangeload);
function passageborderalpharangeset()
{
const c = passagebordercolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passageborderalpharange.value;
passageborderalphanumber.value = a;
text.passagebordercolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passageborderalpharangeupdate()
{
passageborderalpharangeset();
svgupdate();
}
function passageborderalphaexactload()
{
const br = document.createElement("br");
passageborderalpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderalphaexactupdate);
passageborderalpha.append(button);
}
}
addEventListener("load", passageborderalphaexactload);
function passageborderalphaexactupdate(e)
{
passageborderalphanumber.value = Number(e.target.value);
passageborderalphanumberupdate();
}
function passageborderalphaincrementload()
{
const br = document.createElement("br");
passageborderalpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderalphaincrementupdate);
passageborderalpha.append(button);
}
}
addEventListener("load", passageborderalphaincrementload);
function passageborderalphaincrementupdate(e)
{
let v = Number(passageborderalphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((passageborderalphanumber.min <= v) && (v <= passageborderalphanumber.max))
{
passageborderalphanumber.value = v;
passageborderalphanumberupdate();
}
}
function passageborderradiusload()
{
const div = document.createElement("div");
div.id = "passageborderradius";
div.innerHTML = "border-radius";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageborderradiusload);
function passageborderradiusnumberload()
{
const br = document.createElement("br");
passageborderradius.append(br);
const input = document.createElement("input");
input.id = "passageborderradiusnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 50;
input.addEventListener("input", passageborderradiusnumberupdate);
passageborderradius.append(input);
//passageborderradiusnumberset();
}
addEventListener("load", passageborderradiusnumberload);
function passageborderradiusnumberset()
{
const v = Number(passageborderradiusnumber.value);
passageborderradiusrange.value = v;
text.passageborderradius = v;
}
function passageborderradiusnumberupdate()
{
passageborderradiusnumberset();
svgupdate();
}
function passageborderradiusrangeload()
{
const input = document.createElement("input");
input.id = "passageborderradiusrange";
input.max = passageborderradiusnumber.max;
input.min = passageborderradiusnumber.min;
input.type = "range";
input.value = passageborderradiusnumber.value;
input.addEventListener("input", passageborderradiusrangeupdate);
passageborderradius.append(input);
passageborderradiusrangeset();
}
addEventListener("load", passageborderradiusrangeload);
function passageborderradiusrangeset()
{
const v = Number(passageborderradiusrange.value);
passageborderradiusnumber.value = v;
text.passageborderradius = v;
}
function passageborderradiusrangeupdate()
{
passageborderradiusrangeset();
svgupdate();
}
function passageborderradiusexactload()
{
const br = document.createElement("br");
passageborderradius.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderradiusexactupdate);
passageborderradius.append(button);
}
}
addEventListener("load", passageborderradiusexactload);
function passageborderradiusexactupdate(e)
{
passageborderradiusnumber.value = Number(e.target.value);
passageborderradiusnumberupdate();
}
function passageborderradiusincrementload()
{
const br = document.createElement("br");
passageborderradius.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderradiusincrementupdate);
passageborderradius.append(button);
}
}
addEventListener("load", passageborderradiusincrementload);
function passageborderradiusincrementupdate(e)
{
const v = Number(passageborderradiusnumber.value) + Number(e.target.value);
if((passageborderradiusnumber.min <= v) && (v <= passageborderradiusnumber.max))
{
passageborderradiusnumber.value = v;
passageborderradiusnumberupdate();
}
}
function passageborderstyleload()
{
const div = document.createElement("div");
div.id = "passageborderstyle";
div.innerHTML = "border-style";
tabcontentpassage.append(div);
}
addEventListener("load", passageborderstyleload);
function passageborderstyleselectload()
{
const br = document.createElement("br");
passageborderstyle.append(br);
const select = document.createElement("select");
select.id = "passageborderstyleselect";
select.addEventListener("input", passageborderstyleselectupdate);
passageborderstyle.append(select);
for(const value of borderstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
//select.value = borderstylearray[8];
passageborderstyleselectset();
}
addEventListener("load", passageborderstyleselectload);
function passageborderstyleselectset()
{
text.passageborderstyle = passageborderstyleselect.value;
}
function passageborderstyleselectupdate()
{
passageborderstyleselectset();
svgupdate();
}
function passageborderwidthload()
{
const div = document.createElement("div");
div.id = "passageborderwidth";
div.innerHTML = "border-width";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passageborderwidthload);
function passageborderwidthnumberload()
{
const br = document.createElement("br");
passageborderwidth.append(br);
const input = document.createElement("input");
input.id = "passageborderwidthnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 25;
input.addEventListener("input", passageborderwidthnumberupdate);
passageborderwidth.append(input);
//passageborderwidthnumberset();
}
addEventListener("load", passageborderwidthnumberload);
function passageborderwidthnumberset()
{
const v = Number(passageborderwidthnumber.value);
passageborderwidthrange.value = v;
text.passageborderwidth = v;
}
function passageborderwidthnumberupdate()
{
passageborderwidthnumberset();
svgupdate();
}
function passageborderwidthrangeload()
{
const input = document.createElement("input");
input.id = "passageborderwidthrange";
input.max = passageborderwidthnumber.max;
input.min = passageborderwidthnumber.min;
input.type = "range";
input.value = passageborderwidthnumber.value;
input.addEventListener("input", passageborderwidthrangeupdate);
passageborderwidth.append(input);
passageborderwidthrangeset();
}
addEventListener("load", passageborderwidthrangeload);
function passageborderwidthrangeset()
{
const v = Number(passageborderwidthrange.value);
passageborderwidthnumber.value = v;
text.passageborderwidth = v;
}
function passageborderwidthrangeupdate()
{
passageborderwidthrangeset();
svgupdate();
}
function passageborderwidthexactload()
{
const br = document.createElement("br");
passageborderwidth.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderwidthexactupdate);
passageborderwidth.append(button);
}
}
addEventListener("load", passageborderwidthexactload);
function passageborderwidthexactupdate(e)
{
passageborderwidthnumber.value = Number(e.target.value);
passageborderwidthnumberupdate();
}
function passageborderwidthincrementload()
{
const br = document.createElement("br");
passageborderwidth.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passageborderwidthincrementupdate);
passageborderwidth.append(button);
}
}
addEventListener("load", passageborderwidthincrementload);
function passageborderwidthincrementupdate(e)
{
const v = Number(passageborderwidthnumber.value) + Number(e.target.value);
if((passageborderwidthnumber.min <= v) && (v <= passageborderwidthnumber.max))
{
passageborderwidthnumber.value = v;
passageborderwidthnumberupdate();
}
}
function passagehorizontalload()
{
const div = document.createElement("div");
div.id = "passagehorizontal";
div.innerHTML = "horizontal";
tabcontentpassage.append(div);
}
addEventListener("load", passagehorizontalload);
function passagehorizontalselectload()
{
const br = document.createElement("br");
passagehorizontal.append(br);
const select = document.createElement("select");
select.id = "passagehorizontalselect";
select.addEventListener("input", passagehorizontalselectupdate);
passagehorizontal.append(select);
for(const value of horizontalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = horizontalarray[1];
passagehorizontalselectset();
}
addEventListener("load", passagehorizontalselectload);
function passagehorizontalselectset()
{
text.passagehorizontal = passagehorizontalselect.value;
}
function passagehorizontalselectupdate()
{
passagehorizontalselectset();
svgupdate();
}
function passageverticalload()
{
const div = document.createElement("div");
div.id = "passagevertical";
div.innerHTML = "vertical";
tabcontentpassage.append(div);
}
addEventListener("load", passageverticalload);
function passageverticalselectload()
{
const br = document.createElement("br");
passagevertical.append(br);
const select = document.createElement("select");
select.id = "passageverticalselect";
select.addEventListener("input", passageverticalselectupdate);
passagevertical.append(select);
for(const value of verticalarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
select.value = verticalarray[1];
passageverticalselectset();
}
addEventListener("load", passageverticalselectload);
function passageverticalselectset()
{
text.passagevertical = passageverticalselect.value;
}
function passageverticalselectupdate()
{
passageverticalselectset();
svgupdate();
}
function passagewritingmodeload()
{
const div = document.createElement("div");
div.id = "passagewritingmode";
div.innerHTML = "writing-mode";
tabcontentpassage.append(div);
}
addEventListener("load", passagewritingmodeload);
function passagewritingmodeselectload()
{
const br = document.createElement("br");
passagewritingmode.append(br);
const select = document.createElement("select");
select.id = "passagewritingmodeselect";
select.addEventListener("input", passagewritingmodeselectupdate);
passagewritingmode.append(select);
for(const value of writingmodearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagewritingmodeselectset();
}
addEventListener("load", passagewritingmodeselectload);
function passagewritingmodeselectset()
{
text.passagewritingmode = passagewritingmodeselect.value;
}
function passagewritingmodeselectupdate()
{
passagewritingmodeselectset();
svgupdate();
}
function passagefontfamilyload()
{
const div = document.createElement("div");
div.id = "passagefontfamily";
div.innerHTML = "font-family";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontfamilyload);
function passagefontfamilyselectload()
{
const br = document.createElement("br");
passagefontfamily.append(br);
const select = document.createElement("select");
select.id = "passagefontfamilyselect";
select.addEventListener("input", passagefontfamilyselectupdate);
passagefontfamily.append(select);
for(const value of fontfamilyarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontfamilyselectset();
}
addEventListener("load", passagefontfamilyselectload);
function passagefontfamilyselectset()
{
text.passagefontfamily = passagefontfamilyselect.value;
}
function passagefontfamilyselectupdate()
{
passagefontfamilyselectset();
svgupdate();
}
function passagefontsizeload()
{
const div = document.createElement("div");
div.id = "passagefontsize";
div.innerHTML = "font-size";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontsizeload);
function passagefontsizenumberload()
{
const br = document.createElement("br");
passagefontsize.append(br);
const input = document.createElement("input");
input.id = "passagefontsizenumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 60;
input.addEventListener("input", passagefontsizenumberupdate);
passagefontsize.append(input);
//passagefontsizenumberset();
}
addEventListener("load", passagefontsizenumberload);
function passagefontsizenumberset()
{
const v = Number(passagefontsizenumber.value);
passagefontsizerange.value = v;
text.passagefontsize = v;
}
function passagefontsizenumberupdate()
{
passagefontsizenumberset();
svgupdate();
}
function passagefontsizerangeload()
{
const input = document.createElement("input");
input.id = "passagefontsizerange";
input.max = passagefontsizenumber.max;
input.min = passagefontsizenumber.min;
input.type = "range";
input.value = passagefontsizenumber.value;
input.addEventListener("input", passagefontsizerangeupdate);
passagefontsize.append(input);
passagefontsizerangeset();
}
addEventListener("load", passagefontsizerangeload);
function passagefontsizerangeset()
{
const v = Number(passagefontsizerange.value);
passagefontsizenumber.value = v;
text.passagefontsize = v;
}
function passagefontsizerangeupdate()
{
passagefontsizerangeset();
svgupdate();
}
function passagefontsizeexactload()
{
const br = document.createElement("br");
passagefontsize.append(br);
const array =
[
["0",0],
["50",50],
["100",100],
["250",250],
["500",500],
["1000",1000],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefontsizeexactupdate);
passagefontsize.append(button);
}
}
addEventListener("load", passagefontsizeexactload);
function passagefontsizeexactupdate(e)
{
passagefontsizenumber.value = Number(e.target.value);
passagefontsizenumberupdate();
}
function passagefontsizeincrementload()
{
const br = document.createElement("br");
passagefontsize.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefontsizeincrementupdate);
passagefontsize.append(button);
}
}
addEventListener("load", passagefontsizeincrementload);
function passagefontsizeincrementupdate(e)
{
const v = Number(passagefontsizenumber.value) + Number(e.target.value);
if((passagefontsizenumber.min <= v) && (v <= passagefontsizenumber.max))
{
passagefontsizenumber.value = v;
passagefontsizenumberupdate();
}
}
/*
function passagefontsizefitload()
{
const button = document.createElement("button");
button.innerHTML = "fit";
button.addEventListener("click", passagefontsizefitupdate);
passagefontsize.append(button);
}
addEventListener("load", passagefontsizefitload);
function passagefontsizefitupdate()
{
const t = document.createElement("div");
passagefontsize.append(t);
t.innerHTML = text.bookname;
t.style.fontSize = `${passagefontsizenumber.value}px`;
const h1 = text.passagewidth;
const h2 = text.passageheight;
const h3 = t.offsetWidth;
const h4 = t.offsetHeight;
const h5 = passagefontsizenumber.value;
//const h4 = t.offsetParent;//t.style.fontSize;
//const h5 = t.clientHeight;//text.style.height;
//const h6 = text.height;
//const h7 = text.getBoundingClientRect().height;
//const h8 = text.style.lineHeight;
//const h9 = canvas.getBoundingClientRect().height;
console.log(h1, h2, h3, h4, h5);
//t.hidden = true;
if(h2 < h4)
{
passagefontsizenumber.value -= 1;
passagefit();
}
passagefontsizenumberupdate();
}
//*/
function passagefontstyleload()
{
const div = document.createElement("div");
div.id = "passagefontstyle";
div.innerHTML = "font-style";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontstyleload);
function passagefontstyleselectload()
{
const br = document.createElement("br");
passagefontstyle.append(br);
const select = document.createElement("select");
select.id = "passagefontstyleselect";
select.addEventListener("input", passagefontstyleselectupdate);
passagefontstyle.append(select);
for(const value of fontstylearray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontstyleselectset();
}
addEventListener("load", passagefontstyleselectload);
function passagefontstyleselectset()
{
text.passagefontstyle = passagefontstyleselect.value;
}
function passagefontstyleselectupdate()
{
passagefontstyleselectset();
svgupdate();
}
function passagefontvariantload()
{
const div = document.createElement("div");
div.id = "passagefontvariant";
div.innerHTML = "font-variant";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontvariantload);
function passagefontvariantselectload()
{
const br = document.createElement("br");
passagefontvariant.append(br);
const select = document.createElement("select");
select.id = "passagefontvariantselect";
select.addEventListener("input", passagefontvariantselectupdate);
passagefontvariant.append(select);
for(const value of fontvariantarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontvariantselectset();
}
addEventListener("load", passagefontvariantselectload);
function passagefontvariantselectset()
{
text.passagefontvariant = passagefontvariantselect.value;
}
function passagefontvariantselectupdate()
{
passagefontvariantselectset();
svgupdate();
}
function passagefontweightload()
{
const div = document.createElement("div");
div.id = "passagefontweight";
div.innerHTML = "font-weight";
tabcontentpassage.append(div);
}
addEventListener("load", passagefontweightload);
function passagefontweightselectload()
{
const br = document.createElement("br");
passagefontweight.append(br);
const select = document.createElement("select");
select.id = "passagefontweightselect";
select.addEventListener("input", passagefontweightselectupdate);
passagefontweight.append(select);
for(const value of fontweightarray)
{
const option = document.createElement("option");
option.innerHTML = value;
select.add(option);
}
passagefontweightselectset();
}
addEventListener("load", passagefontweightselectload);
function passagefontweightselectset()
{
text.passagefontweight = passagefontweightselect.value;
}
function passagefontweightselectupdate()
{
passagefontweightselectset();
svgupdate();
}
function passagecolorload()
{
const div = document.createElement("div");
div.id = "passagecolor";
div.innerHTML = "color";
tabcontentpassage.append(div);
}
addEventListener("load", passagecolorload);
function passagecolorcolorload()
{
const br = document.createElement("br");
passagecolor.append(br);
const input = document.createElement("input");
input.id = "passagecolorcolor";
input.type = "color";
input.value = "#000000";
input.addEventListener("input", passagecolorcolorupdate);
passagecolor.append(input);
//passagecolorcolorset();
}
addEventListener("load", passagecolorcolorload);
function passagecolorcolorset()
{
const c = passagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagealphanumber.value;
text.passagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagecolorcolorupdate()
{
passagecolorcolorset();
svgupdate();
}
function passagecolorexactload()
{
const br = document.createElement("br");
passagecolor.append(br);
const array =
[
["black","#000000"],
["white","#ffffff"],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagecolorexactupdate);
passagecolor.append(button);
}
}
addEventListener("load", passagecolorexactload);
function passagecolorexactupdate(e)
{
passagecolorcolor.value = e.target.value;
passagecolorcolorupdate();
}
function passagealphaload()
{
const div = document.createElement("div");
div.id = "passagealpha";
div.innerHTML = "alpha";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagealphaload);
function passagealphanumberload()
{
const br = document.createElement("br");
passagealpha.append(br);
const input = document.createElement("input");
input.id = "passagealphanumber";
input.max = 1;
input.min = 0;
input.step = 0.01;
input.type = "number";
input.value = 1;
input.addEventListener("input", passagealphanumberupdate);
passagealpha.append(input);
//passagealphanumberset();
}
addEventListener("load", passagealphanumberload);
function passagealphanumberset()
{
const c = passagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagealphanumber.value;
passagealpharange.value = a;
text.passagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagealphanumberupdate()
{
passagealphanumberset();
svgupdate();
}
function passagealpharangeload()
{
const input = document.createElement("input");
input.id = "passagealpharange";
input.max = passagealphanumber.max;
input.min = passagealphanumber.min;
input.step = passagealphanumber.step;
input.type = "range";
input.value = passagealphanumber.value;
input.addEventListener("input", passagealpharangeupdate);
passagealpha.append(input);
passagealpharangeset();
}
addEventListener("load", passagealpharangeload);
function passagealpharangeset()
{
const c = passagecolorcolor.value;
const r = parseInt(c.slice(1,3),16);
const g = parseInt(c.slice(3,5),16);
const b = parseInt(c.slice(5,7),16);
const a = passagealpharange.value;
passagealphanumber.value = a;
text.passagecolor = `rgb(${r} ${g} ${b} / ${a})`;
}
function passagealpharangeupdate()
{
passagealpharangeset();
svgupdate();
}
function passagealphaexactload()
{
const br = document.createElement("br");
passagealpha.append(br);
const array =
[
["0",0],
["0.25",0.25],
["0.5",0.5],
["0.75",0.75],
["1",1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagealphaexactupdate);
passagealpha.append(button);
}
}
addEventListener("load", passagealphaexactload);
function passagealphaexactupdate(e)
{
passagealphanumber.value = Number(e.target.value);
passagealphanumberupdate();
}
function passagealphaincrementload()
{
const br = document.createElement("br");
passagealpha.append(br);
const array =
[
["-0.1",-0.1],
["-0.01",-0.01],
["+0.01",0.01],
["+0.1",0.1],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagealphaincrementupdate);
passagealpha.append(button);
}
}
addEventListener("load", passagealphaincrementload);
function passagealphaincrementupdate(e)
{
let v = Number(passagealphanumber.value) + Number(e.target.value);
v = parseFloat(v.toFixed(2));
if((passagealphanumber.min <= v) && (v <= passagealphanumber.max))
{
passagealphanumber.value = v;
passagealphanumberupdate();
}
}
/*leftoff
function passagefilterblurload()
{
const div = document.createElement("div");
div.id = "passagefilterblur";
div.innerHTML = "filter-blur";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterblurload);
function passagefilterblurnumberload()
{
const br = document.createElement("br");
passagefilterblur.append(br);
const input = document.createElement("input");
input.id = "passagefilterblurnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefilterblurnumberupdate);
passagefilterblur.append(input);
//passagefilterblurnumberset();
}
addEventListener("load", passagefilterblurnumberload);
function passagefilterblurnumberset()
{
const v = passagefilterblurnumber.value;
passagefilterblurrange.value = v;
text.passagebackdropfilterblur = v;
}
function passagefilterblurnumberupdate()
{
passagefilterblurnumberset();
svgupdate();
}
function passagefilterblurrangeload()
{
const input = document.createElement("input");
input.id = "passagefilterblurrange";
input.max = passagefilterblurnumber.max;
input.min = passagefilterblurnumber.min;
input.step = passagefilterblurnumber.step;
input.type = "range";
input.value = passagefilterblurnumber.value;
input.addEventListener("input", passagefilterblurrangeupdate);
passagefilterblur.append(input);
passagefilterblurrangeset();
}
addEventListener("load", passagefilterblurrangeload);
function passagefilterblurrangeset()
{
const v = passagefilterblurrange.value;
passagefilterblurnumber.value = v;
text.passagebackdropfilterblur = v;
}
function passagefilterblurrangeupdate()
{
passagefilterblurrangeset();
svgupdate();
}
function passagefilterblurexactload()
{
const br = document.createElement("br");
passagefilterblur.append(br);
const array =
[
["0",0],
["2",2],
["4",4],
["8",8],
["16",16],
["32",32],
["64",64],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterblurexactupdate);
passagefilterblur.append(button);
}
}
addEventListener("load", passagefilterblurexactload);
function passagefilterblurexactupdate(e)
{
passagefilterblurnumber.value = Number(e.target.value);
passagefilterblurnumberupdate();
}
function passagefilterblurincrementload()
{
const br = document.createElement("br");
passagefilterblur.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterblurincrementupdate);
passagefilterblur.append(button);
}
}
addEventListener("load", passagefilterblurincrementload);
function passagefilterblurincrementupdate(e)
{
const v = Number(passagefilterblurnumber.value) + Number(e.target.value);
if((passagefilterblurnumber.min <= v) && (v <= passagefilterblurnumber.max))
{
passagefilterblurnumber.value = v;
passagefilterblurnumberupdate();
}
}
function passagefilterbrightnessload()
{
const div = document.createElement("div");
div.id = "passagefilterbrightness";
div.innerHTML = "filter-brightness";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterbrightnessload);
function passagefilterbrightnessnumberload()
{
const br = document.createElement("br");
passagefilterbrightness.append(br);
const input = document.createElement("input");
input.id = "passagefilterbrightnessnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", passagefilterbrightnessnumberupdate);
passagefilterbrightness.append(input);
//passagefilterbrightnessnumberset();
}
addEventListener("load", passagefilterbrightnessnumberload);
function passagefilterbrightnessnumberset()
{
const v = passagefilterbrightnessnumber.value;
passagefilterbrightnessrange.value = v;
text.passagebackdropfilterbrightness = v;
}
function passagefilterbrightnessnumberupdate()
{
passagefilterbrightnessnumberset();
svgupdate();
}
function passagefilterbrightnessrangeload()
{
const input = document.createElement("input");
input.id = "passagefilterbrightnessrange";
input.max = passagefilterbrightnessnumber.max;
input.min = passagefilterbrightnessnumber.min;
input.step = passagefilterbrightnessnumber.step;
input.type = "range";
input.value = passagefilterbrightnessnumber.value;
input.addEventListener("input", passagefilterbrightnessrangeupdate);
passagefilterbrightness.append(input);
passagefilterbrightnessrangeset();
}
addEventListener("load", passagefilterbrightnessrangeload);
function passagefilterbrightnessrangeset()
{
const v = passagefilterbrightnessrange.value;
passagefilterbrightnessnumber.value = v;
text.passagebackdropfilterbrightness = v;
}
function passagefilterbrightnessrangeupdate()
{
passagefilterbrightnessrangeset();
svgupdate();
}
function passagefilterbrightnessexactload()
{
const br = document.createElement("br");
passagefilterbrightness.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterbrightnessexactupdate);
passagefilterbrightness.append(button);
}
}
addEventListener("load", passagefilterbrightnessexactload);
function passagefilterbrightnessexactupdate(e)
{
passagefilterbrightnessnumber.value = Number(e.target.value);
passagefilterbrightnessnumberupdate();
}
function passagefilterbrightnessincrementload()
{
const br = document.createElement("br");
passagefilterbrightness.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterbrightnessincrementupdate);
passagefilterbrightness.append(button);
}
}
addEventListener("load", passagefilterbrightnessincrementload);
function passagefilterbrightnessincrementupdate(e)
{
const v = Number(passagefilterbrightnessnumber.value) + Number(e.target.value);
if((passagefilterbrightnessnumber.min <= v) && (v <= passagefilterbrightnessnumber.max))
{
passagefilterbrightnessnumber.value = v;
passagefilterbrightnessnumberupdate();
}
}
function passagefiltercontrastload()
{
const div = document.createElement("div");
div.id = "passagefiltercontrast";
div.innerHTML = "filter-contrast";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltercontrastload);
function passagefiltercontrastnumberload()
{
const br = document.createElement("br");
passagefiltercontrast.append(br);
const input = document.createElement("input");
input.id = "passagefiltercontrastnumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", passagefiltercontrastnumberupdate);
passagefiltercontrast.append(input);
//passagefiltercontrastnumberset();
}
addEventListener("load", passagefiltercontrastnumberload);
function passagefiltercontrastnumberset()
{
const v = passagefiltercontrastnumber.value;
passagefiltercontrastrange.value = v;
text.passagebackdropfiltercontrast = v;
}
function passagefiltercontrastnumberupdate()
{
passagefiltercontrastnumberset();
svgupdate();
}
function passagefiltercontrastrangeload()
{
const input = document.createElement("input");
input.id = "passagefiltercontrastrange";
input.max = passagefiltercontrastnumber.max;
input.min = passagefiltercontrastnumber.min;
input.step = passagefiltercontrastnumber.step;
input.type = "range";
input.value = passagefiltercontrastnumber.value;
input.addEventListener("input", passagefiltercontrastrangeupdate);
passagefiltercontrast.append(input);
passagefiltercontrastrangeset();
}
addEventListener("load", passagefiltercontrastrangeload);
function passagefiltercontrastrangeset()
{
const v = passagefiltercontrastrange.value;
passagefiltercontrastnumber.value = v;
text.passagebackdropfiltercontrast = v;
}
function passagefiltercontrastrangeupdate()
{
passagefiltercontrastrangeset();
svgupdate();
}
function passagefiltercontrastexactload()
{
const br = document.createElement("br");
passagefiltercontrast.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltercontrastexactupdate);
passagefiltercontrast.append(button);
}
}
addEventListener("load", passagefiltercontrastexactload);
function passagefiltercontrastexactupdate(e)
{
passagefiltercontrastnumber.value = Number(e.target.value);
passagefiltercontrastnumberupdate();
}
function passagefiltercontrastincrementload()
{
const br = document.createElement("br");
passagefiltercontrast.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltercontrastincrementupdate);
passagefiltercontrast.append(button);
}
}
addEventListener("load", passagefiltercontrastincrementload);
function passagefiltercontrastincrementupdate(e)
{
const v = Number(passagefiltercontrastnumber.value) + Number(e.target.value);
if((passagefiltercontrastnumber.min <= v) && (v <= passagefiltercontrastnumber.max))
{
passagefiltercontrastnumber.value = v;
passagefiltercontrastnumberupdate();
}
}
function passagefiltergrayscaleload()
{
const div = document.createElement("div");
div.id = "passagefiltergrayscale";
div.innerHTML = "filter-grayscale";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltergrayscaleload);
function passagefiltergrayscalenumberload()
{
const br = document.createElement("br");
passagefiltergrayscale.append(br);
const input = document.createElement("input");
input.id = "passagefiltergrayscalenumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefiltergrayscalenumberupdate);
passagefiltergrayscale.append(input);
//passagefiltergrayscalenumberset();
}
addEventListener("load", passagefiltergrayscalenumberload);
function passagefiltergrayscalenumberset()
{
const v = passagefiltergrayscalenumber.value;
passagefiltergrayscalerange.value = v;
text.passagebackdropfiltergrayscale = v;
}
function passagefiltergrayscalenumberupdate()
{
passagefiltergrayscalenumberset();
svgupdate();
}
function passagefiltergrayscalerangeload()
{
const input = document.createElement("input");
input.id = "passagefiltergrayscalerange";
input.max = passagefiltergrayscalenumber.max;
input.min = passagefiltergrayscalenumber.min;
input.step = passagefiltergrayscalenumber.step;
input.type = "range";
input.value = passagefiltergrayscalenumber.value;
input.addEventListener("input", passagefiltergrayscalerangeupdate);
passagefiltergrayscale.append(input);
passagefiltergrayscalerangeset();
}
addEventListener("load", passagefiltergrayscalerangeload);
function passagefiltergrayscalerangeset()
{
const v = passagefiltergrayscalerange.value;
passagefiltergrayscalenumber.value = v;
text.passagebackdropfiltergrayscale = v;
}
function passagefiltergrayscalerangeupdate()
{
passagefiltergrayscalerangeset();
svgupdate();
}
function passagefiltergrayscaleexactload()
{
const br = document.createElement("br");
passagefiltergrayscale.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltergrayscaleexactupdate);
passagefiltergrayscale.append(button);
}
}
addEventListener("load", passagefiltergrayscaleexactload);
function passagefiltergrayscaleexactupdate(e)
{
passagefiltergrayscalenumber.value = Number(e.target.value);
passagefiltergrayscalenumberupdate();
}
function passagefiltergrayscaleincrementload()
{
const br = document.createElement("br");
passagefiltergrayscale.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltergrayscaleincrementupdate);
passagefiltergrayscale.append(button);
}
}
addEventListener("load", passagefiltergrayscaleincrementload);
function passagefiltergrayscaleincrementupdate(e)
{
const v = Number(passagefiltergrayscalenumber.value) + Number(e.target.value);
if((passagefiltergrayscalenumber.min <= v) && (v <= passagefiltergrayscalenumber.max))
{
passagefiltergrayscalenumber.value = v;
passagefiltergrayscalenumberupdate();
}
}
function passagefilterhuerotateload()
{
const div = document.createElement("div");
div.id = "passagefilterhuerotate";
div.innerHTML = "filter-hue-rotate";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterhuerotateload);
function passagefilterhuerotatenumberload()
{
const br = document.createElement("br");
passagefilterhuerotate.append(br);
const input = document.createElement("input");
input.id = "passagefilterhuerotatenumber";
input.max = 360;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefilterhuerotatenumberupdate);
passagefilterhuerotate.append(input);
//passagefilterhuerotatenumberset();
}
addEventListener("load", passagefilterhuerotatenumberload);
function passagefilterhuerotatenumberset()
{
const v = passagefilterhuerotatenumber.value;
passagefilterhuerotaterange.value = v;
text.passagebackdropfilterhuerotate = v;
}
function passagefilterhuerotatenumberupdate()
{
passagefilterhuerotatenumberset();
svgupdate();
}
function passagefilterhuerotaterangeload()
{
const input = document.createElement("input");
input.id = "passagefilterhuerotaterange";
input.max = passagefilterhuerotatenumber.max;
input.min = passagefilterhuerotatenumber.min;
input.step = passagefilterhuerotatenumber.step;
input.type = "range";
input.value = passagefilterhuerotatenumber.value;
input.addEventListener("input", passagefilterhuerotaterangeupdate);
passagefilterhuerotate.append(input);
passagefilterhuerotaterangeset();
}
addEventListener("load", passagefilterhuerotaterangeload);
function passagefilterhuerotaterangeset()
{
const v = passagefilterhuerotaterange.value;
passagefilterhuerotatenumber.value = v;
text.passagebackdropfilterhuerotate = v;
}
function passagefilterhuerotaterangeupdate()
{
passagefilterhuerotaterangeset();
svgupdate();
}
function passagefilterhuerotateexactload()
{
const br = document.createElement("br");
passagefilterhuerotate.append(br);
const array =
[
["0",0],
["90",90],
["180",180],
["270",270],
["360",360],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterhuerotateexactupdate);
passagefilterhuerotate.append(button);
}
}
addEventListener("load", passagefilterhuerotateexactload);
function passagefilterhuerotateexactupdate(e)
{
passagefilterhuerotatenumber.value = Number(e.target.value);
passagefilterhuerotatenumberupdate();
}
function passagefilterhuerotateincrementload()
{
const br = document.createElement("br");
passagefilterhuerotate.append(br);
const array =
[
//["-90",-90],
["-45",-45],
["-15",-15],
["-1",-1],
["+1",1],
["+15",15],
["+45",45],
//["+90",90],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterhuerotateincrementupdate);
passagefilterhuerotate.append(button);
}
}
addEventListener("load", passagefilterhuerotateincrementload);
function passagefilterhuerotateincrementupdate(e)
{
const v = Number(passagefilterhuerotatenumber.value) + Number(e.target.value);
if((passagefilterhuerotatenumber.min <= v) && (v <= passagefilterhuerotatenumber.max))
{
passagefilterhuerotatenumber.value = v;
passagefilterhuerotatenumberupdate();
}
}
function passagefilterinvertload()
{
const div = document.createElement("div");
div.id = "passagefilterinvert";
div.innerHTML = "filter-invert";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefilterinvertload);
function passagefilterinvertnumberload()
{
const br = document.createElement("br");
passagefilterinvert.append(br);
const input = document.createElement("input");
input.id = "passagefilterinvertnumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefilterinvertnumberupdate);
passagefilterinvert.append(input);
//passagefilterinvertnumberset();
}
addEventListener("load", passagefilterinvertnumberload);
function passagefilterinvertnumberset()
{
const v = passagefilterinvertnumber.value;
passagefilterinvertrange.value = v;
text.passagebackdropfilterinvert = v;
}
function passagefilterinvertnumberupdate()
{
passagefilterinvertnumberset();
svgupdate();
}
function passagefilterinvertrangeload()
{
const input = document.createElement("input");
input.id = "passagefilterinvertrange";
input.max = passagefilterinvertnumber.max;
input.min = passagefilterinvertnumber.min;
input.step = passagefilterinvertnumber.step;
input.type = "range";
input.value = passagefilterinvertnumber.value;
input.addEventListener("input", passagefilterinvertrangeupdate);
passagefilterinvert.append(input);
passagefilterinvertrangeset();
}
addEventListener("load", passagefilterinvertrangeload);
function passagefilterinvertrangeset()
{
const v = passagefilterinvertrange.value;
passagefilterinvertnumber.value = v;
text.passagebackdropfilterinvert = v;
}
function passagefilterinvertrangeupdate()
{
passagefilterinvertrangeset();
svgupdate();
}
function passagefilterinvertexactload()
{
const br = document.createElement("br");
passagefilterinvert.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterinvertexactupdate);
passagefilterinvert.append(button);
}
}
addEventListener("load", passagefilterinvertexactload);
function passagefilterinvertexactupdate(e)
{
passagefilterinvertnumber.value = Number(e.target.value);
passagefilterinvertnumberupdate();
}
function passagefilterinvertincrementload()
{
const br = document.createElement("br");
passagefilterinvert.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefilterinvertincrementupdate);
passagefilterinvert.append(button);
}
}
addEventListener("load", passagefilterinvertincrementload);
function passagefilterinvertincrementupdate(e)
{
const v = Number(passagefilterinvertnumber.value) + Number(e.target.value);
if((passagefilterinvertnumber.min <= v) && (v <= passagefilterinvertnumber.max))
{
passagefilterinvertnumber.value = v;
passagefilterinvertnumberupdate();
}
}
function passagefiltersaturateload()
{
const div = document.createElement("div");
div.id = "passagefiltersaturate";
div.innerHTML = "filter-saturate";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltersaturateload);
function passagefiltersaturatenumberload()
{
const br = document.createElement("br");
passagefiltersaturate.append(br);
const input = document.createElement("input");
input.id = "passagefiltersaturatenumber";
input.max = 1000;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 100;
input.addEventListener("input", passagefiltersaturatenumberupdate);
passagefiltersaturate.append(input);
//passagefiltersaturatenumberset();
}
addEventListener("load", passagefiltersaturatenumberload);
function passagefiltersaturatenumberset()
{
const v = passagefiltersaturatenumber.value;
passagefiltersaturaterange.value = v;
text.passagebackdropfiltersaturate = v;
}
function passagefiltersaturatenumberupdate()
{
passagefiltersaturatenumberset();
svgupdate();
}
function passagefiltersaturaterangeload()
{
const input = document.createElement("input");
input.id = "passagefiltersaturaterange";
input.max = passagefiltersaturatenumber.max;
input.min = passagefiltersaturatenumber.min;
input.step = passagefiltersaturatenumber.step;
input.type = "range";
input.value = passagefiltersaturatenumber.value;
input.addEventListener("input", passagefiltersaturaterangeupdate);
passagefiltersaturate.append(input);
passagefiltersaturaterangeset();
}
addEventListener("load", passagefiltersaturaterangeload);
function passagefiltersaturaterangeset()
{
const v = passagefiltersaturaterange.value;
passagefiltersaturatenumber.value = v;
text.passagebackdropfiltersaturate = v;
}
function passagefiltersaturaterangeupdate()
{
passagefiltersaturaterangeset();
svgupdate();
}
function passagefiltersaturateexactload()
{
const br = document.createElement("br");
passagefiltersaturate.append(br);
const array =
[
["0",0],
["50",50],
["100 (initial)",100],
["150",150],
["200",200],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersaturateexactupdate);
passagefiltersaturate.append(button);
}
}
addEventListener("load", passagefiltersaturateexactload);
function passagefiltersaturateexactupdate(e)
{
passagefiltersaturatenumber.value = Number(e.target.value);
passagefiltersaturatenumberupdate();
}
function passagefiltersaturateincrementload()
{
const br = document.createElement("br");
passagefiltersaturate.append(br);
const array =
[
["-100",-100],
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
["+100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersaturateincrementupdate);
passagefiltersaturate.append(button);
}
}
addEventListener("load", passagefiltersaturateincrementload);
function passagefiltersaturateincrementupdate(e)
{
const v = Number(passagefiltersaturatenumber.value) + Number(e.target.value);
if((passagefiltersaturatenumber.min <= v) && (v <= passagefiltersaturatenumber.max))
{
passagefiltersaturatenumber.value = v;
passagefiltersaturatenumberupdate();
}
}
function passagefiltersepiaload()
{
const div = document.createElement("div");
div.id = "passagefiltersepia";
div.innerHTML = "filter-sepia";
tabcontentpassage.append(div);
const style = div.style;
style.overflowY = "hidden";
style.whiteSpace = "nowrap";
}
addEventListener("load", passagefiltersepiaload);
function passagefiltersepianumberload()
{
const br = document.createElement("br");
passagefiltersepia.append(br);
const input = document.createElement("input");
input.id = "passagefiltersepianumber";
input.max = 100;
input.min = 0;
input.step = 1;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagefiltersepianumberupdate);
passagefiltersepia.append(input);
//passagefiltersepianumberset();
}
addEventListener("load", passagefiltersepianumberload);
function passagefiltersepianumberset()
{
const v = passagefiltersepianumber.value;
passagefiltersepiarange.value = v;
text.passagebackdropfiltersepia = v;
}
function passagefiltersepianumberupdate()
{
passagefiltersepianumberset();
svgupdate();
}
function passagefiltersepiarangeload()
{
const input = document.createElement("input");
input.id = "passagefiltersepiarange";
input.max = passagefiltersepianumber.max;
input.min = passagefiltersepianumber.min;
input.step = passagefiltersepianumber.step;
input.type = "range";
input.value = passagefiltersepianumber.value;
input.addEventListener("input", passagefiltersepiarangeupdate);
passagefiltersepia.append(input);
passagefiltersepiarangeset();
}
addEventListener("load", passagefiltersepiarangeload);
function passagefiltersepiarangeset()
{
const v = passagefiltersepiarange.value;
passagefiltersepianumber.value = v;
text.passagebackdropfiltersepia = v;
}
function passagefiltersepiarangeupdate()
{
passagefiltersepiarangeset();
svgupdate();
}
function passagefiltersepiaexactload()
{
const br = document.createElement("br");
passagefiltersepia.append(br);
const array =
[
["0",0],
["25",25],
["50",50],
["75",75],
["100",100],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersepiaexactupdate);
passagefiltersepia.append(button);
}
}
addEventListener("load", passagefiltersepiaexactload);
function passagefiltersepiaexactupdate(e)
{
passagefiltersepianumber.value = Number(e.target.value);
passagefiltersepianumberupdate();
}
function passagefiltersepiaincrementload()
{
const br = document.createElement("br");
passagefiltersepia.append(br);
const array =
[
["-10",-10],
["-1",-1],
["+1",1],
["+10",10],
];
for(const value of array)
{
const button = document.createElement("button");
button.innerHTML = value[0];
button.value = value[1];
button.addEventListener("click", passagefiltersepiaincrementupdate);
passagefiltersepia.append(button);
}
}
addEventListener("load", passagefiltersepiaincrementload);
function passagefiltersepiaincrementupdate(e)
{
const v = Number(passagefiltersepianumber.value) + Number(e.target.value);
if((passagefiltersepianumber.min <= v) && (v <= passagefiltersepianumber.max))
{
passagefiltersepianumber.value = v;
passagefiltersepianumberupdate();
}
}
//*/
/*
function passagemargintopload()
{
const div = document.createElement("div");
div.id = "passagemargintop";
div.innerHTML = "margin-top";
tabcontentpassage.append(div);
}
addEventListener("load", passagemargintopload);
function passagemargintopnumberload()
{
const br = document.createElement("br");
passagemargintop.append(br);
const input = document.createElement("input");
input.id = "passagemargintopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemargintopnumberupdate);
passagemargintop.append(input);
//passagemargintopnumberset();
}
addEventListener("load", passagemargintopnumberload);
function passagemargintopnumberset()
{
const v = Number(passagemargintopnumber.value);
passagemargintoprange.value = v;
text.passagemargintop = v;
}
function passagemargintopnumberupdate()
{
passagemargintopnumberset();
svgupdate();
}
function passagemargintoprangeload()
{
const input = document.createElement("input");
input.id = "passagemargintoprange";
input.max = passagemargintopnumber.max;
input.min = passagemargintopnumber.min;
input.type = "range";
input.value = passagemargintopnumber.value;
input.addEventListener("input", passagemargintoprangeupdate);
passagemargintop.append(input);
passagemargintoprangeset();
}
addEventListener("load", passagemargintoprangeload);
function passagemargintoprangeset()
{
const v = Number(passagemargintoprange.value);
passagemargintopnumber.value = v;
text.passagemargintop = v;
}
function passagemargintoprangeupdate()
{
passagemargintoprangeset();
svgupdate();
}
function passagemarginbottomload()
{
const div = document.createElement("div");
div.id = "passagemarginbottom";
div.innerHTML = "margin-bottom";
tabcontentpassage.append(div);
}
addEventListener("load", passagemarginbottomload);
function passagemarginbottomnumberload()
{
const br = document.createElement("br");
passagemarginbottom.append(br);
const input = document.createElement("input");
input.id = "passagemarginbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemarginbottomnumberupdate);
passagemarginbottom.append(input);
//passagemarginbottomnumberset();
}
addEventListener("load", passagemarginbottomnumberload);
function passagemarginbottomnumberset()
{
const v = Number(passagemarginbottomnumber.value);
passagemarginbottomrange.value = v;
text.passagemarginbottom = v;
}
function passagemarginbottomnumberupdate()
{
passagemarginbottomnumberset();
svgupdate();
}
function passagemarginbottomrangeload()
{
const input = document.createElement("input");
input.id = "passagemarginbottomrange";
input.max = passagemarginbottomnumber.max;
input.min = passagemarginbottomnumber.min;
input.type = "range";
input.value = passagemarginbottomnumber.value;
input.addEventListener("input", passagemarginbottomrangeupdate);
passagemarginbottom.append(input);
passagemarginbottomrangeset();
}
addEventListener("load", passagemarginbottomrangeload);
function passagemarginbottomrangeset()
{
const v = Number(passagemarginbottomrange.value);
passagemarginbottomnumber.value = v;
text.passagemarginbottom = v;
}
function passagemarginbottomrangeupdate()
{
passagemarginbottomrangeset();
svgupdate();
}
function passagemarginleftload()
{
const div = document.createElement("div");
div.id = "passagemarginleft";
div.innerHTML = "margin-left";
tabcontentpassage.append(div);
}
addEventListener("load", passagemarginleftload);
function passagemarginleftnumberload()
{
const br = document.createElement("br");
passagemarginleft.append(br);
const input = document.createElement("input");
input.id = "passagemarginleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemarginleftnumberupdate);
passagemarginleft.append(input);
//passagemarginleftnumberset();
}
addEventListener("load", passagemarginleftnumberload);
function passagemarginleftnumberset()
{
const v = Number(passagemarginleftnumber.value);
passagemarginleftrange.value = v;
text.passagemarginleft = v;
}
function passagemarginleftnumberupdate()
{
passagemarginleftnumberset();
svgupdate();
}
function passagemarginleftrangeload()
{
const input = document.createElement("input");
input.id = "passagemarginleftrange";
input.max = passagemarginleftnumber.max;
input.min = passagemarginleftnumber.min;
input.type = "range";
input.value = passagemarginleftnumber.value;
input.addEventListener("input", passagemarginleftrangeupdate);
passagemarginleft.append(input);
passagemarginleftrangeset();
}
addEventListener("load", passagemarginleftrangeload);
function passagemarginleftrangeset()
{
const v = Number(passagemarginleftrange.value);
passagemarginleftnumber.value = v;
text.passagemarginleft = v;
}
function passagemarginleftrangeupdate()
{
passagemarginleftrangeset();
svgupdate();
}
function passagemarginrightload()
{
const div = document.createElement("div");
div.id = "passagemarginright";
div.innerHTML = "margin-right";
tabcontentpassage.append(div);
}
addEventListener("load", passagemarginrightload);
function passagemarginrightnumberload()
{
const br = document.createElement("br");
passagemarginright.append(br);
const input = document.createElement("input");
input.id = "passagemarginrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagemarginrightnumberupdate);
passagemarginright.append(input);
//passagemarginrightnumberset();
}
addEventListener("load", passagemarginrightnumberload);
function passagemarginrightnumberset()
{
const v = Number(passagemarginrightnumber.value);
passagemarginrightrange.value = v;
text.passagemarginright = v;
}
function passagemarginrightnumberupdate()
{
passagemarginrightnumberset();
svgupdate();
}
function passagemarginrightrangeload()
{
const input = document.createElement("input");
input.id = "passagemarginrightrange";
input.max = passagemarginrightnumber.max;
input.min = passagemarginrightnumber.min;
input.type = "range";
input.value = passagemarginrightnumber.value;
input.addEventListener("input", passagemarginrightrangeupdate);
passagemarginright.append(input);
passagemarginrightrangeset();
}
addEventListener("load", passagemarginrightrangeload);
function passagemarginrightrangeset()
{
const v = Number(passagemarginrightrange.value);
passagemarginrightnumber.value = v;
text.passagemarginright = v;
}
function passagemarginrightrangeupdate()
{
passagemarginrightrangeset();
svgupdate();
}
function passagepaddingtopload()
{
const div = document.createElement("div");
div.id = "passagepaddingtop";
div.innerHTML = "padding-top";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingtopload);
function passagepaddingtopnumberload()
{
const br = document.createElement("br");
passagepaddingtop.append(br);
const input = document.createElement("input");
input.id = "passagepaddingtopnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingtopnumberupdate);
passagepaddingtop.append(input);
//passagepaddingtopnumberset();
}
addEventListener("load", passagepaddingtopnumberload);
function passagepaddingtopnumberset()
{
const v = Number(passagepaddingtopnumber.value);
passagepaddingtoprange.value = v;
text.passagepaddingtop = v;
}
function passagepaddingtopnumberupdate()
{
passagepaddingtopnumberset();
svgupdate();
}
function passagepaddingtoprangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingtoprange";
input.max = passagepaddingtopnumber.max;
input.min = passagepaddingtopnumber.min;
input.type = "range";
input.value = passagepaddingtopnumber.value;
input.addEventListener("input", passagepaddingtoprangeupdate);
passagepaddingtop.append(input);
passagepaddingtoprangeset();
}
addEventListener("load", passagepaddingtoprangeload);
function passagepaddingtoprangeset()
{
const v = Number(passagepaddingtoprange.value);
passagepaddingtopnumber.value = v;
text.passagepaddingtop = v;
}
function passagepaddingtoprangeupdate()
{
passagepaddingtoprangeset();
svgupdate();
}
function passagepaddingbottomload()
{
const div = document.createElement("div");
div.id = "passagepaddingbottom";
div.innerHTML = "padding-bottom";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingbottomload);
function passagepaddingbottomnumberload()
{
const br = document.createElement("br");
passagepaddingbottom.append(br);
const input = document.createElement("input");
input.id = "passagepaddingbottomnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingbottomnumberupdate);
passagepaddingbottom.append(input);
//passagepaddingbottomnumberset();
}
addEventListener("load", passagepaddingbottomnumberload);
function passagepaddingbottomnumberset()
{
const v = Number(passagepaddingbottomnumber.value);
passagepaddingbottomrange.value = v;
text.passagepaddingbottom = v;
}
function passagepaddingbottomnumberupdate()
{
passagepaddingbottomnumberset();
svgupdate();
}
function passagepaddingbottomrangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingbottomrange";
input.max = passagepaddingbottomnumber.max;
input.min = passagepaddingbottomnumber.min;
input.type = "range";
input.value = passagepaddingbottomnumber.value;
input.addEventListener("input", passagepaddingbottomrangeupdate);
passagepaddingbottom.append(input);
passagepaddingbottomrangeset();
}
addEventListener("load", passagepaddingbottomrangeload);
function passagepaddingbottomrangeset()
{
const v = Number(passagepaddingbottomrange.value);
passagepaddingbottomnumber.value = v;
text.passagepaddingbottom = v;
}
function passagepaddingbottomrangeupdate()
{
passagepaddingbottomrangeset();
svgupdate();
}
function passagepaddingleftload()
{
const div = document.createElement("div");
div.id = "passagepaddingleft";
div.innerHTML = "padding-left";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingleftload);
function passagepaddingleftnumberload()
{
const br = document.createElement("br");
passagepaddingleft.append(br);
const input = document.createElement("input");
input.id = "passagepaddingleftnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingleftnumberupdate);
passagepaddingleft.append(input);
//passagepaddingleftnumberset();
}
addEventListener("load", passagepaddingleftnumberload);
function passagepaddingleftnumberset()
{
const v = Number(passagepaddingleftnumber.value);
passagepaddingleftrange.value = v;
text.passagepaddingleft = v;
}
function passagepaddingleftnumberupdate()
{
passagepaddingleftnumberset();
svgupdate();
}
function passagepaddingleftrangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingleftrange";
input.max = passagepaddingleftnumber.max;
input.min = passagepaddingleftnumber.min;
input.type = "range";
input.value = passagepaddingleftnumber.value;
input.addEventListener("input", passagepaddingleftrangeupdate);
passagepaddingleft.append(input);
passagepaddingleftrangeset();
}
addEventListener("load", passagepaddingleftrangeload);
function passagepaddingleftrangeset()
{
const v = Number(passagepaddingleftrange.value);
passagepaddingleftnumber.value = v;
text.passagepaddingleft = v;
}
function passagepaddingleftrangeupdate()
{
passagepaddingleftrangeset();
svgupdate();
}
function passagepaddingrightload()
{
const div = document.createElement("div");
div.id = "passagepaddingright";
div.innerHTML = "padding-right";
tabcontentpassage.append(div);
}
addEventListener("load", passagepaddingrightload);
function passagepaddingrightnumberload()
{
const br = document.createElement("br");
passagepaddingright.append(br);
const input = document.createElement("input");
input.id = "passagepaddingrightnumber";
input.max = 1000;
input.min = 0;
input.type = "number";
input.value = 0;
input.addEventListener("input", passagepaddingrightnumberupdate);
passagepaddingright.append(input);
//passagepaddingrightnumberset();
}
addEventListener("load", passagepaddingrightnumberload);
function passagepaddingrightnumberset()
{
const v = Number(passagepaddingrightnumber.value);
passagepaddingrightrange.value = v;
text.passagepaddingright = v;
}
function passagepaddingrightnumberupdate()
{
passagepaddingrightnumberset();
svgupdate();
}
function passagepaddingrightrangeload()
{
const input = document.createElement("input");
input.id = "passagepaddingrightrange";
input.max = passagepaddingrightnumber.max;
input.min = passagepaddingrightnumber.min;
input.type = "range";
input.value = passagepaddingrightnumber.value;
input.addEventListener("input", passagepaddingrightrangeupdate);
passagepaddingright.append(input);
passagepaddingrightrangeset();
}
addEventListener("load", passagepaddingrightrangeload);
function passagepaddingrightrangeset()
{
const v = Number(passagepaddingrightrange.value);
passagepaddingrightnumber.value = v;
text.passagepaddingright = v;
}
function passagepaddingrightrangeupdate()
{
passagepaddingrightrangeset();
svgupdate();
}
//*/
function savedownloadload()
{
const div = document.createElement("div");
div.id = "savedownload";
//div.innerHTML = "download<br>";
tabcontentsave.append(div);
}
addEventListener("load", savedownloadload);
function savedownloadimageload()
{
const a = document.createElement("a");
a.download = "download";
a.id = "savedownloadimage";
a.innerHTML = "download";
a.addEventListener("click", savedownloadimageupdate);
savedownload.append(a);
savedownloadimageupdate();
}
addEventListener("load", savedownloadimageload);
function savedownloadimageupdate()
{
savedownloadimage.href = canvas.toDataURL();
}
/*
function savedownloadsettingsload()
{
const a = document.createElement("a");
a.download = "settings.txt";
a.id = "savedownloadsettings";
a.innerHTML = "<br>settings";
a.addEventListener("click", savedownloadsettingsupdate);
savedownload.append(a);
savedownloadsettingsupdate();
}
addEventListener("load", savedownloadsettingsload);
function savedownloadsettingsupdate()
{
const data =
[
[
"canvas.width",
canvas.width,
],
canvas.height,
canvas.backgroundcolor,
canvas.backgroundalpha,
image.file,
image.fit,
image.width,
image.height,
image.x,
image.y,
image.backgroundcolor,
image.backgroundalpha,
image.opacity,
text.messagetext,
text.messagewidth,
text.messageheight,
text.messagex,
text.messagey,
text.messagehorizontal,
text.messagevertical,
text.messagewritingmode,
text.messagefontfamily,
text.messagefontsize,
text.messagebackgroundcolor,
text.messagebackgroundalpha,
text.messagecolor,
text.messagealpha,
text.version,
text.versionname,
text.book,
text.bookname,
text.chapter,
text.verse,
text.verseend,
text.referencewidth,
text.referenceheight,
text.referencex,
text.referencey,
text.referencehorizontal,
text.referencevertical,
text.referencewritingmode,
text.referencefontfamily,
text.referencefontsize,
text.referencebackgroundcolor,
text.referencebackgroundalpha,
text.referencecolor,
text.referencealpha,
text.passagewidth,
text.passageheight,
text.passagex,
text.passagey,
text.passagehorizontal,
text.passagevertical,
text.passagewritingmode,
text.passagefontfamily,
text.passagefontsize,
text.passagebackgroundcolor,
text.passagebackgroundalpha,
text.passagecolor,
text.passagealpha,
];
//leftoff
const data2 = [];
for(const a of data)
{
data2
}
savedownloadsettings.href = `data:text/plain,${data}`;
}
function savefileload()
{
const div = document.createElement("div");
div.id = "savefile";
div.innerHTML = "file<br>";
tabcontentsave.append(div);
}
addEventListener("load", savefileload);
function savefilefileload()
{
const input = document.createElement("input");
input.id = "savefilefile";
input.type = "file";
input.addEventListener("change", savefilefileupdate);
savefile.append(input);
}
addEventListener("load", savefilefileload);
function savefilefileupdate()
{
const f = savefilefile.files[0];
save.src = URL.createObjectURL(f);
}
//*/</script></div></main><div class=banner><script defer src=https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4239362730750625 crossorigin=anonymous></script><ins class=adsbygoogle data-ad-client=ca-pub-4239362730750625 data-ad-slot=5564639719><a href=https://samaritanspurse.org/occ/ target=_blank><img alt="Samaritan's Purse Operation Christmas Child" src=/assets/svg/SamaritansPurseOperationChristmasChild1.svg title="Samaritan's Purse Operation Christmas Child"></a></ins><script>(adsbygoogle = window.adsbygoogle || []).push({});</script></div><footer><div id=boilerplate><div><a href=/Jesus/>Jesus</a> · <a href=/Bible/>Bible</a></div><div><a href=/html/>HTML</a> · <a href=/css/>CSS</a> · <a href=/js/>JS</a> · <a href=/php/>PHP</a> · <a href=/svg/>SVG</a></div><div><a href=/applications/>Applications</a> · <a href=/editor/>Editor</a> · <a href=/favicon/>Favicon</a></div><div><a href=/htaccess/>.htaccess</a> · <a href=/acme.sh/>acme.sh</a></div><div><a href=/flash/>Flash</a> · <a href=/sketchup/>SketchUp</a> · <a href=/unity/>Unity</a> · <a href=/xcode/>Xcode</a></div><div><a href=/about/>About</a> · <a href=/terms/>Terms</a></div><div><a href=/>osbo.com</a></div></div><div id=copyright>© 2026 Osbo Design</div></footer></div><div id=nav><div class=h1><a href=/Jesus/>JESUS</a></div><div class=h1><a id=switch-Bible>BIBLE</a></div><div id=list-Bible><h2>Overview</h2><div><ul><li><a href=/Bible/>Overview</a></li></ul></div><h2>Search</h2><div><ul><li><a href=/Bible/search/>Search</a></li></ul></div><h2>Download</h2><div><ul><li><a href=/Bible/download/>Download</a></li></ul></div><h2>العربية</h2><div><ul><li><a href=/Bible/asvd/>الكتاب المقدس ترجمة فانديك وسميث (ASVD)</a></li></ul></div><h2>česky</h2><div><ul><li><a href=/Bible/csbkr/>Bible Kralická 1613 (CSBKR)</a></li></ul></div><h2>Dansk</h2><div><ul><li><a href=/Bible/da1871/>Danske Bibel 1871 (DA1871)</a></li></ul></div><h2>Deutsch</h2><div><ul><li><a href=/Bible/delut/>Luther Bible 1912 (DELUT)</a></li><li><a href=/Bible/elb/>Elberfelder 1905 (ELB)</a></li><li><a href=/Bible/elb71/>Elberfelder 1871 (ELB71)</a></li></ul></div><h2>English</h2><div><ul><li><a href=/Bible/asv/>American Standard Version (ASV)</a></li><li><a href=/Bible/kjv/>King James Version (KJV)</a></li><li><a href=/Bible/web/>World English Bible (WEB)</a></li></ul></div><h2>Español</h2><div><ul><li><a href=/Bible/rves/>Reina-Valera Antigua (RVES)</a></li></ul></div><h2>Suomi</h2><div><ul><li><a href=/Bible/fi1776/>Finnish 1776 (FI1776)</a></li><li><a href=/Bible/finpr/>Finnish 1938 (FINPR)</a></li></ul></div><h2>Français</h2><div><ul><li><a href=/Bible/fmar/>Martin 1744 (FMAR)</a></li><li><a href=/Bible/frdby/>Bible Darby en français (FRDBY)</a></li><li><a href=/Bible/lsg/>Louis Segond 1910 (LSG)</a></li><li><a href=/Bible/ost/>Ostervald (OST)</a></li></ul></div><h2>Magyar</h2><div><ul><li><a href=/Bible/kar/>Károli 1590 (KAR)</a></li></ul></div><h2>Bahasa Indonesia</h2><div><ul><li><a href=/Bible/idbar/>Terjemahan Baru (IDBAR)</a></li></ul></div><h2>Italiano</h2><div><ul><li><a href=/Bible/igd/>Giovanni Diodati Bibbia (IGD)</a></li><li><a href=/Bible/itriv/>Italian Riveduta 1927 (ITRIV)</a></li></ul></div><h2>日本語</h2><div><ul><li><a href=/Bible/ja1955/>Colloquial Japanese 1955 (JA1955)</a></li></ul></div><h2>Malagasy</h2><div><ul><li><a href=/Bible/mg1865/>Malagasy Bible (MG1865)</a></li></ul></div><h2>te reo Māori</h2><div><ul><li><a href=/Bible/maor/>Maori Bible (MAOR)</a></li></ul></div><h2>한국어</h2><div><ul><li><a href=/Bible/korvb/>개역한글 (KORVB)</a></li></ul></div><h2>Nederlands</h2><div><ul><li><a href=/Bible/sv1750/>Statenvertaling (SV1750)</a></li></ul></div><h2>Norsk</h2><div><ul><li><a href=/Bible/norsk/>Det Norsk Bibelselskap 1930 (NORSK)</a></li></ul></div><h2>Polski</h2><div><ul><li><a href=/Bible/pbg/>Biblia Gdańska (PBG)</a></li></ul></div><h2>Português</h2><div><ul><li><a href=/Bible/aa/>Almeida Atualizada (AA)</a></li></ul></div><h2>Română</h2><div><ul><li><a href=/Bible/rmnn/>Romanian Cornilescu 1928 (RMNN)</a></li><li><a href=/Bible/vdc/>Versiunea Dumitru Cornilescu (VDC)</a></li><li><a href=/Bible/vdcc/>Versiunea Dumitru Cornilescu Corectată (VDCC)</a></li></ul></div><h2>Pyccкий</h2><div><ul><li><a href=/Bible/rursv/>Синодальный перевод (RURSV)</a></li></ul></div><h2>Shqip</h2><div><ul><li><a href=/Bible/albb/>Albanian Bible (ALBB)</a></li></ul></div><h2>Svenska</h2><div><ul><li><a href=/Bible/sk73/>Karl XII 1873 (SK73)</a></li><li><a href=/Bible/sven/>Svenska 1917 (SVEN)</a></li></ul></div><h2>Wikang Tagalog</h2><div><ul><li><a href=/Bible/tlab/>Ang Biblia (TLAB)</a></li></ul></div><h2>українська</h2><div><ul><li><a href=/Bible/ubio/>Біблія в пер. Івана Огієнка 1962 (UBIO)</a></li><li><a href=/Bible/ukrk/>Біблія в пер. П.Куліша та І.Пулюя 1905 (UKRK)</a></li></ul></div><h2>Tiếng Việt</h2><div><ul><li><a href=/Bible/vi1934/>Vietnamese Bible 1934 (VI1934)</a></li></ul></div><h2>简体中文</h2><div><ul><li><a href=/Bible/cuvs/>简体和合本 (CUVS)</a></li></ul></div><h2>繁體中文</h2><div><ul><li><a href=/Bible/cuv/>和合本 (CUV)</a></li></ul></div></div><div class=h1><a id=switch-html>HTML</a></div><div id=list-html><h2>Overview</h2><div><ul><li><a href=/html/>Overview</a></li></ul></div><h2>Attributes</h2><div><ul><li><a href=/html/attributes/abbr/>abbr</a></li><li><a href=/html/attributes/accept/>accept</a></li><li><a href=/html/attributes/accept-charset/>accept-charset</a></li><li><a href=/html/attributes/accesskey/>accesskey</a></li><li><a href=/html/attributes/action/>action</a></li><li><a href=/html/attributes/alt/>alt</a></li><li><a href=/html/attributes/as/>as</a></li><li><a href=/html/attributes/async/>async</a></li><li><a href=/html/attributes/autocapitalize/>autocapitalize</a></li><li><a href=/html/attributes/autocomplete/>autocomplete</a></li><li><a href=/html/attributes/autofocus/>autofocus</a></li><li><a href=/html/attributes/autoplay/>autoplay</a></li><li><a href=/html/attributes/blocking/>blocking</a></li><li><a href=/html/attributes/charset/>charset</a></li><li><a href=/html/attributes/checked/>checked</a></li><li><a href=/html/attributes/cite/>cite</a></li><li><a href=/html/attributes/class/>class</a></li><li><a href=/html/attributes/color/>color</a></li><li><a href=/html/attributes/cols/>cols</a></li><li><a href=/html/attributes/colspan/>colspan</a></li><li><a href=/html/attributes/contenteditable/>contenteditable</a></li><li><a href=/html/attributes/controls/>controls</a></li><li><a href=/html/attributes/coords/>coords</a></li><li><a href=/html/attributes/crossorigin/>crossorigin</a></li><li><a href=/html/attributes/data/>data</a></li><li><a href=/html/attributes/datetime/>datetime</a></li><li><a href=/html/attributes/decoding/>decoding</a></li><li><a href=/html/attributes/default/>default</a></li><li><a href=/html/attributes/defer/>defer</a></li><li><a href=/html/attributes/dir/>dir</a></li><li><a href=/html/attributes/dirname/>dirname</a></li><li><a href=/html/attributes/disabled/>disabled</a></li><li><a href=/html/attributes/download/>download</a></li><li><a href=/html/attributes/draggable/>draggable</a></li><li><a href=/html/attributes/enctype/>enctype</a></li><li><a href=/html/attributes/enterkeyhint/>enterkeyhint</a></li><li><a href=/html/attributes/exportparts/>exportparts</a></li><li><a href=/html/attributes/fetchpriority/>fetchpriority</a></li><li><a href=/html/attributes/for/>for</a></li><li><a href=/html/attributes/form/>form</a></li><li><a href=/html/attributes/formaction/>formaction</a></li><li><a href=/html/attributes/formenctype/>formenctype</a></li><li><a href=/html/attributes/formmethod/>formmethod</a></li><li><a href=/html/attributes/formnovalidate/>formnovalidate</a></li><li><a href=/html/attributes/formtarget/>formtarget</a></li><li><a href=/html/attributes/headers/>headers</a></li><li><a href=/html/attributes/height/>height</a></li><li><a href=/html/attributes/hidden/>hidden</a></li><li><a href=/html/attributes/high/>high</a></li><li><a href=/html/attributes/href/>href</a></li><li><a href=/html/attributes/hreflang/>hreflang</a></li><li><a href=/html/attributes/http-equiv/>http-equiv</a></li><li><a href=/html/attributes/id/>id</a></li><li><a href=/html/attributes/imagesizes/>imagesizes</a></li><li><a href=/html/attributes/imagesrcset/>imagesrcset</a></li><li><a href=/html/attributes/inert/>inert</a></li><li><a href=/html/attributes/inputmode/>inputmode</a></li><li><a href=/html/attributes/integrity/>integrity</a></li><li><a href=/html/attributes/is/>is</a></li><li><a href=/html/attributes/ismap/>ismap</a></li><li><a href=/html/attributes/itemid/>itemid</a></li><li><a href=/html/attributes/itemprop/>itemprop</a></li><li><a href=/html/attributes/itemref/>itemref</a></li><li><a href=/html/attributes/itemscope/>itemscope</a></li><li><a href=/html/attributes/itemtype/>itemtype</a></li><li><a href=/html/attributes/kind/>kind</a></li><li><a href=/html/attributes/label/>label</a></li><li><a href=/html/attributes/lang/>lang</a></li><li><a href=/html/attributes/list/>list</a></li><li><a href=/html/attributes/loading/>loading</a></li><li><a href=/html/attributes/loop/>loop</a></li><li><a href=/html/attributes/low/>low</a></li><li><a href=/html/attributes/max/>max</a></li><li><a href=/html/attributes/maxlength/>maxlength</a></li><li><a href=/html/attributes/media/>media</a></li><li><a href=/html/attributes/method/>method</a></li><li><a href=/html/attributes/min/>min</a></li><li><a href=/html/attributes/minlength/>minlength</a></li><li><a href=/html/attributes/multiple/>multiple</a></li><li><a href=/html/attributes/muted/>muted</a></li><li><a href=/html/attributes/name/>name</a></li><li><a href=/html/attributes/nomodule/>nomodule</a></li><li><a href=/html/attributes/nonce/>nonce</a></li><li><a href=/html/attributes/novalidate/>novalidate</a></li><li><a href=/html/attributes/onabort/>onabort</a></li><li><a href=/html/attributes/onafterprint/>onafterprint</a></li><li><a href=/html/attributes/onauxclick/>onauxclick</a></li><li><a href=/html/attributes/onbeforeinput/>onbeforeinput</a></li><li><a href=/html/attributes/onbeforeprint/>onbeforeprint</a></li><li><a href=/html/attributes/onbeforetoggle/>onbeforetoggle</a></li><li><a href=/html/attributes/onbeforeunload/>onbeforeunload</a></li><li><a href=/html/attributes/onblur/>onblur</a></li><li><a href=/html/attributes/oncancel/>oncancel</a></li><li><a href=/html/attributes/oncanplay/>oncanplay</a></li><li><a href=/html/attributes/oncanplaythrough/>oncanplaythrough</a></li><li><a href=/html/attributes/onchange/>onchange</a></li><li><a href=/html/attributes/onclick/>onclick</a></li><li><a href=/html/attributes/oncontextlost/>oncontextlost</a></li><li><a href=/html/attributes/oncontextmenu/>oncontextmenu</a></li><li><a href=/html/attributes/oncontextrestored/>oncontextrestored</a></li><li><a href=/html/attributes/oncopy/>oncopy</a></li><li><a href=/html/attributes/oncut/>oncut</a></li><li><a href=/html/attributes/ondblclick/>ondblclick</a></li><li><a href=/html/attributes/ondrag/>ondrag</a></li><li><a href=/html/attributes/ondragend/>ondragend</a></li><li><a href=/html/attributes/ondragenter/>ondragenter</a></li><li><a href=/html/attributes/ondragleave/>ondragleave</a></li><li><a href=/html/attributes/ondragover/>ondragover</a></li><li><a href=/html/attributes/ondragstart/>ondragstart</a></li><li><a href=/html/attributes/ondrop/>ondrop</a></li><li><a href=/html/attributes/ondurationchange/>ondurationchange</a></li><li><a href=/html/attributes/onended/>onended</a></li><li><a href=/html/attributes/onfocus/>onfocus</a></li><li><a href=/html/attributes/onformdata/>onformdata</a></li><li><a href=/html/attributes/onhashchange/>onhashchange</a></li><li><a href=/html/attributes/oninput/>oninput</a></li><li><a href=/html/attributes/oninvalid/>oninvalid</a></li><li><a href=/html/attributes/onkeydown/>onkeydown</a></li><li><a href=/html/attributes/onkeypress/>onkeypress</a></li><li><a href=/html/attributes/onkeyup/>onkeyup</a></li><li><a href=/html/attributes/onlanguagechange/>onlanguagechange</a></li><li><a href=/html/attributes/onload/>onload</a></li><li><a href=/html/attributes/onloadeddata/>onloadeddata</a></li><li><a href=/html/attributes/onloadedmetadata/>onloadedmetadata</a></li><li><a href=/html/attributes/onloadstart/>onloadstart</a></li><li><a href=/html/attributes/onmousedown/>onmousedown</a></li><li><a href=/html/attributes/onmouseenter/>onmouseenter</a></li><li><a href=/html/attributes/onmouseleave/>onmouseleave</a></li><li><a href=/html/attributes/onmousemove/>onmousemove</a></li><li><a href=/html/attributes/onmouseout/>onmouseout</a></li><li><a href=/html/attributes/onmouseover/>onmouseover</a></li><li><a href=/html/attributes/onmouseup/>onmouseup</a></li><li><a href=/html/attributes/onmousewheel/>onmousewheel</a></li><li><a href=/html/attributes/onoffline/>onoffline</a></li><li><a href=/html/attributes/ononline/>ononline</a></li><li><a href=/html/attributes/onpagehide/>onpagehide</a></li><li><a href=/html/attributes/onpageshow/>onpageshow</a></li><li><a href=/html/attributes/onpaste/>onpaste</a></li><li><a href=/html/attributes/onpause/>onpause</a></li><li><a href=/html/attributes/onplay/>onplay</a></li><li><a href=/html/attributes/onplaying/>onplaying</a></li><li><a href=/html/attributes/onprogress/>onprogress</a></li><li><a href=/html/attributes/onratechange/>onratechange</a></li><li><a href=/html/attributes/onreset/>onreset</a></li><li><a href=/html/attributes/onresize/>onresize</a></li><li><a href=/html/attributes/onscroll/>onscroll</a></li><li><a href=/html/attributes/onscrollend/>onscrollend</a></li><li><a href=/html/attributes/onsearch/>onsearch</a></li><li><a href=/html/attributes/onseeked/>onseeked</a></li><li><a href=/html/attributes/onseeking/>onseeking</a></li><li><a href=/html/attributes/onselect/>onselect</a></li><li><a href=/html/attributes/onstorage/>onstorage</a></li><li><a href=/html/attributes/onsubmit/>onsubmit</a></li><li><a href=/html/attributes/onsuspend/>onsuspend</a></li><li><a href=/html/attributes/ontimeupdate/>ontimeupdate</a></li><li><a href=/html/attributes/ontoggle/>ontoggle</a></li><li><a href=/html/attributes/onunload/>onunload</a></li><li><a href=/html/attributes/onvolumechange/>onvolumechange</a></li><li><a href=/html/attributes/onwaiting/>onwaiting</a></li><li><a href=/html/attributes/onwheel/>onwheel</a></li><li><a href=/html/attributes/open/>open</a></li><li><a href=/html/attributes/optimum/>optimum</a></li><li><a href=/html/attributes/part/>part</a></li><li><a href=/html/attributes/pattern/>pattern</a></li><li><a href=/html/attributes/ping/>ping</a></li><li><a href=/html/attributes/placeholder/>placeholder</a></li><li><a href=/html/attributes/playsinline/>playsinline</a></li><li><a href=/html/attributes/popover/>popover</a></li><li><a href=/html/attributes/popovertarget/>popovertarget</a></li><li><a href=/html/attributes/popovertargetaction/>popovertargetaction</a></li><li><a href=/html/attributes/poster/>poster</a></li><li><a href=/html/attributes/preload/>preload</a></li><li><a href=/html/attributes/readonly/>readonly</a></li><li><a href=/html/attributes/referrerpolicy/>referrerpolicy</a></li><li><a href=/html/attributes/rel/>rel</a></li><li><a href=/html/attributes/required/>required</a></li><li><a href=/html/attributes/reversed/>reversed</a></li><li><a href=/html/attributes/rows/>rows</a></li><li><a href=/html/attributes/rowspan/>rowspan</a></li><li><a href=/html/attributes/sandbox/>sandbox</a></li><li><a href=/html/attributes/scope/>scope</a></li><li><a href=/html/attributes/selected/>selected</a></li><li><a href=/html/attributes/shape/>shape</a></li><li><a href=/html/attributes/size/>size</a></li><li><a href=/html/attributes/sizes/>sizes</a></li><li><a href=/html/attributes/slot/>slot</a></li><li><a href=/html/attributes/span/>span</a></li><li><a href=/html/attributes/spellcheck/>spellcheck</a></li><li><a href=/html/attributes/src/>src</a></li><li><a href=/html/attributes/srcdoc/>srcdoc</a></li><li><a href=/html/attributes/srclang/>srclang</a></li><li><a href=/html/attributes/srcset/>srcset</a></li><li><a href=/html/attributes/start/>start</a></li><li><a href=/html/attributes/step/>step</a></li><li><a href=/html/attributes/style/>style</a></li><li><a href=/html/attributes/tabindex/>tabindex</a></li><li><a href=/html/attributes/target/>target</a></li><li><a href=/html/attributes/title/>title</a></li><li><a href=/html/attributes/translate/>translate</a></li><li><a href=/html/attributes/type/>type</a></li><li><a href=/html/attributes/usemap/>usemap</a></li><li><a href=/html/attributes/value/>value</a></li><li><a href=/html/attributes/width/>width</a></li><li><a href=/html/attributes/wrap/>wrap</a></li></ul></div><h2>Elements</h2><div><ul><li><a href=/html/elements/!doctype/>!doctype</a></li><li><a href=/html/elements/a/>a</a></li><li><a href=/html/elements/abbr/>abbr</a></li><li><a href=/html/elements/address/>address</a></li><li><a href=/html/elements/area/>area</a></li><li><a href=/html/elements/article/>article</a></li><li><a href=/html/elements/aside/>aside</a></li><li><a href=/html/elements/audio/>audio</a></li><li><a href=/html/elements/b/>b</a></li><li><a href=/html/elements/base/>base</a></li><li><a href=/html/elements/bdi/>bdi</a></li><li><a href=/html/elements/bdo/>bdo</a></li><li><a href=/html/elements/blockquote/>blockquote</a></li><li><a href=/html/elements/body/>body</a></li><li><a href=/html/elements/br/>br</a></li><li><a href=/html/elements/button/>button</a></li><li><a href=/html/elements/canvas/>canvas</a></li><li><a href=/html/elements/caption/>caption</a></li><li><a href=/html/elements/cite/>cite</a></li><li><a href=/html/elements/code/>code</a></li><li><a href=/html/elements/col/>col</a></li><li><a href=/html/elements/colgroup/>colgroup</a></li><li><a href=/html/elements/data/>data</a></li><li><a href=/html/elements/datalist/>datalist</a></li><li><a href=/html/elements/dd/>dd</a></li><li><a href=/html/elements/del/>del</a></li><li><a href=/html/elements/details/>details</a></li><li><a href=/html/elements/dfn/>dfn</a></li><li><a href=/html/elements/dialog/>dialog</a></li><li><a href=/html/elements/div/>div</a></li><li><a href=/html/elements/dl/>dl</a></li><li><a href=/html/elements/dt/>dt</a></li><li><a href=/html/elements/em/>em</a></li><li><a href=/html/elements/embed/>embed</a></li><li><a href=/html/elements/fieldset/>fieldset</a></li><li><a href=/html/elements/figcaption/>figcaption</a></li><li><a href=/html/elements/figure/>figure</a></li><li><a href=/html/elements/footer/>footer</a></li><li><a href=/html/elements/form/>form</a></li><li><a href=/html/elements/h1/>h1</a></li><li><a href=/html/elements/h2/>h2</a></li><li><a href=/html/elements/h3/>h3</a></li><li><a href=/html/elements/h4/>h4</a></li><li><a href=/html/elements/h5/>h5</a></li><li><a href=/html/elements/h6/>h6</a></li><li><a href=/html/elements/head/>head</a></li><li><a href=/html/elements/header/>header</a></li><li><a href=/html/elements/hgroup/>hgroup</a></li><li><a href=/html/elements/hr/>hr</a></li><li><a href=/html/elements/html/>html</a></li><li><a href=/html/elements/i/>i</a></li><li><a href=/html/elements/iframe/>iframe</a></li><li><a href=/html/elements/img/>img</a></li><li><a href=/html/elements/input/>input</a></li><li><a href=/html/elements/ins/>ins</a></li><li><a href=/html/elements/kbd/>kbd</a></li><li><a href=/html/elements/label/>label</a></li><li><a href=/html/elements/legend/>legend</a></li><li><a href=/html/elements/li/>li</a></li><li><a href=/html/elements/link/>link</a></li><li><a href=/html/elements/main/>main</a></li><li><a href=/html/elements/map/>map</a></li><li><a href=/html/elements/mark/>mark</a></li><li><a href=/html/elements/menu/>menu</a></li><li><a href=/html/elements/meta/>meta</a></li><li><a href=/html/elements/meter/>meter</a></li><li><a href=/html/elements/nav/>nav</a></li><li><a href=/html/elements/noscript/>noscript</a></li><li><a href=/html/elements/object/>object</a></li><li><a href=/html/elements/ol/>ol</a></li><li><a href=/html/elements/optgroup/>optgroup</a></li><li><a href=/html/elements/option/>option</a></li><li><a href=/html/elements/output/>output</a></li><li><a href=/html/elements/p/>p</a></li><li><a href=/html/elements/param/>param</a></li><li><a href=/html/elements/picture/>picture</a></li><li><a href=/html/elements/pre/>pre</a></li><li><a href=/html/elements/progress/>progress</a></li><li><a href=/html/elements/q/>q</a></li><li><a href=/html/elements/rb/>rb</a></li><li><a href=/html/elements/rp/>rp</a></li><li><a href=/html/elements/rt/>rt</a></li><li><a href=/html/elements/rtc/>rtc</a></li><li><a href=/html/elements/ruby/>ruby</a></li><li><a href=/html/elements/s/>s</a></li><li><a href=/html/elements/samp/>samp</a></li><li><a href=/html/elements/script/>script</a></li><li><a href=/html/elements/search/>search</a></li><li><a href=/html/elements/section/>section</a></li><li><a href=/html/elements/select/>select</a></li><li><a href=/html/elements/slot/>slot</a></li><li><a href=/html/elements/small/>small</a></li><li><a href=/html/elements/source/>source</a></li><li><a href=/html/elements/span/>span</a></li><li><a href=/html/elements/strong/>strong</a></li><li><a href=/html/elements/style/>style</a></li><li><a href=/html/elements/sub/>sub</a></li><li><a href=/html/elements/summary/>summary</a></li><li><a href=/html/elements/sup/>sup</a></li><li><a href=/html/elements/table/>table</a></li><li><a href=/html/elements/tbody/>tbody</a></li><li><a href=/html/elements/td/>td</a></li><li><a href=/html/elements/template/>template</a></li><li><a href=/html/elements/textarea/>textarea</a></li><li><a href=/html/elements/tfoot/>tfoot</a></li><li><a href=/html/elements/th/>th</a></li><li><a href=/html/elements/thead/>thead</a></li><li><a href=/html/elements/time/>time</a></li><li><a href=/html/elements/title/>title</a></li><li><a href=/html/elements/tr/>tr</a></li><li><a href=/html/elements/track/>track</a></li><li><a href=/html/elements/u/>u</a></li><li><a href=/html/elements/ul/>ul</a></li><li><a href=/html/elements/var/>var</a></li><li><a href=/html/elements/video/>video</a></li><li><a href=/html/elements/wbr/>wbr</a></li></ul></div><h2>Other</h2><div><ul><li><a href=/html/characters/>Characters</a></li><li><a href=/html/comments/>Comments</a></li><li><a href=/html/datatypes/>Datatypes</a></li></ul></div></div><div class=h1><a id=switch-css>CSS</a></div><div id=list-css><h2>Overview</h2><div><ul><li><a href=/css/>Overview</a></li></ul></div><h2>Functions</h2><div><ul><li><a href=/css/functions/abs/>abs</a></li><li><a href=/css/functions/acos/>acos</a></li><li><a href=/css/functions/asin/>asin</a></li><li><a href=/css/functions/atan/>atan</a></li><li><a href=/css/functions/atan2/>atan2</a></li><li><a href=/css/functions/attr/>attr</a></li><li><a href=/css/functions/calc/>calc</a></li><li><a href=/css/functions/clamp/>clamp</a></li><li><a href=/css/functions/color/>color</a></li><li><a href=/css/functions/conic-gradient/>conic-gradient</a></li><li><a href=/css/functions/cos/>cos</a></li><li><a href=/css/functions/counter/>counter</a></li><li><a href=/css/functions/counters/>counters</a></li><li><a href=/css/functions/hsl/>hsl</a></li><li><a href=/css/functions/hsla/>hsla</a></li><li><a href=/css/functions/hwb/>hwb</a></li><li><a href=/css/functions/if/>if</a></li><li><a href=/css/functions/lab/>lab</a></li><li><a href=/css/functions/lch/>lch</a></li><li><a href=/css/functions/linear-gradient/>linear-gradient</a></li><li><a href=/css/functions/matrix/>matrix</a></li><li><a href=/css/functions/matrix3d/>matrix3d</a></li><li><a href=/css/functions/max/>max</a></li><li><a href=/css/functions/min/>min</a></li><li><a href=/css/functions/mod/>mod</a></li><li><a href=/css/functions/oklab/>oklab</a></li><li><a href=/css/functions/oklch/>oklch</a></li><li><a href=/css/functions/param/>param</a></li><li><a href=/css/functions/perspective/>perspective</a></li><li><a href=/css/functions/radial-gradient/>radial-gradient</a></li><li><a href=/css/functions/rem/>rem</a></li><li><a href=/css/functions/repeating-conic-gradient/>repeating-conic-gradient</a></li><li><a href=/css/functions/repeating-linear-gradient/>repeating-linear-gradient</a></li><li><a href=/css/functions/repeating-radial-gradient/>repeating-radial-gradient</a></li><li><a href=/css/functions/rgb/>rgb</a></li><li><a href=/css/functions/rgba/>rgba</a></li><li><a href=/css/functions/rotate/>rotate</a></li><li><a href=/css/functions/rotate3d/>rotate3d</a></li><li><a href=/css/functions/rotatex/>rotateX</a></li><li><a href=/css/functions/rotatey/>rotateY</a></li><li><a href=/css/functions/rotatez/>rotateZ</a></li><li><a href=/css/functions/round/>round</a></li><li><a href=/css/functions/scale/>scale</a></li><li><a href=/css/functions/scale3d/>scale3d</a></li><li><a href=/css/functions/scalex/>scaleX</a></li><li><a href=/css/functions/scaley/>scaleY</a></li><li><a href=/css/functions/scalez/>scaleZ</a></li><li><a href=/css/functions/sin/>sin</a></li><li><a href=/css/functions/skew/>skew</a></li><li><a href=/css/functions/skewx/>skewX</a></li><li><a href=/css/functions/skewy/>skewY</a></li><li><a href=/css/functions/src/>src</a></li><li><a href=/css/functions/tan/>tan</a></li><li><a href=/css/functions/translate/>translate</a></li><li><a href=/css/functions/translate3d/>translate3d</a></li><li><a href=/css/functions/translatex/>translateX</a></li><li><a href=/css/functions/translatey/>translateY</a></li><li><a href=/css/functions/translatez/>translateZ</a></li><li><a href=/css/functions/url/>url</a></li><li><a href=/css/functions/var/>var</a></li></ul></div><h2>Properties</h2><div><ul><li><a href=/css/properties/accent-color/>accent-color</a></li><li><a href=/css/properties/align-content/>align-content</a></li><li><a href=/css/properties/align-items/>align-items</a></li><li><a href=/css/properties/align-self/>align-self</a></li><li><a href=/css/properties/all/>all</a></li><li><a href=/css/properties/animation/>animation</a></li><li><a href=/css/properties/animation-composition/>animation-composition</a></li><li><a href=/css/properties/animation-delay/>animation-delay</a></li><li><a href=/css/properties/animation-direction/>animation-direction</a></li><li><a href=/css/properties/animation-duration/>animation-duration</a></li><li><a href=/css/properties/animation-fill-mode/>animation-fill-mode</a></li><li><a href=/css/properties/animation-iteration-count/>animation-iteration-count</a></li><li><a href=/css/properties/animation-name/>animation-name</a></li><li><a href=/css/properties/animation-play-state/>animation-play-state</a></li><li><a href=/css/properties/animation-timeline/>animation-timeline</a></li><li><a href=/css/properties/animation-timing-function/>animation-timing-function</a></li><li><a href=/css/properties/appearance/>appearance</a></li><li><a href=/css/properties/aspect-ratio/>aspect-ratio</a></li><li><a href=/css/properties/backdrop-filter/>backdrop-filter</a></li><li><a href=/css/properties/backface-visibility/>backface-visibility</a></li><li><a href=/css/properties/background/>background</a></li><li><a href=/css/properties/background-attachment/>background-attachment</a></li><li><a href=/css/properties/background-blend-mode/>background-blend-mode</a></li><li><a href=/css/properties/background-clip/>background-clip</a></li><li><a href=/css/properties/background-color/>background-color</a></li><li><a href=/css/properties/background-image/>background-image</a></li><li><a href=/css/properties/background-origin/>background-origin</a></li><li><a href=/css/properties/background-position/>background-position</a></li><li><a href=/css/properties/background-position-x/>background-position-x</a></li><li><a href=/css/properties/background-position-y/>background-position-y</a></li><li><a href=/css/properties/background-repeat/>background-repeat</a></li><li><a href=/css/properties/background-size/>background-size</a></li><li><a href=/css/properties/block-ellipsis/>block-ellipsis</a></li><li><a href=/css/properties/block-size/>block-size</a></li><li><a href=/css/properties/border/>border</a></li><li><a href=/css/properties/border-block/>border-block</a></li><li><a href=/css/properties/border-block-color/>border-block-color</a></li><li><a href=/css/properties/border-block-end/>border-block-end</a></li><li><a href=/css/properties/border-block-end-color/>border-block-end-color</a></li><li><a href=/css/properties/border-block-end-style/>border-block-end-style</a></li><li><a href=/css/properties/border-block-end-width/>border-block-end-width</a></li><li><a href=/css/properties/border-block-start/>border-block-start</a></li><li><a href=/css/properties/border-block-start-color/>border-block-start-color</a></li><li><a href=/css/properties/border-block-start-style/>border-block-start-style</a></li><li><a href=/css/properties/border-block-start-width/>border-block-start-width</a></li><li><a href=/css/properties/border-block-style/>border-block-style</a></li><li><a href=/css/properties/border-block-width/>border-block-width</a></li><li><a href=/css/properties/border-bottom/>border-bottom</a></li><li><a href=/css/properties/border-bottom-color/>border-bottom-color</a></li><li><a href=/css/properties/border-bottom-left-radius/>border-bottom-left-radius</a></li><li><a href=/css/properties/border-bottom-right-radius/>border-bottom-right-radius</a></li><li><a href=/css/properties/border-bottom-style/>border-bottom-style</a></li><li><a href=/css/properties/border-bottom-width/>border-bottom-width</a></li><li><a href=/css/properties/border-collapse/>border-collapse</a></li><li><a href=/css/properties/border-color/>border-color</a></li><li><a href=/css/properties/border-end-end-radius/>border-end-end-radius</a></li><li><a href=/css/properties/border-end-start-radius/>border-end-start-radius</a></li><li><a href=/css/properties/border-image/>border-image</a></li><li><a href=/css/properties/border-image-outset/>border-image-outset</a></li><li><a href=/css/properties/border-image-repeat/>border-image-repeat</a></li><li><a href=/css/properties/border-image-slice/>border-image-slice</a></li><li><a href=/css/properties/border-image-source/>border-image-source</a></li><li><a href=/css/properties/border-image-width/>border-image-width</a></li><li><a href=/css/properties/border-inline/>border-inline</a></li><li><a href=/css/properties/border-inline-color/>border-inline-color</a></li><li><a href=/css/properties/border-inline-end/>border-inline-end</a></li><li><a href=/css/properties/border-inline-end-color/>border-inline-end-color</a></li><li><a href=/css/properties/border-inline-end-style/>border-inline-end-style</a></li><li><a href=/css/properties/border-inline-end-width/>border-inline-end-width</a></li><li><a href=/css/properties/border-inline-start/>border-inline-start</a></li><li><a href=/css/properties/border-inline-start-color/>border-inline-start-color</a></li><li><a href=/css/properties/border-inline-start-style/>border-inline-start-style</a></li><li><a href=/css/properties/border-inline-start-width/>border-inline-start-width</a></li><li><a href=/css/properties/border-inline-style/>border-inline-style</a></li><li><a href=/css/properties/border-inline-width/>border-inline-width</a></li><li><a href=/css/properties/border-left/>border-left</a></li><li><a href=/css/properties/border-left-color/>border-left-color</a></li><li><a href=/css/properties/border-left-style/>border-left-style</a></li><li><a href=/css/properties/border-left-width/>border-left-width</a></li><li><a href=/css/properties/border-radius/>border-radius</a></li><li><a href=/css/properties/border-right/>border-right</a></li><li><a href=/css/properties/border-right-color/>border-right-color</a></li><li><a href=/css/properties/border-right-style/>border-right-style</a></li><li><a href=/css/properties/border-right-width/>border-right-width</a></li><li><a href=/css/properties/border-spacing/>border-spacing</a></li><li><a href=/css/properties/border-start-end-radius/>border-start-end-radius</a></li><li><a href=/css/properties/border-start-start-radius/>border-start-start-radius</a></li><li><a href=/css/properties/border-style/>border-style</a></li><li><a href=/css/properties/border-top/>border-top</a></li><li><a href=/css/properties/border-top-color/>border-top-color</a></li><li><a href=/css/properties/border-top-left-radius/>border-top-left-radius</a></li><li><a href=/css/properties/border-top-right-radius/>border-top-right-radius</a></li><li><a href=/css/properties/border-top-style/>border-top-style</a></li><li><a href=/css/properties/border-top-width/>border-top-width</a></li><li><a href=/css/properties/border-width/>border-width</a></li><li><a href=/css/properties/bottom/>bottom</a></li><li><a href=/css/properties/box-decoration-break/>box-decoration-break</a></li><li><a href=/css/properties/box-shadow/>box-shadow</a></li><li><a href=/css/properties/box-sizing/>box-sizing</a></li><li><a href=/css/properties/caption-side/>caption-side</a></li><li><a href=/css/properties/caret/>caret</a></li><li><a href=/css/properties/caret-animation/>caret-animation</a></li><li><a href=/css/properties/caret-color/>caret-color</a></li><li><a href=/css/properties/caret-shape/>caret-shape</a></li><li><a href=/css/properties/clear/>clear</a></li><li><a href=/css/properties/clip/>clip</a></li><li><a href=/css/properties/clip-path/>clip-path</a></li><li><a href=/css/properties/color/>color</a></li><li><a href=/css/properties/color-scheme/>color-scheme</a></li><li><a href=/css/properties/column-count/>column-count</a></li><li><a href=/css/properties/column-fill/>column-fill</a></li><li><a href=/css/properties/column-gap/>column-gap</a></li><li><a href=/css/properties/column-rule/>column-rule</a></li><li><a href=/css/properties/column-rule-color/>column-rule-color</a></li><li><a href=/css/properties/column-rule-style/>column-rule-style</a></li><li><a href=/css/properties/column-rule-width/>column-rule-width</a></li><li><a href=/css/properties/column-span/>column-span</a></li><li><a href=/css/properties/column-width/>column-width</a></li><li><a href=/css/properties/columns/>columns</a></li><li><a href=/css/properties/contain/>contain</a></li><li><a href=/css/properties/contain-intrinsic-block-size/>contain-intrinsic-block-size</a></li><li><a href=/css/properties/contain-intrinsic-height/>contain-intrinsic-height</a></li><li><a href=/css/properties/contain-intrinsic-inline-size/>contain-intrinsic-inline-size</a></li><li><a href=/css/properties/contain-intrinsic-size/>contain-intrinsic-size</a></li><li><a href=/css/properties/contain-intrinsic-width/>contain-intrinsic-width</a></li><li><a href=/css/properties/container/>container</a></li><li><a href=/css/properties/container-name/>container-name</a></li><li><a href=/css/properties/container-type/>container-type</a></li><li><a href=/css/properties/content/>content</a></li><li><a href=/css/properties/content-visibility/>content-visibility</a></li><li><a href=/css/properties/continue/>continue</a></li><li><a href=/css/properties/counter-increment/>counter-increment</a></li><li><a href=/css/properties/counter-reset/>counter-reset</a></li><li><a href=/css/properties/counter-set/>counter-set</a></li><li><a href=/css/properties/cursor/>cursor</a></li><li><a href=/css/properties/direction/>direction</a></li><li><a href=/css/properties/display/>display</a></li><li><a href=/css/properties/empty-cells/>empty-cells</a></li><li><a href=/css/properties/filter/>filter</a></li><li><a href=/css/properties/flex/>flex</a></li><li><a href=/css/properties/flex-basis/>flex-basis</a></li><li><a href=/css/properties/flex-direction/>flex-direction</a></li><li><a href=/css/properties/flex-flow/>flex-flow</a></li><li><a href=/css/properties/flex-grow/>flex-grow</a></li><li><a href=/css/properties/flex-shrink/>flex-shrink</a></li><li><a href=/css/properties/flex-wrap/>flex-wrap</a></li><li><a href=/css/properties/float/>float</a></li><li><a href=/css/properties/font/>font</a></li><li><a href=/css/properties/font-family/>font-family</a></li><li><a href=/css/properties/font-feature-settings/>font-feature-settings</a></li><li><a href=/css/properties/font-kerning/>font-kerning</a></li><li><a href=/css/properties/font-optical-sizing/>font-optical-sizing</a></li><li><a href=/css/properties/font-size/>font-size</a></li><li><a href=/css/properties/font-size-adjust/>font-size-adjust</a></li><li><a href=/css/properties/font-stretch/>font-stretch</a></li><li><a href=/css/properties/font-style/>font-style</a></li><li><a href=/css/properties/font-variant/>font-variant</a></li><li><a href=/css/properties/font-variant-caps/>font-variant-caps</a></li><li><a href=/css/properties/font-variant-ligatures/>font-variant-ligatures</a></li><li><a href=/css/properties/font-variant-numeric/>font-variant-numeric</a></li><li><a href=/css/properties/font-variant-position/>font-variant-position</a></li><li><a href=/css/properties/font-variation-settings/>font-variation-settings</a></li><li><a href=/css/properties/font-weight/>font-weight</a></li><li><a href=/css/properties/forced-color-adjust/>forced-color-adjust</a></li><li><a href=/css/properties/gap/>gap</a></li><li><a href=/css/properties/grid/>grid</a></li><li><a href=/css/properties/grid-area/>grid-area</a></li><li><a href=/css/properties/grid-auto-columns/>grid-auto-columns</a></li><li><a href=/css/properties/grid-auto-flow/>grid-auto-flow</a></li><li><a href=/css/properties/grid-auto-rows/>grid-auto-rows</a></li><li><a href=/css/properties/grid-column/>grid-column</a></li><li><a href=/css/properties/grid-column-end/>grid-column-end</a></li><li><a href=/css/properties/grid-column-start/>grid-column-start</a></li><li><a href=/css/properties/grid-row/>grid-row</a></li><li><a href=/css/properties/grid-row-end/>grid-row-end</a></li><li><a href=/css/properties/grid-row-start/>grid-row-start</a></li><li><a href=/css/properties/grid-template/>grid-template</a></li><li><a href=/css/properties/grid-template-areas/>grid-template-areas</a></li><li><a href=/css/properties/grid-template-columns/>grid-template-columns</a></li><li><a href=/css/properties/grid-template-rows/>grid-template-rows</a></li><li><a href=/css/properties/hanging-punctuation/>hanging-punctuation</a></li><li><a href=/css/properties/height/>height</a></li><li><a href=/css/properties/hyphens/>hyphens</a></li><li><a href=/css/properties/image-rendering/>image-rendering</a></li><li><a href=/css/properties/initial-letter/>initial-letter</a></li><li><a href=/css/properties/initial-letter-align/>initial-letter-align</a></li><li><a href=/css/properties/inline-size/>inline-size</a></li><li><a href=/css/properties/inset/>inset</a></li><li><a href=/css/properties/inset-block/>inset-block</a></li><li><a href=/css/properties/inset-block-end/>inset-block-end</a></li><li><a href=/css/properties/inset-block-start/>inset-block-start</a></li><li><a href=/css/properties/inset-inline/>inset-inline</a></li><li><a href=/css/properties/inset-inline-end/>inset-inline-end</a></li><li><a href=/css/properties/inset-inline-start/>inset-inline-start</a></li><li><a href=/css/properties/isolation/>isolation</a></li><li><a href=/css/properties/justify-content/>justify-content</a></li><li><a href=/css/properties/justify-items/>justify-items</a></li><li><a href=/css/properties/justify-self/>justify-self</a></li><li><a href=/css/properties/left/>left</a></li><li><a href=/css/properties/letter-spacing/>letter-spacing</a></li><li><a href=/css/properties/line-break/>line-break</a></li><li><a href=/css/properties/line-clamp/>line-clamp</a></li><li><a href=/css/properties/line-height/>line-height</a></li><li><a href=/css/properties/list-style/>list-style</a></li><li><a href=/css/properties/list-style-image/>list-style-image</a></li><li><a href=/css/properties/list-style-position/>list-style-position</a></li><li><a href=/css/properties/list-style-type/>list-style-type</a></li><li><a href=/css/properties/margin/>margin</a></li><li><a href=/css/properties/margin-block/>margin-block</a></li><li><a href=/css/properties/margin-block-end/>margin-block-end</a></li><li><a href=/css/properties/margin-block-start/>margin-block-start</a></li><li><a href=/css/properties/margin-bottom/>margin-bottom</a></li><li><a href=/css/properties/margin-inline/>margin-inline</a></li><li><a href=/css/properties/margin-inline-end/>margin-inline-end</a></li><li><a href=/css/properties/margin-inline-start/>margin-inline-start</a></li><li><a href=/css/properties/margin-left/>margin-left</a></li><li><a href=/css/properties/margin-right/>margin-right</a></li><li><a href=/css/properties/margin-top/>margin-top</a></li><li><a href=/css/properties/mask/>mask</a></li><li><a href=/css/properties/mask-border/>mask-border</a></li><li><a href=/css/properties/mask-border-mode/>mask-border-mode</a></li><li><a href=/css/properties/mask-border-outset/>mask-border-outset</a></li><li><a href=/css/properties/mask-border-repeat/>mask-border-repeat</a></li><li><a href=/css/properties/mask-border-slice/>mask-border-slice</a></li><li><a href=/css/properties/mask-border-source/>mask-border-source</a></li><li><a href=/css/properties/mask-border-width/>mask-border-width</a></li><li><a href=/css/properties/mask-clip/>mask-clip</a></li><li><a href=/css/properties/mask-composite/>mask-composite</a></li><li><a href=/css/properties/mask-image/>mask-image</a></li><li><a href=/css/properties/mask-mode/>mask-mode</a></li><li><a href=/css/properties/mask-origin/>mask-origin</a></li><li><a href=/css/properties/mask-position/>mask-position</a></li><li><a href=/css/properties/mask-repeat/>mask-repeat</a></li><li><a href=/css/properties/mask-size/>mask-size</a></li><li><a href=/css/properties/mask-type/>mask-type</a></li><li><a href=/css/properties/math-depth/>math-depth</a></li><li><a href=/css/properties/math-shift/>math-shift</a></li><li><a href=/css/properties/math-style/>math-style</a></li><li><a href=/css/properties/max-block-size/>max-block-size</a></li><li><a href=/css/properties/max-height/>max-height</a></li><li><a href=/css/properties/max-inline-size/>max-inline-size</a></li><li><a href=/css/properties/max-lines/>max-lines</a></li><li><a href=/css/properties/max-width/>max-width</a></li><li><a href=/css/properties/min-block-size/>min-block-size</a></li><li><a href=/css/properties/min-height/>min-height</a></li><li><a href=/css/properties/min-inline-size/>min-inline-size</a></li><li><a href=/css/properties/min-width/>min-width</a></li><li><a href=/css/properties/mix-blend-mode/>mix-blend-mode</a></li><li><a href=/css/properties/nav-down/>nav-down</a></li><li><a href=/css/properties/nav-left/>nav-left</a></li><li><a href=/css/properties/nav-right/>nav-right</a></li><li><a href=/css/properties/nav-up/>nav-up</a></li><li><a href=/css/properties/object-fit/>object-fit</a></li><li><a href=/css/properties/object-position/>object-position</a></li><li><a href=/css/properties/opacity/>opacity</a></li><li><a href=/css/properties/orphans/>orphans</a></li><li><a href=/css/properties/outline/>outline</a></li><li><a href=/css/properties/outline-color/>outline-color</a></li><li><a href=/css/properties/outline-offset/>outline-offset</a></li><li><a href=/css/properties/outline-style/>outline-style</a></li><li><a href=/css/properties/outline-width/>outline-width</a></li><li><a href=/css/properties/overflow/>overflow</a></li><li><a href=/css/properties/overflow-block/>overflow-block</a></li><li><a href=/css/properties/overflow-clip-margin/>overflow-clip-margin</a></li><li><a href=/css/properties/overflow-inline/>overflow-inline</a></li><li><a href=/css/properties/overflow-wrap/>overflow-wrap</a></li><li><a href=/css/properties/overflow-x/>overflow-x</a></li><li><a href=/css/properties/overflow-y/>overflow-y</a></li><li><a href=/css/properties/padding/>padding</a></li><li><a href=/css/properties/padding-block/>padding-block</a></li><li><a href=/css/properties/padding-block-end/>padding-block-end</a></li><li><a href=/css/properties/padding-block-start/>padding-block-start</a></li><li><a href=/css/properties/padding-bottom/>padding-bottom</a></li><li><a href=/css/properties/padding-inline/>padding-inline</a></li><li><a href=/css/properties/padding-inline-end/>padding-inline-end</a></li><li><a href=/css/properties/padding-inline-start/>padding-inline-start</a></li><li><a href=/css/properties/padding-left/>padding-left</a></li><li><a href=/css/properties/padding-right/>padding-right</a></li><li><a href=/css/properties/padding-top/>padding-top</a></li><li><a href=/css/properties/paint-order/>paint-order</a></li><li><a href=/css/properties/perspective/>perspective</a></li><li><a href=/css/properties/perspective-origin/>perspective-origin</a></li><li><a href=/css/properties/place-content/>place-content</a></li><li><a href=/css/properties/place-items/>place-items</a></li><li><a href=/css/properties/place-self/>place-self</a></li><li><a href=/css/properties/pointer-events/>pointer-events</a></li><li><a href=/css/properties/position/>position</a></li><li><a href=/css/properties/print-color-adjust/>print-color-adjust</a></li><li><a href=/css/properties/quotes/>quotes</a></li><li><a href=/css/properties/resize/>resize</a></li><li><a href=/css/properties/right/>right</a></li><li><a href=/css/properties/rotate/>rotate</a></li><li><a href=/css/properties/row-gap/>row-gap</a></li><li><a href=/css/properties/scale/>scale</a></li><li><a href=/css/properties/scroll-behavior/>scroll-behavior</a></li><li><a href=/css/properties/scroll-margin/>scroll-margin</a></li><li><a href=/css/properties/scroll-margin-block/>scroll-margin-block</a></li><li><a href=/css/properties/scroll-margin-block-end/>scroll-margin-block-end</a></li><li><a href=/css/properties/scroll-margin-block-start/>scroll-margin-block-start</a></li><li><a href=/css/properties/scroll-margin-bottom/>scroll-margin-bottom</a></li><li><a href=/css/properties/scroll-margin-inline/>scroll-margin-inline</a></li><li><a href=/css/properties/scroll-margin-inline-end/>scroll-margin-inline-end</a></li><li><a href=/css/properties/scroll-margin-inline-start/>scroll-margin-inline-start</a></li><li><a href=/css/properties/scroll-margin-left/>scroll-margin-left</a></li><li><a href=/css/properties/scroll-margin-right/>scroll-margin-right</a></li><li><a href=/css/properties/scroll-margin-top/>scroll-margin-top</a></li><li><a href=/css/properties/scroll-padding/>scroll-padding</a></li><li><a href=/css/properties/scroll-padding-block/>scroll-padding-block</a></li><li><a href=/css/properties/scroll-padding-block-end/>scroll-padding-block-end</a></li><li><a href=/css/properties/scroll-padding-block-start/>scroll-padding-block-start</a></li><li><a href=/css/properties/scroll-padding-bottom/>scroll-padding-bottom</a></li><li><a href=/css/properties/scroll-padding-inline/>scroll-padding-inline</a></li><li><a href=/css/properties/scroll-padding-inline-end/>scroll-padding-inline-end</a></li><li><a href=/css/properties/scroll-padding-inline-start/>scroll-padding-inline-start</a></li><li><a href=/css/properties/scroll-padding-left/>scroll-padding-left</a></li><li><a href=/css/properties/scroll-padding-right/>scroll-padding-right</a></li><li><a href=/css/properties/scroll-padding-top/>scroll-padding-top</a></li><li><a href=/css/properties/scroll-snap-align/>scroll-snap-align</a></li><li><a href=/css/properties/scroll-snap-stop/>scroll-snap-stop</a></li><li><a href=/css/properties/scroll-snap-type/>scroll-snap-type</a></li><li><a href=/css/properties/scroll-timeline/>scroll-timeline</a></li><li><a href=/css/properties/scroll-timeline-axis/>scroll-timeline-axis</a></li><li><a href=/css/properties/scroll-timeline-name/>scroll-timeline-name</a></li><li><a href=/css/properties/scrollbar-color/>scrollbar-color</a></li><li><a href=/css/properties/scrollbar-gutter/>scrollbar-gutter</a></li><li><a href=/css/properties/scrollbar-width/>scrollbar-width</a></li><li><a href=/css/properties/shape-image-threshold/>shape-image-threshold</a></li><li><a href=/css/properties/shape-margin/>shape-margin</a></li><li><a href=/css/properties/shape-outside/>shape-outside</a></li><li><a href=/css/properties/shape-rendering/>shape-rendering</a></li><li><a href=/css/properties/tab-size/>tab-size</a></li><li><a href=/css/properties/table-layout/>table-layout</a></li><li><a href=/css/properties/text-align/>text-align</a></li><li><a href=/css/properties/text-align-all/>text-align-all</a></li><li><a href=/css/properties/text-align-last/>text-align-last</a></li><li><a href=/css/properties/text-combine-upright/>text-combine-upright</a></li><li><a href=/css/properties/text-decoration/>text-decoration</a></li><li><a href=/css/properties/text-decoration-color/>text-decoration-color</a></li><li><a href=/css/properties/text-decoration-line/>text-decoration-line</a></li><li><a href=/css/properties/text-decoration-skip-ink/>text-decoration-skip-ink</a></li><li><a href=/css/properties/text-decoration-style/>text-decoration-style</a></li><li><a href=/css/properties/text-decoration-thickness/>text-decoration-thickness</a></li><li><a href=/css/properties/text-decoration-trim/>text-decoration-trim</a></li><li><a href=/css/properties/text-emphasis/>text-emphasis</a></li><li><a href=/css/properties/text-emphasis-color/>text-emphasis-color</a></li><li><a href=/css/properties/text-emphasis-position/>text-emphasis-position</a></li><li><a href=/css/properties/text-emphasis-style/>text-emphasis-style</a></li><li><a href=/css/properties/text-indent/>text-indent</a></li><li><a href=/css/properties/text-justify/>text-justify</a></li><li><a href=/css/properties/text-orientation/>text-orientation</a></li><li><a href=/css/properties/text-overflow/>text-overflow</a></li><li><a href=/css/properties/text-rendering/>text-rendering</a></li><li><a href=/css/properties/text-shadow/>text-shadow</a></li><li><a href=/css/properties/text-transform/>text-transform</a></li><li><a href=/css/properties/text-underline-offset/>text-underline-offset</a></li><li><a href=/css/properties/text-underline-position/>text-underline-position</a></li><li><a href=/css/properties/top/>top</a></li><li><a href=/css/properties/transform/>transform</a></li><li><a href=/css/properties/transform-box/>transform-box</a></li><li><a href=/css/properties/transform-origin/>transform-origin</a></li><li><a href=/css/properties/transform-style/>transform-style</a></li><li><a href=/css/properties/transition/>transition</a></li><li><a href=/css/properties/transition-delay/>transition-delay</a></li><li><a href=/css/properties/transition-duration/>transition-duration</a></li><li><a href=/css/properties/transition-property/>transition-property</a></li><li><a href=/css/properties/transition-timing-function/>transition-timing-function</a></li><li><a href=/css/properties/translate/>translate</a></li><li><a href=/css/properties/unicode-bidi/>unicode-bidi</a></li><li><a href=/css/properties/vertical-align/>vertical-align</a></li><li><a href=/css/properties/visibility/>visibility</a></li><li><a href=/css/properties/white-space/>white-space</a></li><li><a href=/css/properties/widows/>widows</a></li><li><a href=/css/properties/width/>width</a></li><li><a href=/css/properties/word-break/>word-break</a></li><li><a href=/css/properties/word-spacing/>word-spacing</a></li><li><a href=/css/properties/word-wrap/>word-wrap</a></li><li><a href=/css/properties/writing-mode/>writing-mode</a></li><li><a href=/css/properties/z-index/>z-index</a></li><li><a href=/css/properties/zoom/>zoom</a></li></ul></div><h2>Pseudo-Classes</h2><div><ul><li><a href=/css/pseudo-classes/active/>active</a></li><li><a href=/css/pseudo-classes/any-link/>any-link</a></li><li><a href=/css/pseudo-classes/autofill/>autofill</a></li><li><a href=/css/pseudo-classes/blank/>blank</a></li><li><a href=/css/pseudo-classes/checked/>checked</a></li><li><a href=/css/pseudo-classes/default/>default</a></li><li><a href=/css/pseudo-classes/defined/>defined</a></li><li><a href=/css/pseudo-classes/dir/>dir</a></li><li><a href=/css/pseudo-classes/disabled/>disabled</a></li><li><a href=/css/pseudo-classes/empty/>empty</a></li><li><a href=/css/pseudo-classes/enabled/>enabled</a></li><li><a href=/css/pseudo-classes/first-child/>first-child</a></li><li><a href=/css/pseudo-classes/first-of-type/>first-of-type</a></li><li><a href=/css/pseudo-classes/focus/>focus</a></li><li><a href=/css/pseudo-classes/focus-visible/>focus-visible</a></li><li><a href=/css/pseudo-classes/focus-within/>focus-within</a></li><li><a href=/css/pseudo-classes/fullscreen/>fullscreen</a></li><li><a href=/css/pseudo-classes/has/>has</a></li><li><a href=/css/pseudo-classes/hover/>hover</a></li><li><a href=/css/pseudo-classes/in-range/>in-range</a></li><li><a href=/css/pseudo-classes/indeterminate/>indeterminate</a></li><li><a href=/css/pseudo-classes/invalid/>invalid</a></li><li><a href=/css/pseudo-classes/is/>is</a></li><li><a href=/css/pseudo-classes/lang/>lang</a></li><li><a href=/css/pseudo-classes/last-child/>last-child</a></li><li><a href=/css/pseudo-classes/last-of-type/>last-of-type</a></li><li><a href=/css/pseudo-classes/link/>link</a></li><li><a href=/css/pseudo-classes/local-link/>local-link</a></li><li><a href=/css/pseudo-classes/modal/>modal</a></li><li><a href=/css/pseudo-classes/not/>not</a></li><li><a href=/css/pseudo-classes/nth-child/>nth-child</a></li><li><a href=/css/pseudo-classes/nth-col/>nth-col</a></li><li><a href=/css/pseudo-classes/nth-last-child/>nth-last-child</a></li><li><a href=/css/pseudo-classes/nth-last-col/>nth-last-col</a></li><li><a href=/css/pseudo-classes/nth-last-of-type/>nth-last-of-type</a></li><li><a href=/css/pseudo-classes/nth-of-type/>nth-of-type</a></li><li><a href=/css/pseudo-classes/only-child/>only-child</a></li><li><a href=/css/pseudo-classes/only-of-type/>only-of-type</a></li><li><a href=/css/pseudo-classes/optional/>optional</a></li><li><a href=/css/pseudo-classes/out-of-range/>out-of-range</a></li><li><a href=/css/pseudo-classes/picture-in-picture/>picture-in-picture</a></li><li><a href=/css/pseudo-classes/placeholder-shown/>placeholder-shown</a></li><li><a href=/css/pseudo-classes/popover-open/>popover-open</a></li><li><a href=/css/pseudo-classes/read-only/>read-only</a></li><li><a href=/css/pseudo-classes/read-write/>read-write</a></li><li><a href=/css/pseudo-classes/required/>required</a></li><li><a href=/css/pseudo-classes/root/>root</a></li><li><a href=/css/pseudo-classes/scope/>scope</a></li><li><a href=/css/pseudo-classes/target/>target</a></li><li><a href=/css/pseudo-classes/target-within/>target-within</a></li><li><a href=/css/pseudo-classes/valid/>valid</a></li><li><a href=/css/pseudo-classes/visited/>visited</a></li><li><a href=/css/pseudo-classes/where/>where</a></li></ul></div><h2>Pseudo-Elements</h2><div><ul><li><a href=/css/pseudo-elements/after/>after</a></li><li><a href=/css/pseudo-elements/backdrop/>backdrop</a></li><li><a href=/css/pseudo-elements/before/>before</a></li><li><a href=/css/pseudo-elements/details-content/>details-content</a></li><li><a href=/css/pseudo-elements/file-selector-button/>file-selector-button</a></li><li><a href=/css/pseudo-elements/first-letter/>first-letter</a></li><li><a href=/css/pseudo-elements/first-line/>first-line</a></li><li><a href=/css/pseudo-elements/highlight/>highlight</a></li><li><a href=/css/pseudo-elements/marker/>marker</a></li><li><a href=/css/pseudo-elements/part/>part</a></li><li><a href=/css/pseudo-elements/placeholder/>placeholder</a></li><li><a href=/css/pseudo-elements/selection/>selection</a></li></ul></div><h2>Units</h2><div><ul><li><a href=/css/units/cap/>cap</a></li><li><a href=/css/units/ch/>ch</a></li><li><a href=/css/units/cm/>cm</a></li><li><a href=/css/units/cqb/>cqb</a></li><li><a href=/css/units/cqh/>cqh</a></li><li><a href=/css/units/cqi/>cqi</a></li><li><a href=/css/units/cqmax/>cqmax</a></li><li><a href=/css/units/cqmin/>cqmin</a></li><li><a href=/css/units/cqw/>cqw</a></li><li><a href=/css/units/deg/>deg</a></li><li><a href=/css/units/dpcm/>dpcm</a></li><li><a href=/css/units/dpi/>dpi</a></li><li><a href=/css/units/dppx/>dppx</a></li><li><a href=/css/units/dvb/>dvb</a></li><li><a href=/css/units/dvh/>dvh</a></li><li><a href=/css/units/dvi/>dvi</a></li><li><a href=/css/units/dvmax/>dvmax</a></li><li><a href=/css/units/dvmin/>dvmin</a></li><li><a href=/css/units/dvw/>dvw</a></li><li><a href=/css/units/em/>em</a></li><li><a href=/css/units/ex/>ex</a></li><li><a href=/css/units/grad/>grad</a></li><li><a href=/css/units/ic/>ic</a></li><li><a href=/css/units/in/>in</a></li><li><a href=/css/units/lvb/>lvb</a></li><li><a href=/css/units/lvh/>lvh</a></li><li><a href=/css/units/lvi/>lvi</a></li><li><a href=/css/units/lvmax/>lvmax</a></li><li><a href=/css/units/lvmin/>lvmin</a></li><li><a href=/css/units/lvw/>lvw</a></li><li><a href=/css/units/mm/>mm</a></li><li><a href=/css/units/ms/>ms</a></li><li><a href=/css/units/pc/>pc</a></li><li><a href=/css/units/pt/>pt</a></li><li><a href=/css/units/px/>px</a></li><li><a href=/css/units/q/>Q</a></li><li><a href=/css/units/rad/>rad</a></li><li><a href=/css/units/rem/>rem</a></li><li><a href=/css/units/s/>s</a></li><li><a href=/css/units/svb/>svb</a></li><li><a href=/css/units/svh/>svh</a></li><li><a href=/css/units/svi/>svi</a></li><li><a href=/css/units/svmax/>svmax</a></li><li><a href=/css/units/svmin/>svmin</a></li><li><a href=/css/units/svw/>svw</a></li><li><a href=/css/units/turn/>turn</a></li><li><a href=/css/units/vb/>vb</a></li><li><a href=/css/units/vh/>vh</a></li><li><a href=/css/units/vi/>vi</a></li><li><a href=/css/units/vmax/>vmax</a></li><li><a href=/css/units/vmin/>vmin</a></li><li><a href=/css/units/vw/>vw</a></li></ul></div></div><div class=h1><a id=switch-js>JS</a></div><div id=list-js><h2>Overview</h2><div><ul><li><a href=/js/>Overview</a></li></ul></div><h2>AbortController</h2><div><ul><li><a href=/js/abortcontroller/abort/>abort</a></li><li><a href=/js/abortcontroller/abortcontroller/>AbortController</a></li><li><a href=/js/abortcontroller/signal/>signal</a></li></ul></div><h2>AbstractRange</h2><div><ul><li><a href=/js/abstractrange/collapsed/>collapsed</a></li><li><a href=/js/abstractrange/endcontainer/>endContainer</a></li><li><a href=/js/abstractrange/endoffset/>endOffset</a></li><li><a href=/js/abstractrange/startcontainer/>startContainer</a></li><li><a href=/js/abstractrange/startoffset/>startOffset</a></li></ul></div><h2>AbortSignal</h2><div><ul><li><a href=/js/abortsignal/abort/>abort</a></li><li><a href=/js/abortsignal/aborted/>aborted</a></li><li><a href=/js/abortsignal/reason/>reason</a></li><li><a href=/js/abortsignal/throwifaborted/>throwIfAborted</a></li><li><a href=/js/abortsignal/timeout/>timeout</a></li></ul></div><h2>ChildNode</h2><div><ul><li><a href=/js/childnode/after/>after</a></li><li><a href=/js/childnode/before/>before</a></li><li><a href=/js/childnode/remove/>remove</a></li><li><a href=/js/childnode/replacewith/>replaceWith</a></li></ul></div><h2>Comment</h2><div><ul><li><a href=/js/comment/comment/>Comment</a></li></ul></div><h2>console</h2><div><ul><li><a href=/js/console/assert/>assert</a></li><li><a href=/js/console/clear/>clear</a></li><li><a href=/js/console/count/>count</a></li><li><a href=/js/console/countreset/>countReset</a></li><li><a href=/js/console/debug/>debug</a></li><li><a href=/js/console/dir/>dir</a></li><li><a href=/js/console/dirxml/>dirxml</a></li><li><a href=/js/console/error/>error</a></li><li><a href=/js/console/group/>group</a></li><li><a href=/js/console/groupcollapsed/>groupCollapsed</a></li><li><a href=/js/console/groupend/>groupEnd</a></li><li><a href=/js/console/info/>info</a></li><li><a href=/js/console/log/>log</a></li><li><a href=/js/console/table/>table</a></li><li><a href=/js/console/time/>time</a></li><li><a href=/js/console/timeend/>timeEnd</a></li><li><a href=/js/console/timelog/>timeLog</a></li><li><a href=/js/console/trace/>trace</a></li><li><a href=/js/console/warn/>warn</a></li></ul></div><h2>CustomEvent</h2><div><ul><li><a href=/js/customevent/customevent/>CustomEvent</a></li><li><a href=/js/customevent/detail/>detail</a></li></ul></div><h2>Declarations</h2><div><ul><li><a href=/js/declarations/const/>const</a></li><li><a href=/js/declarations/let/>let</a></li><li><a href=/js/declarations/var/>var</a></li></ul></div><h2>Document</h2><div><ul><li><a href=/js/document/adoptnode/>adoptNode</a></li><li><a href=/js/document/body/>body</a></li><li><a href=/js/document/characterset/>characterSet</a></li><li><a href=/js/document/close/>close</a></li><li><a href=/js/document/compatmode/>compatMode</a></li><li><a href=/js/document/contenttype/>contentType</a></li><li><a href=/js/document/cookie/>cookie</a></li><li><a href=/js/document/createcdatasection/>createCDATASection</a></li><li><a href=/js/document/createcomment/>createComment</a></li><li><a href=/js/document/createdocumentfragment/>createDocumentFragment</a></li><li><a href=/js/document/createelement/>createElement</a></li><li><a href=/js/document/createelementns/>createElementNS</a></li><li><a href=/js/document/createprocessinginstruction/>createProcessingInstruction</a></li><li><a href=/js/document/createtextnode/>createTextNode</a></li><li><a href=/js/document/currentscript/>currentScript</a></li><li><a href=/js/document/defaultview/>defaultView</a></li><li><a href=/js/document/designmode/>designMode</a></li><li><a href=/js/document/dir/>dir</a></li><li><a href=/js/document/doctype/>doctype</a></li><li><a href=/js/document/document/>Document</a></li><li><a href=/js/document/documentelement/>documentElement</a></li><li><a href=/js/document/documenturi/>documentURI</a></li><li><a href=/js/document/domain/>domain</a></li><li><a href=/js/document/embeds/>embeds</a></li><li><a href=/js/document/exitpictureinpicture/>exitPictureInPicture</a></li><li><a href=/js/document/forms/>forms</a></li><li><a href=/js/document/getelementsbyclassname/>getElementsByClassName</a></li><li><a href=/js/document/getelementsbyname/>getElementsByName</a></li><li><a href=/js/document/getelementsbytagname/>getElementsByTagName</a></li><li><a href=/js/document/getelementsbytagnamens/>getElementsByTagNameNS</a></li><li><a href=/js/document/hasfocus/>hasFocus</a></li><li><a href=/js/document/head/>head</a></li><li><a href=/js/document/hidden/>hidden</a></li><li><a href=/js/document/images/>images</a></li><li><a href=/js/document/implementation/>implementation</a></li><li><a href=/js/document/importnode/>importNode</a></li><li><a href=/js/document/lastmodified/>lastModified</a></li><li><a href=/js/document/links/>links</a></li><li><a href=/js/document/location/>location</a></li><li><a href=/js/document/onreadystatechange/>onreadystatechange</a></li><li><a href=/js/document/onvisibilitychange/>onvisibilitychange</a></li><li><a href=/js/document/open/>open</a></li><li><a href=/js/document/parsehtmlunsafe/>parseHTMLUnsafe</a></li><li><a href=/js/document/pictureinpictureenabled/>pictureInPictureEnabled</a></li><li><a href=/js/document/plugins/>plugins</a></li><li><a href=/js/document/readystate/>readyState</a></li><li><a href=/js/document/referrer/>referrer</a></li><li><a href=/js/document/scripts/>scripts</a></li><li><a href=/js/document/title/>title</a></li><li><a href=/js/document/url/>URL</a></li><li><a href=/js/document/visibilitystate/>visibilityState</a></li><li><a href=/js/document/write/>write</a></li><li><a href=/js/document/writeln/>writeln</a></li></ul></div><h2>DocumentFragment</h2><div><ul><li><a href=/js/documentfragment/documentfragment/>DocumentFragment</a></li></ul></div><h2>DocumentOrShadowRoot</h2><div><ul><li><a href=/js/documentorshadowroot/activeelement/>activeElement</a></li><li><a href=/js/documentorshadowroot/pictureinpictureelement/>pictureInPictureElement</a></li></ul></div><h2>DOMImplementation</h2><div><ul><li><a href=/js/domimplementation/createdocument/>createDocument</a></li><li><a href=/js/domimplementation/createdocumenttype/>createDocumentType</a></li><li><a href=/js/domimplementation/createhtmldocument/>createHTMLDocument</a></li></ul></div><h2>DOMStringList</h2><div><ul><li><a href=/js/domstringlist/contains/>contains</a></li><li><a href=/js/domstringlist/item/>item</a></li><li><a href=/js/domstringlist/length/>length</a></li></ul></div><h2>DOMTokenList</h2><div><ul><li><a href=/js/domtokenlist/add/>add</a></li><li><a href=/js/domtokenlist/contains/>contains</a></li><li><a href=/js/domtokenlist/item/>item</a></li><li><a href=/js/domtokenlist/length/>length</a></li><li><a href=/js/domtokenlist/remove/>remove</a></li><li><a href=/js/domtokenlist/replace/>replace</a></li><li><a href=/js/domtokenlist/supports/>supports</a></li><li><a href=/js/domtokenlist/toggle/>toggle</a></li><li><a href=/js/domtokenlist/value/>value</a></li></ul></div><h2>Element</h2><div><ul><li><a href=/js/element/attachshadow/>attachShadow</a></li><li><a href=/js/element/classlist/>classList</a></li><li><a href=/js/element/classname/>className</a></li><li><a href=/js/element/closest/>closest</a></li><li><a href=/js/element/getattribute/>getAttribute</a></li><li><a href=/js/element/getattributenames/>getAttributeNames</a></li><li><a href=/js/element/getattributens/>getAttributeNS</a></li><li><a href=/js/element/hasattribute/>hasAttribute</a></li><li><a href=/js/element/hasattributens/>hasAttributeNS</a></li><li><a href=/js/element/hasattributes/>hasAttributes</a></li><li><a href=/js/element/id/>id</a></li><li><a href=/js/element/innerhtml/>innerHTML</a></li><li><a href=/js/element/insertadjacenthtml/>insertAdjacentHTML</a></li><li><a href=/js/element/localname/>localName</a></li><li><a href=/js/element/matches/>matches</a></li><li><a href=/js/element/namespaceuri/>namespaceURI</a></li><li><a href=/js/element/outerhtml/>outerHTML</a></li><li><a href=/js/element/prefix/>prefix</a></li><li><a href=/js/element/removeattribute/>removeAttribute</a></li><li><a href=/js/element/removeattributens/>removeAttributeNS</a></li><li><a href=/js/element/setattribute/>setAttribute</a></li><li><a href=/js/element/setattributens/>setAttributeNS</a></li><li><a href=/js/element/shadowroot/>shadowRoot</a></li><li><a href=/js/element/slot/>slot</a></li><li><a href=/js/element/tagname/>tagName</a></li><li><a href=/js/element/toggleattribute/>toggleAttribute</a></li></ul></div><h2>Event</h2><div><ul><li><a href=/js/event/bubbles/>bubbles</a></li><li><a href=/js/event/cancelable/>cancelable</a></li><li><a href=/js/event/composed/>composed</a></li><li><a href=/js/event/composedpath/>composedPath</a></li><li><a href=/js/event/currenttarget/>currentTarget</a></li><li><a href=/js/event/defaultprevented/>defaultPrevented</a></li><li><a href=/js/event/event/>Event</a></li><li><a href=/js/event/eventphase/>eventPhase</a></li><li><a href=/js/event/istrusted/>isTrusted</a></li><li><a href=/js/event/preventdefault/>preventDefault</a></li><li><a href=/js/event/stopimmediatepropagation/>stopImmediatePropagation</a></li><li><a href=/js/event/stoppropagation/>stopPropagation</a></li><li><a href=/js/event/target/>target</a></li><li><a href=/js/event/timestamp/>timeStamp</a></li><li><a href=/js/event/type/>type</a></li></ul></div><h2>EventTarget</h2><div><ul><li><a href=/js/eventtarget/addeventlistener/>addEventListener</a></li><li><a href=/js/eventtarget/dispatchevent/>dispatchEvent</a></li><li><a href=/js/eventtarget/eventtarget/>EventTarget</a></li><li><a href=/js/eventtarget/removeeventlistener/>removeEventListener</a></li></ul></div><h2>HTMLAllCollection</h2><div><ul><li><a href=/js/htmlallcollection/item/>item</a></li><li><a href=/js/htmlallcollection/length/>length</a></li><li><a href=/js/htmlallcollection/nameditem/>namedItem</a></li></ul></div><h2>HTMLBaseElement</h2><div><ul><li><a href=/js/htmlbaseelement/href/>href</a></li><li><a href=/js/htmlbaseelement/target/>target</a></li></ul></div><h2>HTMLCollection</h2><div><ul><li><a href=/js/htmlcollection/item/>item</a></li><li><a href=/js/htmlcollection/length/>length</a></li><li><a href=/js/htmlcollection/nameditem/>namedItem</a></li></ul></div><h2>HTMLDialogElement</h2><div><ul><li><a href=/js/htmldialogelement/close/>close</a></li><li><a href=/js/htmldialogelement/open/>open</a></li><li><a href=/js/htmldialogelement/returnvalue/>returnValue</a></li><li><a href=/js/htmldialogelement/show/>show</a></li><li><a href=/js/htmldialogelement/showmodal/>showModal</a></li></ul></div><h2>HTMLElement</h2><div><ul><li><a href=/js/htmlelement/accesskey/>accessKey</a></li><li><a href=/js/htmlelement/accesskeylabel/>accessKeyLabel</a></li><li><a href=/js/htmlelement/attachinternals/>attachInternals</a></li><li><a href=/js/htmlelement/autocapitalize/>autocapitalize</a></li><li><a href=/js/htmlelement/autocorrect/>autocorrect</a></li><li><a href=/js/htmlelement/click/>click</a></li><li><a href=/js/htmlelement/constructor/>constructor</a></li><li><a href=/js/htmlelement/dir/>dir</a></li><li><a href=/js/htmlelement/draggable/>draggable</a></li><li><a href=/js/htmlelement/hidden/>hidden</a></li><li><a href=/js/htmlelement/hidepopover/>hidePopover</a></li><li><a href=/js/htmlelement/inert/>inert</a></li><li><a href=/js/htmlelement/innertext/>innerText</a></li><li><a href=/js/htmlelement/lang/>lang</a></li><li><a href=/js/htmlelement/outertext/>outerText</a></li><li><a href=/js/htmlelement/popover/>popover</a></li><li><a href=/js/htmlelement/showpopover/>showPopover</a></li><li><a href=/js/htmlelement/spellcheck/>spellcheck</a></li><li><a href=/js/htmlelement/title/>title</a></li><li><a href=/js/htmlelement/togglepopover/>togglePopover</a></li><li><a href=/js/htmlelement/translate/>translate</a></li><li><a href=/js/htmlelement/writingsuggestions/>writingSuggestions</a></li></ul></div><h2>HTMLFormControlsCollection</h2><div><ul><li><a href=/js/htmlformcontrolscollection/item/>item</a></li><li><a href=/js/htmlformcontrolscollection/length/>length</a></li><li><a href=/js/htmlformcontrolscollection/nameditem/>namedItem</a></li></ul></div><h2>HTMLLinkElement</h2><div><ul><li><a href=/js/htmllinkelement/crossorigin/>crossOrigin</a></li><li><a href=/js/htmllinkelement/href/>href</a></li><li><a href=/js/htmllinkelement/rel/>rel</a></li></ul></div><h2>HTMLOptionsCollection</h2><div><ul><li><a href=/js/htmloptionscollection/add/>add</a></li><li><a href=/js/htmloptionscollection/item/>item</a></li><li><a href=/js/htmloptionscollection/length/>length</a></li><li><a href=/js/htmloptionscollection/nameditem/>namedItem</a></li><li><a href=/js/htmloptionscollection/remove/>remove</a></li><li><a href=/js/htmloptionscollection/selectedindex/>selectedIndex</a></li></ul></div><h2>HTMLOrSVGElement</h2><div><ul><li><a href=/js/htmlorsvgelement/autofocus/>autofocus</a></li><li><a href=/js/htmlorsvgelement/blur/>blur</a></li><li><a href=/js/htmlorsvgelement/dataset/>dataset</a></li><li><a href=/js/htmlorsvgelement/focus/>focus</a></li><li><a href=/js/htmlorsvgelement/nonce/>nonce</a></li><li><a href=/js/htmlorsvgelement/tabindex/>tabIndex</a></li></ul></div><h2>HTMLVideoElement</h2><div><ul><li><a href=/js/htmlvideoelement/autopictureinpicture/>autoPictureInPicture</a></li><li><a href=/js/htmlvideoelement/disablepictureinpicture/>disablePictureInPicture</a></li><li><a href=/js/htmlvideoelement/requestpictureinpicture/>requestPictureInPicture</a></li></ul></div><h2>Iterations</h2><div><ul><li><a href=/js/iterations/do-while/>do-while</a></li><li><a href=/js/iterations/for/>for</a></li><li><a href=/js/iterations/for-await-of/>for-await-of</a></li><li><a href=/js/iterations/for-in/>for-in</a></li><li><a href=/js/iterations/for-of/>for-of</a></li><li><a href=/js/iterations/while/>while</a></li></ul></div><h2>Location</h2><div><ul><li><a href=/js/location/ancestororigins/>ancestorOrigins</a></li></ul></div><h2>MutationObserver</h2><div><ul><li><a href=/js/mutationobserver/disconnect/>disconnect</a></li><li><a href=/js/mutationobserver/mutationobserver/>MutationObserver</a></li><li><a href=/js/mutationobserver/observe/>observe</a></li><li><a href=/js/mutationobserver/takerecords/>takeRecords</a></li></ul></div><h2>MutationRecord</h2><div><ul><li><a href=/js/mutationrecord/addednodes/>addedNodes</a></li><li><a href=/js/mutationrecord/attributename/>attributeName</a></li><li><a href=/js/mutationrecord/attributenamespace/>attributeNamespace</a></li><li><a href=/js/mutationrecord/nextsibling/>nextSibling</a></li><li><a href=/js/mutationrecord/oldvalue/>oldValue</a></li><li><a href=/js/mutationrecord/previoussibling/>previousSibling</a></li><li><a href=/js/mutationrecord/removednodes/>removedNodes</a></li><li><a href=/js/mutationrecord/target/>target</a></li><li><a href=/js/mutationrecord/type/>type</a></li></ul></div><h2>Node</h2><div><ul><li><a href=/js/node/baseuri/>baseURI</a></li><li><a href=/js/node/childnodes/>childNodes</a></li><li><a href=/js/node/clonenode/>cloneNode</a></li><li><a href=/js/node/comparedocumentposition/>compareDocumentPosition</a></li><li><a href=/js/node/contains/>contains</a></li><li><a href=/js/node/firstchild/>firstChild</a></li><li><a href=/js/node/getrootnode/>getRootNode</a></li><li><a href=/js/node/haschildnodes/>hasChildNodes</a></li><li><a href=/js/node/isconnected/>isConnected</a></li><li><a href=/js/node/isequalnode/>isEqualNode</a></li><li><a href=/js/node/lastchild/>lastChild</a></li><li><a href=/js/node/nextsibling/>nextSibling</a></li><li><a href=/js/node/nodename/>nodeName</a></li><li><a href=/js/node/nodetype/>nodeType</a></li><li><a href=/js/node/normalize/>normalize</a></li><li><a href=/js/node/ownerdocument/>ownerDocument</a></li><li><a href=/js/node/parentelement/>parentElement</a></li><li><a href=/js/node/parentnode/>parentNode</a></li><li><a href=/js/node/previoussibling/>previousSibling</a></li></ul></div><h2>NodeList</h2><div><ul><li><a href=/js/nodelist/item/>item</a></li><li><a href=/js/nodelist/length/>length</a></li></ul></div><h2>NonDocumentTypeChildNode</h2><div><ul><li><a href=/js/nondocumenttypechildnode/nextelementsibling/>nextElementSibling</a></li><li><a href=/js/nondocumenttypechildnode/previouselementsibling/>previousElementSibling</a></li></ul></div><h2>NonElementParentNode</h2><div><ul><li><a href=/js/nonelementparentnode/getelementbyid/>getElementById</a></li></ul></div><h2>ParentNode</h2><div><ul><li><a href=/js/parentnode/append/>append</a></li><li><a href=/js/parentnode/children/>children</a></li><li><a href=/js/parentnode/firstelementchild/>firstElementChild</a></li><li><a href=/js/parentnode/lastelementchild/>lastElementChild</a></li><li><a href=/js/parentnode/prepend/>prepend</a></li><li><a href=/js/parentnode/queryselector/>querySelector</a></li><li><a href=/js/parentnode/queryselectorall/>querySelectorAll</a></li><li><a href=/js/parentnode/replacechildren/>replaceChildren</a></li></ul></div><h2>Prompts</h2><div><ul><li><a href=/js/prompts/alert/>alert</a></li><li><a href=/js/prompts/confirm/>confirm</a></li><li><a href=/js/prompts/prompt/>prompt</a></li></ul></div><h2>RadioNodeList</h2><div><ul><li><a href=/js/radionodelist/value/>value</a></li></ul></div><h2>Range</h2><div><ul><li><a href=/js/range/commonancestorcontainer/>commonAncestorContainer</a></li><li><a href=/js/range/comparepoint/>comparePoint</a></li><li><a href=/js/range/createcontextualfragment/>createContextualFragment</a></li><li><a href=/js/range/intersectsnode/>intersectsNode</a></li><li><a href=/js/range/range/>Range</a></li></ul></div><h2>Slottable</h2><div><ul><li><a href=/js/slottable/assignedslot/>assignedSlot</a></li></ul></div><h2>Statements</h2><div><ul><li><a href=/js/statements/if/>if</a></li><li><a href=/js/statements/switch/>switch</a></li><li><a href=/js/statements/try/>try</a></li></ul></div><h2>StaticRange</h2><div><ul><li><a href=/js/staticrange/staticrange/>StaticRange</a></li></ul></div><h2>Text</h2><div><ul><li><a href=/js/text/splittext/>splitText</a></li><li><a href=/js/text/text/>Text</a></li><li><a href=/js/text/wholetext/>wholeText</a></li></ul></div><h2>Window</h2><div><ul><li><a href=/js/window/location/>location</a></li></ul></div><h2>WindowOrWorkerGlobalScope</h2><div><ul><li><a href=/js/windoworworkerglobalscope/atob/>atob</a></li><li><a href=/js/windoworworkerglobalscope/btoa/>btoa</a></li><li><a href=/js/windoworworkerglobalscope/clearinterval/>clearInterval</a></li><li><a href=/js/windoworworkerglobalscope/cleartimeout/>clearTimeout</a></li><li><a href=/js/windoworworkerglobalscope/createimagebitmap/>createImageBitmap</a></li><li><a href=/js/windoworworkerglobalscope/crossoriginisolated/>crossOriginIsolated</a></li><li><a href=/js/windoworworkerglobalscope/issecurecontext/>isSecureContext</a></li><li><a href=/js/windoworworkerglobalscope/origin/>origin</a></li><li><a href=/js/windoworworkerglobalscope/queuemicrotask/>queueMicrotask</a></li><li><a href=/js/windoworworkerglobalscope/reporterror/>reportError</a></li><li><a href=/js/windoworworkerglobalscope/setinterval/>setInterval</a></li><li><a href=/js/windoworworkerglobalscope/settimeout/>setTimeout</a></li><li><a href=/js/windoworworkerglobalscope/structuredclone/>structuredClone</a></li></ul></div><h2>Other</h2><div><ul><li><a href=/js/array/>Array</a></li><li><a href=/js/comments/>Comments</a></li><li><a href=/js/date/>Date</a></li><li><a href=/js/enable/>Enable</a></li><li><a href=/js/functions/>Functions</a></li><li><a href=/js/infinity/>Infinity</a></li><li><a href=/js/print/>print</a></li></ul></div></div><div class=h1><a id=switch-php>PHP</a></div><div id=list-php><h2>Overview</h2><div><ul><li><a href=/php/>Overview</a></li></ul></div><h2>Array</h2><div><ul><li><a href=/php/array/array/>array</a></li><li><a href=/php/array/array_all/>array_all</a></li><li><a href=/php/array/array_any/>array_any</a></li><li><a href=/php/array/array_change_key_case/>array_change_key_case</a></li><li><a href=/php/array/array_chunk/>array_chunk</a></li><li><a href=/php/array/array_column/>array_column</a></li><li><a href=/php/array/array_combine/>array_combine</a></li><li><a href=/php/array/array_count_values/>array_count_values</a></li><li><a href=/php/array/array_diff/>array_diff</a></li><li><a href=/php/array/array_diff_assoc/>array_diff_assoc</a></li><li><a href=/php/array/array_diff_key/>array_diff_key</a></li><li><a href=/php/array/array_diff_uassoc/>array_diff_uassoc</a></li><li><a href=/php/array/array_diff_ukey/>array_diff_ukey</a></li><li><a href=/php/array/array_fill/>array_fill</a></li><li><a href=/php/array/array_fill_keys/>array_fill_keys</a></li><li><a href=/php/array/array_filter/>array_filter</a></li><li><a href=/php/array/array_find/>array_find</a></li><li><a href=/php/array/array_find_key/>array_find_key</a></li><li><a href=/php/array/array_first/>array_first</a></li><li><a href=/php/array/array_flip/>array_flip</a></li><li><a href=/php/array/array_intersect/>array_intersect</a></li><li><a href=/php/array/array_intersect_assoc/>array_intersect_assoc</a></li><li><a href=/php/array/array_intersect_key/>array_intersect_key</a></li><li><a href=/php/array/array_intersect_uassoc/>array_intersect_uassoc</a></li><li><a href=/php/array/array_intersect_ukey/>array_intersect_ukey</a></li><li><a href=/php/array/array_key_exists/>array_key_exists</a></li><li><a href=/php/array/array_key_first/>array_key_first</a></li><li><a href=/php/array/array_key_last/>array_key_last</a></li><li><a href=/php/array/array_keys/>array_keys</a></li><li><a href=/php/array/array_last/>array_last</a></li><li><a href=/php/array/array_map/>array_map</a></li><li><a href=/php/array/array_merge/>array_merge</a></li><li><a href=/php/array/array_merge_recursive/>array_merge_recursive</a></li><li><a href=/php/array/array_multisort/>array_multisort</a></li><li><a href=/php/array/array_pad/>array_pad</a></li><li><a href=/php/array/array_pop/>array_pop</a></li><li><a href=/php/array/array_product/>array_product</a></li><li><a href=/php/array/array_push/>array_push</a></li><li><a href=/php/array/array_rand/>array_rand</a></li><li><a href=/php/array/array_reduce/>array_reduce</a></li><li><a href=/php/array/array_replace/>array_replace</a></li><li><a href=/php/array/array_replace_recursive/>array_replace_recursive</a></li><li><a href=/php/array/array_reverse/>array_reverse</a></li><li><a href=/php/array/array_search/>array_search</a></li><li><a href=/php/array/array_shift/>array_shift</a></li><li><a href=/php/array/array_slice/>array_slice</a></li><li><a href=/php/array/array_splice/>array_splice</a></li><li><a href=/php/array/array_sum/>array_sum</a></li><li><a href=/php/array/array_udiff/>array_udiff</a></li><li><a href=/php/array/array_udiff_assoc/>array_udiff_assoc</a></li><li><a href=/php/array/array_udiff_uassoc/>array_udiff_uassoc</a></li><li><a href=/php/array/array_uintersect/>array_uintersect</a></li><li><a href=/php/array/array_uintersect_assoc/>array_uintersect_assoc</a></li><li><a href=/php/array/array_uintersect_uassoc/>array_uintersect_uassoc</a></li><li><a href=/php/array/array_unique/>array_unique</a></li><li><a href=/php/array/array_unshift/>array_unshift</a></li><li><a href=/php/array/array_values/>array_values</a></li><li><a href=/php/array/array_walk/>array_walk</a></li><li><a href=/php/array/array_walk_recursive/>array_walk_recursive</a></li><li><a href=/php/array/arsort/>arsort</a></li><li><a href=/php/array/asort/>asort</a></li><li><a href=/php/array/compact/>compact</a></li><li><a href=/php/array/count/>count</a></li><li><a href=/php/array/current/>current</a></li><li><a href=/php/array/end/>end</a></li><li><a href=/php/array/extract/>extract</a></li><li><a href=/php/array/in_array/>in_array</a></li><li><a href=/php/array/key/>key</a></li><li><a href=/php/array/key_exists/>key_exists</a></li><li><a href=/php/array/krsort/>krsort</a></li><li><a href=/php/array/ksort/>ksort</a></li><li><a href=/php/array/list/>list</a></li><li><a href=/php/array/natcasesort/>natcasesort</a></li><li><a href=/php/array/natsort/>natsort</a></li><li><a href=/php/array/next/>next</a></li><li><a href=/php/array/pos/>pos</a></li><li><a href=/php/array/prev/>prev</a></li><li><a href=/php/array/range/>range</a></li><li><a href=/php/array/reset/>reset</a></li><li><a href=/php/array/rsort/>rsort</a></li><li><a href=/php/array/shuffle/>shuffle</a></li><li><a href=/php/array/sizeof/>sizeof</a></li><li><a href=/php/array/sort/>sort</a></li><li><a href=/php/array/uasort/>uasort</a></li><li><a href=/php/array/uksort/>uksort</a></li><li><a href=/php/array/usort/>usort</a></li></ul></div><h2>BCMath</h2><div><ul><li><a href=/php/bcmath/bcadd/>bcadd</a></li><li><a href=/php/bcmath/bcceil/>bcceil</a></li><li><a href=/php/bcmath/bccomp/>bccomp</a></li><li><a href=/php/bcmath/bcdiv/>bcdiv</a></li><li><a href=/php/bcmath/bcdivmod/>bcdivmod</a></li><li><a href=/php/bcmath/bcfloor/>bcfloor</a></li><li><a href=/php/bcmath/bcmod/>bcmod</a></li><li><a href=/php/bcmath/bcmul/>bcmul</a></li><li><a href=/php/bcmath/bcpow/>bcpow</a></li><li><a href=/php/bcmath/bcpowmod/>bcpowmod</a></li><li><a href=/php/bcmath/bcround/>bcround</a></li><li><a href=/php/bcmath/bcscale/>bcscale</a></li><li><a href=/php/bcmath/bcsqrt/>bcsqrt</a></li><li><a href=/php/bcmath/bcsub/>bcsub</a></li></ul></div><h2>bzip2</h2><div><ul><li><a href=/php/bzip2/bzclose/>bzclose</a></li><li><a href=/php/bzip2/bzcompress/>bzcompress</a></li><li><a href=/php/bzip2/bzdecompress/>bzdecompress</a></li><li><a href=/php/bzip2/bzerrno/>bzerrno</a></li><li><a href=/php/bzip2/bzerror/>bzerror</a></li><li><a href=/php/bzip2/bzerrstr/>bzerrstr</a></li><li><a href=/php/bzip2/bzflush/>bzflush</a></li><li><a href=/php/bzip2/bzopen/>bzopen</a></li><li><a href=/php/bzip2/bzread/>bzread</a></li><li><a href=/php/bzip2/bzwrite/>bzwrite</a></li></ul></div><h2>Calendar</h2><div><ul><li><a href=/php/calendar/cal_days_in_month/>cal_days_in_month</a></li><li><a href=/php/calendar/cal_from_jd/>cal_from_jd</a></li><li><a href=/php/calendar/cal_info/>cal_info</a></li><li><a href=/php/calendar/cal_to_jd/>cal_to_jd</a></li><li><a href=/php/calendar/easter_date/>easter_date</a></li><li><a href=/php/calendar/easter_days/>easter_days</a></li><li><a href=/php/calendar/frenchtojd/>frenchtojd</a></li><li><a href=/php/calendar/gregoriantojd/>gregoriantojd</a></li><li><a href=/php/calendar/jddayofweek/>jddayofweek</a></li><li><a href=/php/calendar/jdmonthname/>jdmonthname</a></li><li><a href=/php/calendar/jdtofrench/>jdtofrench</a></li><li><a href=/php/calendar/jdtogregorian/>jdtogregorian</a></li><li><a href=/php/calendar/jdtojewish/>jdtojewish</a></li><li><a href=/php/calendar/jdtojulian/>jdtojulian</a></li><li><a href=/php/calendar/jdtounix/>jdtounix</a></li><li><a href=/php/calendar/jewishtojd/>jewishtojd</a></li><li><a href=/php/calendar/juliantojd/>juliantojd</a></li><li><a href=/php/calendar/unixtojd/>unixtojd</a></li></ul></div><h2>Class / Object</h2><div><ul><li><a href=/php/class-object/class_alias/>class_alias</a></li><li><a href=/php/class-object/class_exists/>class_exists</a></li><li><a href=/php/class-object/get_called_class/>get_called_class</a></li><li><a href=/php/class-object/get_class/>get_class</a></li><li><a href=/php/class-object/get_class_methods/>get_class_methods</a></li><li><a href=/php/class-object/get_class_vars/>get_class_vars</a></li><li><a href=/php/class-object/get_declared_classes/>get_declared_classes</a></li><li><a href=/php/class-object/get_declared_interfaces/>get_declared_interfaces</a></li><li><a href=/php/class-object/get_declared_traits/>get_declared_traits</a></li><li><a href=/php/class-object/get_object_vars/>get_object_vars</a></li><li><a href=/php/class-object/get_parent_class/>get_parent_class</a></li><li><a href=/php/class-object/interface_exists/>interface_exists</a></li><li><a href=/php/class-object/is_a/>is_a</a></li><li><a href=/php/class-object/is_subclass_of/>is_subclass_of</a></li><li><a href=/php/class-object/method_exists/>method_exists</a></li><li><a href=/php/class-object/property_exists/>property_exists</a></li><li><a href=/php/class-object/trait_exists/>trait_exists</a></li></ul></div><h2>Ctype</h2><div><ul><li><a href=/php/ctype/ctype_alnum/>ctype_alnum</a></li><li><a href=/php/ctype/ctype_alpha/>ctype_alpha</a></li><li><a href=/php/ctype/ctype_cntrl/>ctype_cntrl</a></li><li><a href=/php/ctype/ctype_digit/>ctype_digit</a></li><li><a href=/php/ctype/ctype_graph/>ctype_graph</a></li><li><a href=/php/ctype/ctype_lower/>ctype_lower</a></li><li><a href=/php/ctype/ctype_print/>ctype_print</a></li><li><a href=/php/ctype/ctype_punct/>ctype_punct</a></li><li><a href=/php/ctype/ctype_space/>ctype_space</a></li><li><a href=/php/ctype/ctype_upper/>ctype_upper</a></li><li><a href=/php/ctype/ctype_xdigit/>ctype_xdigit</a></li></ul></div><h2>cURL</h2><div><ul><li><a href=/php/curl/curl_close/>curl_close</a></li><li><a href=/php/curl/curl_copy_handle/>curl_copy_handle</a></li><li><a href=/php/curl/curl_errno/>curl_errno</a></li><li><a href=/php/curl/curl_error/>curl_error</a></li><li><a href=/php/curl/curl_escape/>curl_escape</a></li><li><a href=/php/curl/curl_exec/>curl_exec</a></li><li><a href=/php/curl/curl_getinfo/>curl_getinfo</a></li><li><a href=/php/curl/curl_init/>curl_init</a></li><li><a href=/php/curl/curl_multi_add_handle/>curl_multi_add_handle</a></li><li><a href=/php/curl/curl_multi_close/>curl_multi_close</a></li><li><a href=/php/curl/curl_multi_errno/>curl_multi_errno</a></li><li><a href=/php/curl/curl_multi_exec/>curl_multi_exec</a></li><li><a href=/php/curl/curl_multi_getcontent/>curl_multi_getcontent</a></li><li><a href=/php/curl/curl_multi_info_read/>curl_multi_info_read</a></li><li><a href=/php/curl/curl_multi_init/>curl_multi_init</a></li><li><a href=/php/curl/curl_multi_remove_handle/>curl_multi_remove_handle</a></li><li><a href=/php/curl/curl_multi_select/>curl_multi_select</a></li><li><a href=/php/curl/curl_multi_setopt/>curl_multi_setopt</a></li><li><a href=/php/curl/curl_multi_strerror/>curl_multi_strerror</a></li><li><a href=/php/curl/curl_pause/>curl_pause</a></li><li><a href=/php/curl/curl_reset/>curl_reset</a></li><li><a href=/php/curl/curl_setopt/>curl_setopt</a></li><li><a href=/php/curl/curl_setopt_array/>curl_setopt_array</a></li><li><a href=/php/curl/curl_share_close/>curl_share_close</a></li><li><a href=/php/curl/curl_share_errno/>curl_share_errno</a></li><li><a href=/php/curl/curl_share_init/>curl_share_init</a></li><li><a href=/php/curl/curl_share_init_persistent/>curl_share_init_persistent</a></li><li><a href=/php/curl/curl_share_setopt/>curl_share_setopt</a></li><li><a href=/php/curl/curl_share_strerror/>curl_share_strerror</a></li><li><a href=/php/curl/curl_strerror/>curl_strerror</a></li><li><a href=/php/curl/curl_unescape/>curl_unescape</a></li><li><a href=/php/curl/curl_upkeep/>curl_upkeep</a></li><li><a href=/php/curl/curl_version/>curl_version</a></li></ul></div><h2>Date / Time</h2><div><ul><li><a href=/php/date-time/checkdate/>checkdate</a></li><li><a href=/php/date-time/date/>date</a></li><li><a href=/php/date-time/date_add/>date_add</a></li><li><a href=/php/date-time/date_create/>date_create</a></li><li><a href=/php/date-time/date_create_from_format/>date_create_from_format</a></li><li><a href=/php/date-time/date_create_immutable/>date_create_immutable</a></li><li><a href=/php/date-time/date_create_immutable_from_format/>date_create_immutable_from_format</a></li><li><a href=/php/date-time/date_date_set/>date_date_set</a></li><li><a href=/php/date-time/date_default_timezone_get/>date_default_timezone_get</a></li><li><a href=/php/date-time/date_default_timezone_set/>date_default_timezone_set</a></li><li><a href=/php/date-time/date_diff/>date_diff</a></li><li><a href=/php/date-time/date_format/>date_format</a></li><li><a href=/php/date-time/date_get_last_errors/>date_get_last_errors</a></li><li><a href=/php/date-time/date_interval_create_from_date_string/>date_interval_create_from_date_string</a></li><li><a href=/php/date-time/date_interval_format/>date_interval_format</a></li><li><a href=/php/date-time/date_isodate_set/>date_isodate_set</a></li><li><a href=/php/date-time/date_modify/>date_modify</a></li><li><a href=/php/date-time/date_offset_get/>date_offset_get</a></li><li><a href=/php/date-time/date_parse/>date_parse</a></li><li><a href=/php/date-time/date_parse_from_format/>date_parse_from_format</a></li><li><a href=/php/date-time/date_sub/>date_sub</a></li><li><a href=/php/date-time/date_sun_info/>date_sun_info</a></li><li><a href=/php/date-time/date_sunrise/>date_sunrise</a></li><li><a href=/php/date-time/date_sunset/>date_sunset</a></li><li><a href=/php/date-time/date_time_set/>date_time_set</a></li><li><a href=/php/date-time/date_timestamp_get/>date_timestamp_get</a></li><li><a href=/php/date-time/date_timestamp_set/>date_timestamp_set</a></li><li><a href=/php/date-time/date_timezone_get/>date_timezone_get</a></li><li><a href=/php/date-time/date_timezone_set/>date_timezone_set</a></li><li><a href=/php/date-time/getdate/>getdate</a></li><li><a href=/php/date-time/gettimeofday/>gettimeofday</a></li><li><a href=/php/date-time/gmdate/>gmdate</a></li><li><a href=/php/date-time/gmmktime/>gmmktime</a></li><li><a href=/php/date-time/gmstrftime/>gmstrftime</a></li><li><a href=/php/date-time/idate/>idate</a></li><li><a href=/php/date-time/localtime/>localtime</a></li><li><a href=/php/date-time/microtime/>microtime</a></li><li><a href=/php/date-time/mktime/>mktime</a></li><li><a href=/php/date-time/strftime/>strftime</a></li><li><a href=/php/date-time/strptime/>strptime</a></li><li><a href=/php/date-time/strtotime/>strtotime</a></li><li><a href=/php/date-time/time/>time</a></li><li><a href=/php/date-time/timezone_abbreviations_list/>timezone_abbreviations_list</a></li><li><a href=/php/date-time/timezone_identifiers_list/>timezone_identifiers_list</a></li><li><a href=/php/date-time/timezone_location_get/>timezone_location_get</a></li><li><a href=/php/date-time/timezone_name_from_abbr/>timezone_name_from_abbr</a></li><li><a href=/php/date-time/timezone_name_get/>timezone_name_get</a></li><li><a href=/php/date-time/timezone_offset_get/>timezone_offset_get</a></li><li><a href=/php/date-time/timezone_open/>timezone_open</a></li><li><a href=/php/date-time/timezone_transitions_get/>timezone_transitions_get</a></li><li><a href=/php/date-time/timezone_version_get/>timezone_version_get</a></li></ul></div><h2>Directory</h2><div><ul><li><a href=/php/directory/chdir/>chdir</a></li><li><a href=/php/directory/chroot/>chroot</a></li><li><a href=/php/directory/closedir/>closedir</a></li><li><a href=/php/directory/dir/>dir</a></li><li><a href=/php/directory/getcwd/>getcwd</a></li><li><a href=/php/directory/opendir/>opendir</a></li><li><a href=/php/directory/readdir/>readdir</a></li><li><a href=/php/directory/rewinddir/>rewinddir</a></li><li><a href=/php/directory/scandir/>scandir</a></li></ul></div><h2>DOM</h2><div><ul><li><a href=/php/dom/dom_import_simplexml/>dom_import_simplexml</a></li></ul></div><h2>Error Handling</h2><div><ul><li><a href=/php/error-handling/debug_backtrace/>debug_backtrace</a></li><li><a href=/php/error-handling/debug_print_backtrace/>debug_print_backtrace</a></li><li><a href=/php/error-handling/error_clear_last/>error_clear_last</a></li><li><a href=/php/error-handling/error_get_last/>error_get_last</a></li><li><a href=/php/error-handling/error_log/>error_log</a></li><li><a href=/php/error-handling/error_reporting/>error_reporting</a></li><li><a href=/php/error-handling/get_error_handler/>get_error_handler</a></li><li><a href=/php/error-handling/get_exception_handler/>get_exception_handler</a></li><li><a href=/php/error-handling/restore_error_handler/>restore_error_handler</a></li><li><a href=/php/error-handling/restore_exception_handler/>restore_exception_handler</a></li><li><a href=/php/error-handling/set_error_handler/>set_error_handler</a></li><li><a href=/php/error-handling/set_exception_handler/>set_exception_handler</a></li><li><a href=/php/error-handling/trigger_error/>trigger_error</a></li><li><a href=/php/error-handling/user_error/>user_error</a></li></ul></div><h2>Exif</h2><div><ul><li><a href=/php/exif/exif_imagetype/>exif_imagetype</a></li><li><a href=/php/exif/exif_read_data/>exif_read_data</a></li><li><a href=/php/exif/exif_tagname/>exif_tagname</a></li><li><a href=/php/exif/exif_thumbnail/>exif_thumbnail</a></li></ul></div><h2>Fileinfo</h2><div><ul><li><a href=/php/fileinfo/finfo_buffer/>finfo_buffer</a></li><li><a href=/php/fileinfo/finfo_close/>finfo_close</a></li><li><a href=/php/fileinfo/finfo_file/>finfo_file</a></li><li><a href=/php/fileinfo/finfo_open/>finfo_open</a></li><li><a href=/php/fileinfo/finfo_set_flags/>finfo_set_flags</a></li><li><a href=/php/fileinfo/mime_content_type/>mime_content_type</a></li></ul></div><h2>Filesystem</h2><div><ul><li><a href=/php/filesystem/basename/>basename</a></li><li><a href=/php/filesystem/chgrp/>chgrp</a></li><li><a href=/php/filesystem/chmod/>chmod</a></li><li><a href=/php/filesystem/chown/>chown</a></li><li><a href=/php/filesystem/clearstatcache/>clearstatcache</a></li><li><a href=/php/filesystem/copy/>copy</a></li><li><a href=/php/filesystem/dirname/>dirname</a></li><li><a href=/php/filesystem/disk_free_space/>disk_free_space</a></li><li><a href=/php/filesystem/disk_total_space/>disk_total_space</a></li><li><a href=/php/filesystem/diskfreespace/>diskfreespace</a></li><li><a href=/php/filesystem/fclose/>fclose</a></li><li><a href=/php/filesystem/feof/>feof</a></li><li><a href=/php/filesystem/fflush/>fflush</a></li><li><a href=/php/filesystem/fgetc/>fgetc</a></li><li><a href=/php/filesystem/fgetcsv/>fgetcsv</a></li><li><a href=/php/filesystem/fgets/>fgets</a></li><li><a href=/php/filesystem/file/>file</a></li><li><a href=/php/filesystem/file_exists/>file_exists</a></li><li><a href=/php/filesystem/file_get_contents/>file_get_contents</a></li><li><a href=/php/filesystem/file_put_contents/>file_put_contents</a></li><li><a href=/php/filesystem/fileatime/>fileatime</a></li><li><a href=/php/filesystem/filectime/>filectime</a></li><li><a href=/php/filesystem/filegroup/>filegroup</a></li><li><a href=/php/filesystem/fileinode/>fileinode</a></li><li><a href=/php/filesystem/filemtime/>filemtime</a></li><li><a href=/php/filesystem/fileowner/>fileowner</a></li><li><a href=/php/filesystem/fileperms/>fileperms</a></li><li><a href=/php/filesystem/filesize/>filesize</a></li><li><a href=/php/filesystem/filetype/>filetype</a></li><li><a href=/php/filesystem/flock/>flock</a></li><li><a href=/php/filesystem/fnmatch/>fnmatch</a></li><li><a href=/php/filesystem/fopen/>fopen</a></li><li><a href=/php/filesystem/fpassthru/>fpassthru</a></li><li><a href=/php/filesystem/fputcsv/>fputcsv</a></li><li><a href=/php/filesystem/fputs/>fputs</a></li><li><a href=/php/filesystem/fread/>fread</a></li><li><a href=/php/filesystem/fscanf/>fscanf</a></li><li><a href=/php/filesystem/fseek/>fseek</a></li><li><a href=/php/filesystem/fstat/>fstat</a></li><li><a href=/php/filesystem/ftell/>ftell</a></li><li><a href=/php/filesystem/ftruncate/>ftruncate</a></li><li><a href=/php/filesystem/fwrite/>fwrite</a></li><li><a href=/php/filesystem/glob/>glob</a></li><li><a href=/php/filesystem/is_dir/>is_dir</a></li><li><a href=/php/filesystem/is_executable/>is_executable</a></li><li><a href=/php/filesystem/is_file/>is_file</a></li><li><a href=/php/filesystem/is_link/>is_link</a></li><li><a href=/php/filesystem/is_readable/>is_readable</a></li><li><a href=/php/filesystem/is_uploaded_file/>is_uploaded_file</a></li><li><a href=/php/filesystem/is_writable/>is_writable</a></li><li><a href=/php/filesystem/is_writeable/>is_writeable</a></li><li><a href=/php/filesystem/lchgrp/>lchgrp</a></li><li><a href=/php/filesystem/lchown/>lchown</a></li><li><a href=/php/filesystem/link/>link</a></li><li><a href=/php/filesystem/linkinfo/>linkinfo</a></li><li><a href=/php/filesystem/lstat/>lstat</a></li><li><a href=/php/filesystem/mkdir/>mkdir</a></li><li><a href=/php/filesystem/move_uploaded_file/>move_uploaded_file</a></li><li><a href=/php/filesystem/pathinfo/>pathinfo</a></li><li><a href=/php/filesystem/pclose/>pclose</a></li><li><a href=/php/filesystem/popen/>popen</a></li><li><a href=/php/filesystem/readfile/>readfile</a></li><li><a href=/php/filesystem/readlink/>readlink</a></li><li><a href=/php/filesystem/realpath/>realpath</a></li><li><a href=/php/filesystem/realpath_cache_get/>realpath_cache_get</a></li><li><a href=/php/filesystem/realpath_cache_size/>realpath_cache_size</a></li><li><a href=/php/filesystem/rename/>rename</a></li><li><a href=/php/filesystem/rewind/>rewind</a></li><li><a href=/php/filesystem/rmdir/>rmdir</a></li><li><a href=/php/filesystem/set_file_buffer/>set_file_buffer</a></li><li><a href=/php/filesystem/stat/>stat</a></li><li><a href=/php/filesystem/symlink/>symlink</a></li><li><a href=/php/filesystem/tempnam/>tempnam</a></li><li><a href=/php/filesystem/tmpfile/>tmpfile</a></li><li><a href=/php/filesystem/touch/>touch</a></li><li><a href=/php/filesystem/umask/>umask</a></li><li><a href=/php/filesystem/unlink/>unlink</a></li></ul></div><h2>Filter</h2><div><ul><li><a href=/php/filter/filter_has_var/>filter_has_var</a></li><li><a href=/php/filter/filter_id/>filter_id</a></li><li><a href=/php/filter/filter_input/>filter_input</a></li><li><a href=/php/filter/filter_input_array/>filter_input_array</a></li><li><a href=/php/filter/filter_list/>filter_list</a></li><li><a href=/php/filter/filter_var/>filter_var</a></li><li><a href=/php/filter/filter_var_array/>filter_var_array</a></li></ul></div><h2>Function Handling</h2><div><ul><li><a href=/php/function-handling/call_user_func/>call_user_func</a></li><li><a href=/php/function-handling/call_user_func_array/>call_user_func_array</a></li><li><a href=/php/function-handling/forward_static_call/>forward_static_call</a></li><li><a href=/php/function-handling/forward_static_call_array/>forward_static_call_array</a></li><li><a href=/php/function-handling/func_get_arg/>func_get_arg</a></li><li><a href=/php/function-handling/func_get_args/>func_get_args</a></li><li><a href=/php/function-handling/func_num_args/>func_num_args</a></li><li><a href=/php/function-handling/function_exists/>function_exists</a></li><li><a href=/php/function-handling/get_defined_functions/>get_defined_functions</a></li><li><a href=/php/function-handling/register_shutdown_function/>register_shutdown_function</a></li><li><a href=/php/function-handling/register_tick_function/>register_tick_function</a></li><li><a href=/php/function-handling/unregister_tick_function/>unregister_tick_function</a></li></ul></div><h2>GMP</h2><div><ul><li><a href=/php/gmp/gmp_abs/>gmp_abs</a></li><li><a href=/php/gmp/gmp_add/>gmp_add</a></li><li><a href=/php/gmp/gmp_and/>gmp_and</a></li><li><a href=/php/gmp/gmp_binomial/>gmp_binomial</a></li><li><a href=/php/gmp/gmp_clrbit/>gmp_clrbit</a></li><li><a href=/php/gmp/gmp_cmp/>gmp_cmp</a></li><li><a href=/php/gmp/gmp_com/>gmp_com</a></li><li><a href=/php/gmp/gmp_div/>gmp_div</a></li><li><a href=/php/gmp/gmp_div_q/>gmp_div_q</a></li><li><a href=/php/gmp/gmp_div_qr/>gmp_div_qr</a></li><li><a href=/php/gmp/gmp_div_r/>gmp_div_r</a></li><li><a href=/php/gmp/gmp_divexact/>gmp_divexact</a></li><li><a href=/php/gmp/gmp_export/>gmp_export</a></li><li><a href=/php/gmp/gmp_fact/>gmp_fact</a></li><li><a href=/php/gmp/gmp_gcd/>gmp_gcd</a></li><li><a href=/php/gmp/gmp_gcdext/>gmp_gcdext</a></li><li><a href=/php/gmp/gmp_hamdist/>gmp_hamdist</a></li><li><a href=/php/gmp/gmp_import/>gmp_import</a></li><li><a href=/php/gmp/gmp_init/>gmp_init</a></li><li><a href=/php/gmp/gmp_intval/>gmp_intval</a></li><li><a href=/php/gmp/gmp_invert/>gmp_invert</a></li><li><a href=/php/gmp/gmp_jacobi/>gmp_jacobi</a></li><li><a href=/php/gmp/gmp_kronecker/>gmp_kronecker</a></li><li><a href=/php/gmp/gmp_lcm/>gmp_lcm</a></li><li><a href=/php/gmp/gmp_legendre/>gmp_legendre</a></li><li><a href=/php/gmp/gmp_mod/>gmp_mod</a></li><li><a href=/php/gmp/gmp_mul/>gmp_mul</a></li><li><a href=/php/gmp/gmp_neg/>gmp_neg</a></li><li><a href=/php/gmp/gmp_nextprime/>gmp_nextprime</a></li><li><a href=/php/gmp/gmp_or/>gmp_or</a></li><li><a href=/php/gmp/gmp_perfect_power/>gmp_perfect_power</a></li><li><a href=/php/gmp/gmp_perfect_square/>gmp_perfect_square</a></li><li><a href=/php/gmp/gmp_popcount/>gmp_popcount</a></li><li><a href=/php/gmp/gmp_pow/>gmp_pow</a></li><li><a href=/php/gmp/gmp_powm/>gmp_powm</a></li><li><a href=/php/gmp/gmp_prob_prime/>gmp_prob_prime</a></li><li><a href=/php/gmp/gmp_random_bits/>gmp_random_bits</a></li><li><a href=/php/gmp/gmp_random_range/>gmp_random_range</a></li><li><a href=/php/gmp/gmp_random_seed/>gmp_random_seed</a></li><li><a href=/php/gmp/gmp_root/>gmp_root</a></li><li><a href=/php/gmp/gmp_rootrem/>gmp_rootrem</a></li><li><a href=/php/gmp/gmp_scan0/>gmp_scan0</a></li><li><a href=/php/gmp/gmp_scan1/>gmp_scan1</a></li><li><a href=/php/gmp/gmp_setbit/>gmp_setbit</a></li><li><a href=/php/gmp/gmp_sign/>gmp_sign</a></li><li><a href=/php/gmp/gmp_sqrt/>gmp_sqrt</a></li><li><a href=/php/gmp/gmp_sqrtrem/>gmp_sqrtrem</a></li><li><a href=/php/gmp/gmp_strval/>gmp_strval</a></li><li><a href=/php/gmp/gmp_sub/>gmp_sub</a></li><li><a href=/php/gmp/gmp_testbit/>gmp_testbit</a></li><li><a href=/php/gmp/gmp_xor/>gmp_xor</a></li></ul></div><h2>Hash</h2><div><ul><li><a href=/php/hash/hash/>hash</a></li><li><a href=/php/hash/hash_algos/>hash_algos</a></li><li><a href=/php/hash/hash_copy/>hash_copy</a></li><li><a href=/php/hash/hash_equals/>hash_equals</a></li><li><a href=/php/hash/hash_file/>hash_file</a></li><li><a href=/php/hash/hash_final/>hash_final</a></li><li><a href=/php/hash/hash_hkdf/>hash_hkdf</a></li><li><a href=/php/hash/hash_hmac/>hash_hmac</a></li><li><a href=/php/hash/hash_hmac_algos/>hash_hmac_algos</a></li><li><a href=/php/hash/hash_hmac_file/>hash_hmac_file</a></li><li><a href=/php/hash/hash_init/>hash_init</a></li><li><a href=/php/hash/hash_pbkdf2/>hash_pbkdf2</a></li><li><a href=/php/hash/hash_update/>hash_update</a></li><li><a href=/php/hash/hash_update_file/>hash_update_file</a></li><li><a href=/php/hash/hash_update_stream/>hash_update_stream</a></li></ul></div><h2>iconv</h2><div><ul><li><a href=/php/iconv/iconv/>iconv</a></li><li><a href=/php/iconv/iconv_get_encoding/>iconv_get_encoding</a></li><li><a href=/php/iconv/iconv_mime_decode/>iconv_mime_decode</a></li><li><a href=/php/iconv/iconv_mime_decode_headers/>iconv_mime_decode_headers</a></li><li><a href=/php/iconv/iconv_mime_encode/>iconv_mime_encode</a></li><li><a href=/php/iconv/iconv_set_encoding/>iconv_set_encoding</a></li><li><a href=/php/iconv/iconv_strlen/>iconv_strlen</a></li><li><a href=/php/iconv/iconv_strpos/>iconv_strpos</a></li><li><a href=/php/iconv/iconv_strrpos/>iconv_strrpos</a></li><li><a href=/php/iconv/iconv_substr/>iconv_substr</a></li><li><a href=/php/iconv/ob_iconv_handler/>ob_iconv_handler</a></li></ul></div><h2>Image</h2><div><ul><li><a href=/php/image/gd_info/>gd_info</a></li><li><a href=/php/image/getimagesize/>getimagesize</a></li><li><a href=/php/image/getimagesizefromstring/>getimagesizefromstring</a></li><li><a href=/php/image/image_type_to_extension/>image_type_to_extension</a></li><li><a href=/php/image/image_type_to_mime_type/>image_type_to_mime_type</a></li><li><a href=/php/image/imageaffine/>imageaffine</a></li><li><a href=/php/image/imageaffinematrixconcat/>imageaffinematrixconcat</a></li><li><a href=/php/image/imageaffinematrixget/>imageaffinematrixget</a></li><li><a href=/php/image/imagealphablending/>imagealphablending</a></li><li><a href=/php/image/imageantialias/>imageantialias</a></li><li><a href=/php/image/imagearc/>imagearc</a></li><li><a href=/php/image/imageavif/>imageavif</a></li><li><a href=/php/image/imagebmp/>imagebmp</a></li><li><a href=/php/image/imagechar/>imagechar</a></li><li><a href=/php/image/imagecharup/>imagecharup</a></li><li><a href=/php/image/imagecolorallocate/>imagecolorallocate</a></li><li><a href=/php/image/imagecolorallocatealpha/>imagecolorallocatealpha</a></li><li><a href=/php/image/imagecolorat/>imagecolorat</a></li><li><a href=/php/image/imagecolorclosest/>imagecolorclosest</a></li><li><a href=/php/image/imagecolorclosestalpha/>imagecolorclosestalpha</a></li><li><a href=/php/image/imagecolorclosesthwb/>imagecolorclosesthwb</a></li><li><a href=/php/image/imagecolordeallocate/>imagecolordeallocate</a></li><li><a href=/php/image/imagecolorexact/>imagecolorexact</a></li><li><a href=/php/image/imagecolorexactalpha/>imagecolorexactalpha</a></li><li><a href=/php/image/imagecolormatch/>imagecolormatch</a></li><li><a href=/php/image/imagecolorresolve/>imagecolorresolve</a></li><li><a href=/php/image/imagecolorresolvealpha/>imagecolorresolvealpha</a></li><li><a href=/php/image/imagecolorset/>imagecolorset</a></li><li><a href=/php/image/imagecolorsforindex/>imagecolorsforindex</a></li><li><a href=/php/image/imagecolorstotal/>imagecolorstotal</a></li><li><a href=/php/image/imagecolortransparent/>imagecolortransparent</a></li><li><a href=/php/image/imageconvolution/>imageconvolution</a></li><li><a href=/php/image/imagecopy/>imagecopy</a></li><li><a href=/php/image/imagecopymerge/>imagecopymerge</a></li><li><a href=/php/image/imagecopymergegray/>imagecopymergegray</a></li><li><a href=/php/image/imagecopyresampled/>imagecopyresampled</a></li><li><a href=/php/image/imagecopyresized/>imagecopyresized</a></li><li><a href=/php/image/imagecreate/>imagecreate</a></li><li><a href=/php/image/imagecreatefromavif/>imagecreatefromavif</a></li><li><a href=/php/image/imagecreatefrombmp/>imagecreatefrombmp</a></li><li><a href=/php/image/imagecreatefromgif/>imagecreatefromgif</a></li><li><a href=/php/image/imagecreatefromjpeg/>imagecreatefromjpeg</a></li><li><a href=/php/image/imagecreatefrompng/>imagecreatefrompng</a></li><li><a href=/php/image/imagecreatefromstring/>imagecreatefromstring</a></li><li><a href=/php/image/imagecreatefromtga/>imagecreatefromtga</a></li><li><a href=/php/image/imagecreatefromwbmp/>imagecreatefromwbmp</a></li><li><a href=/php/image/imagecreatefromwebp/>imagecreatefromwebp</a></li><li><a href=/php/image/imagecreatefromxbm/>imagecreatefromxbm</a></li><li><a href=/php/image/imagecreatefromxpm/>imagecreatefromxpm</a></li><li><a href=/php/image/imagecreatetruecolor/>imagecreatetruecolor</a></li><li><a href=/php/image/imagecrop/>imagecrop</a></li><li><a href=/php/image/imagecropauto/>imagecropauto</a></li><li><a href=/php/image/imagedashedline/>imagedashedline</a></li><li><a href=/php/image/imagedestroy/>imagedestroy</a></li><li><a href=/php/image/imageellipse/>imageellipse</a></li><li><a href=/php/image/imagefill/>imagefill</a></li><li><a href=/php/image/imagefilledarc/>imagefilledarc</a></li><li><a href=/php/image/imagefilledellipse/>imagefilledellipse</a></li><li><a href=/php/image/imagefilledpolygon/>imagefilledpolygon</a></li><li><a href=/php/image/imagefilledrectangle/>imagefilledrectangle</a></li><li><a href=/php/image/imagefilltoborder/>imagefilltoborder</a></li><li><a href=/php/image/imagefilter/>imagefilter</a></li><li><a href=/php/image/imageflip/>imageflip</a></li><li><a href=/php/image/imagefontheight/>imagefontheight</a></li><li><a href=/php/image/imagefontwidth/>imagefontwidth</a></li><li><a href=/php/image/imageftbbox/>imageftbbox</a></li><li><a href=/php/image/imagefttext/>imagefttext</a></li><li><a href=/php/image/imagegammacorrect/>imagegammacorrect</a></li><li><a href=/php/image/imagegetclip/>imagegetclip</a></li><li><a href=/php/image/imagegetinterpolation/>imagegetinterpolation</a></li><li><a href=/php/image/imagegif/>imagegif</a></li><li><a href=/php/image/imageinterlace/>imageinterlace</a></li><li><a href=/php/image/imageistruecolor/>imageistruecolor</a></li><li><a href=/php/image/imagejpeg/>imagejpeg</a></li><li><a href=/php/image/imagelayereffect/>imagelayereffect</a></li><li><a href=/php/image/imageline/>imageline</a></li><li><a href=/php/image/imageloadfont/>imageloadfont</a></li><li><a href=/php/image/imageopenpolygon/>imageopenpolygon</a></li><li><a href=/php/image/imagepalettecopy/>imagepalettecopy</a></li><li><a href=/php/image/imagepalettetotruecolor/>imagepalettetotruecolor</a></li><li><a href=/php/image/imagepng/>imagepng</a></li><li><a href=/php/image/imagepolygon/>imagepolygon</a></li><li><a href=/php/image/imagerectangle/>imagerectangle</a></li><li><a href=/php/image/imageresolution/>imageresolution</a></li><li><a href=/php/image/imagerotate/>imagerotate</a></li><li><a href=/php/image/imagesavealpha/>imagesavealpha</a></li><li><a href=/php/image/imagescale/>imagescale</a></li><li><a href=/php/image/imagesetbrush/>imagesetbrush</a></li><li><a href=/php/image/imagesetclip/>imagesetclip</a></li><li><a href=/php/image/imagesetinterpolation/>imagesetinterpolation</a></li><li><a href=/php/image/imagesetpixel/>imagesetpixel</a></li><li><a href=/php/image/imagesetstyle/>imagesetstyle</a></li><li><a href=/php/image/imagesetthickness/>imagesetthickness</a></li><li><a href=/php/image/imagesettile/>imagesettile</a></li><li><a href=/php/image/imagestring/>imagestring</a></li><li><a href=/php/image/imagestringup/>imagestringup</a></li><li><a href=/php/image/imagesx/>imagesx</a></li><li><a href=/php/image/imagesy/>imagesy</a></li><li><a href=/php/image/imagetruecolortopalette/>imagetruecolortopalette</a></li><li><a href=/php/image/imagettfbbox/>imagettfbbox</a></li><li><a href=/php/image/imagettftext/>imagettftext</a></li><li><a href=/php/image/imagetypes/>imagetypes</a></li><li><a href=/php/image/imagewbmp/>imagewbmp</a></li><li><a href=/php/image/imagewebp/>imagewebp</a></li><li><a href=/php/image/imagexbm/>imagexbm</a></li><li><a href=/php/image/iptcembed/>iptcembed</a></li><li><a href=/php/image/iptcparse/>iptcparse</a></li></ul></div><h2>JSON</h2><div><ul><li><a href=/php/json/json_decode/>json_decode</a></li><li><a href=/php/json/json_encode/>json_encode</a></li><li><a href=/php/json/json_last_error/>json_last_error</a></li><li><a href=/php/json/json_last_error_msg/>json_last_error_msg</a></li><li><a href=/php/json/json_validate/>json_validate</a></li></ul></div><h2>libxml</h2><div><ul><li><a href=/php/libxml/libxml_clear_errors/>libxml_clear_errors</a></li><li><a href=/php/libxml/libxml_get_errors/>libxml_get_errors</a></li><li><a href=/php/libxml/libxml_get_external_entity_loader/>libxml_get_external_entity_loader</a></li><li><a href=/php/libxml/libxml_get_last_error/>libxml_get_last_error</a></li><li><a href=/php/libxml/libxml_set_external_entity_loader/>libxml_set_external_entity_loader</a></li><li><a href=/php/libxml/libxml_set_streams_context/>libxml_set_streams_context</a></li><li><a href=/php/libxml/libxml_use_internal_errors/>libxml_use_internal_errors</a></li></ul></div><h2>Mail</h2><div><ul><li><a href=/php/mail/mail/>mail</a></li></ul></div><h2>Math</h2><div><ul><li><a href=/php/math/abs/>abs</a></li><li><a href=/php/math/acos/>acos</a></li><li><a href=/php/math/acosh/>acosh</a></li><li><a href=/php/math/asin/>asin</a></li><li><a href=/php/math/asinh/>asinh</a></li><li><a href=/php/math/atan/>atan</a></li><li><a href=/php/math/atan2/>atan2</a></li><li><a href=/php/math/atanh/>atanh</a></li><li><a href=/php/math/base_convert/>base_convert</a></li><li><a href=/php/math/bindec/>bindec</a></li><li><a href=/php/math/ceil/>ceil</a></li><li><a href=/php/math/cos/>cos</a></li><li><a href=/php/math/cosh/>cosh</a></li><li><a href=/php/math/decbin/>decbin</a></li><li><a href=/php/math/dechex/>dechex</a></li><li><a href=/php/math/decoct/>decoct</a></li><li><a href=/php/math/deg2rad/>deg2rad</a></li><li><a href=/php/math/exp/>exp</a></li><li><a href=/php/math/expm1/>expm1</a></li><li><a href=/php/math/fdiv/>fdiv</a></li><li><a href=/php/math/floor/>floor</a></li><li><a href=/php/math/fmod/>fmod</a></li><li><a href=/php/math/fpow/>fpow</a></li><li><a href=/php/math/hexdec/>hexdec</a></li><li><a href=/php/math/hypot/>hypot</a></li><li><a href=/php/math/intdiv/>intdiv</a></li><li><a href=/php/math/is_finite/>is_finite</a></li><li><a href=/php/math/is_infinite/>is_infinite</a></li><li><a href=/php/math/is_nan/>is_nan</a></li><li><a href=/php/math/log/>log</a></li><li><a href=/php/math/log10/>log10</a></li><li><a href=/php/math/log1p/>log1p</a></li><li><a href=/php/math/max/>max</a></li><li><a href=/php/math/min/>min</a></li><li><a href=/php/math/octdec/>octdec</a></li><li><a href=/php/math/pi/>pi</a></li><li><a href=/php/math/pow/>pow</a></li><li><a href=/php/math/rad2deg/>rad2deg</a></li><li><a href=/php/math/round/>round</a></li><li><a href=/php/math/sin/>sin</a></li><li><a href=/php/math/sinh/>sinh</a></li><li><a href=/php/math/sqrt/>sqrt</a></li><li><a href=/php/math/tan/>tan</a></li><li><a href=/php/math/tanh/>tanh</a></li></ul></div><h2>Miscellaneous</h2><div><ul><li><a href=/php/miscellaneous/__halt_compiler/>__halt_compiler</a></li><li><a href=/php/miscellaneous/connection_aborted/>connection_aborted</a></li><li><a href=/php/miscellaneous/connection_status/>connection_status</a></li><li><a href=/php/miscellaneous/constant/>constant</a></li><li><a href=/php/miscellaneous/define/>define</a></li><li><a href=/php/miscellaneous/defined/>defined</a></li><li><a href=/php/miscellaneous/die/>die</a></li><li><a href=/php/miscellaneous/eval/>eval</a></li><li><a href=/php/miscellaneous/exit/>exit</a></li><li><a href=/php/miscellaneous/highlight_file/>highlight_file</a></li><li><a href=/php/miscellaneous/highlight_string/>highlight_string</a></li><li><a href=/php/miscellaneous/hrtime/>hrtime</a></li><li><a href=/php/miscellaneous/ignore_user_abort/>ignore_user_abort</a></li><li><a href=/php/miscellaneous/pack/>pack</a></li><li><a href=/php/miscellaneous/php_strip_whitespace/>php_strip_whitespace</a></li><li><a href=/php/miscellaneous/show_source/>show_source</a></li><li><a href=/php/miscellaneous/sleep/>sleep</a></li><li><a href=/php/miscellaneous/sys_getloadavg/>sys_getloadavg</a></li><li><a href=/php/miscellaneous/time_nanosleep/>time_nanosleep</a></li><li><a href=/php/miscellaneous/time_sleep_until/>time_sleep_until</a></li><li><a href=/php/miscellaneous/uniqid/>uniqid</a></li><li><a href=/php/miscellaneous/unpack/>unpack</a></li><li><a href=/php/miscellaneous/usleep/>usleep</a></li></ul></div><h2>Multibyte String</h2><div><ul><li><a href=/php/multibyte-string/mb_check_encoding/>mb_check_encoding</a></li><li><a href=/php/multibyte-string/mb_chr/>mb_chr</a></li><li><a href=/php/multibyte-string/mb_convert_case/>mb_convert_case</a></li><li><a href=/php/multibyte-string/mb_convert_encoding/>mb_convert_encoding</a></li><li><a href=/php/multibyte-string/mb_convert_kana/>mb_convert_kana</a></li><li><a href=/php/multibyte-string/mb_convert_variables/>mb_convert_variables</a></li><li><a href=/php/multibyte-string/mb_decode_mimeheader/>mb_decode_mimeheader</a></li><li><a href=/php/multibyte-string/mb_decode_numericentity/>mb_decode_numericentity</a></li><li><a href=/php/multibyte-string/mb_detect_encoding/>mb_detect_encoding</a></li><li><a href=/php/multibyte-string/mb_detect_order/>mb_detect_order</a></li><li><a href=/php/multibyte-string/mb_encode_mimeheader/>mb_encode_mimeheader</a></li><li><a href=/php/multibyte-string/mb_encode_numericentity/>mb_encode_numericentity</a></li><li><a href=/php/multibyte-string/mb_encoding_aliases/>mb_encoding_aliases</a></li><li><a href=/php/multibyte-string/mb_ereg/>mb_ereg</a></li><li><a href=/php/multibyte-string/mb_ereg_match/>mb_ereg_match</a></li><li><a href=/php/multibyte-string/mb_ereg_replace/>mb_ereg_replace</a></li><li><a href=/php/multibyte-string/mb_ereg_replace_callback/>mb_ereg_replace_callback</a></li><li><a href=/php/multibyte-string/mb_ereg_search/>mb_ereg_search</a></li><li><a href=/php/multibyte-string/mb_ereg_search_getpos/>mb_ereg_search_getpos</a></li><li><a href=/php/multibyte-string/mb_ereg_search_getregs/>mb_ereg_search_getregs</a></li><li><a href=/php/multibyte-string/mb_ereg_search_init/>mb_ereg_search_init</a></li><li><a href=/php/multibyte-string/mb_ereg_search_pos/>mb_ereg_search_pos</a></li><li><a href=/php/multibyte-string/mb_ereg_search_regs/>mb_ereg_search_regs</a></li><li><a href=/php/multibyte-string/mb_ereg_search_setpos/>mb_ereg_search_setpos</a></li><li><a href=/php/multibyte-string/mb_eregi/>mb_eregi</a></li><li><a href=/php/multibyte-string/mb_eregi_replace/>mb_eregi_replace</a></li><li><a href=/php/multibyte-string/mb_get_info/>mb_get_info</a></li><li><a href=/php/multibyte-string/mb_http_input/>mb_http_input</a></li><li><a href=/php/multibyte-string/mb_http_output/>mb_http_output</a></li><li><a href=/php/multibyte-string/mb_internal_encoding/>mb_internal_encoding</a></li><li><a href=/php/multibyte-string/mb_language/>mb_language</a></li><li><a href=/php/multibyte-string/mb_lcfirst/>mb_lcfirst</a></li><li><a href=/php/multibyte-string/mb_list_encodings/>mb_list_encodings</a></li><li><a href=/php/multibyte-string/mb_ltrim/>mb_ltrim</a></li><li><a href=/php/multibyte-string/mb_ord/>mb_ord</a></li><li><a href=/php/multibyte-string/mb_output_handler/>mb_output_handler</a></li><li><a href=/php/multibyte-string/mb_parse_str/>mb_parse_str</a></li><li><a href=/php/multibyte-string/mb_preferred_mime_name/>mb_preferred_mime_name</a></li><li><a href=/php/multibyte-string/mb_regex_encoding/>mb_regex_encoding</a></li><li><a href=/php/multibyte-string/mb_regex_set_options/>mb_regex_set_options</a></li><li><a href=/php/multibyte-string/mb_rtrim/>mb_rtrim</a></li><li><a href=/php/multibyte-string/mb_scrub/>mb_scrub</a></li><li><a href=/php/multibyte-string/mb_send_mail/>mb_send_mail</a></li><li><a href=/php/multibyte-string/mb_split/>mb_split</a></li><li><a href=/php/multibyte-string/mb_str_pad/>mb_str_pad</a></li><li><a href=/php/multibyte-string/mb_str_split/>mb_str_split</a></li><li><a href=/php/multibyte-string/mb_strcut/>mb_strcut</a></li><li><a href=/php/multibyte-string/mb_strimwidth/>mb_strimwidth</a></li><li><a href=/php/multibyte-string/mb_stripos/>mb_stripos</a></li><li><a href=/php/multibyte-string/mb_stristr/>mb_stristr</a></li><li><a href=/php/multibyte-string/mb_strlen/>mb_strlen</a></li><li><a href=/php/multibyte-string/mb_strpos/>mb_strpos</a></li><li><a href=/php/multibyte-string/mb_strrchr/>mb_strrchr</a></li><li><a href=/php/multibyte-string/mb_strrichr/>mb_strrichr</a></li><li><a href=/php/multibyte-string/mb_strripos/>mb_strripos</a></li><li><a href=/php/multibyte-string/mb_strrpos/>mb_strrpos</a></li><li><a href=/php/multibyte-string/mb_strstr/>mb_strstr</a></li><li><a href=/php/multibyte-string/mb_strtolower/>mb_strtolower</a></li><li><a href=/php/multibyte-string/mb_strtoupper/>mb_strtoupper</a></li><li><a href=/php/multibyte-string/mb_strwidth/>mb_strwidth</a></li><li><a href=/php/multibyte-string/mb_substitute_character/>mb_substitute_character</a></li><li><a href=/php/multibyte-string/mb_substr/>mb_substr</a></li><li><a href=/php/multibyte-string/mb_substr_count/>mb_substr_count</a></li><li><a href=/php/multibyte-string/mb_trim/>mb_trim</a></li><li><a href=/php/multibyte-string/mb_ucfirst/>mb_ucfirst</a></li></ul></div><h2>Network</h2><div><ul><li><a href=/php/network/checkdnsrr/>checkdnsrr</a></li><li><a href=/php/network/closelog/>closelog</a></li><li><a href=/php/network/dns_check_record/>dns_check_record</a></li><li><a href=/php/network/dns_get_mx/>dns_get_mx</a></li><li><a href=/php/network/dns_get_record/>dns_get_record</a></li><li><a href=/php/network/fsockopen/>fsockopen</a></li><li><a href=/php/network/gethostbyaddr/>gethostbyaddr</a></li><li><a href=/php/network/gethostbyname/>gethostbyname</a></li><li><a href=/php/network/gethostbynamel/>gethostbynamel</a></li><li><a href=/php/network/gethostname/>gethostname</a></li><li><a href=/php/network/getmxrr/>getmxrr</a></li><li><a href=/php/network/getprotobyname/>getprotobyname</a></li><li><a href=/php/network/getprotobynumber/>getprotobynumber</a></li><li><a href=/php/network/getservbyname/>getservbyname</a></li><li><a href=/php/network/getservbyport/>getservbyport</a></li><li><a href=/php/network/header/>header</a></li><li><a href=/php/network/header_register_callback/>header_register_callback</a></li><li><a href=/php/network/header_remove/>header_remove</a></li><li><a href=/php/network/headers_list/>headers_list</a></li><li><a href=/php/network/headers_sent/>headers_sent</a></li><li><a href=/php/network/http_clear_last_response_headers/>http_clear_last_response_headers</a></li><li><a href=/php/network/http_get_last_response_headers/>http_get_last_response_headers</a></li><li><a href=/php/network/http_response_code/>http_response_code</a></li><li><a href=/php/network/inet_ntop/>inet_ntop</a></li><li><a href=/php/network/inet_pton/>inet_pton</a></li><li><a href=/php/network/ip2long/>ip2long</a></li><li><a href=/php/network/long2ip/>long2ip</a></li><li><a href=/php/network/openlog/>openlog</a></li><li><a href=/php/network/pfsockopen/>pfsockopen</a></li><li><a href=/php/network/setcookie/>setcookie</a></li><li><a href=/php/network/setrawcookie/>setrawcookie</a></li><li><a href=/php/network/socket_get_status/>socket_get_status</a></li><li><a href=/php/network/socket_set_blocking/>socket_set_blocking</a></li><li><a href=/php/network/socket_set_timeout/>socket_set_timeout</a></li><li><a href=/php/network/syslog/>syslog</a></li></ul></div><h2>Options / Information</h2><div><ul><li><a href=/php/options-information/assert/>assert</a></li><li><a href=/php/options-information/assert_options/>assert_options</a></li><li><a href=/php/options-information/cli_get_process_title/>cli_get_process_title</a></li><li><a href=/php/options-information/cli_set_process_title/>cli_set_process_title</a></li><li><a href=/php/options-information/dl/>dl</a></li><li><a href=/php/options-information/extension_loaded/>extension_loaded</a></li><li><a href=/php/options-information/gc_collect_cycles/>gc_collect_cycles</a></li><li><a href=/php/options-information/gc_disable/>gc_disable</a></li><li><a href=/php/options-information/gc_enable/>gc_enable</a></li><li><a href=/php/options-information/gc_enabled/>gc_enabled</a></li><li><a href=/php/options-information/gc_mem_caches/>gc_mem_caches</a></li><li><a href=/php/options-information/gc_status/>gc_status</a></li><li><a href=/php/options-information/get_cfg_var/>get_cfg_var</a></li><li><a href=/php/options-information/get_current_user/>get_current_user</a></li><li><a href=/php/options-information/get_defined_constants/>get_defined_constants</a></li><li><a href=/php/options-information/get_extension_funcs/>get_extension_funcs</a></li><li><a href=/php/options-information/get_include_path/>get_include_path</a></li><li><a href=/php/options-information/get_included_files/>get_included_files</a></li><li><a href=/php/options-information/get_loaded_extensions/>get_loaded_extensions</a></li><li><a href=/php/options-information/get_required_files/>get_required_files</a></li><li><a href=/php/options-information/get_resources/>get_resources</a></li><li><a href=/php/options-information/getenv/>getenv</a></li><li><a href=/php/options-information/getlastmod/>getlastmod</a></li><li><a href=/php/options-information/getmygid/>getmygid</a></li><li><a href=/php/options-information/getmyinode/>getmyinode</a></li><li><a href=/php/options-information/getmypid/>getmypid</a></li><li><a href=/php/options-information/getmyuid/>getmyuid</a></li><li><a href=/php/options-information/getopt/>getopt</a></li><li><a href=/php/options-information/getrusage/>getrusage</a></li><li><a href=/php/options-information/ini_alter/>ini_alter</a></li><li><a href=/php/options-information/ini_get/>ini_get</a></li><li><a href=/php/options-information/ini_get_all/>ini_get_all</a></li><li><a href=/php/options-information/ini_parse_quantity/>ini_parse_quantity</a></li><li><a href=/php/options-information/ini_restore/>ini_restore</a></li><li><a href=/php/options-information/ini_set/>ini_set</a></li><li><a href=/php/options-information/memory_get_peak_usage/>memory_get_peak_usage</a></li><li><a href=/php/options-information/memory_get_usage/>memory_get_usage</a></li><li><a href=/php/options-information/memory_reset_peak_usage/>memory_reset_peak_usage</a></li><li><a href=/php/options-information/php_ini_loaded_file/>php_ini_loaded_file</a></li><li><a href=/php/options-information/php_ini_scanned_files/>php_ini_scanned_files</a></li><li><a href=/php/options-information/php_sapi_name/>php_sapi_name</a></li><li><a href=/php/options-information/php_uname/>php_uname</a></li><li><a href=/php/options-information/phpcredits/>phpcredits</a></li><li><a href=/php/options-information/phpinfo/>phpinfo</a></li><li><a href=/php/options-information/phpversion/>phpversion</a></li><li><a href=/php/options-information/putenv/>putenv</a></li><li><a href=/php/options-information/set_include_path/>set_include_path</a></li><li><a href=/php/options-information/set_time_limit/>set_time_limit</a></li><li><a href=/php/options-information/sys_get_temp_dir/>sys_get_temp_dir</a></li><li><a href=/php/options-information/version_compare/>version_compare</a></li><li><a href=/php/options-information/zend_thread_id/>zend_thread_id</a></li><li><a href=/php/options-information/zend_version/>zend_version</a></li></ul></div><h2>Output Control</h2><div><ul><li><a href=/php/output-control/flush/>flush</a></li><li><a href=/php/output-control/ob_clean/>ob_clean</a></li><li><a href=/php/output-control/ob_end_clean/>ob_end_clean</a></li><li><a href=/php/output-control/ob_end_flush/>ob_end_flush</a></li><li><a href=/php/output-control/ob_flush/>ob_flush</a></li><li><a href=/php/output-control/ob_get_clean/>ob_get_clean</a></li><li><a href=/php/output-control/ob_get_contents/>ob_get_contents</a></li><li><a href=/php/output-control/ob_get_flush/>ob_get_flush</a></li><li><a href=/php/output-control/ob_get_length/>ob_get_length</a></li><li><a href=/php/output-control/ob_get_level/>ob_get_level</a></li><li><a href=/php/output-control/ob_get_status/>ob_get_status</a></li><li><a href=/php/output-control/ob_gzhandler/>ob_gzhandler</a></li><li><a href=/php/output-control/ob_implicit_flush/>ob_implicit_flush</a></li><li><a href=/php/output-control/ob_list_handlers/>ob_list_handlers</a></li><li><a href=/php/output-control/ob_start/>ob_start</a></li><li><a href=/php/output-control/output_add_rewrite_var/>output_add_rewrite_var</a></li><li><a href=/php/output-control/output_reset_rewrite_vars/>output_reset_rewrite_vars</a></li></ul></div><h2>PCNTL</h2><div><ul><li><a href=/php/pcntl/pcntl_alarm/>pcntl_alarm</a></li><li><a href=/php/pcntl/pcntl_async_signals/>pcntl_async_signals</a></li><li><a href=/php/pcntl/pcntl_errno/>pcntl_errno</a></li><li><a href=/php/pcntl/pcntl_exec/>pcntl_exec</a></li><li><a href=/php/pcntl/pcntl_fork/>pcntl_fork</a></li><li><a href=/php/pcntl/pcntl_get_last_error/>pcntl_get_last_error</a></li><li><a href=/php/pcntl/pcntl_getpriority/>pcntl_getpriority</a></li><li><a href=/php/pcntl/pcntl_rfork/>pcntl_rfork</a></li><li><a href=/php/pcntl/pcntl_setpriority/>pcntl_setpriority</a></li><li><a href=/php/pcntl/pcntl_signal/>pcntl_signal</a></li><li><a href=/php/pcntl/pcntl_signal_dispatch/>pcntl_signal_dispatch</a></li><li><a href=/php/pcntl/pcntl_signal_get_handler/>pcntl_signal_get_handler</a></li><li><a href=/php/pcntl/pcntl_sigprocmask/>pcntl_sigprocmask</a></li><li><a href=/php/pcntl/pcntl_sigtimedwait/>pcntl_sigtimedwait</a></li><li><a href=/php/pcntl/pcntl_sigwaitinfo/>pcntl_sigwaitinfo</a></li><li><a href=/php/pcntl/pcntl_strerror/>pcntl_strerror</a></li><li><a href=/php/pcntl/pcntl_unshare/>pcntl_unshare</a></li><li><a href=/php/pcntl/pcntl_wait/>pcntl_wait</a></li><li><a href=/php/pcntl/pcntl_waitpid/>pcntl_waitpid</a></li><li><a href=/php/pcntl/pcntl_wexitstatus/>pcntl_wexitstatus</a></li><li><a href=/php/pcntl/pcntl_wifexited/>pcntl_wifexited</a></li><li><a href=/php/pcntl/pcntl_wifsignaled/>pcntl_wifsignaled</a></li><li><a href=/php/pcntl/pcntl_wifstopped/>pcntl_wifstopped</a></li><li><a href=/php/pcntl/pcntl_wstopsig/>pcntl_wstopsig</a></li><li><a href=/php/pcntl/pcntl_wtermsig/>pcntl_wtermsig</a></li></ul></div><h2>PCRE</h2><div><ul><li><a href=/php/pcre/preg_filter/>preg_filter</a></li><li><a href=/php/pcre/preg_grep/>preg_grep</a></li><li><a href=/php/pcre/preg_last_error/>preg_last_error</a></li><li><a href=/php/pcre/preg_match/>preg_match</a></li><li><a href=/php/pcre/preg_match_all/>preg_match_all</a></li><li><a href=/php/pcre/preg_quote/>preg_quote</a></li><li><a href=/php/pcre/preg_replace/>preg_replace</a></li><li><a href=/php/pcre/preg_replace_callback/>preg_replace_callback</a></li><li><a href=/php/pcre/preg_replace_callback_array/>preg_replace_callback_array</a></li><li><a href=/php/pcre/preg_split/>preg_split</a></li></ul></div><h2>POSIX</h2><div><ul><li><a href=/php/posix/posix_access/>posix_access</a></li><li><a href=/php/posix/posix_ctermid/>posix_ctermid</a></li><li><a href=/php/posix/posix_eaccess/>posix_eaccess</a></li><li><a href=/php/posix/posix_errno/>posix_errno</a></li><li><a href=/php/posix/posix_fpathconf/>posix_fpathconf</a></li><li><a href=/php/posix/posix_get_last_error/>posix_get_last_error</a></li><li><a href=/php/posix/posix_getcwd/>posix_getcwd</a></li><li><a href=/php/posix/posix_getegid/>posix_getegid</a></li><li><a href=/php/posix/posix_geteuid/>posix_geteuid</a></li><li><a href=/php/posix/posix_getgid/>posix_getgid</a></li><li><a href=/php/posix/posix_getgrgid/>posix_getgrgid</a></li><li><a href=/php/posix/posix_getgrnam/>posix_getgrnam</a></li><li><a href=/php/posix/posix_getgroups/>posix_getgroups</a></li><li><a href=/php/posix/posix_getlogin/>posix_getlogin</a></li><li><a href=/php/posix/posix_getpgid/>posix_getpgid</a></li><li><a href=/php/posix/posix_getpgrp/>posix_getpgrp</a></li><li><a href=/php/posix/posix_getpid/>posix_getpid</a></li><li><a href=/php/posix/posix_getppid/>posix_getppid</a></li><li><a href=/php/posix/posix_getpwnam/>posix_getpwnam</a></li><li><a href=/php/posix/posix_getpwuid/>posix_getpwuid</a></li><li><a href=/php/posix/posix_getrlimit/>posix_getrlimit</a></li><li><a href=/php/posix/posix_getsid/>posix_getsid</a></li><li><a href=/php/posix/posix_getuid/>posix_getuid</a></li><li><a href=/php/posix/posix_initgroups/>posix_initgroups</a></li><li><a href=/php/posix/posix_isatty/>posix_isatty</a></li><li><a href=/php/posix/posix_kill/>posix_kill</a></li><li><a href=/php/posix/posix_mkfifo/>posix_mkfifo</a></li><li><a href=/php/posix/posix_mknod/>posix_mknod</a></li><li><a href=/php/posix/posix_pathconf/>posix_pathconf</a></li><li><a href=/php/posix/posix_setegid/>posix_setegid</a></li><li><a href=/php/posix/posix_seteuid/>posix_seteuid</a></li><li><a href=/php/posix/posix_setgid/>posix_setgid</a></li><li><a href=/php/posix/posix_setpgid/>posix_setpgid</a></li><li><a href=/php/posix/posix_setrlimit/>posix_setrlimit</a></li><li><a href=/php/posix/posix_setsid/>posix_setsid</a></li><li><a href=/php/posix/posix_setuid/>posix_setuid</a></li><li><a href=/php/posix/posix_strerror/>posix_strerror</a></li><li><a href=/php/posix/posix_sysconf/>posix_sysconf</a></li><li><a href=/php/posix/posix_times/>posix_times</a></li><li><a href=/php/posix/posix_ttyname/>posix_ttyname</a></li><li><a href=/php/posix/posix_uname/>posix_uname</a></li></ul></div><h2>Random</h2><div><ul><li><a href=/php/random/getrandmax/>getrandmax</a></li><li><a href=/php/random/lcg_value/>lcg_value</a></li><li><a href=/php/random/mt_getrandmax/>mt_getrandmax</a></li><li><a href=/php/random/mt_rand/>mt_rand</a></li><li><a href=/php/random/mt_srand/>mt_srand</a></li><li><a href=/php/random/rand/>rand</a></li><li><a href=/php/random/random_bytes/>random_bytes</a></li><li><a href=/php/random/random_int/>random_int</a></li><li><a href=/php/random/srand/>srand</a></li></ul></div><h2>Readline</h2><div><ul><li><a href=/php/readline/readline/>readline</a></li><li><a href=/php/readline/readline_add_history/>readline_add_history</a></li><li><a href=/php/readline/readline_callback_handler_install/>readline_callback_handler_install</a></li><li><a href=/php/readline/readline_callback_handler_remove/>readline_callback_handler_remove</a></li><li><a href=/php/readline/readline_callback_read_char/>readline_callback_read_char</a></li><li><a href=/php/readline/readline_clear_history/>readline_clear_history</a></li><li><a href=/php/readline/readline_completion_function/>readline_completion_function</a></li><li><a href=/php/readline/readline_info/>readline_info</a></li><li><a href=/php/readline/readline_list_history/>readline_list_history</a></li><li><a href=/php/readline/readline_on_new_line/>readline_on_new_line</a></li><li><a href=/php/readline/readline_read_history/>readline_read_history</a></li><li><a href=/php/readline/readline_redisplay/>readline_redisplay</a></li><li><a href=/php/readline/readline_write_history/>readline_write_history</a></li></ul></div><h2>ReflectionConstant</h2><div><ul><li><a href=/php/reflectionconstant/getname/>getName</a></li><li><a href=/php/reflectionconstant/getnamespacename/>getNamespaceName</a></li><li><a href=/php/reflectionconstant/getshortname/>getShortName</a></li><li><a href=/php/reflectionconstant/getvalue/>getValue</a></li><li><a href=/php/reflectionconstant/isdeprecated/>isDeprecated</a></li></ul></div><h2>Session</h2><div><ul><li><a href=/php/session/session_abort/>session_abort</a></li><li><a href=/php/session/session_cache_expire/>session_cache_expire</a></li><li><a href=/php/session/session_cache_limiter/>session_cache_limiter</a></li><li><a href=/php/session/session_commit/>session_commit</a></li><li><a href=/php/session/session_create_id/>session_create_id</a></li><li><a href=/php/session/session_decode/>session_decode</a></li><li><a href=/php/session/session_destroy/>session_destroy</a></li><li><a href=/php/session/session_encode/>session_encode</a></li><li><a href=/php/session/session_gc/>session_gc</a></li><li><a href=/php/session/session_get_cookie_params/>session_get_cookie_params</a></li><li><a href=/php/session/session_id/>session_id</a></li><li><a href=/php/session/session_module_name/>session_module_name</a></li><li><a href=/php/session/session_name/>session_name</a></li><li><a href=/php/session/session_regenerate_id/>session_regenerate_id</a></li><li><a href=/php/session/session_register_shutdown/>session_register_shutdown</a></li><li><a href=/php/session/session_reset/>session_reset</a></li><li><a href=/php/session/session_save_path/>session_save_path</a></li><li><a href=/php/session/session_set_cookie_params/>session_set_cookie_params</a></li><li><a href=/php/session/session_set_save_handler/>session_set_save_handler</a></li><li><a href=/php/session/session_start/>session_start</a></li><li><a href=/php/session/session_status/>session_status</a></li><li><a href=/php/session/session_unset/>session_unset</a></li><li><a href=/php/session/session_write_close/>session_write_close</a></li></ul></div><h2>Shmop</h2><div><ul><li><a href=/php/shmop/shmop_delete/>shmop_delete</a></li><li><a href=/php/shmop/shmop_open/>shmop_open</a></li><li><a href=/php/shmop/shmop_read/>shmop_read</a></li><li><a href=/php/shmop/shmop_size/>shmop_size</a></li><li><a href=/php/shmop/shmop_write/>shmop_write</a></li></ul></div><h2>SimpleXML</h2><div><ul><li><a href=/php/simplexml/simplexml_import_dom/>simplexml_import_dom</a></li><li><a href=/php/simplexml/simplexml_load_file/>simplexml_load_file</a></li><li><a href=/php/simplexml/simplexml_load_string/>simplexml_load_string</a></li></ul></div><h2>SNMP</h2><div><ul><li><a href=/php/snmp/snmp_get_quick_print/>snmp_get_quick_print</a></li><li><a href=/php/snmp/snmp_get_valueretrieval/>snmp_get_valueretrieval</a></li><li><a href=/php/snmp/snmp_read_mib/>snmp_read_mib</a></li><li><a href=/php/snmp/snmp_set_enum_print/>snmp_set_enum_print</a></li><li><a href=/php/snmp/snmp_set_oid_numeric_print/>snmp_set_oid_numeric_print</a></li><li><a href=/php/snmp/snmp_set_oid_output_format/>snmp_set_oid_output_format</a></li><li><a href=/php/snmp/snmp_set_quick_print/>snmp_set_quick_print</a></li><li><a href=/php/snmp/snmp_set_valueretrieval/>snmp_set_valueretrieval</a></li><li><a href=/php/snmp/snmp2_get/>snmp2_get</a></li><li><a href=/php/snmp/snmp2_getnext/>snmp2_getnext</a></li><li><a href=/php/snmp/snmp2_real_walk/>snmp2_real_walk</a></li><li><a href=/php/snmp/snmp2_set/>snmp2_set</a></li><li><a href=/php/snmp/snmp2_walk/>snmp2_walk</a></li><li><a href=/php/snmp/snmp3_get/>snmp3_get</a></li><li><a href=/php/snmp/snmp3_getnext/>snmp3_getnext</a></li><li><a href=/php/snmp/snmp3_real_walk/>snmp3_real_walk</a></li><li><a href=/php/snmp/snmp3_set/>snmp3_set</a></li><li><a href=/php/snmp/snmp3_walk/>snmp3_walk</a></li><li><a href=/php/snmp/snmpget/>snmpget</a></li><li><a href=/php/snmp/snmpgetnext/>snmpgetnext</a></li><li><a href=/php/snmp/snmprealwalk/>snmprealwalk</a></li><li><a href=/php/snmp/snmpset/>snmpset</a></li><li><a href=/php/snmp/snmpwalk/>snmpwalk</a></li><li><a href=/php/snmp/snmpwalkoid/>snmpwalkoid</a></li></ul></div><h2>Sockets</h2><div><ul><li><a href=/php/sockets/socket_accept/>socket_accept</a></li><li><a href=/php/sockets/socket_addrinfo_bind/>socket_addrinfo_bind</a></li><li><a href=/php/sockets/socket_addrinfo_connect/>socket_addrinfo_connect</a></li><li><a href=/php/sockets/socket_addrinfo_explain/>socket_addrinfo_explain</a></li><li><a href=/php/sockets/socket_addrinfo_lookup/>socket_addrinfo_lookup</a></li><li><a href=/php/sockets/socket_atmark/>socket_atmark</a></li><li><a href=/php/sockets/socket_bind/>socket_bind</a></li><li><a href=/php/sockets/socket_clear_error/>socket_clear_error</a></li><li><a href=/php/sockets/socket_close/>socket_close</a></li><li><a href=/php/sockets/socket_cmsg_space/>socket_cmsg_space</a></li><li><a href=/php/sockets/socket_connect/>socket_connect</a></li><li><a href=/php/sockets/socket_create/>socket_create</a></li><li><a href=/php/sockets/socket_create_listen/>socket_create_listen</a></li><li><a href=/php/sockets/socket_create_pair/>socket_create_pair</a></li><li><a href=/php/sockets/socket_export_stream/>socket_export_stream</a></li><li><a href=/php/sockets/socket_get_option/>socket_get_option</a></li><li><a href=/php/sockets/socket_getopt/>socket_getopt</a></li><li><a href=/php/sockets/socket_getpeername/>socket_getpeername</a></li><li><a href=/php/sockets/socket_getsockname/>socket_getsockname</a></li><li><a href=/php/sockets/socket_import_stream/>socket_import_stream</a></li><li><a href=/php/sockets/socket_last_error/>socket_last_error</a></li><li><a href=/php/sockets/socket_listen/>socket_listen</a></li><li><a href=/php/sockets/socket_read/>socket_read</a></li><li><a href=/php/sockets/socket_recv/>socket_recv</a></li><li><a href=/php/sockets/socket_recvfrom/>socket_recvfrom</a></li><li><a href=/php/sockets/socket_recvmsg/>socket_recvmsg</a></li><li><a href=/php/sockets/socket_select/>socket_select</a></li><li><a href=/php/sockets/socket_send/>socket_send</a></li><li><a href=/php/sockets/socket_sendmsg/>socket_sendmsg</a></li><li><a href=/php/sockets/socket_sendto/>socket_sendto</a></li><li><a href=/php/sockets/socket_set_block/>socket_set_block</a></li><li><a href=/php/sockets/socket_set_nonblock/>socket_set_nonblock</a></li><li><a href=/php/sockets/socket_set_option/>socket_set_option</a></li><li><a href=/php/sockets/socket_setopt/>socket_setopt</a></li><li><a href=/php/sockets/socket_shutdown/>socket_shutdown</a></li><li><a href=/php/sockets/socket_strerror/>socket_strerror</a></li><li><a href=/php/sockets/socket_write/>socket_write</a></li><li><a href=/php/sockets/socket_wsaprotocol_info_export/>socket_wsaprotocol_info_export</a></li><li><a href=/php/sockets/socket_wsaprotocol_info_import/>socket_wsaprotocol_info_import</a></li><li><a href=/php/sockets/socket_wsaprotocol_info_release/>socket_wsaprotocol_info_release</a></li></ul></div><h2>SPL</h2><div><ul><li><a href=/php/spl/class_implements/>class_implements</a></li><li><a href=/php/spl/class_parents/>class_parents</a></li><li><a href=/php/spl/class_uses/>class_uses</a></li><li><a href=/php/spl/iterator_apply/>iterator_apply</a></li><li><a href=/php/spl/iterator_count/>iterator_count</a></li><li><a href=/php/spl/iterator_to_array/>iterator_to_array</a></li><li><a href=/php/spl/spl_autoload/>spl_autoload</a></li><li><a href=/php/spl/spl_autoload_call/>spl_autoload_call</a></li><li><a href=/php/spl/spl_autoload_extensions/>spl_autoload_extensions</a></li><li><a href=/php/spl/spl_autoload_functions/>spl_autoload_functions</a></li><li><a href=/php/spl/spl_autoload_register/>spl_autoload_register</a></li><li><a href=/php/spl/spl_autoload_unregister/>spl_autoload_unregister</a></li><li><a href=/php/spl/spl_classes/>spl_classes</a></li><li><a href=/php/spl/spl_object_hash/>spl_object_hash</a></li><li><a href=/php/spl/spl_object_id/>spl_object_id</a></li></ul></div><h2>Stream</h2><div><ul><li><a href=/php/stream/stream_bucket_append/>stream_bucket_append</a></li><li><a href=/php/stream/stream_bucket_make_writeable/>stream_bucket_make_writeable</a></li><li><a href=/php/stream/stream_bucket_new/>stream_bucket_new</a></li><li><a href=/php/stream/stream_bucket_prepend/>stream_bucket_prepend</a></li><li><a href=/php/stream/stream_context_create/>stream_context_create</a></li><li><a href=/php/stream/stream_context_get_default/>stream_context_get_default</a></li><li><a href=/php/stream/stream_context_get_options/>stream_context_get_options</a></li><li><a href=/php/stream/stream_context_get_params/>stream_context_get_params</a></li><li><a href=/php/stream/stream_context_set_default/>stream_context_set_default</a></li><li><a href=/php/stream/stream_context_set_option/>stream_context_set_option</a></li><li><a href=/php/stream/stream_context_set_options/>stream_context_set_options</a></li><li><a href=/php/stream/stream_context_set_params/>stream_context_set_params</a></li><li><a href=/php/stream/stream_copy_to_stream/>stream_copy_to_stream</a></li><li><a href=/php/stream/stream_filter_append/>stream_filter_append</a></li><li><a href=/php/stream/stream_filter_prepend/>stream_filter_prepend</a></li><li><a href=/php/stream/stream_filter_register/>stream_filter_register</a></li><li><a href=/php/stream/stream_filter_remove/>stream_filter_remove</a></li><li><a href=/php/stream/stream_get_contents/>stream_get_contents</a></li><li><a href=/php/stream/stream_get_filters/>stream_get_filters</a></li><li><a href=/php/stream/stream_get_line/>stream_get_line</a></li><li><a href=/php/stream/stream_get_meta_data/>stream_get_meta_data</a></li><li><a href=/php/stream/stream_get_transports/>stream_get_transports</a></li><li><a href=/php/stream/stream_get_wrappers/>stream_get_wrappers</a></li><li><a href=/php/stream/stream_is_local/>stream_is_local</a></li><li><a href=/php/stream/stream_isatty/>stream_isatty</a></li><li><a href=/php/stream/stream_notification_callback/>stream_notification_callback</a></li><li><a href=/php/stream/stream_register_wrapper/>stream_register_wrapper</a></li><li><a href=/php/stream/stream_resolve_include_path/>stream_resolve_include_path</a></li><li><a href=/php/stream/stream_select/>stream_select</a></li><li><a href=/php/stream/stream_set_blocking/>stream_set_blocking</a></li><li><a href=/php/stream/stream_set_chunk_size/>stream_set_chunk_size</a></li><li><a href=/php/stream/stream_set_read_buffer/>stream_set_read_buffer</a></li><li><a href=/php/stream/stream_set_timeout/>stream_set_timeout</a></li><li><a href=/php/stream/stream_set_write_buffer/>stream_set_write_buffer</a></li><li><a href=/php/stream/stream_socket_accept/>stream_socket_accept</a></li><li><a href=/php/stream/stream_socket_client/>stream_socket_client</a></li><li><a href=/php/stream/stream_socket_enable_crypto/>stream_socket_enable_crypto</a></li><li><a href=/php/stream/stream_socket_get_name/>stream_socket_get_name</a></li><li><a href=/php/stream/stream_socket_pair/>stream_socket_pair</a></li><li><a href=/php/stream/stream_socket_recvfrom/>stream_socket_recvfrom</a></li><li><a href=/php/stream/stream_socket_sendto/>stream_socket_sendto</a></li><li><a href=/php/stream/stream_socket_server/>stream_socket_server</a></li><li><a href=/php/stream/stream_socket_shutdown/>stream_socket_shutdown</a></li><li><a href=/php/stream/stream_supports_lock/>stream_supports_lock</a></li><li><a href=/php/stream/stream_wrapper_register/>stream_wrapper_register</a></li><li><a href=/php/stream/stream_wrapper_restore/>stream_wrapper_restore</a></li><li><a href=/php/stream/stream_wrapper_unregister/>stream_wrapper_unregister</a></li></ul></div><h2>String</h2><div><ul><li><a href=/php/string/addcslashes/>addcslashes</a></li><li><a href=/php/string/addslashes/>addslashes</a></li><li><a href=/php/string/bin2hex/>bin2hex</a></li><li><a href=/php/string/chop/>chop</a></li><li><a href=/php/string/chr/>chr</a></li><li><a href=/php/string/chunk_split/>chunk_split</a></li><li><a href=/php/string/convert_uudecode/>convert_uudecode</a></li><li><a href=/php/string/convert_uuencode/>convert_uuencode</a></li><li><a href=/php/string/count_chars/>count_chars</a></li><li><a href=/php/string/crc32/>crc32</a></li><li><a href=/php/string/crypt/>crypt</a></li><li><a href=/php/string/echo/>echo</a></li><li><a href=/php/string/explode/>explode</a></li><li><a href=/php/string/fprintf/>fprintf</a></li><li><a href=/php/string/get_html_translation_table/>get_html_translation_table</a></li><li><a href=/php/string/hebrev/>hebrev</a></li><li><a href=/php/string/hebrevc/>hebrevc</a></li><li><a href=/php/string/hex2bin/>hex2bin</a></li><li><a href=/php/string/html_entity_decode/>html_entity_decode</a></li><li><a href=/php/string/htmlentities/>htmlentities</a></li><li><a href=/php/string/htmlspecialchars/>htmlspecialchars</a></li><li><a href=/php/string/htmlspecialchars_decode/>htmlspecialchars_decode</a></li><li><a href=/php/string/implode/>implode</a></li><li><a href=/php/string/join/>join</a></li><li><a href=/php/string/lcfirst/>lcfirst</a></li><li><a href=/php/string/levenshtein/>levenshtein</a></li><li><a href=/php/string/localeconv/>localeconv</a></li><li><a href=/php/string/ltrim/>ltrim</a></li><li><a href=/php/string/md5/>md5</a></li><li><a href=/php/string/md5_file/>md5_file</a></li><li><a href=/php/string/metaphone/>metaphone</a></li><li><a href=/php/string/nl_langinfo/>nl_langinfo</a></li><li><a href=/php/string/nl2br/>nl2br</a></li><li><a href=/php/string/number_format/>number_format</a></li><li><a href=/php/string/ord/>ord</a></li><li><a href=/php/string/parse_str/>parse_str</a></li><li><a href=/php/string/print/>print</a></li><li><a href=/php/string/printf/>printf</a></li><li><a href=/php/string/quoted_printable_decode/>quoted_printable_decode</a></li><li><a href=/php/string/quoted_printable_encode/>quoted_printable_encode</a></li><li><a href=/php/string/quotemeta/>quotemeta</a></li><li><a href=/php/string/rtrim/>rtrim</a></li><li><a href=/php/string/setlocale/>setlocale</a></li><li><a href=/php/string/sha1/>sha1</a></li><li><a href=/php/string/sha1_file/>sha1_file</a></li><li><a href=/php/string/similar_text/>similar_text</a></li><li><a href=/php/string/soundex/>soundex</a></li><li><a href=/php/string/sprintf/>sprintf</a></li><li><a href=/php/string/sscanf/>sscanf</a></li><li><a href=/php/string/str_contains/>str_contains</a></li><li><a href=/php/string/str_decrement/>str_decrement</a></li><li><a href=/php/string/str_ends_with/>str_ends_with</a></li><li><a href=/php/string/str_getcsv/>str_getcsv</a></li><li><a href=/php/string/str_increment/>str_increment</a></li><li><a href=/php/string/str_ireplace/>str_ireplace</a></li><li><a href=/php/string/str_pad/>str_pad</a></li><li><a href=/php/string/str_repeat/>str_repeat</a></li><li><a href=/php/string/str_replace/>str_replace</a></li><li><a href=/php/string/str_rot13/>str_rot13</a></li><li><a href=/php/string/str_shuffle/>str_shuffle</a></li><li><a href=/php/string/str_split/>str_split</a></li><li><a href=/php/string/str_starts_with/>str_starts_with</a></li><li><a href=/php/string/str_word_count/>str_word_count</a></li><li><a href=/php/string/strcasecmp/>strcasecmp</a></li><li><a href=/php/string/strchr/>strchr</a></li><li><a href=/php/string/strcmp/>strcmp</a></li><li><a href=/php/string/strcoll/>strcoll</a></li><li><a href=/php/string/strcspn/>strcspn</a></li><li><a href=/php/string/strip_tags/>strip_tags</a></li><li><a href=/php/string/stripcslashes/>stripcslashes</a></li><li><a href=/php/string/stripos/>stripos</a></li><li><a href=/php/string/stripslashes/>stripslashes</a></li><li><a href=/php/string/stristr/>stristr</a></li><li><a href=/php/string/strlen/>strlen</a></li><li><a href=/php/string/strnatcasecmp/>strnatcasecmp</a></li><li><a href=/php/string/strnatcmp/>strnatcmp</a></li><li><a href=/php/string/strncasecmp/>strncasecmp</a></li><li><a href=/php/string/strncmp/>strncmp</a></li><li><a href=/php/string/strpbrk/>strpbrk</a></li><li><a href=/php/string/strpos/>strpos</a></li><li><a href=/php/string/strrchr/>strrchr</a></li><li><a href=/php/string/strrev/>strrev</a></li><li><a href=/php/string/strripos/>strripos</a></li><li><a href=/php/string/strrpos/>strrpos</a></li><li><a href=/php/string/strspn/>strspn</a></li><li><a href=/php/string/strstr/>strstr</a></li><li><a href=/php/string/strtok/>strtok</a></li><li><a href=/php/string/strtolower/>strtolower</a></li><li><a href=/php/string/strtoupper/>strtoupper</a></li><li><a href=/php/string/strtr/>strtr</a></li><li><a href=/php/string/substr/>substr</a></li><li><a href=/php/string/substr_compare/>substr_compare</a></li><li><a href=/php/string/substr_count/>substr_count</a></li><li><a href=/php/string/substr_replace/>substr_replace</a></li><li><a href=/php/string/trim/>trim</a></li><li><a href=/php/string/ucfirst/>ucfirst</a></li><li><a href=/php/string/ucwords/>ucwords</a></li><li><a href=/php/string/vfprintf/>vfprintf</a></li><li><a href=/php/string/vprintf/>vprintf</a></li><li><a href=/php/string/vsprintf/>vsprintf</a></li><li><a href=/php/string/wordwrap/>wordwrap</a></li></ul></div><h2>Tokenizer</h2><div><ul><li><a href=/php/tokenizer/token_get_all/>token_get_all</a></li><li><a href=/php/tokenizer/token_name/>token_name</a></li></ul></div><h2>URL</h2><div><ul><li><a href=/php/url/base64_decode/>base64_decode</a></li><li><a href=/php/url/base64_encode/>base64_encode</a></li><li><a href=/php/url/get_headers/>get_headers</a></li><li><a href=/php/url/get_meta_tags/>get_meta_tags</a></li><li><a href=/php/url/http_build_query/>http_build_query</a></li><li><a href=/php/url/parse_url/>parse_url</a></li><li><a href=/php/url/rawurldecode/>rawurldecode</a></li><li><a href=/php/url/rawurlencode/>rawurlencode</a></li><li><a href=/php/url/urldecode/>urldecode</a></li><li><a href=/php/url/urlencode/>urlencode</a></li></ul></div><h2>Variable Handling</h2><div><ul><li><a href=/php/variable-handling/boolval/>boolval</a></li><li><a href=/php/variable-handling/debug_zval_dump/>debug_zval_dump</a></li><li><a href=/php/variable-handling/doubleval/>doubleval</a></li><li><a href=/php/variable-handling/empty/>empty</a></li><li><a href=/php/variable-handling/floatval/>floatval</a></li><li><a href=/php/variable-handling/get_debug_type/>get_debug_type</a></li><li><a href=/php/variable-handling/get_defined_vars/>get_defined_vars</a></li><li><a href=/php/variable-handling/get_resource_id/>get_resource_id</a></li><li><a href=/php/variable-handling/get_resource_type/>get_resource_type</a></li><li><a href=/php/variable-handling/gettype/>gettype</a></li><li><a href=/php/variable-handling/intval/>intval</a></li><li><a href=/php/variable-handling/is_array/>is_array</a></li><li><a href=/php/variable-handling/is_bool/>is_bool</a></li><li><a href=/php/variable-handling/is_callable/>is_callable</a></li><li><a href=/php/variable-handling/is_countable/>is_countable</a></li><li><a href=/php/variable-handling/is_double/>is_double</a></li><li><a href=/php/variable-handling/is_float/>is_float</a></li><li><a href=/php/variable-handling/is_int/>is_int</a></li><li><a href=/php/variable-handling/is_integer/>is_integer</a></li><li><a href=/php/variable-handling/is_iterable/>is_iterable</a></li><li><a href=/php/variable-handling/is_long/>is_long</a></li><li><a href=/php/variable-handling/is_null/>is_null</a></li><li><a href=/php/variable-handling/is_numeric/>is_numeric</a></li><li><a href=/php/variable-handling/is_object/>is_object</a></li><li><a href=/php/variable-handling/is_real/>is_real</a></li><li><a href=/php/variable-handling/is_resource/>is_resource</a></li><li><a href=/php/variable-handling/is_scalar/>is_scalar</a></li><li><a href=/php/variable-handling/is_string/>is_string</a></li><li><a href=/php/variable-handling/isset/>isset</a></li><li><a href=/php/variable-handling/print_r/>print_r</a></li><li><a href=/php/variable-handling/serialize/>serialize</a></li><li><a href=/php/variable-handling/settype/>settype</a></li><li><a href=/php/variable-handling/strval/>strval</a></li><li><a href=/php/variable-handling/unserialize/>unserialize</a></li><li><a href=/php/variable-handling/unset/>unset</a></li><li><a href=/php/variable-handling/var_dump/>var_dump</a></li><li><a href=/php/variable-handling/var_export/>var_export</a></li></ul></div><h2>zlib</h2><div><ul><li><a href=/php/zlib/deflate_add/>deflate_add</a></li><li><a href=/php/zlib/deflate_init/>deflate_init</a></li><li><a href=/php/zlib/gzclose/>gzclose</a></li><li><a href=/php/zlib/gzcompress/>gzcompress</a></li><li><a href=/php/zlib/gzdecode/>gzdecode</a></li><li><a href=/php/zlib/gzdeflate/>gzdeflate</a></li><li><a href=/php/zlib/gzencode/>gzencode</a></li><li><a href=/php/zlib/gzeof/>gzeof</a></li><li><a href=/php/zlib/gzfile/>gzfile</a></li><li><a href=/php/zlib/gzgetc/>gzgetc</a></li><li><a href=/php/zlib/gzgets/>gzgets</a></li><li><a href=/php/zlib/gzinflate/>gzinflate</a></li><li><a href=/php/zlib/gzopen/>gzopen</a></li><li><a href=/php/zlib/gzpassthru/>gzpassthru</a></li><li><a href=/php/zlib/gzputs/>gzputs</a></li><li><a href=/php/zlib/gzread/>gzread</a></li><li><a href=/php/zlib/gzrewind/>gzrewind</a></li><li><a href=/php/zlib/gzseek/>gzseek</a></li><li><a href=/php/zlib/gztell/>gztell</a></li><li><a href=/php/zlib/gzuncompress/>gzuncompress</a></li><li><a href=/php/zlib/gzwrite/>gzwrite</a></li><li><a href=/php/zlib/inflate_add/>inflate_add</a></li><li><a href=/php/zlib/inflate_get_read_len/>inflate_get_read_len</a></li><li><a href=/php/zlib/inflate_get_status/>inflate_get_status</a></li><li><a href=/php/zlib/inflate_init/>inflate_init</a></li><li><a href=/php/zlib/ob_gzhandler/>ob_gzhandler</a></li><li><a href=/php/zlib/readgzfile/>readgzfile</a></li><li><a href=/php/zlib/zlib_decode/>zlib_decode</a></li><li><a href=/php/zlib/zlib_encode/>zlib_encode</a></li><li><a href=/php/zlib/zlib_get_coding_type/>zlib_get_coding_type</a></li></ul></div></div><div class=h1><a id=switch-svg>SVG</a></div><div id=list-svg><h2>Overview</h2><div><ul><li><a href=/svg/>Overview</a></li></ul></div><h2>Attributes</h2><div><ul><li><a href=/svg/attributes/accumulate/>accumulate</a></li><li><a href=/svg/attributes/additive/>additive</a></li><li><a href=/svg/attributes/amplitude/>amplitude</a></li><li><a href=/svg/attributes/attributename/>attributeName</a></li><li><a href=/svg/attributes/azimuth/>azimuth</a></li><li><a href=/svg/attributes/basefrequency/>baseFrequency</a></li><li><a href=/svg/attributes/begin/>begin</a></li><li><a href=/svg/attributes/bias/>bias</a></li><li><a href=/svg/attributes/by/>by</a></li><li><a href=/svg/attributes/calcmode/>calcMode</a></li><li><a href=/svg/attributes/clippathunits/>clipPathUnits</a></li><li><a href=/svg/attributes/crossorigin/>crossorigin</a></li><li><a href=/svg/attributes/cx/>cx</a></li><li><a href=/svg/attributes/cy/>cy</a></li><li><a href=/svg/attributes/d/>d</a></li><li><a href=/svg/attributes/diffuseconstant/>diffuseConstant</a></li><li><a href=/svg/attributes/divisor/>divisor</a></li><li><a href=/svg/attributes/download/>download</a></li><li><a href=/svg/attributes/dur/>dur</a></li><li><a href=/svg/attributes/dx/>dx</a></li><li><a href=/svg/attributes/dy/>dy</a></li><li><a href=/svg/attributes/edgemode/>edgeMode</a></li><li><a href=/svg/attributes/elevation/>elevation</a></li><li><a href=/svg/attributes/end/>end</a></li><li><a href=/svg/attributes/exponent/>exponent</a></li><li><a href=/svg/attributes/fill/>fill</a></li><li><a href=/svg/attributes/filterunits/>filterUnits</a></li><li><a href=/svg/attributes/flood-color/>flood-color</a></li><li><a href=/svg/attributes/flood-opacity/>flood-opacity</a></li><li><a href=/svg/attributes/fr/>fr</a></li><li><a href=/svg/attributes/from/>from</a></li><li><a href=/svg/attributes/fx/>fx</a></li><li><a href=/svg/attributes/fy/>fy</a></li><li><a href=/svg/attributes/gradienttransform/>gradientTransform</a></li><li><a href=/svg/attributes/gradientunits/>gradientUnits</a></li><li><a href=/svg/attributes/height/>height</a></li><li><a href=/svg/attributes/href/>href</a></li><li><a href=/svg/attributes/hreflang/>hreflang</a></li><li><a href=/svg/attributes/id/>id</a></li><li><a href=/svg/attributes/in/>in</a></li><li><a href=/svg/attributes/in2/>in2</a></li><li><a href=/svg/attributes/intercept/>intercept</a></li><li><a href=/svg/attributes/k1/>k1</a></li><li><a href=/svg/attributes/k2/>k2</a></li><li><a href=/svg/attributes/k3/>k3</a></li><li><a href=/svg/attributes/k4/>k4</a></li><li><a href=/svg/attributes/kernelmatrix/>kernelMatrix</a></li><li><a href=/svg/attributes/keypoints/>keyPoints</a></li><li><a href=/svg/attributes/keysplines/>keySplines</a></li><li><a href=/svg/attributes/keytimes/>keyTimes</a></li><li><a href=/svg/attributes/lengthadjust/>lengthAdjust</a></li><li><a href=/svg/attributes/limitingconeangle/>limitingConeAngle</a></li><li><a href=/svg/attributes/markerheight/>markerHeight</a></li><li><a href=/svg/attributes/markerunits/>markerUnits</a></li><li><a href=/svg/attributes/markerwidth/>markerWidth</a></li><li><a href=/svg/attributes/maskcontentunits/>maskContentUnits</a></li><li><a href=/svg/attributes/maskunits/>maskUnits</a></li><li><a href=/svg/attributes/max/>max</a></li><li><a href=/svg/attributes/media/>media</a></li><li><a href=/svg/attributes/method/>method</a></li><li><a href=/svg/attributes/min/>min</a></li><li><a href=/svg/attributes/mode/>mode</a></li><li><a href=/svg/attributes/no-composite/>no-composite</a></li><li><a href=/svg/attributes/numoctaves/>numOctaves</a></li><li><a href=/svg/attributes/offset/>offset</a></li><li><a href=/svg/attributes/onbegin/>onbegin</a></li><li><a href=/svg/attributes/onend/>onend</a></li><li><a href=/svg/attributes/onrepeat/>onrepeat</a></li><li><a href=/svg/attributes/operator/>operator</a></li><li><a href=/svg/attributes/order/>order</a></li><li><a href=/svg/attributes/orient/>orient</a></li><li><a href=/svg/attributes/origin/>origin</a></li><li><a href=/svg/attributes/path/>path</a></li><li><a href=/svg/attributes/pathlength/>pathLength</a></li><li><a href=/svg/attributes/patterncontentunits/>patternContentUnits</a></li><li><a href=/svg/attributes/patterntransform/>patternTransform</a></li><li><a href=/svg/attributes/patternunits/>patternUnits</a></li><li><a href=/svg/attributes/ping/>ping</a></li><li><a href=/svg/attributes/points/>points</a></li><li><a href=/svg/attributes/pointsatx/>pointsAtX</a></li><li><a href=/svg/attributes/pointsaty/>pointsAtY</a></li><li><a href=/svg/attributes/pointsatz/>pointsAtZ</a></li><li><a href=/svg/attributes/preservealpha/>preserveAlpha</a></li><li><a href=/svg/attributes/preserveaspectratio/>preserveAspectRatio</a></li><li><a href=/svg/attributes/primitiveunits/>primitiveUnits</a></li><li><a href=/svg/attributes/r/>r</a></li><li><a href=/svg/attributes/radius/>radius</a></li><li><a href=/svg/attributes/referrerpolicy/>referrerPolicy</a></li><li><a href=/svg/attributes/refx/>refx</a></li><li><a href=/svg/attributes/refy/>refy</a></li><li><a href=/svg/attributes/rel/>rel</a></li><li><a href=/svg/attributes/repeatcount/>repeatCount</a></li><li><a href=/svg/attributes/repeatdur/>repeatDur</a></li><li><a href=/svg/attributes/requiredextensions/>requiredExtensions</a></li><li><a href=/svg/attributes/restart/>restart</a></li><li><a href=/svg/attributes/rotate/>rotate</a></li><li><a href=/svg/attributes/rx/>rx</a></li><li><a href=/svg/attributes/ry/>ry</a></li><li><a href=/svg/attributes/scale/>scale</a></li><li><a href=/svg/attributes/seed/>seed</a></li><li><a href=/svg/attributes/side/>side</a></li><li><a href=/svg/attributes/slope/>slope</a></li><li><a href=/svg/attributes/spacing/>spacing</a></li><li><a href=/svg/attributes/specularconstant/>specularConstant</a></li><li><a href=/svg/attributes/specularexponent/>specularExponent</a></li><li><a href=/svg/attributes/spreadmethod/>spreadMethod</a></li><li><a href=/svg/attributes/startoffset/>startoffset</a></li><li><a href=/svg/attributes/stddeviation/>stdDeviation</a></li><li><a href=/svg/attributes/stitchtiles/>stitchTiles</a></li><li><a href=/svg/attributes/stop-color/>stop-color</a></li><li><a href=/svg/attributes/stop-opacity/>stop-opacity</a></li><li><a href=/svg/attributes/surfacescale/>surfaceScale</a></li><li><a href=/svg/attributes/systemlanguage/>systemLanguage</a></li><li><a href=/svg/attributes/tabindex/>tabindex</a></li><li><a href=/svg/attributes/tablevalues/>tableValues</a></li><li><a href=/svg/attributes/target/>target</a></li><li><a href=/svg/attributes/targetx/>targetX</a></li><li><a href=/svg/attributes/targety/>targetY</a></li><li><a href=/svg/attributes/textlength/>textLength</a></li><li><a href=/svg/attributes/title/>title</a></li><li><a href=/svg/attributes/to/>to</a></li><li><a href=/svg/attributes/transform/>transform</a></li><li><a href=/svg/attributes/type/>type</a></li><li><a href=/svg/attributes/values/>values</a></li><li><a href=/svg/attributes/viewbox/>viewBox</a></li><li><a href=/svg/attributes/width/>width</a></li><li><a href=/svg/attributes/x/>x</a></li><li><a href=/svg/attributes/x1/>x1</a></li><li><a href=/svg/attributes/x2/>x2</a></li><li><a href=/svg/attributes/xchannelselector/>xChannelSelector</a></li><li><a href=/svg/attributes/y/>y</a></li><li><a href=/svg/attributes/y1/>y1</a></li><li><a href=/svg/attributes/y2/>y2</a></li><li><a href=/svg/attributes/ychannelselector/>yChannelSelector</a></li><li><a href=/svg/attributes/z/>z</a></li><li><a href=/svg/attributes/zoomandpan/>zoomAndPan</a></li></ul></div><h2>Elements</h2><div><ul><li><a href=/svg/elements/a/>a</a></li><li><a href=/svg/elements/animate/>animate</a></li><li><a href=/svg/elements/animatemotion/>animateMotion</a></li><li><a href=/svg/elements/animatetransform/>animateTransform</a></li><li><a href=/svg/elements/circle/>circle</a></li><li><a href=/svg/elements/clippath/>clipPath</a></li><li><a href=/svg/elements/defs/>defs</a></li><li><a href=/svg/elements/desc/>desc</a></li><li><a href=/svg/elements/discard/>discard</a></li><li><a href=/svg/elements/ellipse/>ellipse</a></li><li><a href=/svg/elements/feblend/>feBlend</a></li><li><a href=/svg/elements/fecolormatrix/>feColorMatrix</a></li><li><a href=/svg/elements/fecomponenttransfer/>feComponentTransfer</a></li><li><a href=/svg/elements/fecomposite/>feComposite</a></li><li><a href=/svg/elements/feconvolvematrix/>feConvolveMatrix</a></li><li><a href=/svg/elements/fediffuselighting/>feDiffuseLighting</a></li><li><a href=/svg/elements/fedisplacementmap/>feDisplacementMap</a></li><li><a href=/svg/elements/fedistantlight/>feDistantLight</a></li><li><a href=/svg/elements/fedropshadow/>feDropShadow</a></li><li><a href=/svg/elements/feflood/>feFlood</a></li><li><a href=/svg/elements/fefunca/>feFuncA</a></li><li><a href=/svg/elements/fefuncb/>feFuncB</a></li><li><a href=/svg/elements/fefuncg/>feFuncG</a></li><li><a href=/svg/elements/fefuncr/>feFuncR</a></li><li><a href=/svg/elements/fegaussianblur/>feGaussianBlur</a></li><li><a href=/svg/elements/feimage/>feImage</a></li><li><a href=/svg/elements/femerge/>feMerge</a></li><li><a href=/svg/elements/femergenode/>feMergeNode</a></li><li><a href=/svg/elements/femorphology/>feMorphology</a></li><li><a href=/svg/elements/feoffset/>feOffset</a></li><li><a href=/svg/elements/fepointlight/>fePointLight</a></li><li><a href=/svg/elements/fespecularlighting/>feSpecularLighting</a></li><li><a href=/svg/elements/fespotlight/>feSpotLight</a></li><li><a href=/svg/elements/fetile/>feTile</a></li><li><a href=/svg/elements/feturbulence/>feTurbulence</a></li><li><a href=/svg/elements/filter/>filter</a></li><li><a href=/svg/elements/foreignobject/>foreignObject</a></li><li><a href=/svg/elements/g/>g</a></li><li><a href=/svg/elements/image/>image</a></li><li><a href=/svg/elements/line/>line</a></li><li><a href=/svg/elements/lineargradient/>linearGradient</a></li><li><a href=/svg/elements/marker/>marker</a></li><li><a href=/svg/elements/mask/>mask</a></li><li><a href=/svg/elements/metadata/>metadata</a></li><li><a href=/svg/elements/mpath/>mpath</a></li><li><a href=/svg/elements/path/>path</a></li><li><a href=/svg/elements/pattern/>pattern</a></li><li><a href=/svg/elements/polygon/>polygon</a></li><li><a href=/svg/elements/polyline/>polyline</a></li><li><a href=/svg/elements/radialgradient/>radialGradient</a></li><li><a href=/svg/elements/rect/>rect</a></li><li><a href=/svg/elements/script/>script</a></li><li><a href=/svg/elements/set/>set</a></li><li><a href=/svg/elements/stop/>stop</a></li><li><a href=/svg/elements/style/>style</a></li><li><a href=/svg/elements/svg/>svg</a></li><li><a href=/svg/elements/switch/>switch</a></li><li><a href=/svg/elements/symbol/>symbol</a></li><li><a href=/svg/elements/text/>text</a></li><li><a href=/svg/elements/textpath/>textPath</a></li><li><a href=/svg/elements/title/>title</a></li><li><a href=/svg/elements/tspan/>tspan</a></li><li><a href=/svg/elements/unknown/>unknown</a></li><li><a href=/svg/elements/use/>use</a></li><li><a href=/svg/elements/view/>view</a></li></ul></div><h2>Values</h2><div><ul><li><a href=/svg/values/_blank/>_blank</a></li><li><a href=/svg/values/_parent/>_parent</a></li><li><a href=/svg/values/_self/>_self</a></li><li><a href=/svg/values/_top/>_top</a></li><li><a href=/svg/values/a/>A</a></li><li><a href=/svg/values/align/>align</a></li><li><a href=/svg/values/alpha-value/>alpha-value</a></li><li><a href=/svg/values/always/>always</a></li><li><a href=/svg/values/angle/>angle</a></li><li><a href=/svg/values/anonymous/>anonymous</a></li><li><a href=/svg/values/arithmetic/>arithmetic</a></li><li><a href=/svg/values/atop/>atop</a></li><li><a href=/svg/values/auto/>auto</a></li><li><a href=/svg/values/auto-start-reverse/>auto-start-reverse</a></li><li><a href=/svg/values/auto-reverse/>auto-reverse</a></li><li><a href=/svg/values/b/>B</a></li><li><a href=/svg/values/backgroundalpha/>BackgroundAlpha</a></li><li><a href=/svg/values/backgroundimage/>BackgroundImage</a></li><li><a href=/svg/values/begin-value-list/>begin-value-list</a></li><li><a href=/svg/values/blend-mode/>blend-mode</a></li><li><a href=/svg/values/bottom/>bottom</a></li><li><a href=/svg/values/center/>center</a></li><li><a href=/svg/values/clock-value/>clock-value</a></li><li><a href=/svg/values/color/>color</a></li><li><a href=/svg/values/control-point/>control-point</a></li><li><a href=/svg/values/currentcolor/>currentColor</a></li><li><a href=/svg/values/default/>default</a></li><li><a href=/svg/values/dilate/>dilate</a></li><li><a href=/svg/values/disable/>disable</a></li><li><a href=/svg/values/discrete/>discrete</a></li><li><a href=/svg/values/duplicate/>duplicate</a></li><li><a href=/svg/values/empty-string/>empty-string</a></li><li><a href=/svg/values/end-value-list/>end-value-list</a></li><li><a href=/svg/values/erode/>erode</a></li><li><a href=/svg/values/exact/>exact</a></li><li><a href=/svg/values/false/>false</a></li><li><a href=/svg/values/fillpaint/>FillPaint</a></li><li><a href=/svg/values/filter-primitive-reference/>filter-primitive-reference</a></li><li><a href=/svg/values/fractalnoise/>fractalNoise</a></li><li><a href=/svg/values/freeze/>freeze</a></li><li><a href=/svg/values/g/>G</a></li><li><a href=/svg/values/gamma/>gamma</a></li><li><a href=/svg/values/height/>height</a></li><li><a href=/svg/values/huerotate/>hueRotate</a></li><li><a href=/svg/values/icccolor/>icccolor</a></li><li><a href=/svg/values/id/>id</a></li><li><a href=/svg/values/identity/>identity</a></li><li><a href=/svg/values/in/>in</a></li><li><a href=/svg/values/indefinite/>indefinite</a></li><li><a href=/svg/values/integer/>integer</a></li><li><a href=/svg/values/left/>left</a></li><li><a href=/svg/values/length/>length</a></li><li><a href=/svg/values/length-percentage/>length-percentage</a></li><li><a href=/svg/values/lighter/>lighter</a></li><li><a href=/svg/values/linear/>linear</a></li><li><a href=/svg/values/list/>list</a></li><li><a href=/svg/values/list-of-numbers/>list-of-numbers</a></li><li><a href=/svg/values/luminancetoalpha/>luminanceToAlpha</a></li><li><a href=/svg/values/magnify/>magnify</a></li><li><a href=/svg/values/matrix/>matrix</a></li><li><a href=/svg/values/media/>media</a></li><li><a href=/svg/values/meetorslice/>meetOrSlice</a></li><li><a href=/svg/values/min-x/>min-x</a></li><li><a href=/svg/values/min-y/>min-y</a></li><li><a href=/svg/values/name/>name</a></li><li><a href=/svg/values/never/>never</a></li><li><a href=/svg/values/no-composite/>no-composite</a></li><li><a href=/svg/values/no-referrer/>no-referrer</a></li><li><a href=/svg/values/no-referrer-when-downgrade/>no-referrer-when-downgrade</a></li><li><a href=/svg/values/none/>none</a></li><li><a href=/svg/values/nostitch/>noStitch</a></li><li><a href=/svg/values/number/>number</a></li><li><a href=/svg/values/number-optional-number/>number-optional-number</a></li><li><a href=/svg/values/objectboundingbox/>objectBoundingBox</a></li><li><a href=/svg/values/origin/>origin</a></li><li><a href=/svg/values/origin-when-cross-origin/>origin-when-cross-origin</a></li><li><a href=/svg/values/out/>out</a></li><li><a href=/svg/values/over/>over</a></li><li><a href=/svg/values/paced/>paced</a></li><li><a href=/svg/values/pad/>pad</a></li><li><a href=/svg/values/path-data/>path-data</a></li><li><a href=/svg/values/percentage/>percentage</a></li><li><a href=/svg/values/points/>points</a></li><li><a href=/svg/values/r/>R</a></li><li><a href=/svg/values/reflect/>reflect</a></li><li><a href=/svg/values/remove/>remove</a></li><li><a href=/svg/values/repeat/>repeat</a></li><li><a href=/svg/values/replace/>replace</a></li><li><a href=/svg/values/right/>right</a></li><li><a href=/svg/values/rotate/>rotate</a></li><li><a href=/svg/values/same-origin/>same-origin</a></li><li><a href=/svg/values/saturate/>saturate</a></li><li><a href=/svg/values/scale/>scale</a></li><li><a href=/svg/values/script/>script</a></li><li><a href=/svg/values/set-of-comma-separated-tokens/>set-of-comma-separated-tokens</a></li><li><a href=/svg/values/set-of-space-separated-tokens/>set-of-space-separated-tokens</a></li><li><a href=/svg/values/skewx/>skewx</a></li><li><a href=/svg/values/skewy/>skewy</a></li><li><a href=/svg/values/sourcealpha/>SourceAlpha</a></li><li><a href=/svg/values/sourcegraphic/>SourceGraphic</a></li><li><a href=/svg/values/spacing/>spacing</a></li><li><a href=/svg/values/spacingandglyphs/>spacingAndGlyphs</a></li><li><a href=/svg/values/spline/>spline</a></li><li><a href=/svg/values/stitch/>stitch</a></li><li><a href=/svg/values/stretch/>stretch</a></li><li><a href=/svg/values/strict-origin/>strict-origin</a></li><li><a href=/svg/values/strict-origin-when-cross-origin/>strict-origin-when-cross-origin</a></li><li><a href=/svg/values/string/>string</a></li><li><a href=/svg/values/strokepaint/>StrokePaint</a></li><li><a href=/svg/values/strokewidth/>strokeWidth</a></li><li><a href=/svg/values/sum/>sum</a></li><li><a href=/svg/values/table/>table</a></li><li><a href=/svg/values/tokens/>tokens</a></li><li><a href=/svg/values/top/>top</a></li><li><a href=/svg/values/transform-list/>transform-list</a></li><li><a href=/svg/values/translate/>translate</a></li><li><a href=/svg/values/true/>true</a></li><li><a href=/svg/values/turbulence/>turbulence</a></li><li><a href=/svg/values/unsafe-url/>unsafe-url</a></li><li><a href=/svg/values/url/>url</a></li><li><a href=/svg/values/use-credentials/>use-credentials</a></li><li><a href=/svg/values/userspaceonuse/>userSpaceOnUse</a></li><li><a href=/svg/values/valid-integer/>valid-integer</a></li><li><a href=/svg/values/value/>value</a></li><li><a href=/svg/values/whennotactive/>whenNotActive</a></li><li><a href=/svg/values/width/>width</a></li><li><a href=/svg/values/wrap/>wrap</a></li><li><a href=/svg/values/xml-name/>XML-Name</a></li><li><a href=/svg/values/xor/>xor</a></li></ul></div></div><div class=h1><a id=switch-applications>APPLICATIONS</a></div><div id=list-applications><h2>Overview</h2><div><ul><li><a href=/applications/>Overview</a></li></ul></div><h2>Bible</h2><div><ul><li><a href=/applications/Bible-passages/>Bible Passages</a></li><li><a href=/applications/Bible-pictures/>Bible Pictures</a></li><li><a href=/applications/Jesus-loves-the-little-children/>Jesus Loves the Little Children</a></li><li><a href=/applications/merry-Christmas/>Merry Christmas</a></li><li><a href=/applications/one-man-one-woman-one-lifetime/>One Man. One Woman. One Lifetime.</a></li><li><a href=/applications/The-Armor-of-God/>The Armor of God</a></li></ul></div><h2>Cards</h2><div><ul><li><a href=/applications/euchre/>Euchre</a></li><li><a href=/applications/sevens/>Sevens</a></li><li><a href=/applications/solitaire/>Solitaire</a></li></ul></div><h2>LEGO</h2><div><ul><li><a href=/applications/lego-cannonball-bingo/>LEGO Cannonball Bingo</a></li><li><a href=/applications/lego-pandamonium/>LEGO Pandamonium</a></li><li><a href=/applications/lego-pirate-plunder/>LEGO Pirate Plunder</a></li><li><a href=/applications/lego-the-machine/>LEGO The Machine</a></li></ul></div><h2>Other</h2><div><ul><li><a href=/applications/miniature-golf/>Miniature Golf</a></li><li><a href=/applications/space-station/>Space Station</a></li></ul></div></div><div class=h1><a href=/editor/>EDITOR</a></div><div class=h1><a href=/favicon/>FAVICON</a></div><div class=h1><a href=/htaccess/>.HTACCESS</a></div><div class=h1><a href=/acme.sh/>ACME.SH</a></div><div class=h1><a id=switch-flash>FLASH</a></div><div id=list-flash><div class=h2><a href=/flash/detect/>DETECT</a></div><div class=h2><a id=switch-flash-actionscript>ACTIONSCRIPT</a></div><div id=list-flash-actionscript><h3>Overview</h3><div><ul><li><a href=/flash/actionscript/>Overview</a></li></ul></div><h3>Assets</h3><div><ul><li><a href=/flash/actionscript/embed/>Embed</a></li><li><a href=/flash/actionscript/load/>Load</a></li></ul></div></div><div class=h2><a id=switch-flash-as3dmod>AS3DMOD</a></div><div id=list-flash-as3dmod><h3>Overview</h3><div><ul><li><a href=/flash/as3dmod/>Overview</a></li></ul></div><h3>Modifiers</h3><div><ul><li><a href=/flash/as3dmod/bend/>Bend</a></li><li><a href=/flash/as3dmod/bloat/>Bloat</a></li><li><a href=/flash/as3dmod/cloth/>Cloth</a></li><li><a href=/flash/as3dmod/noise/>Noise</a></li><li><a href=/flash/as3dmod/perlin/>Perlin</a></li><li><a href=/flash/as3dmod/pivot/>Pivot</a></li><li><a href=/flash/as3dmod/skew/>Skew</a></li><li><a href=/flash/as3dmod/taper/>Taper</a></li><li><a href=/flash/as3dmod/twist/>Twist</a></li></ul></div><h3>Other</h3><div><ul><li><a href=/flash/as3dmod/flag/>Flag</a></li></ul></div></div><div class=h2><a href=/flash/flartoolkit/>FLARTOOLKIT</a></div><div class=h2><a id=switch-flash-jiglibflash>JIGLIBFLASH</a></div><div id=list-flash-jiglibflash><h3>Overview</h3><div><ul><li><a href=/flash/jiglibflash/>Overview</a></li></ul></div><h3>Objects</h3><div><ul><li><a href=/flash/jiglibflash/jbox/>JBox</a></li><li><a href=/flash/jiglibflash/jcapsule/>JCapsule</a></li><li><a href=/flash/jiglibflash/jplane/>JPlane</a></li><li><a href=/flash/jiglibflash/jsphere/>JSphere</a></li></ul></div><h3>Other</h3><div><ul><li><a href=/flash/jiglibflash/physics/>Physics</a></li></ul></div></div><div class=h2><a id=switch-flash-papervision3d>PAPERVISION3D</a></div><div id=list-flash-papervision3d><h3>Overview</h3><div><ul><li><a href=/flash/papervision3d/>Overview</a></li></ul></div><h3>Install</h3><div><ul><li><a href=/flash/papervision3d/install/>Install</a></li></ul></div><h3>Example</h3><div><ul><li><a href=/flash/papervision3d/1/>1</a></li><li><a href=/flash/papervision3d/2/>2</a></li><li><a href=/flash/papervision3d/3/>3</a></li><li><a href=/flash/papervision3d/4/>4</a></li><li><a href=/flash/papervision3d/5/>5</a></li></ul></div><h3>Cameras</h3><div><ul><li><a href=/flash/papervision3d/camera3d/>Camera3D</a></li><li><a href=/flash/papervision3d/debugcamera3d/>DebugCamera3D</a></li><li><a href=/flash/papervision3d/springcamera3d/>SpringCamera3D</a></li></ul></div><h3>Core</h3><div><ul><li><a href=/flash/papervision3d/lines3d/>Lines3D</a></li><li><a href=/flash/papervision3d/fogfilter/>FogFilter</a></li></ul></div><h3>Light</h3><div><ul><li><a href=/flash/papervision3d/pointlight3d/>PointLight3D</a></li></ul></div><h3>Materials</h3><div><ul><li><a href=/flash/papervision3d/bitmapfilematerial/>BitmapFileMaterial</a></li><li><a href=/flash/papervision3d/bitmapmaterial/>BitmapMaterial</a></li><li><a href=/flash/papervision3d/bitmapviewportmaterial/>BitmapViewportMaterial</a></li><li><a href=/flash/papervision3d/colormaterial/>ColorMaterial</a></li><li><a href=/flash/papervision3d/compositematerial/>CompositeMaterial</a></li><li><a href=/flash/papervision3d/moviematerial/>MovieMaterial</a></li><li><a href=/flash/papervision3d/wireframematerial/>WireframeMaterial</a></li></ul></div><h3>Shade Materials</h3><div><ul><li><a href=/flash/papervision3d/cellmaterial/>CellMaterial</a></li><li><a href=/flash/papervision3d/envmapmaterial/>EnvMapMaterial</a></li><li><a href=/flash/papervision3d/flatshadematerial/>FlatShadeMaterial</a></li><li><a href=/flash/papervision3d/gouraudmaterial/>GouraudMaterial</a></li><li><a href=/flash/papervision3d/phongmaterial/>PhongMaterial</a></li></ul></div><h3>Special Material</h3><div><ul><li><a href=/flash/papervision3d/particlematerial/>ParticleMaterial</a></li></ul></div><h3>Parser Objects</h3><div><ul><li><a href=/flash/papervision3d/dae/>DAE</a></li><li><a href=/flash/papervision3d/kmz/>KMZ</a></li></ul></div><h3>Primitive Objects</h3><div><ul><li><a href=/flash/papervision3d/arrow/>Arrow</a></li><li><a href=/flash/papervision3d/cone/>Cone</a></li><li><a href=/flash/papervision3d/cube/>Cube</a></li><li><a href=/flash/papervision3d/cylinder/>Cylinder</a></li><li><a href=/flash/papervision3d/paperplane/>PaperPlane</a></li><li><a href=/flash/papervision3d/plane/>Plane</a></li><li><a href=/flash/papervision3d/sphere/>Sphere</a></li></ul></div><h3>Special Objects</h3><div><ul><li><a href=/flash/papervision3d/particlefield/>ParticleField</a></li><li><a href=/flash/papervision3d/ucs/>UCS</a></li></ul></div><h3>Render</h3><div><ul><li><a href=/flash/papervision3d/basicrenderengine/>BasicRenderEngine</a></li><li><a href=/flash/papervision3d/lazyrenderengine/>LazyRenderEngine</a></li><li><a href=/flash/papervision3d/quadrantrenderengine/>QuadrantRenderEngine</a></li></ul></div><h3>Scene</h3><div><ul><li><a href=/flash/papervision3d/scene3d/>Scene3D</a></li></ul></div><h3>Typography</h3><div><ul><li><a href=/flash/papervision3d/text3d/>Text3D</a></li></ul></div><h3>Views</h3><div><ul><li><a href=/flash/papervision3d/basicview/>BasicView</a></li><li><a href=/flash/papervision3d/reflectionview/>ReflectionView</a></li><li><a href=/flash/papervision3d/statsview/>StatsView</a></li><li><a href=/flash/papervision3d/viewport3d/>Viewport3D</a></li></ul></div><h3>View Layers</h3><div><ul><li><a href=/flash/papervision3d/bitmapeffectlayer/>BitmapEffectLayer</a></li><li><a href=/flash/papervision3d/viewportlayer/>ViewportLayer</a></li></ul></div><h3>Other</h3><div><ul><li><a href=/flash/papervision3d/anaglyph/>Anaglyph</a></li><li><a href=/flash/papervision3d/camera-move/>Camera Move</a></li><li><a href=/flash/papervision3d/camera-rotate/>Camera Rotate</a></li><li><a href=/flash/papervision3d/camera-target-move/>Camera Target Move</a></li><li><a href=/flash/papervision3d/object-move/>Object Move</a></li><li><a href=/flash/papervision3d/object-rotate/>Object Rotate</a></li><li><a href=/flash/papervision3d/object-scale/>Object Scale</a></li><li><a href=/flash/papervision3d/panorama/>Panorama</a></li></ul></div></div></div><div class=h1><a id=switch-sketchup>SKETCHUP</a></div><div id=list-sketchup><h2>Overview</h2><div><ul><li><a href=/sketchup/>Overview</a></li></ul></div><h2>Plugins</h2><div><ul><li><a href=/sketchup/papervision3d/>Papervision3D</a></li><li><a href=/sketchup/triangulate/>Triangulate</a></li></ul></div></div><div class=h1><a id=switch-unity>UNITY</a></div><div id=list-unity><h2>Overview</h2><div><ul><li><a href=/unity/>Overview</a></li></ul></div><h2>Detect</h2><div><ul><li><a href=/unity/detect/>Detect</a></li></ul></div><h2>Games</h2><div><ul><li><a href=/unity/air-hockey/>Air Hockey</a></li><li><a href=/unity/foosball/>Foosball</a></li><li><a href=/unity/pool/>Pool</a></li></ul></div><h2>Unity</h2><div><ul><li><a href=/unity/car/>Car</a></li><li><a href=/unity/lerpz-escapes/>Lerpz Escapes</a></li><li><a href=/unity/mecanim/>Mecanim</a></li></ul></div></div><div class=h1><a id=switch-xcode>XCODE</a></div><div id=list-xcode><h2>Overview</h2><div><ul><li><a href=/xcode/>Overview</a></li></ul></div><h2>Example</h2><div><ul><li><a href=/xcode/1/>1</a></li><li><a href=/xcode/2/>2</a></li><li><a href=/xcode/3/>3</a></li><li><a href=/xcode/4/>4</a></li><li><a href=/xcode/5/>5</a></li><li><a href=/xcode/6/>6</a></li></ul></div><h2>CSV2Plist</h2><div><ul><li><a href=/xcode/csv2plist/>CSV2Plist</a></li></ul></div><h2>UI</h2><div><ul><li><a href=/xcode/uiactivityindicatorview/>UIActivityIndicatorView</a></li><li><a href=/xcode/uibutton/>UIButton</a></li><li><a href=/xcode/uiimageview/>UIImageView</a></li><li><a href=/xcode/uilabel/>UILabel</a></li><li><a href=/xcode/uipagecontrol/>UIPageControl</a></li><li><a href=/xcode/uiprogressview/>UIProgressView</a></li><li><a href=/xcode/uisegmentedcontrol/>UISegmentedControl</a></li><li><a href=/xcode/uislider/>UISlider</a></li><li><a href=/xcode/uistepper/>UIStepper</a></li><li><a href=/xcode/uiswitch/>UISwitch</a></li><li><a href=/xcode/uitextfield/>UITextField</a></li></ul></div></div><div class=h1><a href=/about/>ABOUT</a></div><div class=h1><a href=/terms/>TERMS</a></div></div></div><div id=background><video loop muted src=/assets/mp4/1/16.mp4></video></div></body></html>Links
Related
cURL
- curl_close
- curl_copy_handle
- curl_errno
- curl_error
- curl_escape
- curl_exec
- curl_getinfo
- curl_init
- curl_multi_add_handle
- curl_multi_close
- curl_multi_exec
- curl_multi_getcontent
- curl_multi_info_read
- curl_multi_init
- curl_multi_remove_handle
- curl_multi_select
- curl_multi_setopt
- curl_multi_strerror
- curl_pause
- curl_reset
- curl_setopt
- curl_setopt_array
- curl_share_close
- curl_share_errno
- curl_share_init
- curl_share_init_persistent
- curl_share_setopt
- curl_share_strerror
- curl_strerror
- curl_unescape
- curl_upkeep
- curl_version