[ Index ] |
|
Code source de jpGraph 2.2 |
1 <?php 2 //======================================================================= 3 // File: JPGRAPH_LED.PHP 4 // Description: Module to generate Dotted LED-like digits 5 // Created: 2006-11-26 6 // Ver: $Id: jpgraph_led.php 804 2006-11-26 20:17:26Z ljp $ 7 // 8 // Copyright 2006 (c) Aditus Consulting. All rights reserved. 9 //======================================================================== 10 11 // Constants for color schema 12 DEFINE('LEDC_RED',0); 13 DEFINE('LEDC_GREEN',1); 14 DEFINE('LEDC_BLUE',2); 15 DEFINE('LEDC_YELLOW',3); 16 DEFINE('LEDC_GRAY',4); 17 18 //======================================================================== 19 // CLASS DigitalLED74 20 // Description: 21 // Construct a number as an image that looks like LED numbers in a 22 // 7x4 digital matrix 23 //======================================================================== 24 class DigitalLED74 { 25 private $iLED_X = 4, $iLED_Y=7, 26 27 $iLEDSpec = array( 0 => array(6,9,9,9,9,9,6), 28 1 => array(2,6,10,2,2,2,2), 29 2 => array(6,9,1,2,4,8,15), 30 3 => array(6,9,1,6,1,9,6), 31 4 => array(1,3,5,9,15,1,1), 32 5 => array(15,8,8,14,1,9,6), 33 6 => array(6,8,8,14,9,9,6), 34 7 => array(15,1,1,2,4,4,4), 35 8 => array(6,9,9,6,9,9,6), 36 9 => array(6,9,9,7,1,1,6), 37 '.' => array(0,0,0,0,0,3,3), 38 ' ' => array(0,0,0,0,0,0,0), 39 '#' => array(0,9,15,9,15,9,0), 40 'A' => array(6,9,9,15,9,9,9), 41 'B' => array(14,9,9,14,9,9,14), 42 'C' => array(6,9,8,8,8,9,6), 43 'D' => array(14,9,9,9,9,9,14), 44 'E' => array(15,8,8,14,8,8,15), 45 'F' => array(15,8,8,14,8,8,8), 46 'G' => array(6,9,8,8,11,9,6), 47 'H' => array(9,9,9,15,9,9,9), 48 'I' => array(14,4,4,4,4,4,14), 49 'J' => array(15,1,1,1,1,9,6), 50 'K' => array(8,9,10,12,12,10,9), 51 'L' => array(8,8,8,8,8,8,15) ), 52 53 $iColorSchema = array(0 => array('red','darkred:0.9','red:0.3'), 54 1 => array('green','darkgreen','green:0.3'), 55 2 => array('lightblue:0.9','darkblue:0.85','darkblue:0.7'), 56 3 => array('yellow','yellow:0.4','yellow:0.3'), 57 4 => array('gray:1.4','darkgray:0.85','darkgray:0.7')), 58 59 $iSuperSampling = 3, $iMarg = 1, $iRad = 4 ; 60 61 function DigitalLED74($aRadius=2,$aMargin=0.6) { 62 $this->iRad = $aRadius; 63 $this->iMarg = $aMargin; 64 } 65 66 function SetSupersampling($aSuperSampling=2) { 67 $this->iSuperSampling = $aSuperSampling; 68 } 69 70 function _GetLED($aLedIdx,$aColor=0) { 71 72 if( $aColor < 0 || $aColor > 4 ) 73 $aColor = 0 ; 74 75 $width= $this->iLED_X*$this->iRad*2 + ($this->iLED_X+1)*$this->iMarg + $this->iRad ; 76 $height= $this->iLED_Y*$this->iRad*2 + ($this->iLED_Y+1)*$this->iMarg + $this->iRad * 2; 77 78 // Adjust radious for supersampling 79 $rad = $this->iRad * $this->iSuperSampling; 80 81 // Margin in between "Led" dots 82 $marg = $this->iMarg * $this->iSuperSampling; 83 84 $swidth = $width*$this->iSuperSampling; 85 $sheight = $height*$this->iSuperSampling; 86 87 $simg = new RotImage($swidth,$sheight,0,DEFAULT_GFORMAT,false); 88 $simg->SetColor($this->iColorSchema[$aColor][2]); 89 $simg->FilledRectangle(0,0,$swidth-1,$sheight-1); 90 91 92 $d = $this->iLEDSpec[$aLedIdx]; 93 94 for( $r = 0 ; $r < 7; ++$r ) { 95 96 $dr = $d[$r]; 97 98 for($c=0; $c < 4; ++$c ) { 99 100 if( ($dr & pow(2,3-$c)) !== 0 ) { 101 $color = $this->iColorSchema[$aColor][0]; 102 } 103 else { 104 $color = $this->iColorSchema[$aColor][1]; 105 } 106 107 $x = 2*$rad*$c+$rad + ($c+1)*$marg + $rad ; 108 $y = 2*$rad*$r+$rad + ($r+1)*$marg + $rad ; 109 110 $simg->SetColor($color); 111 $simg->FilledCircle($x,$y,$rad); 112 113 } 114 } 115 116 $img = new Image($width,$height,DEFAULT_GFORMAT,false); 117 $img->Copy($simg->img,0,0,0,0,$width,$height,$swidth,$sheight); 118 $simg->Destroy(); 119 unset($simg); 120 return $img; 121 } 122 123 function StrokeNumber($aValStr,$aColor=0) { 124 $n=strlen($aValStr); 125 for( $i=0 ; $i < $n; ++$i ) { 126 $d = substr($aValStr,$i,1); 127 if( ctype_digit($d) ) 128 $d = (int)$d; 129 else { 130 $d = strtoupper($d); 131 if( $d != '#' && $d != '.' && ($d < 'A' || $d > 'L') ) 132 $d = ' '; 133 } 134 $digit_img[$i] = $this->_GetLED($d,$aColor); 135 } 136 137 $w = imagesx($digit_img[0]->img); 138 $h = imagesy($digit_img[0]->img); 139 140 $number_img = new Image($w*$n,$h,DEFAULT_GFORMAT,false); 141 142 for($i=0; $i < $n; ++$i ) { 143 $number_img->Copy($digit_img[$i]->img,$i*$w,0,0,0,$w,$h,$w,$h); 144 } 145 146 $number_img->Headers(); 147 $number_img->Stream(); 148 149 } 150 } 151 152 153 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Nov 24 09:27:55 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |