Autor | Zpráva | ||
---|---|---|---|
Oxidián Profil * |
#1 · Zasláno: 18. 6. 2014, 15:59:57 · Upravil/a: Oxidián
Můžete mi poradit jak odstranit tuto chybu?
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE on line 93 <?PHP Class RGB{ public $r; public $g; public $b; function RGB($R=0, $G=0, $B=0){ $this->r=$R; $this->g=$G; $this->b=$B; } }; Class HSV{ public $h; public $s; public $v; function HSV($H=0, $S=0, $V=0){ $this->h=$H; $this->s=$S; $this->v=$V; } }; Class Converter{ private $min; private $max; /* function round($n) { return $n < 0.0 ? ceil($n - 0.5) : floor($n + 0.5); } */ static private function getMinMax($R, $G, $B) { if ($R < $G ) { if ($R < $B ) { $min = $R; if ( $G > $B ) $this->max = $G; else $this->max = $B; } else { $min = $B; if ( $G > $B ) $this->max = $G; else $this->max = $B; } } else if ( $G < $B ) { $min = $G; $this->max = $B; } else { $min = $B; $this->max = $G; } } // Returns the hue, saturation, and brightness of the color public function rgb2hsv($rgb, $HSV) { // $R,$G,$B,$dR,$dG,$dB; // RGB and delta components $hsv->h = 0; $R = (float) $rgb.r / 255; $G = (float) $rgb.g / 255; $B = (float) $rgb.b / 255; $this->getMinMax($R,$G,$B); // get min and max values of RGB // float: $dMax = $this->max - $min; //Delta RGB value $hsv->v = $this->max; if ( $dMax == 0 ) //This is a gray, no chroma... { $hsv->h = 0; //HSV results from 0 to 1 $hsv->s = 0; } else //Chromatic data... { $hsv->s = $dMax / $this->max ; $dR = ( ( ( $this->max - $R ) / 6 ) + ( $dMax / 2 ) ) / $dMax ; $dG = ( ( ( $this->max - $G ) / 6 ) + ( $dMax / 2 ) ) / $dMax ; $dB = ( ( ( $this->max - $B ) / 6 ) + ( $dMax / 2 ) ) / $dMax ; if ( $R == $this->max ) $hsv->h = $dB - $dG ; else if ( $G == $this->max ) $hsv->h = ( 1.0 / 3.0 ) + dR - dB ; else if ( $B == $this->max ) $hsv->h = ( 2.0 / 3.0 ) + dG - dR ; if ( $hsv->h < 0 ) $hsv->h += 1 ; if ( $hsv->h > 1 ) $hsv->h -= 1 ; } } /* arguments: 1) parameter $hsv instance of HSV class 2) parameter $rgb instance of RGB class byref */ public hsv2rgb($hsv, $rgb) { private $R,$G,$B,$varH,$varR,varG,varB,$varI,$var1,$var2,$var3; if ( $hsv.s == 0 ) //HSV from 0 to 1 { $R = $hsv.v * 255; $G = $hsv.v * 255; $B = $hsv.v * 255; } else { $varH = $hsv.h * 6; if ( $varH == 6 ) $varH = 0; //$H must be < 1 $varI = (int) int( $varH ); //Or ... $varI = floor( $varH ) $var1 = $hsv.v * ( 1 - $hsv.s ); $var2 = $hsv.v * ( 1 - $hsv.s * ( $varH - $varI ) ); $var3 = $hsv.v * ( 1 - $hsv.s * ( 1 - ( $varH - $varI ) ) ); if ( $varI == 0 ) { $varR = $hsv.v; varG = $var3; varB = $var1; } else if ( $varI == 1 ) { $varR = $var2; varG = $hsv.v; varB = $var1; } else if ( $varI == 2 ) { $varR = $var1; varG = $hsv.v; varB = $var3; } else if ( $varI == 3 ) { $varR = $var1; varG = $var2; varB = $hsv.v; } else if ( $varI == 4 ) { $varR = $var3; varG = $var1; varB = $hsv.v; } else { $varR = $hsv.v; varG = $var1; varB = $var2; } $rgb->r = (int) round($varR * 255); //RGB results from 0 to 255 $rgb->g = (int) round(varG * 255); $rgb->b = (int) round(varB * 255); } } } $rgbcolor = new RGB(256,0,50); $hsvcolor = new RGB(0,0,0); $hsv = new rgb2hsv($rgbcolor,$hsvcolor ); print_r($hsvcolor ); $rgb = new hsv2rgb($hsvcolor, $rgbcolor); print_r($rgb); ?> Aktuální kód, stejná chyba: http://paste.ofcode.org/LwxUGtBDxzrYF9mewx8f5n |
||
juriad Profil |
Chybí ti klíčové slovo
function na 93. řádku.
|
||
Radek9 Profil |
#3 · Zasláno: 18. 6. 2014, 16:18:38
Oxidián:
Ona ostatně celá ta funkce je nějaká zvláštní, připadá mi to jako přepsané z Javy. Místo šipky je použita tečka, někde chybí dolary a tím private uvnitř funkce si také nejsem zcela jist. |
||
Oxidián Profil * |
#4 · Zasláno: 18. 6. 2014, 16:35:45
Radek9:
Většinu věcí jsem už opravil juriad: Jo dík, a ještě dotaz proč to nemohu rozjet - řádek 129 by měl ukázat instanci rgb. http://paste.ofcode.org/4nsqGpz5F3f4mwY3bdfr6U Říkal jsem si že by to mohlo být "hlavičkou": public function hsv2rgb($hsv, $rgb) |
||
Radek9 Profil |
#5 · Zasláno: 18. 6. 2014, 16:47:00
Oxidián:
Protože funkce nic nevrací, ale ovlivňuje předané objekty. Tzn., že výsledek je v $rgbcolor. |
||
Oxidián Profil * |
#6 · Zasláno: 18. 6. 2014, 17:09:11 · Upravil/a: Oxidián
Sice to jede, ale bohužel to nevychází.
Mám problém s tímto: // (float) $R = $rgb->r / 255; $G = $rgb->g / 255; $B = $rgb->b / 255; Jak získat číslo ve float? Problém je tu to dělení. Výsledek se zaokrouhluje na integer. Float - tak tenhle bod jsem vyřešil $R = $rgb->r / (float) 255; $G = $rgb->g / (float) 255; $B = $rgb->b / (float) 255; Už jsem přišel na chybu. Viz nové vlákno |
||
Časová prodleva: 10 let
|
0