//verifica se os valores digitados são válidos function verifica(qualVar, qualTxt, valorMax) { //Se estiver acima do valor máximo permitido if (qualVar>valorMax) { qualVar = valorMax; } //Se estiver abaixo do valor mínimo permitido if (qualVar<0) { qualVar = 0; } //Se for vazio if (qualVar == "") { qualVar = 0; } //Se for nulo if (qualVar == null) { qualVar = 0; } //Se não for um número if (isNaN(qualVar)) { qualVar = 0; } //Coloca o valor no campo de texto qualTxt.text = qualVar; } //converte RGB para CMY function rgbParaCmy(varRgbR, varRgbG, varRgbB) { //deixa os valores RGB entre 0 e 255 verifica(varRgbR, txtRgbR, 255); verifica(varRgbG, txtRgbG, 255); verifica(varRgbB, txtRgbB, 255); //converte RGB para CMY(valores percentuais) varCmyC = math.round(100*(1-(varRgbR/255))); varCmyM = math.round(100*(1-(varRgbG/255))); varCmyY = math.round(100*(1-(varRgbB/255))); //Coloca os valores nos campos de texto txtCmyC.text = varCmyC; txtCmyM.text = varCmyM; txtCmyY.text = varCmyY; } //Converte RGB para Hexadecimal function rgbParaHex(varRgbR, varRgbG, varRgbB) { varHexR = Number(varRgbR).toString(16); varHexG = Number(varRgbG).toString(16); varHexB = Number(varRgbB).toString(16); if (varHexR == 0) { varHexR = "00"; } if (varHexG == 0) { varHexG = "00"; } if (varHexB == 0) { varHexB = "00"; } txtHexR.text = varHexR; txtHexG.text = varHexG; txtHexB.text = varHexB; } //Converte Hexadecimal para RGB function hexParaRgb(varHexR, varHexG, varHexB) { varRgbR = parseInt("0x"+varHexR); varRgbG = parseInt("0x"+varHexG); varRgbB = parseInt("0x"+varHexB); txtRgbR.text = varRgbR; txtRgbG.text = varRgbG; txtRgbB.text = varRgbB; } //Converte CMY para RGB function cmyParaRgb(varCmyC, varCmyM, varCmyY) { //verifica se os valores de CMY estão entre 0 e 100 verifica(varCmyC, txtCmyC, 100); verifica(varCmyM, txtCmyM, 100); verifica(varCmyY, txtCmyY, 100); //converte CMY para RGB varRgbR = math.round((1-(varCmyC/100))*255); varRgbG = math.round((1-(varCmyM/100))*255); varRgbB = math.round((1-(varCmyY/100))*255); //Coloca os valores nos campos de texto txtRgbR.text = varRgbR; txtRgbG.text = varRgbG; txtRgbB.text = varRgbB; } //Converte CMY para CMYK function cmyParaCmyk(varCmyC, varCmyM, varCmyY) { //verifica se os valores de CMY estão entre 0 e 100 verifica(varCmyC, txtCmyC, 100); verifica(varCmyM, txtCmyM, 100); verifica(varCmyY, txtCmyY, 100); varCmykK = 1; //coloca os valores de CMY entre 0 e 1 varCmyC = varCmyC/100; varCmyM = varCmyM/100; varCmyY = varCmyY/100; //Define o valor de K(preto) como sendo o menor valor entre R,G,B; varCmykK = Math.min(Math.min(varCmyC, varCmyM), varCmyY); //Converte CMY para CMYK varCmykC = math.round(((varCmyC-varCmykK)/(1-varCmykK))*100); varCmykM = math.round(((varCmyM-varCmykK)/(1-varCmykK))*100); varCmykY = math.round(((varCmyY-varCmykK)/(1-varCmykK))*100); varCmykK = varCmykK*100; //Coloca os valores nos campos de texto if (isNaN(varCmykC)) { varCmykC = 0; } if (isNaN(varCmykM)) { varCmykM = 0; } if (isNaN(varCmykY)) { varCmykY = 0; } txtCmykC.text = varCmykC; txtCmykM.text = varCmykM; txtCmykY.text = varCmykY; txtCmykK.text = varCmykK; } //Converte CMYK para CMY function cmykParaCmy(varCmykC, varCmykM, varCmykY, varCmykK) { //verifica se os valores de CMYK estão entre 0 e 100 verifica(varCmykC, txtCmykC, 100); verifica(varCmykM, txtCmykM, 100); verifica(varCmykY, txtCmykY, 100); verifica(varCmykK, txtCmykK, 100); //coloca os valores de CMYK entre 0 e 1 varCmykC = varCmykC/100; varCmykM = varCmykM/100; varCmykY = varCmykY/100; varCmykK = varCmykK/100; //Converte de CMYK para CMY varCmyC = math.round((varCmykC*(1-varCmykK)+varCmykK)*100); varCmyM = math.round((varCmykM*(1-varCmykK)+varCmykK)*100); varCmyY = math.round((varCmykY*(1-varCmykK)+varCmykK)*100); txtCmyC.text = varCmyC; txtCmyM.text = varCmyM; txtCmyY.text = varCmyY; } //Converte RGB para HSV function rgbParaHsv(varRgbR, varRgbG, varRgbB) { //Verifica se os valores de RGB estão entre 0 e 255 verifica(varRgbR, txtRgbR, 255); verifica(varRgbG, txtRgbG, 255); verifica(varRgbB, txtRgbB, 255); //Define o menor valor de RGB varMin = Math.min(Math.min(varRgbR, varRgbG), varRgbB); //Define o maior valor de RGB varHsvV = Math.max(Math.max(varRgbR, varRgbG), varRgbB); varDelta = varHsvV-varMin; // Calcula a saturação: saturação é 0 se R, G e B são iguais a 0 if (varHsvV == 0) { varHsvS = 0; } else { varHsvS = varDelta/varHsvV; } if (varHsvS == 0) { // Acromatico: quando S = 0, H é indefinido varHsvH = 0; } else { // Cromático if (varRgbR == varHsvV) { // entre amarelo e magenta [graus] varHsvH = 60*(varRgbG-varRgbB)/varDelta; } else if (varRgbG == varHsvV) { // entre ciano e amarelo varHsvH = 120+60*(varRgbB-varRgbR)/varDelta; } else if (varRgbB == varHsvV) { // entre magenta and ciano varHsvH = 240+60*(varRgbR-varRgbG)/varDelta; } else if (varHsvH<0) { varHsvH = varHsvH+360.0; } if (varHsvH<0) { varHsvH = 360+varHsvH; } if (varHsvH>360) { varHsvH = 360-varHsvH; } } //Coloca a saturação e o valor em % varHsvS = Math.round(varHsvS*100); varHsvV = Math.round(varHsvV/2.55); //Arredonda o valor do Hue(matiz) varHsvH = (Math.round(varHsvH)); //Coloca os valores nos campos de texto txtHsvH.text = varHsvH; txtHsvS.text = varHsvS; txtHsvV.text = varHsvV; } //Converte HSV para RGB function hsvParaRgb(varHsvH, varHsvS, varHsvV) { //verifica se os valores estão dentro dos limites verifica(varHsvH, txtHsvH, 360); verifica(varHsvS, txtHsvS, 100); verifica(varHsvV, txtHsvV, 100); //Coloca a saturação e o valor nos valores que serão utilizados varTempS = varHsvS/100; varTempV = varHsvV*2.55; //Tons de cinza se a saturação é igual a zero(acromático) if (varHsvS == 0) { varRgbR = varTempV; varRgbG = varTempV; varRgbB = varTempV; } else { if (varHsvH == 360) { hTemp = 0; } else { hTemp = varHsvH; } hTemp = hTemp/60; // h is now IN [0,6) i = Math.floor(hTemp); // largest integer <= h f = hTemp-i; // fractional part of h p = varTempV*(1-varTempS); q = vartempV*(1-(varTempS*f)); t = varTempV*(1-(varTempS*(1-f))); switch (i) { case 0 : varRgbR = varTempV; varRgbG = t; varRgbB = p; break; case 1 : varRgbR = q; varRgbG = varTempV; varRgbB = p; break; case 2 : varRgbR = p; varRgbG = varTempV; varRgbB = t; break; case 3 : varRgbR = p; varRgbG = q; varRgbB = varTempV; break; case 4 : varRgbR = t; varRgbG = p; varRgbB = varTempV; break; case 5 : varRgbR = varTempV; varRgbG = p; varRgbB = q; break; } } varRgbR = Math.round(varRgbR); varRgbG = Math.round(varRgbG); varRgbB = Math.round(varRgbB); txtRgbR.text = varRgbR; txtRgbG.text = varRgbG; txtRgbB.text = varRgbB; }