<?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); ?>