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