Source code of file seti_lib.inc.php
from the PHP SETI@home web monitor.

<?php
// PHP SETI@home Web Monitor (phpsetimon).
// Copyright 2003, 2004 by Mario A. Valdez-Ramirez
// http://www.mariovaldez.net/

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.

// You can contact Mario A. Valdez-Ramirez by email
// at mario@mariovaldez.org or paper mail at
// Olmos 809, San Nicolas, NL. 66495, Mexico.

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


function fnps_showislocal ($ps_islocal) {
global 
$ps_text;
  if (
$ps_islocal) {
    return (
$ps_text["localclient"]);
  }
  else {
    return (
$ps_text["remoteclient"]);
  }
}


function 
fnps_getsetidata ($ps_dataname, &$ps_array$ps_isnumber) {
  foreach (
$ps_array as $ps_statusitem) {
    if (
strstr ($ps_statusitem$ps_dataname "=") !== false) {
      if (
$ps_isnumber) {
        return (
round (substr ($ps_statusitem, (strpos ($ps_statusitem"=") + 1)), 5));
      }
      else {
        return (
substr ($ps_statusitem, (strpos ($ps_statusitem"=") + 1)));
      }
    }
  }
  return (
0);
}

function 
fnps_secstotime2 ($ps_seconds$ps_mainunit) {
  
$ps_seconds round ($ps_seconds);
  
$ps_tsecs $ps_seconds 3600;
  if (
$ps_mainunit) {
    return (
floor (($ps_seconds $ps_tsecs) / 3600) . $ps_mainunit " floor ($ps_tsecs 60) . "' " . ($ps_tsecs 60)) . "\"";
  }
  else {
  return (
floor (($ps_seconds $ps_tsecs) / 3600) . " " floor ($ps_tsecs 60) . " " . ($ps_tsecs 60));
  }
}


function 
fnps_coordtopixel ($ps_isRA$ps_hours$ps_imagesize$ps_maxmins) {
  if (
$ps_isRA) {
    if (
$ps_hours 12) { $ps_hours = ($ps_hours * -1); } else { $ps_hours = (24 $ps_hours); }
  }
  else {
    
$ps_hours = ($ps_hours * -1);
  }
  
$ps_minutes = ($ps_hours 60);
  
$ps_minsperpixel = ($ps_maxmins $ps_imagesize);
  
$ps_pixels = ($ps_minutes $ps_minsperpixel);
  
$ps_pixpos round (($ps_imagesize 2) + $ps_pixels);
  return (
$ps_pixpos);
}

function 
fnps_drawbar ($ps_percent$ps_barwidth$ps_barcolor1 "red"$ps_barcolor2 "blue") {
  global 
$ps_cfg_imagesdir;
  
$ps_wfrac = ($ps_barwidth 100);
  
$ps_wcompleted round ($ps_percent $ps_wfrac);
  
$ps_wpending round ((100 $ps_percent) * $ps_wfrac);
  
$ps_barhtml "<table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td>";
  if (
$ps_wcompleted 0)
    
$ps_barhtml .= "<img src=\"" $ps_cfg_imagesdir $ps_barcolor1 "bar.png\" width=\"$ps_wcompleted\" height=\"10\" alt=\"$ps_percent %\">";
  
$ps_barhtml .= "</td><td>";
  if (
$ps_wpending 0)
    
$ps_barhtml .= "<img src=\"" $ps_cfg_imagesdir $ps_barcolor2 "bar.png\" width=\"$ps_wpending\" height=\"10\" alt=\"" . (100 $ps_percent) . " %\">";
  
$ps_barhtml .= "</td></tr></table>";
  return (
$ps_barhtml);
}


function 
fnps_extract_history ($ps_histclient$ps_fileprefix$ps_fullhist false) {
  global 
$ps_filename_separator$ps_cfg_historydir;
  
$ps_historylist = array ();
  
$ps_dirlist = array ();
    
$ps_dirhandle opendir($ps_cfg_historydir);
  while ((
$ps_file readdir($ps_dirhandle)) != false)
    
$ps_dirlist[count ($ps_dirlist)] = $ps_cfg_historydir $ps_file;
    
closedir($ps_dirhandle);
    
natcasesort ($ps_dirlist);
     foreach (
$ps_dirlist as $ps_file) {
    if ((
$ps_file != ".") && ($ps_file != "..") && eregi ("history\.txt$"$ps_file) && eregi ("^" $ps_cfg_historydir $ps_fileprefix $ps_histclient$ps_file)) {
      if (
is_readable ($ps_file)) {
        
$ps_fileh fopen ($ps_file,'rb');
        
$ps_hist_rawdata fread ($ps_fileh1024);
        
fclose ($ps_fileh);
        
$ps_hist_dataarray explode ("\n"$ps_hist_rawdata);
        
$ps_historylist[count ($ps_historylist)] = fnps_getsetidata ("RA"$ps_hist_dataarraytrue);
        
$ps_historylist[count ($ps_historylist)] = fnps_getsetidata ("DEC"$ps_hist_dataarraytrue);
        if (
$ps_fullhist) {
          
$ps_historylist[count ($ps_historylist)] = fnps_getsetidata ("ANGLE"$ps_hist_dataarraytrue);
          
$ps_historylist[count ($ps_historylist)] = fnps_getsetidata ("DATADATE"$ps_hist_dataarrayfalse);
          
$ps_historylist[count ($ps_historylist)] = str_replace ($ps_filename_separator "history.txt"""str_replace ($ps_cfg_historydir $ps_fileprefix $ps_histclient $ps_filename_separator""$ps_file));
        }
      }
    }
  }
  return (
$ps_historylist);
}


function 
fnps_save_history ($ps_histfilename$ps_histra$ps_histdec$ps_histangle$ps_histdate$ps_histdatadate) {
  
$ps_hist_data "";
  
$ps_hist_data .= "RA=" $ps_histra "\n";
  
$ps_hist_data .= "DEC=" $ps_histdec "\n";
  
$ps_hist_data .= "ANGLE=" $ps_histangle "\n";
  
$ps_hist_data .= "DATADATE=" $ps_histdatadate "\n";
  
$ps_hist_data .= "PROCDATE=" $ps_histdate;
  
ignore_user_abort (true);
  
clearstatcache ();
  if (!
is_readable ($ps_histfilename)) {
    
$ps_histfile fopen ($ps_histfilename,'wb');
    
fwrite ($ps_histfile$ps_hist_data);
    
fclose ($ps_histfile);
  }
}


// fcm_curdate_string
// Returns the current date in a string formated as 2002-10-22 01:35:14
function fnps_curdate_string () {
  return (
date("Y-m-d H:i:s"mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"))));
}


function 
fnps_getskyview_data ($ps_skfilename$ps_sksizeX$ps_sksizeY$ps_svra$ps_svdec$ps_skangle 1$ps_skgrid false$ps_sklog false$ps_skcol 1) {
  global 
$ps_useragent$ps_httpconn_timeout$ps_skyview_tempurl_exp;
  global 
$ps_cfg_useproxy$ps_cfg_proxyaddress$ps_cfg_proxyport;
  if (
$ps_skangle 5) { $ps_skangle 3; }
  if (
$ps_skangle 1) { $ps_skangle 1; }
  if ((
$ps_svra 24) || ($ps_svra 0)) { $ps_svra 0; }
  if ((
$ps_sksizeX 500) || ($ps_sksizeX 100)) { $ps_sksizeX 300; }
  if ((
$ps_sksizeY 500) || ($ps_sksizeY 100)) { $ps_sksizeY 300; }
  
$ps_skfullurl parse_url (fnps_linkskyview ($ps_sksizeX$ps_sksizeY$ps_svra$ps_svdec$ps_skangle$ps_skgrid$ps_sklog$ps_skcol));
  
ignore_user_abort (true);
  
set_time_limit ($ps_httpconn_timeout);
  
clearstatcache ();
  if (!
is_readable ($ps_skfilename)) {
    if (
$ps_cfg_useproxy) {
      
$ps_sockconn = @fsockopen ($ps_cfg_proxyaddress$ps_cfg_proxyport$errno$errstr$ps_httpconn_timeout);
    }
    else {
      
$ps_sockconn = @fsockopen ($ps_skfullurl["host"], "80"$errno$errstr$ps_httpconn_timeout);
    }
    if (
$ps_sockconn) {
      if (
$ps_cfg_useproxy) {
        
fputs ($ps_sockconn"GET " $ps_skfullurl["scheme"] . "://" $ps_skfullurl["host"] . $ps_skfullurl["path"] . "?" $ps_skfullurl["query"] . " HTTP/1.0\r\nHost: " $ps_cfg_proxyaddress "\r\nUser-Agent: $ps_useragent\r\nConnection: Close\r\n\r\n");
      }
      else {
        
fputs ($ps_sockconn"GET " $ps_skfullurl["path"] . "?" $ps_skfullurl["query"] . " HTTP/1.0\r\nHost: " $ps_skfullurl["host"] . "\r\nUser-Agent: $ps_useragent\r\nConnection: Close\r\n\r\n");
      }
      
$ps_http_content "";
      
clearstatcache ();
      while ((!
feof($ps_sockconn)) && (!is_readable ($ps_skfilename))) {
        
$ps_http_content .= fgets ($ps_sockconn10240);
      }
      
fclose ($ps_sockconn);
      
$ps_html_data $ps_http_content;
      if (
eregi ("<title>"$ps_html_data) && eregi ("HTTP.*200 OK"$ps_html_data)) {
        
$ps_skurlpos1 = (strpos ($ps_html_data$ps_skyview_tempurl_exp) + 4);
        
$ps_skurlpos2 strpos ($ps_html_data".gif"$ps_skurlpos1);
        
$ps_skurlpos3 = (($ps_skurlpos2 $ps_skurlpos1) + 4);
        if ((
$ps_skurlpos1 0) && ($ps_skurlpos2 0) && ($ps_skurlpos3 0)) {
          
$ps_skimpurl substr ($ps_html_data$ps_skurlpos1$ps_skurlpos3);
        }
      }
    }
  }
  
clearstatcache ();
  if ((
$ps_skimpurl) && (!is_readable ($ps_skfilename))) {
    
set_time_limit ($ps_httpconn_timeout);
    if (
$ps_cfg_useproxy) {
      
$ps_sockconn = @fsockopen ($ps_cfg_proxyaddress$ps_cfg_proxyport$errno$errstr$ps_httpconn_timeout);
    }
    else {
      
$ps_sockconn = @fsockopen ($ps_skfullurl["host"], "80"$errno$errstr$ps_httpconn_timeout);
    }
    if (
$ps_sockconn) {
      if (
$ps_cfg_useproxy) {
        
fputs ($ps_sockconn"GET " $ps_skfullurl["scheme"] . "://" $ps_skfullurl["host"] . "$ps_skimpurl HTTP/1.0\r\nHost: " $ps_cfg_proxyaddress "\r\nUser-Agent: $ps_useragent\r\nConnection: Close\r\n\r\n");
      }
      else {
        
fputs ($ps_sockconn"GET " "$ps_skimpurl HTTP/1.0\r\nHost: " $ps_skfullurl["host"] . "\r\nUser-Agent: $ps_useragent\r\nConnection: Close\r\n\r\n");
      }
      
$ps_http_content "";
      
clearstatcache ();
      while ((!
feof($ps_sockconn)) && (!is_readable ($ps_skfilename))) {
        
$ps_http_content .= fread ($ps_sockconn10240);
      }
      
fclose ($ps_sockconn);
      
$ps_img_data $ps_http_content;
      if (
eregi ("\r\n\r\n"$ps_img_data) && eregi ("HTTP.*200 OK"$ps_img_data)) {
        
$ps_skdatapos1 strpos ($ps_img_data"\r\n\r\n");
        
clearstatcache ();
        if ((
$ps_skdatapos1 0) && (!is_readable ($ps_skfilename))) {
          
$ps_img_data substr ($ps_img_data, ($ps_skdatapos1 4));
          
$ps_imgfile fopen ($ps_skfilename,'wb');
          
fwrite ($ps_imgfile$ps_img_data);
          
fclose ($ps_imgfile);
        }
      }
    }
  }
}


function 
fnps_linkskyview ($ps_sksizeX$ps_sksizeY$ps_svra$ps_svdec$ps_skangle 1$ps_skgrid false$ps_sklog false$ps_skcol 1) {
  global 
$ps_skyview_queryurl;
  if (
$ps_skangle 5) { $ps_skangle 3; }
  if (
$ps_skangle 1) { $ps_skangle 1; }
  if ((
$ps_svra 24) || ($ps_svra 0)) { $ps_svra 0; }
  if ((
$ps_sksizeX 500) || ($ps_sksizeX 100)) { $ps_sksizeX 300; }
  if ((
$ps_sksizeY 500) || ($ps_sksizeY 100)) { $ps_sksizeY 300; }
  
$ps_svurl "";
  
$ps_svurl .= $ps_skyview_queryurl;
  
$ps_svurl .= "?VCOORD=" urlencode (fnps_secstotime2 ($ps_svra 3600"") . ", " fnps_secstotime2 ($ps_svdec 3600""));
  
$ps_svurl .= "&SURVEY=Digitized+Sky+Survey";
  
$ps_svurl .= "&SCOORD=Equatorial";
  
$ps_svurl .= "&EQUINX=2000";
  
$ps_svurl .= "&PIXELX=$ps_sksizeX";
  
$ps_svurl .= "&PIXELY=$ps_sksizeY";
  
$ps_svurl .= "&MAPROJ=Rectangular";
  
$ps_svurl .= "&SFACTR="$ps_skangle;
  if (
$ps_sklog) { $ps_svurl .= "&ISCALN=Log%2810%29"; } else { $ps_svurl .= "&ISCALN=Linear"; }
  if (
$ps_skgrid) { $ps_svurl .= "&GRIDDD=Yes"; } else { $ps_svurl .= "&GRIDDD=No"; }
  if (
$ps_skcol == 1) { $ps_svurl .= "&COLTAB=Red+Temperature"; }
  elseif (
$ps_skcol == 2) { $ps_svurl .= "&COLTAB=Stern+Special"; }
  elseif (
$ps_skcol == 3) { $ps_svurl .= "&COLTAB=Blu%2FGrn%2FRed%2FYel"; }
  elseif (
$ps_skcol == 4) { $ps_svurl .= "&COLTAB=Prism"; }
  elseif (
$ps_skcol == 5) { $ps_svurl .= "&COLTAB=Green%2FWhite+Linear"; }
  else { 
$ps_svurl .= "&COLTAB=Red+Temperature"; }
  return (
$ps_svurl);
}



function 
fnps_renderzoommap ($ps_X$ps_Y$ps_zoommap_Xsize$ps_zoommap_Ysize$ps_zoommap_filename$ps_coords1$ps_coords2) {
  global 
$ps_cfg_truecolor$ps_sourcemap_Xsize$ps_sourcemap_Ysize;
  global 
$ps_sourcemap_maxXminutes$ps_sourcemap_maxYminutes$ps_sourcemap_filename;
  global 
$ps_zoomsections_Xtotal$ps_zoomsections_Ytotal$ps_skyview_Xrange$ps_skyview_Yrange;
  if (
is_readable ($ps_sourcemap_filename)) {
    
ignore_user_abort (true);
    
$ps_hfrac round (($ps_sourcemap_Xsize $ps_zoomsections_Xtotal) / 2);
    
$ps_vfrac round (($ps_sourcemap_Ysize $ps_zoomsections_Ytotal) / 2);
    
$ps_zoomcenterX round ($ps_zoommap_Xsize 2);
    
$ps_zoomcenterY round ($ps_zoommap_Ysize 2);
    
$ps_zoomhoursX = (($ps_sourcemap_maxXminutes 60) / $ps_zoomsections_Xtotal);
    
$ps_zoomdegsY = (($ps_sourcemap_maxYminutes 60) / $ps_zoomsections_Ytotal);
    
$ps_skyviewsizeX round (($ps_zoommap_Xsize / ($ps_zoomhoursX $ps_skyview_Xrange)) / 2);
    
$ps_skyviewsizeY round (($ps_zoommap_Ysize / ($ps_zoomdegsY $ps_skyview_Yrange)) / 2);
    
$ps_sourceimagemap imagecreatefrompng ($ps_sourcemap_filename);
    if (
$ps_cfg_truecolor) {
      
$ps_zoomimagemap imagecreatetruecolor ($ps_zoommap_Xsize$ps_zoommap_Ysize);
      
imagealphablending ($ps_zoomimagemaptrue);
      
imagecopyresampled ($ps_zoomimagemap$ps_sourceimagemap00, ($ps_X $ps_hfrac), ($ps_Y $ps_vfrac), $ps_zoommap_Xsize$ps_zoommap_Ysize, ($ps_hfrac 2), ($ps_vfrac 2));
      
$ps_imgguidescolorz0 imagecolorexactalpha ($ps_zoomimagemap0000);
      
$ps_imgguidescolorz1 imagecolorexactalpha ($ps_zoomimagemap12712725550);
      
$ps_imgguidescolorz3 imagecolorexactalpha ($ps_zoomimagemap0255050);
      
$ps_imgguidescolorz4 imagecolorexactalpha ($ps_zoomimagemap2552552550);
    }
    else {
      
$ps_zoomimagemap imagecreate ($ps_zoommap_Xsize$ps_zoommap_Ysize);
      
imagecopyresized ($ps_zoomimagemap$ps_sourceimagemap00, ($ps_X $ps_hfrac), ($ps_Y $ps_vfrac), $ps_zoommap_Xsize$ps_zoommap_Ysize, ($ps_hfrac 2), ($ps_vfrac 2));
      
$ps_imgguidescolorz0 imagecolorallocate ($ps_zoomimagemap000);
      
$ps_imgguidescolorz1 imagecolorallocate ($ps_zoomimagemap127127255);
      
$ps_imgguidescolorz3 imagecolorallocate ($ps_zoomimagemap02550);
      
$ps_imgguidescolorz4 imagecolorallocate ($ps_zoomimagemap255255255);
    }
    
imagearc ($ps_zoomimagemap$ps_zoomcenterX$ps_zoomcenterY660360$ps_imgguidescolorz3);
    
imagearc ($ps_zoomimagemap$ps_zoomcenterX$ps_zoomcenterY880360$ps_imgguidescolorz3);
    
imagearc ($ps_zoomimagemap$ps_zoomcenterX$ps_zoomcenterY20200360$ps_imgguidescolorz3);
    
imagerectangle ($ps_zoomimagemap, ($ps_zoomcenterX $ps_skyviewsizeX), ($ps_zoomcenterY $ps_skyviewsizeY), ($ps_zoomcenterX $ps_skyviewsizeX), ($ps_zoomcenterY $ps_skyviewsizeY), $ps_imgguidescolorz1);
    
imagestring ($ps_zoomimagemap3$ps_zoomcenterX 11$ps_zoomcenterY 99$ps_coords1,  $ps_imgguidescolorz0);
    
imagestring ($ps_zoomimagemap3$ps_zoomcenterX 11$ps_zoomcenterY 79$ps_coords2,  $ps_imgguidescolorz0);
    
imagestring ($ps_zoomimagemap3$ps_zoomcenterX 10$ps_zoomcenterY 100$ps_coords1,  $ps_imgguidescolorz3);
    
imagestring ($ps_zoomimagemap3$ps_zoomcenterX 10$ps_zoomcenterY 80$ps_coords2,  $ps_imgguidescolorz3);
    
imageline ($ps_zoomimagemap$ps_zoomcenterX$ps_zoomcenterY$ps_zoomcenterX 30$ps_zoomcenterY 60$ps_imgguidescolorz3);
    
imageline ($ps_zoomimagemap$ps_zoomcenterX 100$ps_zoomcenterY 60$ps_zoomcenterX 30$ps_zoomcenterY 60$ps_imgguidescolorz3);
    
imagerectangle ($ps_zoomimagemap00, ($ps_zoommap_Xsize 1), ($ps_zoommap_Ysize 1), $ps_imgguidescolorz4);
    
imageinterlace($ps_zoomimagemap1);
    
clearstatcache ();
    if (!
is_readable ($ps_zoommap_filename)) {
      
imagepng ($ps_zoomimagemap$ps_zoommap_filename);
    }
  }
}


function 
fnps_deleteoldmaps () {
  global 
$ps_cfg_mapdir$ps_cfg_maxmapage;
    
$handle opendir($ps_cfg_mapdir);
    while ((
$file readdir ($handle)) != false) {
      if (
eregi("skymap.png$"$file)) {
      if ((
time () - filemtime ($ps_cfg_mapdir $file)) > $ps_cfg_maxmapage) {
        
unlink ($ps_cfg_mapdir $file);
      }
      }
    }
    
closedir($handle);
}


function 
fnps_renderbigmap ($ps_X$ps_Y$ps_imagemap_filename$ps_coarse_location$ps_history_locs) {
  global 
$ps_cfg_truecolor$ps_sourcemap_Xsize$ps_sourcemap_Ysize;
  global 
$ps_sourcemap_maxXminutes$ps_sourcemap_maxYminutes$ps_sourcemap_filename;
  global 
$ps_zoomsections_Xtotal$ps_zoomsections_Ytotal$ps_sourcemap_Xoffset$ps_sourcemap_Yoffset;
  global 
$ps_text;
  if (
is_readable ($ps_sourcemap_filename)) {
    
ignore_user_abort (true);
    
$ps_hfrac round (($ps_sourcemap_Xsize $ps_zoomsections_Xtotal) / 2);
    
$ps_vfrac round (($ps_sourcemap_Ysize $ps_zoomsections_Ytotal) / 2);
    
$ps_sourceimagemap imagecreatefrompng ($ps_sourcemap_filename);
    
$ps_newimagemap imagecreate ($ps_sourcemap_Xsize$ps_sourcemap_Ysize);
    
imagecopy ($ps_newimagemap$ps_sourceimagemap0000$ps_sourcemap_Xsize$ps_sourcemap_Ysize);
    
$ps_imgguidescolor1 imagecolorallocate ($ps_newimagemap2552550);
    
$ps_imgguidescolor2 imagecolorallocate ($ps_newimagemap25500);
    
$ps_imgguidescolor3 imagecolorallocate ($ps_newimagemap02550);
    if (
$ps_coarse_location) {
      
imageline ($ps_newimagemap$ps_X0$ps_X, ($ps_Y $ps_vfrac), $ps_imgguidescolor3);
      
imageline ($ps_newimagemap, ($ps_X $ps_hfrac), $ps_Y$ps_sourcemap_Xsize$ps_Y$ps_imgguidescolor3);
      
imageline ($ps_newimagemap$ps_X, ($ps_Y $ps_vfrac), $ps_X$ps_sourcemap_Ysize$ps_imgguidescolor3);
      
imageline ($ps_newimagemap0$ps_Y, ($ps_X $ps_hfrac), $ps_Y$ps_imgguidescolor3);
      
imagerectangle ($ps_newimagemap, ($ps_X $ps_hfrac), ($ps_Y $ps_vfrac), ($ps_X $ps_hfrac), ($ps_Y $ps_vfrac), $ps_imgguidescolor3);
      
imagearc ($ps_newimagemap$ps_X$ps_Y660360$ps_imgguidescolor3);
      
imagearc ($ps_newimagemap$ps_X$ps_Y880360$ps_imgguidescolor3);
      
imagearc ($ps_newimagemap$ps_X$ps_Y20200360$ps_imgguidescolor3);
    }
    else {
      
imageline ($ps_newimagemap$ps_X0$ps_X$ps_sourcemap_Ysize$ps_imgguidescolor1);
      
imageline ($ps_newimagemap0$ps_Y$ps_sourcemap_Xsize$ps_Y$ps_imgguidescolor1);
      
imagearc ($ps_newimagemap$ps_X$ps_Y660360$ps_imgguidescolor3);
      
imagearc ($ps_newimagemap$ps_X$ps_Y880360$ps_imgguidescolor3);
      
imagearc ($ps_newimagemap$ps_X$ps_Y20200360$ps_imgguidescolor3);
      
imagestring ($ps_newimagemap31010fnps_secstotime2 ($ps_wurastart 3600$ps_text["hours"]) . {$ps_text["ra"]} ",  $ps_imgguidescolor3);
      
imagestring ($ps_newimagemap31030fnps_secstotime2 ($ps_wudecstart 3600$ps_text["degrees"]) . {$ps_text["dec"]}",  $ps_imgguidescolor3);
    }
    if (
$ps_history_locs) {
      
$ps_hmax count ($ps_history_locs);
      for (
$ps_hc 0$ps_hc $ps_hmax; ($ps_hc += 2)) {
        
$ps_HX fnps_coordtopixel (true$ps_history_locs[$ps_hc], $ps_sourcemap_Xsize$ps_sourcemap_maxXminutes) + $ps_sourcemap_Xoffset;
        
$ps_HY fnps_coordtopixel (false$ps_history_locs[$ps_hc+1], $ps_sourcemap_Ysize$ps_sourcemap_maxYminutes) + $ps_sourcemap_Yoffset;
        if (!((
$ps_HX == $ps_X) && ($ps_HY == $ps_Y))) {
          
imagearc ($ps_newimagemap$ps_HX$ps_HY660360$ps_imgguidescolor3);
          
imagearc ($ps_newimagemap$ps_HX$ps_HY880360$ps_imgguidescolor3);
          
imagearc ($ps_newimagemap$ps_HX$ps_HY20200360$ps_imgguidescolor3);
        }
      }
    }
    
imageinterlace ($ps_newimagemap1);
    
clearstatcache ();
    if (!
is_readable ($ps_imagemap_filename)) {
      
imagepng ($ps_newimagemap$ps_imagemap_filename);
    }
  }
}


function 
fnps_drawgaussian (&$ps_gaussvals$ps_mean$ps_maxval$ps_filename$ps_sizeX$ps_sizeY) {
  global 
$ps_cfg_truecolor;
  
ignore_user_abort (true);
  if (
$ps_cfg_truecolor) {
    
$ps_gaussgraph imagecreatetruecolor ($ps_sizeX$ps_sizeY);
    
imagealphablending ($ps_gaussgraphtrue);
    
$ps_gausscolor0 imagecolorexactalpha ($ps_gaussgraph0000);
    
$ps_gausscolor2 imagecolorexactalpha ($ps_gaussgraph255255070);
    
$ps_gausscolor3 imagecolorexactalpha ($ps_gaussgraph255000);
    
$ps_gausscolor4 imagecolorexactalpha ($ps_gaussgraph2552552550);
  }
  else {
    
$ps_gaussgraph imagecreate ($ps_sizeX$ps_sizeY);
    
$ps_gausscolor0 imagecolorallocate ($ps_gaussgraph000);
    
$ps_gausscolor2 imagecolorallocate ($ps_gaussgraph2552550);
    
$ps_gausscolor3 imagecolorallocate ($ps_gaussgraph25500);
    
$ps_gausscolor4 imagecolorallocate ($ps_gaussgraph255255255);
  }
  
imagefilledrectangle ($ps_gaussgraph00$ps_sizeX$ps_sizeY$ps_gausscolor0);
  
$ps_factorX = ($ps_sizeX 64);
  
$ps_factorY = ($ps_sizeY $ps_maxval);
  
$ps_lastx 0;
  
$ps_lasty $ps_sizeY;
  
$ps_gcount 0;
  foreach (
$ps_gaussvals as $ps_currgauss) {
    
$ps_newx round ($ps_gcount $ps_factorX);
    
$ps_newy round ($ps_sizeY - ($ps_currgauss $ps_factorY));
    
imageline ($ps_gaussgraph$ps_lastx$ps_lasty$ps_lastx$ps_newy$ps_gausscolor3);
    
imageline ($ps_gaussgraph$ps_lastx$ps_newy$ps_newx$ps_newy$ps_gausscolor3);
    
$ps_lastx $ps_newx;
    
$ps_lasty $ps_newy;
    
$ps_gcount++;
  }
  
imageline ($ps_gaussgraph0round ($ps_sizeY - ($ps_mean $ps_factorY)), $ps_sizeXround ($ps_sizeY - ($ps_mean $ps_factorY)), $ps_gausscolor2);
  
imagerectangle ($ps_gaussgraph00, ($ps_sizeX 1), ($ps_sizeY 1), $ps_gausscolor4);
  
imageinterlace($ps_gaussgraph1);
  
clearstatcache ();
  if (!
is_readable ($ps_filename)) {
    
imagepng ($ps_gaussgraph$ps_filename);
  }
}



?>
 
 
NA fum/lmd: 2004.09.16
Copyright ©1994-2017 by Mario A. Valdez-Ramírez.
no siga este enlace / do not follow this link