Etusivulle
Sivun PHP-lähdekoodin näyttäminen
Alla on sivun varikartta.php PHP-lähdekoodi.
<?PHP include ("_funktiot.php"); ?>
<?PHP NaytaSivunAlku ("Värikartta"); ?>
<?PHP
function SavyRGBksi($v1, $v2, $vH) {
if ($vH < 0) $vH += 1;
if ($vH > 1) $vH -= 1;
if ($vH < 1/6) return ($v1 + ($v2 - $v1) * 6 * $vH);
if ($vH < 1/2) return $v2;
if ($vH < 2/3) return ($v1 + ($v2 - $v1) * (2/3 - $vH) * 6);
return $v1;
}
function Heksaksi($luku) {
// Esim. 15 --> "0F"
$luku = base_convert($luku, 10, 16);
if (strlen($luku) == 1) $luku = "0" . $luku;
return $luku;
}
// Luetaan get-parametrit
$jarjestys = "hsl";
$temp = $_GET["jar"];
if ($temp == "lsh" || $temp == "slh") $jarjestys = $temp;
$savyaskelia = 12;
$temp = round($_GET["sav"]);
if ($temp >= 2 && $temp <= 50) $savyaskelia = $temp;
$kyllaskelia = 5;
$temp = round($_GET["kyl"]);
if ($temp >= 2 && $temp <= 50) $kyllaskelia = $temp;
$kirkaskelia = 7;
$temp = round($_GET["kir"]);
if ($temp >= 2 && $temp <= 50) $kirkaskelia = $temp;
?>
Värit on järjestelty HSL-järjestelmän mukaan (<A HREF="http://en.wikipedia.org/wiki/HSL_and_HSV">tietoa Wikipediassa</A>).
<H2>Asetukset</H2>
<FORM ACTION="varikartta.php" METHOD="get">
Komponenttien järjestys:
<BR>
<INPUT TYPE="radio" NAME="jar" VALUE="hsl" ID="radio1a"<?PHP if ($jarjestys == "hsl") echo " CHECKED"; ?>>
<LABEL FOR="radio1a">sävy, kylläisyys, kirkkaus</LABEL><BR>
<INPUT TYPE="radio" NAME="jar" VALUE="lsh" ID="radio1b"<?PHP if ($jarjestys == "lsh") echo " CHECKED"; ?>>
<LABEL FOR="radio1b">kirkkaus, kylläisyys, sävy</LABEL><BR>
<INPUT TYPE="radio" NAME="jar" VALUE="slh" ID="radio1c"<?PHP if ($jarjestys == "slh") echo " CHECKED"; ?>>
<LABEL FOR="radio1c">kylläisyys, kirkkaus, sävy</LABEL>
<P>
Askelia komponenteissa (2 - 50):
<BR>
Sävy: <INPUT TYPE="text" NAME="sav" VALUE=<?PHP echo $savyaskelia; ?> SIZE=5><BR>
Kylläisyys: <INPUT TYPE="text" NAME="kyl" VALUE=<?PHP echo $kyllaskelia; ?> SIZE=5><BR>
Kirkkaus: <INPUT TYPE="text" NAME="kir" VALUE=<?PHP echo $kirkaskelia; ?> SIZE=5>
<P>
<INPUT TYPE="submit" VALUE="Näytä värikartta">
</FORM>
<H2>Luotu värikartta</H2>
HSL-komponenttien arvot on esitetty murtolukuina nollan ja yhden väliltä. Lyhenteet soluissa: sä = sävy, ky = kylläisyys, ki = kirkkaus. Solujen alimmalla rivillä on värin HTML-koodi.
<P>
<?PHP
$nimet = array("h" => "Sävy", "s" => "Kylläisyys", "l" => "Kirkkaus");
$lyhenteet = array("h" => "sä", "s" => "ky", "l" => "ki");
$rajat1 = array("h" => $savyaskelia, "s" => $kyllaskelia, "l" => $kirkaskelia);
$rajat2 = array("h" => $savyaskelia, "s" => $kyllaskelia - 1, "l" => $kirkaskelia - 1);
$muuttujat = array();
for ($i = 0; $i < 3; $i++) {
$muuttujat[$i] = substr($jarjestys, $i, 1);
}
for ($x = 0; $x < $rajat1[$muuttujat[0]]; $x++) {
echo $nimet[$muuttujat[0]] . " " . $x . "/" . $rajat2[$muuttujat[0]] . ":\r\n";
echo "<P>\r\n";
echo "<TABLE>\r\n";
for ($y = 0; $y < $rajat1[$muuttujat[1]]; $y++) {
echo "<TR>\r\n";
for ($z = 0; $z < $rajat1[$muuttujat[2]]; $z++) {
// Solun sävy-, kylläisyys- ja kirkkausarvo
if ($jarjestys == "hsl") {
$savy = $x;
$kyll = $y;
$kirk = $z;
} elseif ($jarjestys == "lsh") {
$savy = $z;
$kyll = $y;
$kirk = $x;
} elseif ($jarjestys == "slh") {
$savy = $z;
$kyll = $x;
$kirk = $y;
}
$savy /= $rajat2["h"];
$kyll /= $rajat2["s"];
$kirk /= $rajat2["l"];
// Muunnos HSL:stä RGB:ksi
if ($kyll == 0) {
$puna = $kirk;
$viher = $kirk;
$sini = $kirk;
} else {
if ($kirk < 0.5) {
$temp1 = $kirk * (1 + $kyll);
} else {
$temp1 = ($kirk + $kyll) - ($kirk * $kyll);
}
$temp2 = 2 * $kirk - $temp1;
$puna = SavyRGBksi($temp2, $temp1, $savy + 1/3);
$viher = SavyRGBksi($temp2, $temp1, $savy);
$sini = SavyRGBksi($temp2, $temp1, $savy - 1/3);
}
// HTML-värikoodi
$puna = Heksaksi(round($puna * 255));
$viher = Heksaksi(round($viher * 255));
$sini = Heksaksi(round($sini * 255));
$htmlvari = strtoupper($puna . $viher . $sini);
// Solun teksti
$teksti = $lyhenteet[$muuttujat[1]] . " " . $y . "/" . $rajat2[$muuttujat[1]] . "<BR>";
$teksti .= $lyhenteet[$muuttujat[2]] . " " . $z . "/" . $rajat2[$muuttujat[2]] . "<BR>";
$teksti .= $htmlvari;
if ($kirk < 0.5) $tekstinvari = "FFFFFF"; else $tekstinvari = "000000";
// Tulostus
echo "<TD STYLE=\"background-color: #" . $htmlvari . "; color: #" . $tekstinvari . ";\">";
echo "<TT>" . $teksti . "</TT>";
echo "</TD>\r\n";
}
echo "</TR>\r\n";
}
echo "</TABLE>\r\n";
echo "<P>\r\n";
}
?>
<A HREF="_naytaphplahdekoodi.php?sivu=varikartta.php">Tämän ohjelman PHP-lähdekoodi</A>
<?PHP NaytaSivunLoppu (); ?>
Takaisin sivulle varikartta.php
Etusivulle