// annsta.h
//
// --------------------------------------------------------
// Stat: generate image
// --------------------------------------------------------
function f_scaleStep( $iL, $nmax = 30 ) { // 16 // 0.022
$n = log10( $iL ); // 1 // -1..
//+echo "n.1 = " . $n . ", ";
$n0 = $n;
settype( $n, "integer" );
// Adjust for negative $n;
if( $n > $n0 )
$n--;
//+echo "n.2 = " . $n . ", ";
//$n -= 1; // 0
$n--;
$n = pow( 10, $n ); // 1
//+echo "n(pow) = " . $n . "
";
if( $iL / $n > $nmax ) { // false
$r[0] = $n * 5;
$r[1] = 2; //$n * 10; //every 2nd
$r[2] = 2; //4; //$n * 20;
} else { // true
$r[0] = $n; // 1
$r[1] = 5; //$n * 5; // every 5th
$r[2] = 5;
if( $iL / $n > 500 )
$r[2] = 10; //$n * 10;
if( $iL / $n < 20 )
$r[2] = 2;
if( $iL / $n < 10 )
$r[2] = 1;
}
return $r;
}
function f_staImage( $im_file, $buf, $pos, $aBuf, &$wid, &$hei, $seqname, $wm, $opt ) {
//$dx1 = 50+16; //+40;
$dx1 = 50 +10;
$dx2 = 10+10; //+10 + 5;
//if( $iFS < 20 ) $dx1 -= 30;
$dy1 = 20+10 - 5 + 10;
$dy2 = 20; //+10;
if( strlen($seqname) > 16 ) $seqname = substr( $seqname, 0, 16 );
//$title = "Statistics of " . substr( $buf, 1, $pos - 4 ) .
// " (" . substr( $buf, $pos - 2, 2 ) .")";
$title = substr( $buf, $pos - 2, 2 ) . ": " . substr( $buf, 1, $pos - 4 );
$aParm = split( "[ \r\n]+", $aBuf[0], 13 ); //11 ); // +prob
$nn = $aParm[7];
settype( $nn, "integer" );
// prob + freq:
$prob = $aParm[10] . " " . $aParm[11] . ", " . $aParm[8] . " " . $aParm[9];
//+echo "nn=" . $nn . "
";
$aPow = split( "[ \r\n]+", $aBuf[1], $nn+1 );
$aUp = split( "[ \r\n]+", $aBuf[2], $nn+1 );
$aLow = split( "[ \r\n]+", $aBuf[3], $nn+1 );
for( $i = 1; $i <= $nn; $i++ ) {
settype( $aPow[$i], "double" );
settype( $aUp[$i] , "double" );
settype( $aLow[$i], "double" );
}
// Extra Last Pow:
if( $nn == 1 )
$aPow[2] = $aPow[1] * 2;
else {
$iWk = 0;
for( $i = 1; $i < ($nn - 1 + 1); $i++ ) {
$iWk2 = $aPow[$i+1] - $aPow[$i];
if( $iWk < $iWk2 )
$iWk = $iWk2; // max
}
//- if( $iWk < 8*5 ) $iWk = 8 * 5; // to set number
$aPow[$nn + 1] = $aPow[$nn] + $iWk * 1.2;
}
// Split factor $yk:
$upMore = FALSE; // Up half not enlarged
$iWk = $aUp[$nn] + $aLow[1];
if( $iWk == 0.0 ) {
$yk = 0.5;
} else {
$yk = $aUp[$nn] / $iWk;
if( $yk > 0.75 ) $yk = 0.75;
if( $yk < 0.25 ) {
$yk = 0.25;
$upMore = TRUE;
}
}
//+ echo "iWk=" . $iWk . "
"; // *********
//+ echo "yk=" . $yk . "
";
$pow_dy = 14; //10; // pow line width
$powY = ($hei - $dy1 - $dy2 - $pow_dy - 20) * $yk + $dy1;
// Scales:
$xScale = ($wid - $dx1 - $dy2 - 20 ) / $aPow[$nn + 1]; // or /max ! ********
settype($xScale, "integer" );
$yScale = 100; //10; // if only zeros - 100!
if( $aUp[$nn] != 0.0 && !$upMore ) {
$yScale = ($powY - $dy1 - 20. ) / $aUp[$nn]; // double
} else {
if( $aLow[1] != 0.0 ) {
$yScale = ($hei - ($powY + $pow_dy) - $dy2 - 20. ) / $aLow[1]; // double
}
}
//$wid = 500;
//$hei = 350;
$k = imagecreate( $wid, $hei );
$white = imagecolorResolve($k,255,255,255);
imagefilledrectangle( $k, 0, 0, $wid, $hei, $white );
//+$dx = ($wid - $dx1 - $dx2 ) / $iFS ;
//+$dy = ($hei - $dy1 - $dy2 ) / $iFS ;
$gray = imagecolorResolve($k,200,200,200);
$lgray = imagecolorResolve($k,222,222,222);
$brown = imagecolorResolve($k,102, 51, 0);
$black = imagecolorResolve($k, 0, 0, 0);
$green = imagecolorResolve($k, 0, 128, 0);
$green2= imagecolorResolve($k, 0, 160, 0);
$green3= imagecolorResolve($k, 0, 175, 0);
$green4= imagecolorResolve($k, 0, 190, 0);
$green5= imagecolorResolve($k, 0, 210, 0);
$lgreen= imagecolorResolve($k, 0, 200, 0);
$blue = imagecolorResolve($k, 0, 0, 255);
$red2 = imagecolorResolve($k, 200, 0, 0);
$red3 = imagecolorResolve($k, 220, 0, 0);
$red4 = imagecolorResolve($k, 245, 0, 0);
$red5 = imagecolorResolve($k, 255, 128, 0);
$yellow= imagecolorResolve($k, 200, 200, 0);
$yellow2= imagecolorResolve($k, 240, 200, 0);
$lwhite= imagecolorResolve($k, 255, 250, 255);
$lwhite2= imagecolorResolve($k, 247, 247, 255);
f_imFrame( $k, $wid, $hei, $dx1, $dx2, $dy1, $dy2 );
imageString( $k, 3, 5, 3, $seqname, $green );
imageString( $k, 2, $wid - strlen($wm)*6 - 10, 3, $wm, $blue );
//+imageString( $k, 5, 150, 3,"CROSS-REFERENCE MAP OF THE FOUND SEQUENSES", $brown );
imageString( $k, 5, ($wid - strlen($title)*9 )*0.5, 3 , $title, $brown );
//+$prob = "Prob 0.322220, Freq 0.003118";
imageString( $k, 2, ($wid - strlen($prob) *6 )*0.5, 3+15, $prob , $brown );
// X:
// power bar:
//imagefilledrectangle( $k, $dx1+1, $powY+1, $wid - $dx2 - 1, $powY + $pow_dy - 1,
imagefilledrectangle( $k, $dx1+1, $powY+3, $wid - $dx2 - 1, $powY + $pow_dy - 2,
$yellow2 );
// X-line
//ImageLine ( $k, $dx1, $powY , $wid - $dx2, $powY , $brown);
//ImageLine ( $k, $dx1, $powY + $pow_dy, $wid - $dx2, $powY + $pow_dy, $brown);
ImageLine ( $k, $dx1, $powY + 2 , $wid - $dx2, $powY + 2 , $brown);
ImageLine ( $k, $dx1, $powY + $pow_dy - 1, $wid - $dx2, $powY + $pow_dy - 1, $brown);
// Power:
ImageString( $k, 2, $dx1 - 20 - 5*6 - 2, $powY+1, "POWER", $brown );
ImageFilledRectangle( $k, $dx1 - 20,$powY+5, $dx1 - 15, $powY + $pow_dy - 5, $brown ); // $yellow);
$aPoi = Array( $dx1 - 15, $powY+3, $dx1 - 7, $powY + $pow_dy*0.5,
$dx1 - 15,$powY + $pow_dy - 3);
ImageFilledPolygon ( $k, $aPoi, 3, $brown);
$r = f_scaleStep( $aPow[$nn+1] ); // 30 - default
$y = $powY + 1;
$y2 = $powY + $pow_dy - 1;
//+echo "r[0]=". $r[0] . "
";
//for( $n = $r[0]; $n < aPow[$nn+1]; $n += $r[0] ) {
for( $n = $r[0], $i = 1; ($dx1 +$n*$xScale) < ($wid - $dx2 - 10); $n += $r[0], $i++ ) {
$x = $dx1 + $n * $xScale;
imageDashedLine( $k, $x, $dy1 + 10, $x, $powY - 1, $lgray );
imageDashedLine( $k, $x, $hei - $dy2 - 10, $x, $powY + $pow_dy+ 1, $lgray );
$iC = $brown;
//if( $n % $r[1] == 0 ) $iC = $green;
if( $i % $r[1] == 0 ) {
//+imageLine( $k, $x , $y, $x , $y + 2, $iC );
//+imageLine( $k, $x+1, $y, $x+1, $y + 2, $iC );
//+imageLine( $k, $x , $y2, $x , $y2 - 2, $iC );
//+imageLine( $k, $x+1, $y2, $x+1, $y2 - 2, $iC );
imageLine( $k, $x , $y, $x , $y - 2, $iC );
imageLine( $k, $x+1, $y, $x+1, $y - 2, $iC );
imageLine( $k, $x , $y2, $x , $y2 + 2, $iC );
imageLine( $k, $x+1, $y2, $x+1, $y2 + 2, $iC );
} else {
$iC = $green;
//+imageLine( $k, $x , $y, $x , $y + 1, $iC );
imageLine( $k, $x , $y, $x , $y - 1, $iC );
$iC = $red2;
//+imageLine( $k, $x , $y2, $x , $y2 - 1, $iC );
imageLine( $k, $x , $y2, $x , $y2 + 1, $iC );
}
if( $i % $r[2] == 0 ) {
//imageString( $k, 1, $x+2, $y+2, $n, $black); //$brown );
//+imageString( $k, 2, $x+2, $y+2 - 2, $n, $black); //$brown );
imageString( $k, 2, $x, $y+2 - 2, $n, $black); //$brown );
}
}
// X.0
imageString( $k, 2, $dx1+2, $y+2 - 2, "0", $black); //$brown );
// Y.up:
//$r = f_scaleStep( $aUp[$nn]+$aLow[1], 30 );
$wk = ($hei - $dy1 - $dy2 - 10 - 10)/ $yScale;
$r = f_scaleStep( $wk, 30 );
//-$r = f_scaleStep( $wk, 20 );
//+echo "y.r[0]=". $r[0] . ", num=" . $wk . "
";
//+echo "y.r[1]=". $r[1] . "
";
$x = $dx1+1;
for( $n = $r[0], $i = 1; ($powY - $n*$yScale) > ($dy1+10); $n += $r[0], $i++ ) {
$y = $powY - $n * $yScale;
//echo "y=" . $y . "
";
imageDashedLine( $k, $x, $y, $wid - $dx2 - 2, $y, $lgray );
$iC = $brown;
if( $i % $r[1] == 0 ) {
imageLine( $k, $x, $y , $x+2, $y, $iC );
imageLine( $k, $x, $y - 1, $x+2, $y - 1, $iC );
} else {
$iC = $green;
imageLine( $k, $x, $y, $x+1, $y, $iC );
}
if( $i % $r[2] == 0 ) {
$wk = $n;
settype( $wk, "string" );
$ni = strlen( $wk );
imageString( $k, 2, $x - $ni*7 - 5, $y - 6, $wk, $brown );
}
//if( $i > 20 ) break;
}
// Y.low:
for( $n = $r[0], $i = 1; ($powY +$pow_dy + $n*$yScale) < ($hei - $dy2 - 10);
$n += $r[0], $i++ )
{
$y = $powY +$pow_dy + $n * $yScale;
//echo "y=" . $y . "
";
imageDashedLine( $k, $x, $y, $wid - $dx2 - 2, $y, $lgray );
$iC = $brown;
if( $i % $r[1] == 0 ) {
imageLine( $k, $x, $y , $x+2, $y, $iC );
imageLine( $k, $x, $y - 1, $x+2, $y - 1, $iC );
} else {
$iC = $green;
imageLine( $k, $x, $y, $x+1, $y, $iC );
}
if( $i % $r[2] == 0 ) {
$wk = $n;
settype( $wk, "string" );
$ni = strlen( $wk );
imageString( $k, 2, $x - $ni*7 - 5, $y - 6, $wk, $brown );
}
//if( $i > 20 ) break;
}
// Columns:
$upLab = -1;
$lowLab = 2;
$xLab = 0;
for( $i = 1; $i <= $nn; $i++ ) {
// Up;
$x1 = $dx1 + $aPow[$i ] * $xScale;
$x2 = $dx1 + $aPow[$i+1] * $xScale - 2;
$y = $powY - $aUp[$i ] * $yScale;
if( ($powY - $y) < 2 ) $y = $powY - 2; // Zero and about
//echo "Up=" . $aUp[$i ] . "
";
imageFilledRectangle( $k, $x1, $y, $x2, $powY, $green2 );
//imageRectangle( $k, $x1, $y, $x2, $powY, $green2 );
// Addition to the last col:
if( $i == $nn ) {
imageFilledRectangle( $k, $x2+1, $y, $x2+1+2, $powY, $green3 );
imageFilledRectangle( $k, $x2+4, $y, $x2+4+2, $powY, $green4 );
imageFilledRectangle( $k, $x2+7, $y, $x2+7+3, $powY, $green5 );
imageDashedLine ( $k, $x2+11, $y, $x2+11 , $powY, $green5 );
}
// Low;
//$x1 = $dx1 + $aPow[$i ] * $xScale;
//$x2 = $dx1 + $aPow[$i+1] * $xScale - 2;
$y = $powY + $pow_dy + $aLow[$i ] * $yScale;
if( ($y - $powY - $pow_dy) < 2 ) $y = $powY + $pow_dy + 2;
//echo "Low=" . $aLow[$i ] . "
";
//+imageFilledRectangle( $k, $x1, $powY + $pow_dy, $x2, $y , $red2 );
imageFilledRectangle( $k, $x1, $powY + $pow_dy+1, $x2, $y , $red2 );
//imageRectangle( $k, $x1, $powY + $pow_dy, $x2, $y , $red2 );
// Addition to the last col:
if( $i == $nn ) {
//imageFilledRectangle( $k, $x2+1, $y, $x2+1+3, $powY, $green3 );
imageFilledRectangle( $k, $x2+1, $powY + $pow_dy+1, $x2+1+2, $y , $red3 );
imageFilledRectangle( $k, $x2+4, $powY + $pow_dy+1, $x2+4+2, $y , $red4 );
imageFilledRectangle( $k, $x2+7, $powY + $pow_dy+1, $x2+7+3, $y , $red5 );
imageDashedLine ( $k, $x2+11, $powY + $pow_dy+1, $x2+11 , $y , $red5 );
}
//+if( ( $lowLab - $aLow[$i]) > (abs( $lowLab )* 0.1) ) {
//++if( ( $lowLab - $aLow[$i]) > (abs( $lowLab )* 0.22) ) {
if( ( $lowLab - $aLow[$i])* $yScale > 12 ) {
$lowLab = $aLow[$i];
$wk = $lowLab;
//settype( $wk, "double" ); // 7E 005
imageString( $k, 2, $x1+1, $y + 1, round($wk, 4), $brown );
$xLab = $x1;
} else {
if( ($aLow[$i] < $lowLab) && ( $x1 > ($xLab + 6*7) ) ) {
//+echo "xLab=" . $xLab . ", x1=" . $x1 . "
";
$xLab = $x1;
$lowLab = $aLow[$i];
imageString( $k, 2, $x1+1, $y, round($lowLab,4), $brown ); //$red2 );
}
}
}
// Only upper labels:
$xLab = 0;
for( $i = 1; $i <= $nn; $i++ ) {
// Up;
$x1 = $dx1 + $aPow[$i ] * $xScale;
$x2 = $dx1 + $aPow[$i+1] * $xScale - 2;
$y = $powY - $aUp[$i ] * $yScale;
//if( ($powY - $y) < 2 ) $y = $powY - 2;
//+if( ($aUp[$i] - $upLab) > (abs( $upLab )* 0.1) ) {
//++if( ($aUp[$i] - $upLab) > (abs( $upLab )* 0.22) ) {
// Exists y-space:
if( ($aUp[$i] - $upLab)*$yScale > 12 ) {
$upLab = $aUp[$i];
if( $y < ($powY - 14 ) ) {
imageString( $k, 2, $x1+2, $y, round($upLab,4), $white );
} else {
imageString( $k, 2, $x1+2, $y - 14, round($upLab,4), $black );
$upLab += ( 14/ $yScale );
}
$xLab = $x1;
} else {
// Exists x-space:
if( ($aUp[$i] > $upLab) && ( $x1 > ($xLab + 6*7) ) ) {
$xLab = $x1;
$upLab = $aUp[$i];
//imageString( $k, 2, $x1+2, $y, round($upLab,4), $white );
if( $y < ($powY - 14 ) ) {
imageString( $k, 2, $x1+2, $y, round($upLab,4), $white );
} else {
imageString( $k, 2, $x1+2, $y - 14, round($upLab,4), $black );
$upLab += ( 14/ $yScale );
}
} else {
// Last: moved due to no "standard space":
if( $i == $nn && ($aUp[$i] > $upLab) ) {
// Adjust x:
if( $x1 < ($xLab + 6*7) )
$x1 = ($xLab + 6*7);
// Adjust y:
$wk = $dy1 - $y + 14 + 1;
if( $wk > 0 )
$y -= $wk;
$upLab = $aUp[$i];
imageString( $k, 2, $x1+2, $y - 14, round($upLab,4), $black );
}
}
}
}
/***
$keys = array_keys( $aFS );
$sfont = 2;
$sdy = $dy * 0.4;
if( $iFS > 19) {
$sfont = 1;
$sdy = 0;
}
// Diagonal
for( $i = 0; $i < $iFS; $i++ ) {
$x = $dx1+$dx*$i;
$y = $dy1+$dy*$i;
imagefilledrectangle( $k, $x, $y, $x + $dx, $y + $dy, $lgray );
//imageString( $k, 3, 5, $y + ($dy * 0.5), $keys[$i], $brown );
//+imageString( $k, 1, 5, $y + ($dy * 0.5), $aNumName[ $keys[$i] ], $brown );
//imageString( $k, 1, ( $i % 2 == 0 ? 5 : 45 ), $y + ($dy * 0.1),
// $aNumName[ $keys[$i] ], $brown );
if( $iFS > 39)
$iWk = ( $i % 2 == 0 ? 5 : 45 ) + 5;
else
$iWk = 5 + 5;
if( isset($aNumName[ $keys[$i] ]) )
imageString( $k, $sfont, $iWk, $y + $sdy, $aNumName[ $keys[$i] ], $brown );
else
imageString( $k, $sfont, $iWk, $y + $sdy, "*" . $keys[$i], $brown );
//$dxx = 2; // only for 5 in Hor ?
//if( $i % 2 == 0 ) {
// $wk = " " . ($i+1);
//if( ($i+1) % 5 == 0 ) {
//+if( $iFS > 19 && (($i+1) % 5 != 0) ) continue;
// Skip last if prev has been displayed:
if( $iFS > 19 && (($i+1) % 5 == 1) && ($i == ($iFS - 1)) ) continue;
// Display only 1st and every 5th:
if( $iFS > 19 && (($i+1) % 5 != 0) && $i > 0 && ($i != ($iFS - 1)) ) continue;
$wk = " " . ($i+1);
if( $i < 99 ) $wk = " " . $wk;
if( $i < 9 ) $wk = " " . $wk;
//if( $i > 8 ) $dxx = 0;
// Vert:
//imageString( $k, 1, $dx1 - 24, $y + ($dy * 0.1), $wk, $brown ); // 0.1 0.2 0.5
imageString( $k, 1, $dx1 - 24, $y , $wk, $brown ); // 0.1 0.2 0.5
imageString( $k, 1, $wid - $dx2 +4, $y , $i+1, $brown ); // 0.1 0.2 0.5
// Skip last hor if also 2nd prev has been displayed:
if( $iFS > 19 && ((($i+1) % 5 == 1)||(($i+1) % 5 == 2))&& ($i == ($iFS - 1)) )
continue;
// Hor:
imageString( $k, 1, $x, $dy1 - 10 , $i+1, $brown ); // 0.1 0.2 0.5
imageString( $k, 1, $x, $hei - $dy2 + 2 , $i+1, $brown ); // 0.1 0.2 0.5
//}
}
$fmot = fopen( $F_M2M, "r" );
$i = 1;
$i = 0;
while( $buf = fgets( $fmot, 128 ) ) {
if( substr( $buf, 0,5 ) == "Super" ) {
//f_smOut( $buf, $i++, "a" ); //echo $buf;
$parts = split( "[ ]+", $buf, 8 );
//$pos = strpos( $buf, ".dat" );
//$ix = $aFS[substr( $buf, $pos + 5, 6 )];
//$pos2 = strpos( $buf, ".dat", $pos + 10 );
//$iy = $aFS[substr( $buf, $pos2 + 5, 6 )];
//$power = substr( $buf, $pos2 + 12, 6 );
//+echo "part2=", $parts[2], "*
";
$ix = $aFS[ $parts[2] ];
$iy = $aFS[ $parts[4] ];
$power = $parts[5];
settype( $power, "double" );
if( $i == 0 ) {
$pmin = $power;
$pmax = $power;
} else {
if( $pmin > $power ) $pmin = $power;
if( $pmax < $power ) $pmax = $power;
//echo " pmm = ", $pmin, ",",$pmax, "
";
}
//echo "p = *", $power, "*
";
$i++;
// ? $wk = $ix . "," . $iy;
$wk = "$ix,$iy";
if( !isset( $aSS[$wk] ) ) {
$aSS[$wk] = $power;
} else {
$p = $aSS[$wk];
if( $power > $p )
$aSS[$wk] = $power;
}
//$x = $dx1+$dx*($ix - 1);
//$y = $dy1+$dy*($iy - 1);
//$ic = f_clr( $k, $power, 4, 15 );
//imagefilledrectangle( $k, $x, $y, $x + $dx, $y + $dy, $ic ); //$brown );
}
}
fclose( $fmot );
$keys = array_keys( $aSS );
$imedi = count( $keys ) * 0.5;
settype( $imedi, "integer" );
$pmedi = $pmax; // init
for( $i = 0; $i < count( $keys ); $i++ ) {
$xy = $keys[$i];
$power = $aSS[ $xy ];
if( $i == $imedi ) $pmedi = $power;
$pos = strpos( $xy, "," );
$ix = substr( $xy, 0, $pos );
$iy = substr( $xy, $pos + 1 );
settype( $ix, "integer" );
settype( $iy, "integer" );
$x = $dx1+$dx*($ix - 1);
$y = $dy1+$dy*($iy - 1);
$ic = f_clr( $k, $power, $pmax, $pmin );
//+imagefilledrectangle( $k, $x, $y, $x + $dx, $y + $dy, $ic ); //$brown );
//imageArc ( $k, $x + $dx * 0.5, $y + $dy * 0.5, $dx - 1, $dy - 1, 0, 360, $ic ); //$brown );
$xs = ($dx - 1) * $power / $pmax;
if( $xs < 3 ) $xs = 3;
$ys = ($dy - 1) * $power / $pmax;
if( $ys < 3 ) $ys = 3;
//+imageArc ( $k, $x + $dx * 0.5, $y + $dy * 0.5, $xs, $ys, 0, 360, $ic ); //$brown );
//+imageFill( $k, $x + $dx * 0.5, $y + $dy * 0.5, $ic );
// rect ?
imagefilledrectangle( $k, $x, $y, $x + $dx, $y + $dy, $ic ); //$brown );
}
// Lines:
for( $i = 0; $i < $iFS + 1; $i++ ) {
$x = $dx1+$dx*$i;
$y = $dy1+$dy*$i;
imageLine( $k, $dx1, $y , $wid - $dx2, $y , $lgray );
imageLine( $k, $x , $dy1, $x , $hei - $dy2 , $lgray );
//imageString( $k, 3, 5, $y + ($dy * 0.5), $keys[$i], $brown );
}
**/
// Internal frame
ImageRectangle( $k, $dx1, $dy1 , $wid - $dx2, $hei - $dy2 , $brown);
ImageString( $k, 3, $dx1+3+3, $dy1 +2, "Probability to predict", $green2 );
$wk = "Failure to predict";
ImageString( $k, 3, $wid - $dx2 - 3 - strlen($wk) * 9, $hei - $dy2 - 13, $wk, $red2 );
/**
// Legends:
$sp = 20; // leg.space
$yleg = $hei - 20;
ImageString( $k, 2, $dx1, $yleg, "Legends: ", $brown );
$xleg = $dx1 + 10*6; // + $sp;
$ic = f_clr( $k, $pmax, $pmax, $pmin );
imagefilledrectangle( $k, $xleg, $yleg+2, $xleg + 14, $yleg + 13, $ic );
$xleg += (14 + 4);
ImageString( $k, 2, $xleg, $yleg, $pmax . " (max power)", $brown );
$xleg += (18 * 6 + $sp);
$ic = f_clr( $k, $pmedi, $pmax, $pmin );
imagefilledrectangle( $k, $xleg, $yleg+2, $xleg + 14, $yleg + 13, $ic );
$xleg += (14 + 4);
ImageString( $k, 2, $xleg, $yleg, $pmedi, $brown );
$xleg += (6 * 6 + $sp);
$ic = f_clr( $k, $pmin, $pmax, $pmin );
imagefilledrectangle( $k, $xleg, $yleg+2, $xleg + 14, $yleg + 13, $ic );
$xleg += (14 + 4);
ImageString( $k, 2, $xleg, $yleg, $pmin . " (min)", $brown );
// Opt Line:
ImageStringUp( $k, 1, $wid - 17, $hei - $dy2 - 2, $opt, $brown );
**/
// Opt Line:
ImageString( $k, 1, $dx1, $hei - 16, $opt, $brown );
// Image file:
ImageStringUp( $k, 1, $wid - 16, $hei - $dy2 - 1, $im_file, $brown );
// *******************************************
//$er = imageGif( $k, $im_file ); // ************ Linux GIF
$er = imagePng( $k, $im_file );
// *******************************************
}
?>