| Line 328... |
Line 328... |
| 328 |
// Nous lançons la création de la carte
|
328 |
// Nous lançons la création de la carte
|
| 329 |
$this->colorierCarte();
|
329 |
$this->colorierCarte();
|
| 330 |
}
|
330 |
}
|
| Line 331... |
Line 331... |
| 331 |
|
331 |
|
| 332 |
// Nous chercons à créer une image indéxées en sortie
|
332 |
// Nous chercons à créer une image indéxées en sortie
|
| 333 |
if (imageistruecolor(&$this->carte) && $this->formule_coloriage != 'legende') {
|
333 |
if (imageistruecolor($this->carte) && $this->formule_coloriage != 'legende') {
|
| 334 |
if ($this->coloriage_couleurs <= 253) {
|
334 |
if ($this->coloriage_couleurs <= 253) {
|
| 335 |
//imagetruecolortopalette(&$this->carte, false, ($this->coloriage_couleurs + 2));// + 2 car noir et blanc réservés.
|
335 |
//imagetruecolortopalette(&$this->carte, false, ($this->coloriage_couleurs + 2));// + 2 car noir et blanc réservés.
|
| 336 |
} else {
|
336 |
} else {
|
| 337 |
// On force la création d'une palette... si cela pose problème ajouter un attribut permettant de désactiver
|
337 |
// On force la création d'une palette... si cela pose problème ajouter un attribut permettant de désactiver
|
| 338 |
// ce fonctionnement.
|
338 |
// ce fonctionnement.
|
| 339 |
imagetruecolortopalette(&$this->carte, false, 255);
|
339 |
imagetruecolortopalette($this->carte, false, 255);
|
| 340 |
}
|
340 |
}
|
| Line 341... |
Line 341... |
| 341 |
}
|
341 |
}
|
| 342 |
|
342 |
|
| Line 351... |
Line 351... |
| 351 |
if(file_exists($fichier_image_carte)) {
|
351 |
if(file_exists($fichier_image_carte)) {
|
| 352 |
//echo 'suppression du fichier de carte : '.$fichier_html_carte;
|
352 |
//echo 'suppression du fichier de carte : '.$fichier_html_carte;
|
| 353 |
unlink($fichier_image_carte);
|
353 |
unlink($fichier_image_carte);
|
| 354 |
}
|
354 |
}
|
| Line 355... |
Line 355... |
| 355 |
|
355 |
|
| 356 |
imagepng(&$this->carte, $this->getCarteFichier());
|
356 |
imagepng($this->carte, $this->getCarteFichier());
|
| 357 |
return true;
|
357 |
return true;
|
| Line 358... |
Line 358... |
| 358 |
}
|
358 |
}
|
| 359 |
|
359 |
|
| Line 503... |
Line 503... |
| 503 |
$this->coloriage_couleurs = count(array_count_values($this->coloriage_tableau_frequence));
|
503 |
$this->coloriage_couleurs = count(array_count_values($this->coloriage_tableau_frequence));
|
| 504 |
//trigger_error('<pre>'.print_r($this->coloriage_couleurs, true).'</pre>', E_USER_ERROR);
|
504 |
//trigger_error('<pre>'.print_r($this->coloriage_couleurs, true).'</pre>', E_USER_ERROR);
|
| Line 505... |
Line 505... |
| 505 |
|
505 |
|
| 506 |
// Nous attribuons les couleurs à chaque zone géographique
|
506 |
// Nous attribuons les couleurs à chaque zone géographique
|
| - |
|
507 |
foreach ($this->getCarteZones() as $cle => $zg) {
|
| - |
|
508 |
if ($this->getModeDebug() && !isset($zg['rvb_fond'])) {
|
| - |
|
509 |
$e = "La zone ".print_r($zg, true).") ne possède pas de clé 'rvb_fond'.";
|
| - |
|
510 |
trigger_error($e, E_USER_WARNING);
|
| - |
|
511 |
continue;
|
| 507 |
foreach ($this->getCarteZones() as $cle => $zg) {
|
512 |
}
|
| 508 |
if (isset($this->coloriage_tableau_frequence[$zg['info_nombre']])) {
|
513 |
if (isset($this->coloriage_tableau_frequence[$zg['info_nombre']])) {
|
| 509 |
$this->carte_correspondance_couleurs[$zg['rvb_fond']] = $this->coloriage_tableau_frequence[$zg['info_nombre']];
|
514 |
$this->carte_correspondance_couleurs[$zg['rvb_fond']] = $this->coloriage_tableau_frequence[$zg['info_nombre']];
|
| 510 |
} else {
|
515 |
} else {
|
| 511 |
$this->carte_correspondance_couleurs[$zg['rvb_fond']] = '128-128-128';
|
516 |
$this->carte_correspondance_couleurs[$zg['rvb_fond']] = '128-128-128';
|
| Line 538... |
Line 543... |
| 538 |
// Attribution du nombre de couleurs utilisé pour réaliser la carte
|
543 |
// Attribution du nombre de couleurs utilisé pour réaliser la carte
|
| 539 |
$this->coloriage_couleurs = count($tab_couleurs);
|
544 |
$this->coloriage_couleurs = count($tab_couleurs);
|
| 540 |
}
|
545 |
}
|
| Line 541... |
Line 546... |
| 541 |
|
546 |
|
| 542 |
private function colorierCarte() {
|
547 |
private function colorierCarte() {
|
| 543 |
if (imageistruecolor(&$this->carte)) {
|
548 |
if (imageistruecolor($this->carte)) {
|
| 544 |
//+--------------------------------------------------------------------------------------------------------+
|
549 |
//+--------------------------------------------------------------------------------------------------------+
|
| 545 |
// Remplacement des couleurs sur la carte en mode vraies couleurs (RGB)
|
550 |
// Remplacement des couleurs sur la carte en mode vraies couleurs (RGB)
|
| 546 |
$this->colorierCarteModeVraiCouleur();
|
551 |
$this->colorierCarteModeVraiCouleur();
|
| 547 |
} else {
|
552 |
} else {
|
| Line 551... |
Line 556... |
| 551 |
}
|
556 |
}
|
| 552 |
}
|
557 |
}
|
| Line 553... |
Line 558... |
| 553 |
|
558 |
|
| 554 |
private function colorierCarteModeVraiCouleur() {
|
559 |
private function colorierCarteModeVraiCouleur() {
|
| 555 |
// Nous commençons le rempalcement des couleurs sur la carte de fond.
|
560 |
// Nous commençons le rempalcement des couleurs sur la carte de fond.
|
| 556 |
$hauteur = imagesy(&$this->carte);
|
561 |
$hauteur = imagesy($this->carte);
|
| Line 557... |
Line 562... |
| 557 |
$largeur = imagesx(&$this->carte);
|
562 |
$largeur = imagesx($this->carte);
|
| 558 |
|
563 |
|
| 559 |
// Tableau contenant les couleurs traitées, pour éviter de traiter plusieurs fois la même couleur
|
564 |
// Tableau contenant les couleurs traitées, pour éviter de traiter plusieurs fois la même couleur
|
| 560 |
$tab_rvb_ok = array();
|
565 |
$tab_rvb_ok = array();
|
| 561 |
for ($x = 0; $x < $largeur; $x++) {
|
566 |
for ($x = 0; $x < $largeur; $x++) {
|
| 562 |
for ($y = 0; $y < $hauteur; $y++) {
|
567 |
for ($y = 0; $y < $hauteur; $y++) {
|
| 563 |
$rvb = ImageColorAt(&$this->carte, $x, $y);
|
568 |
$rvb = ImageColorAt($this->carte, $x, $y);
|
| 564 |
if (!isset($tab_rvb_ok[$rvb])) {
|
569 |
if (!isset($tab_rvb_ok[$rvb])) {
|
| 565 |
// Récupération de la couleur rvb au format xxx-xxx-xxx
|
570 |
// Récupération de la couleur rvb au format xxx-xxx-xxx
|
| 566 |
$cle = (($rvb >> 16) & 0xFF).'-'.(($rvb >> 8) & 0xFF).'-'.($rvb & 0xFF);
|
571 |
$cle = (($rvb >> 16) & 0xFF).'-'.(($rvb >> 8) & 0xFF).'-'.($rvb & 0xFF);
|
| Line 573... |
Line 578... |
| 573 |
} else {
|
578 |
} else {
|
| 574 |
list($rouge, $vert, $bleu) = explode('-', $this->carte_correspondance_couleurs[$cle]);
|
579 |
list($rouge, $vert, $bleu) = explode('-', $this->carte_correspondance_couleurs[$cle]);
|
| 575 |
$rvb_final = $rouge<<16 | $vert<<8 | $bleu;
|
580 |
$rvb_final = $rouge<<16 | $vert<<8 | $bleu;
|
| 576 |
}
|
581 |
}
|
| 577 |
// Si le nombre de couleurs sur la carte finale est infèrieur à 255 nous créons une image indexée
|
582 |
// Si le nombre de couleurs sur la carte finale est infèrieur à 255 nous créons une image indexée
|
| 578 |
imagefill(&$this->carte, $x, $y, $rvb_final);
|
583 |
imagefill($this->carte, $x, $y, $rvb_final);
|
| 579 |
} else {
|
584 |
} else {
|
| 580 |
$rvb_final = '128'<<16 | '128'<<8 | '128';
|
585 |
$rvb_final = '128'<<16 | '128'<<8 | '128';
|
| 581 |
imagefill(&$this->carte, $x, $y, $rvb_final);
|
586 |
imagefill($this->carte, $x, $y, $rvb_final);
|
| 582 |
}
|
587 |
}
|
| 583 |
// Nous ajoutons la couleur ajoutée à la carte dans le tableau des couleurs traitées
|
588 |
// Nous ajoutons la couleur ajoutée à la carte dans le tableau des couleurs traitées
|
| 584 |
$tab_rvb_ok[$rvb_final] = true;
|
589 |
$tab_rvb_ok[$rvb_final] = true;
|
| 585 |
}
|
590 |
}
|
| 586 |
// Nous ajoutons la couleur trouvées sur la carte de fond dans le tableau des couleurs traitées
|
591 |
// Nous ajoutons la couleur trouvées sur la carte de fond dans le tableau des couleurs traitées
|
| Line 605... |
Line 610... |
| 605 |
$bleu = 0;
|
610 |
$bleu = 0;
|
| 606 |
} else {
|
611 |
} else {
|
| 607 |
list($rouge, $vert, $bleu) = explode('-', $this->carte_correspondance_couleurs[$zg['rvb_fond']]);
|
612 |
list($rouge, $vert, $bleu) = explode('-', $this->carte_correspondance_couleurs[$zg['rvb_fond']]);
|
| 608 |
}
|
613 |
}
|
| 609 |
if (isset($zg['index'])) {
|
614 |
if (isset($zg['index'])) {
|
| 610 |
imagecolorset(&$this->carte, $zg['index'], $rouge, $vert, $bleu);
|
615 |
imagecolorset($this->carte, $zg['index'], $rouge, $vert, $bleu);
|
| 611 |
} else if ($this->getModeDebug()) {
|
616 |
} else if ($this->getModeDebug()) {
|
| 612 |
$e = "La zone '{$zg['nom']}' n'est pas présente sur la carte.";
|
617 |
$e = "La zone '{$zg['nom']}' n'est pas présente sur la carte.";
|
| 613 |
trigger_error($e, E_USER_WARNING);
|
618 |
trigger_error($e, E_USER_WARNING);
|
| 614 |
}
|
619 |
}
|
| 615 |
}
|
620 |
}
|