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 |
}
|