Subversion Repositories Applications.annuaire

Rev

Rev 317 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 317 Rev 473
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
			}