Skip to content
Extraits de code Groupes Projets
Valider 37b98354 rédigé par esj's avatar esj
Parcourir les fichiers

Simplification de la compilation des filtres d'image: tout filtre commençant...

Simplification de la compilation des filtres d'image: tout filtre commençant par image_ ou _couleur_ se compilent par un appel de filtrer(), qui est supposé n'appeler que ces fonctions, ce qui supprime le besoin de la matrice. L'optimisation de find_in_path permet à présent de ses dispenser d'une statitique sur l'inclusion qui doublonnerait celle de find_in_path. L'idéal toutefois serait de déporter l'inclusion dans le code compilé à l'extérieur de la boucle. A suivre, on ne sait quand.
parent 1e4785e6
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -14,44 +14,6 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/charsets');
// signaler les filtres ayant besoin d'inclure inc/filtres_images
$GLOBALS['spip_matrice']['image_valeurs_trans'] = '';
$GLOBALS['spip_matrice']['image_reduire'] = '';
$GLOBALS['spip_matrice']['image_reduire_par'] = '';
$GLOBALS['spip_matrice']['image_recadre'] = '';
$GLOBALS['spip_matrice']['image_alpha'] = '';
$GLOBALS['spip_matrice']['image_flip_vertical'] = '';
$GLOBALS['spip_matrice']['image_flip_horizontal'] = '';
$GLOBALS['spip_matrice']['image_masque'] = '';
$GLOBALS['spip_matrice']['image_nb'] = '';
$GLOBALS['spip_matrice']['image_flou'] = '';
$GLOBALS['spip_matrice']['image_RotateBicubic'] = '';
$GLOBALS['spip_matrice']['image_rotation'] = '';
$GLOBALS['spip_matrice']['image_distance_pixel'] = '';
$GLOBALS['spip_matrice']['image_decal_couleur'] = '';
$GLOBALS['spip_matrice']['image_gamma'] = '';
$GLOBALS['spip_matrice']['image_decal_couleur_127'] = '';
$GLOBALS['spip_matrice']['image_sepia'] = '';
$GLOBALS['spip_matrice']['image_aplatir'] = '';
$GLOBALS['spip_matrice']['image_couleur_extraire'] = '';
$GLOBALS['spip_matrice']['image_select'] = '';
$GLOBALS['spip_matrice']['image_renforcement'] = '';
$GLOBALS['spip_matrice']['image_imagick'] = '';
$GLOBALS['spip_matrice']['image_ramasse_miettes'] = '';
$GLOBALS['spip_matrice']['image_passe_partout'] = '';
$GLOBALS['spip_matrice']['couleur_dec_to_hex'] ='';
$GLOBALS['spip_matrice']['couleur_hex_to_dec'] ='';
$GLOBALS['spip_matrice']['couleur_extreme'] ='';
$GLOBALS['spip_matrice']['couleur_inverser'] ='';
$GLOBALS['spip_matrice']['couleur_eclaircir'] ='';
$GLOBALS['spip_matrice']['couleur_foncer'] ='';
$GLOBALS['spip_matrice']['couleur_foncer_si_claire'] ='';
$GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] ='';
$GLOBALS['spip_matrice']['couleur_web'] ='';
$GLOBALS['spip_matrice']['couleur_4096'] ='';
$GLOBALS['spip_matrice']['couleur_saturation'] ='';
// http://doc.spip.org/@chercher_filtre
function chercher_filtre($fonc, $default=NULL) {
......@@ -71,20 +33,6 @@ function appliquer_filtre($arg, $filtre) {
return $f($arg);
}
// Appliquer un filtre de la matrice
// http://doc.spip.org/@filtrer
function filtrer($filtre) {
include_spip('inc/filtres_images');
$tous = func_get_args();
if (substr($filtre,0,6)=='image_')
return image_filtrer($tous);
else{
array_shift($tous); # enlever $filtre
return call_user_func_array($filtre, $tous);
}
}
function filtre_text_txt_dist($t) {
return '<pre>' . echapper_tags($t) . '</pre>';
}
......@@ -139,17 +87,25 @@ function version_svn_courante($dir) {
// Fonctions graphiques
//
// charge les fonctions graphiques et applique celle demandee
// http://doc.spip.org/@filtrer
function filtrer() {
find_in_path('filtres_images.php', 'inc/', true);
return image_filtrer(func_get_args());
}
// fonction generique d'entree des filtres images
// accepte en entree un texte complet, un img-log (produit par #LOGO_XX),
// un tag <img ...> complet, ou encore un nom de fichier *local* (passer
// le filtre |copie_locale si on veut l'appliquer a un document)
// applique le filtre demande a chacune des occurences
// applique le filtre demande a chacune des occurrences
// http://doc.spip.org/@image_filtrer
function image_filtrer($args){
$filtre = array_shift($args); # enlever $filtre
$texte = array_shift($args);
if (!$texte) return;
// Cas du nom de fichier local
if (preg_match(',^('._DIR_IMG .'|'. _DIR_IMG_PACK .'|'. _DIR_VAR .'),', $texte)) {
array_unshift($args,"<img src='$texte' />");
......
......@@ -114,7 +114,6 @@ class Champ {
var $type_requete;
var $code; // code du calcul
var $interdire_scripts = true; // false si on est sur de cette balise
var $ramasser_miettes = false;
// tableau pour la production de code dependant du contexte
// id_mere; pour TOTAL_BOUCLE hors du corps
// document; pour embed et img dans les textes
......
......@@ -412,10 +412,6 @@ function applique_filtres($p) {
if (isset($p->descr['session']))
$code = "$code . invalideur_session(\$Cache)";
// ramasser les images intermediaires inutiles et graver l'image finale
if ($p->ramasser_miettes)
$code = "filtrer('image_graver',$code)";
// Securite
if ($p->interdire_scripts
AND $p->etoile != '**')
......@@ -428,15 +424,16 @@ function applique_filtres($p) {
// http://doc.spip.org/@compose_filtres
function compose_filtres(&$p, $code) {
global $table_criteres_infixes;
$image_miette = false;
foreach($p->param as $filtre) {
$fonc = array_shift($filtre);
if ($fonc) {
$is_filtre_image = (substr($fonc,0,6)=='image_') AND ($fonc!='image_graver');
if ($p->ramasser_miettes AND !$is_filtre_image){
// il faut graver maintenant car apres le filtre en cours
// on est pas sur d'avoir encore le nom du fichier dans le pipe
$code = "filtrer('image_graver',$code)";
$p->ramasser_miettes = false;
if ($image_miette AND !$is_filtre_image){
// il faut graver maintenant car apres le filtre en cours
// on est pas sur d'avoir encore le nom du fichier dans le pipe
$code = "filtrer('image_graver', $code)";
$image_miette = false;
}
// recuperer les arguments du filtre, les separer par des virgules
// *sauf* dans le cas du filtre "?" qui demande un ":"
......@@ -448,15 +445,15 @@ function compose_filtres(&$p, $code) {
} else
$arglist = compose_filtres_args($p, $filtre, ',');
// le filtre est defini dans la matrice ? il faut alors l'appeler
// de maniere indirecte, pour charger au prealable sa definition
if (isset($GLOBALS['spip_matrice'][$fonc])) {
$code = "filtrer('$fonc',$code$arglist)";
if ($is_filtre_image) $p->ramasser_miettes = true;
}
// est-ce un test ?
else if (in_array($fonc, $table_criteres_infixes))
if (in_array($fonc, $table_criteres_infixes))
$code = "($code $fonc " . substr($arglist,1) . ')';
elseif ((substr($fonc,0,6)=='image_') OR (substr($fonc,0,8)=='couleur_')){
$code = "filtrer('$fonc',$code$arglist)";
if ($is_filtre_image) $image_miette = true;
}
// le filtre est defini sous forme de fonction ou de methode
// par ex. dans inc_texte, inc_filtres ou mes_fonctions
else if ($f = chercher_filtre($fonc)) {
......@@ -472,6 +469,10 @@ function compose_filtres(&$p, $code) {
}
}
// ramasser les images intermediaires inutiles et graver l'image finale
if ($image_miette)
$code = "filtrer('image_graver',$code)";
return $code;
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter