<?
require_once($_SERVER['DOCUMENT_ROOT']."/includedir.inc.php");
require_once($commondir."page.inc.php");
require_once($includedir."foto.inc.php" );

if( empty( $_GET['b'] ) )
{
	die( "felaktig bild" );
	dbdie( "b saknas", "", "foto.php" );
}

if( isset( $_GET['u'] ) )
{
	$filnamn = $_SERVER['DOCUMENT_ROOT'].'/arkiv/bild/upload/'.sprintf( "u%d.jpg", floor($_GET['b']) );
	if( ! isset($_GET['nc']) )
	{
		$_GET['nc']=1;
	}
}
else
{
	$filnamn = getOrigPhotoFilename($_GET['b'] );
}
session_start();
header("Cache-Control:public");
if( !$currentUser->behorig('l') )
{
	$bNotLoggedIn=true;
	$cacheExt='-g';
}

if( empty($_GET['w']) &&
	empty($_GET['h']) &&
	empty($_GET['s']) )
{	// originalbild
	
	if( $bNotLoggedIn )
	{
		$imagesize = getimagesize( $filnamn );
		$_GET['w'] = $imagesize[0];	
	}
	else
	{
		header( "Content-type: image/jpeg");
		readfile( $filnamn );
		die;
	}
}

{   // omskalad bild
	$cachadFil = getCachePhotoFilename( $_GET['b'], $_GET['w'], !$bNotLoggedIn );
	if( is_file( $cachadFil ) && !isset($_GET['nc']) )
	{
		header( "Content-type: image/jpeg");
		readfile( $cachadFil );
		touchfile( $cachadFil );
	}
	else
	{
		$imageSize = getimagesize( $filnamn );

		if( !($imageSize[0] && $imageSize[1]) )
		{	// invalid filename
			header( "Content-type: image/jpeg");
			dbdie( "invalid filename", $filnamn, "foto.php" );
			
		}
		
		if( !empty($_GET['s']) )
		{
			if( $imageSize[0]>$imageSize[1] )
			{	// liggande format
				if( $imageSize[0]>$_GET['s'] )
					$_GET['w'] = $_GET['s'];
				else
					$_GET['w'] = $imageSize[0]; // skala aldrig upp
			}
			else
			{	// stående format
				if( $imageSize[1]>$_GET['s'] )
					$_GET['h'] = $_GET['s'];
				else
					$_GET['h'] = $imageSize[1]; // skala aldrig upp
			}
		}

		if( !empty($_GET['w']) )
		{
			$newWid = $_GET['w'];
			$newHei	= round( $imageSize[1] * $newWid / $imageSize[0] );
		}
		else if( !empty($_GET['h']) )
		{
			$newHei = $_GET['h'];
			$newWid	= round( $imageSize[0] * $newHei / $imageSize[1] );
		}
		$cachadFil = getCachePhotoFilename( $_GET['b'], $newWid, !$bNotLoggedIn );
		if( !is_file( $cachadFil ) || isset($_GET['nc']) )
		{
			$origIm = imagecreatefromjpeg( $filnamn );
			$newIm = imagecreatetruecolor( $newWid, $newHei );

			if( isset($_GET['nc']) )
			{
				imagecopyresized( $newIm, $origIm, 0, 0, 0, 0, $newWid, $newHei, $imageSize[0], $imageSize[1] );
				if( isset($_GET['r']) )
				{
					$r = ereg_replace( ',', '.', $_GET['r']);
					settype( $r, "double" );
					$rotIm = rotateImage( $newIm, $r, 0xd7, 0xee, 0xef );

					$red = imagecolorallocate( $rotIm, 255, 0, 0 );
					$cropSize = getCropSize( $newWid, $newHei, $r );
					
					$e = $cropSize['w']/2;
					$f = $cropSize['h']/2;
					$r = $cropSize['rad'];
					
										
					$newHei = imagesy($rotIm)/2;
					$newWid = imagesx($rotIm)/2;
					//echo $rotWid . " " . $rotHei . "<br>";
					if( $r!=0 && $r!=90 )
					{
						imagerectangle( $rotIm, $newWid-$e, $newHei-$f, $newWid+$e-1, $newHei+$f-1, $red );
					}
					{	// skalstreck på sidorna
						$gHei = $e*2*tan(deg2rad(1));
						$i=0; 
						while( ($i*$gHei) < $f )
						{
							if( ($i%10)==0 )
							{
								$len=10;
							}
							else if( ($i%5)==0 )
							{
								$len=6;
							}
							else
							{
								$len=3;
							}
							imageline( $rotIm, $newWid+$e-$len-1, $newHei+$i*$gHei, $newWid+$e+$len-1, $newHei+$i*$gHei, $red );
							imageline( $rotIm, $newWid-$e-$len, $newHei+$i*$gHei-1, $newWid-$e+$len, $newHei+$i*$gHei, $red );
							imageline( $rotIm, $newWid-$e-$len, $newHei-$i*$gHei, $newWid-$e+$len, $newHei-$i*$gHei, $red );
							imageline( $rotIm, $newWid+$e-$len-1, $newHei-$i*$gHei, $newWid+$e+$len-1, $newHei-$i*$gHei, $red );
						
							++ $i;
						}
					}
					{	// skalstreck på sidorna
						$gWid = $f*2*tan(deg2rad(1));
						$i=0; 
						while( ($i*$gWid) < $e )
						{
							if( ($i%10)==0 )
							{
								$len=10;
							}
							else if( ($i%5)==0 )
							{
								$len=6;
							}
							else
							{
								$len=3;
							}
							imageline( $rotIm, $newWid-$i*$gWid, $newHei+$f-$len-1, $newWid-$i*$gWid, $newHei+$f+$len-1, $red );
							imageline( $rotIm, $newWid+$i*$gWid, $newHei+$f-$len-1, $newWid+$i*$gWid, $newHei+$f+$len-1, $red );
							imageline( $rotIm, $newWid-$i*$gWid, $newHei-$f-$len, $newWid-$i*$gWid, $newHei-$f+$len, $red );
							imageline( $rotIm, $newWid+$i*$gWid, $newHei-$f-$len, $newWid+$i*$gWid, $newHei-$f+$len, $red );
						
							++ $i;
						}
					}
					header( "Content-type: image/jpeg");
					imagejpeg( $rotIm );
				}
				else
				{
					header( "Content-type: image/jpeg");
					imagejpeg( $newIm );
				}
				die;
			}
			else
			{

				imagecopyresampled( $newIm, $origIm, 0, 0, 0, 0, $newWid, $newHei, $imageSize[0], $imageSize[1] );

				if( $bNotLoggedIn && imagesy($newIm)>=190 )
				{
					$font=5;
					$textcol = imagecolorallocate($newIm, 0xe6, 0xf4, 0xf5 );
					imagestringup( $newIm, $font, imagesx($newIm)-imagefontHeight($font)-2, imagesy($newIm)-5, "http://cra.aero", $textcol ); 
				}
				
				imagejpeg( $newIm, $cachadFil, 92 );
			}
		}
		header( "Content-type: image/jpeg");
		readfile( $cachadFil );
		touch( $cachadFil );
	}
}

?>
