121 lines
4.8 KiB
PHP
Executable File
121 lines
4.8 KiB
PHP
Executable File
<?php
|
|
require("classes.php");
|
|
if (isset($_GET["grid"]) && preg_match("/^[1-9-]{81}$/", $_GET["grid"]))
|
|
$currentGrid = $_GET["grid"];
|
|
else
|
|
$currentGrid = "-528-3----4-9-1---39-562------73-129---1-64-7---42-3656-13-5---28-6-4---4-5287---";
|
|
header ("Content-type: image/png");
|
|
if (isset($_GET['size']))
|
|
$size = (int) $_GET['size'];
|
|
else
|
|
$size = 196;
|
|
|
|
$thumbnail = imagecreate($size, $size);
|
|
$transparent = imagecolorallocate($thumbnail, 1, 1, 1);
|
|
imagecolortransparent($thumbnail, $transparent);
|
|
$darkerBorder = imagecolorallocate($thumbnail, 150, 155, 160);
|
|
$lighterBorder = imagecolorallocate($thumbnail, 210, 225, 230);
|
|
$emptyBoxBC = imagecolorallocate($thumbnail, 255, 255, 255);
|
|
$clueBC = imagecolorallocate($thumbnail, 255, 255, 255);
|
|
$clueFC = imagecolorallocate($thumbnail, 150, 155, 160);
|
|
|
|
if ($size <= 36) {
|
|
$boxSize = floor(($size-4) / 9);
|
|
$gridSize = 9*$boxSize + 4;
|
|
$start = floor(($size-$gridSize) / 2);
|
|
$end = $start + $gridSize;
|
|
$lineStart = $start + 1;
|
|
$lineEnd = $end - 2;
|
|
for ($i = $start; $i < $end; $i += 3*$boxSize + 1) {
|
|
ImageLine($thumbnail, $lineStart, $i, $lineEnd, $i, $darkerBorder);
|
|
ImageLine($thumbnail, $i, $lineStart, $i, $lineEnd, $darkerBorder);
|
|
}
|
|
$x = $start;
|
|
$y = $start;
|
|
$boxSizeMinusOne = $boxSize - 1;
|
|
foreach(str_split($currentGrid) as $i => $value) {
|
|
if ($i % 3 == 0) $x++;
|
|
if ($i % 27 == 0) $y++;
|
|
if ($value == UNKNOWN) {
|
|
$bgColor = $emptyBoxBC;
|
|
} else {
|
|
$bgColor = $clueFC;
|
|
}
|
|
imagefilledrectangle($thumbnail, $x, $y, $x+$boxSizeMinusOne, $y+$boxSizeMinusOne, $bgColor);
|
|
$x += $boxSize;
|
|
if ($i % 9 == 8) {
|
|
$y += $boxSize;
|
|
$x = $start;
|
|
}
|
|
}
|
|
} else if ($size < 82) {
|
|
$boxSize = floor(($size-1) / 9);
|
|
$gridSize = 9*$boxSize + 1;
|
|
$start = floor(($size-$gridSize) / 2);
|
|
$end = $start + $gridSize;
|
|
$lineStart = $start + 1;
|
|
$lineEnd = $end - 2;
|
|
for ($i = $start + $boxSize; $i < $end - $boxSize; $i += $boxSize) {
|
|
ImageLine($thumbnail, $lineStart, $i, $lineEnd, $i, $lighterBorder);
|
|
ImageLine($thumbnail, $i, $lineStart, $i, $lineEnd, $lighterBorder);
|
|
}
|
|
for ($i = $start; $i < $end; $i += 3*$boxSize) {
|
|
ImageLine($thumbnail, $lineStart, $i, $lineEnd, $i, $darkerBorder);
|
|
ImageLine($thumbnail, $i, $lineStart, $i, $lineEnd, $darkerBorder);
|
|
}
|
|
$x = $start + 1;
|
|
$y = $start + 1;
|
|
$boxSizeMinusTwo = $boxSize - 2;
|
|
foreach(str_split($currentGrid) as $i => $value) {
|
|
if ($value == UNKNOWN) {
|
|
$bgColor = $emptyBoxBC;
|
|
} else {
|
|
$bgColor = $clueFC;
|
|
}
|
|
imagefilledrectangle($thumbnail, $x, $y, $x+$boxSizeMinusTwo, $y+$boxSizeMinusTwo, $bgColor);
|
|
$x += $boxSize;
|
|
if ($i % 9 == 8) {
|
|
$y += $boxSize;
|
|
$x = $start + 1;
|
|
}
|
|
}
|
|
} else {
|
|
$boxSize = floor(($size-1) / 9);
|
|
$gridSize = 9*$boxSize + 1;
|
|
$start = floor(($size-$gridSize) / 2);
|
|
$end = $start + $gridSize;
|
|
$lineStart = $start + 1;
|
|
$lineEnd = $end - 2;
|
|
$fontSize = floor($boxSize/2) - 4;
|
|
$fdx = floor(($boxSize - imagefontwidth($fontSize)) / 2);
|
|
$fdy = ceil(($boxSize - imagefontheight($fontSize)) / 2) - 1;
|
|
$fontColor = $emptyBoxBC;
|
|
for ($i = $start + $boxSize; $i < $end - $boxSize; $i += $boxSize) {
|
|
ImageLine($thumbnail, $lineStart, $i, $lineEnd, $i, $lighterBorder);
|
|
ImageLine($thumbnail, $i, $lineStart, $i, $lineEnd, $lighterBorder);
|
|
}
|
|
for ($i = $start; $i < $end; $i += 3*$boxSize) {
|
|
ImageLine($thumbnail, $lineStart, $i, $lineEnd, $i, $darkerBorder);
|
|
ImageLine($thumbnail, $i, $lineStart, $i, $lineEnd, $darkerBorder);
|
|
}
|
|
$x = $start + 1;
|
|
$y = $start + 1;
|
|
$boxSizeMinusTwo = $boxSize - 2;
|
|
foreach(str_split($currentGrid) as $i => $value) {
|
|
if ($value == UNKNOWN) {
|
|
$bgColor = $emptyBoxBC;
|
|
} else {
|
|
$bgColor = $clueBC;
|
|
}
|
|
imagefilledrectangle($thumbnail, $x, $y, $x+$boxSizeMinusTwo, $y+$boxSizeMinusTwo, $bgColor);
|
|
if ($value != UNKNOWN) imagestring($thumbnail, $fontSize, $x + $fdx, $y + $fdy, $value, $clueFC);
|
|
$x += $boxSize;
|
|
if ($i % 9 == 8) {
|
|
$y += $boxSize;
|
|
$x = $start + 1;
|
|
}
|
|
}
|
|
}
|
|
imagepng($thumbnail);
|
|
?>
|