Changeset 118217 in spip-zone


Ignore:
Timestamp:
Oct 19, 2019, 6:19:53 AM (3 months ago)
Author:
jluc@…
Message:

hop passage en (bienvenue) + griffe + optimisation qui restait

Location:
_plugins_/creer_sprites_css/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/creer_sprites_css/trunk/creer_sprites_fonctions.php

    r118215 r118217  
    55
    66/**
    7  * @param $img                  image à intégrer au sprite
    8  * @param $nom                  nom du fichier sprite
     7 * @param $img string           image à intégrer au sprite
     8 * @param $nom string           nom du fichier sprite
    99 * @return string|void          source de la balise <img> dont le src est vide
    1010 *                              et dont le background du style fait référence au sprite, avec le bon offset
     
    7878 * @return string           la page modifiée
    7979 *
    80  * Crée les fichiers sprites à partir de toutes les informations collectées
     80 * Crée les fichiers sprites à partir des informations collectées par les appels de |sprite
    8181 * et remplace les marqueurs de datage par le timestamp du fichier sprite
    8282 *
    83  * Appelé par défaut le pipeline affichage_final
     83 * @used-by     creer_sprites_affichage_final
     84 * Appelé via le pipeline affichage_final
    8485 * Peut aussi être appelé par un #FILTRE si on veut forcer au niveau d'un squelette
    8586 */
    8687function filtre_creer_sprites($page) {
    87         if ($sprites = $GLOBALS['sprites']) {
    88                 foreach ($sprites as $key => $sprite) {
    89                         $fichier_sprite = sous_repertoire(_DIR_VAR, 'cache-sprites').$key;
    90                         $nom_fichier_sprite = substr($fichier_sprite, 0, strlen($fichier_sprite) - 4);
     88        if (!count($GLOBALS['sprites'])) {
     89                return $page;
     90        }
     91        $sprites = $GLOBALS['sprites'];
    9192
    92                         $date_max = $sprite['date'];
    93                         $date_src = @filemtime($fichier_sprite);
    94                         $largeur = $sprite['largeur'];
    95                         $hauteur = $sprite['hauteur'];
     93        foreach ($sprites as $key => $sprite) {
     94                $fichier_sprite = sous_repertoire(_DIR_VAR, 'cache-sprites').$key;
     95                $nom_fichier_sprite = substr($fichier_sprite, 0, strlen($fichier_sprite) - 4);
    9696
    97                         $creer = false;
     97                $date_max = $sprite['date'];
     98                $date_src = @filemtime($fichier_sprite);
     99                $largeur = $sprite['largeur'];
     100                $hauteur = $sprite['hauteur'];
    98101
    99                         // On recalcule le sprite si l'un des fichiers qui le compose est plus récent que le sprite
    100                         if ($date_src < $date_max) {
    101                                 $creer = true;
    102                         }
    103                         if ($largeur != largeur($fichier_sprite) || $hauteur != hauteur($fichier_sprite)) {
    104                                 $creer = true;
     102                $creer = false;
     103
     104                // On recalcule le sprite si l'un des fichiers qui le compose est plus récent que le sprite
     105                if ($date_src < $date_max) {
     106                        $creer = true;
     107                }
     108                if ($largeur != largeur($fichier_sprite) || $hauteur != hauteur($fichier_sprite)) {
     109                        $creer = true;
     110                }
     111
     112                if (!empty($_GET['var_mode'])
     113                        and in_array($_GET['var_mode'], array('recalcul', 'debug'))) {
     114                        $creer = true;
     115                }
     116
     117                if ($creer) {
     118                        include_spip('inc/filtres_images');
     119
     120                        $im = imagecreatetruecolor($largeur, $hauteur);
     121                        imagepalettetotruecolor($im);
     122                        @imagealphablending($im, false);
     123                        @imagesavealpha($im, true);
     124                        $color_t = imagecolorallocatealpha($im, 0, 0, 0, 127);
     125                        imagefill($im, 0, 0, $color_t);
     126
     127                        $y_total = 0;
     128                        foreach ($sprite['fichiers'] as $img) {
     129                                $f = 'imagecreatefrom'.str_replace('jpg', 'jpeg', creer_sprites_terminaison_fichier_image($img));
     130                                $im_tmp = $f($img);
     131                                @imagepalettetotruecolor($im_tmp);
     132
     133                                $x = imagesx($im_tmp);
     134                                $y = imagesy($im_tmp);
     135
     136                                @ImageCopy($im, $im_tmp, 0, $y_total, 0, 0, $x, $y);
     137                                $y_total += $y;
    105138                        }
    106139
    107                         if (!empty($_GET['var_mode'])
    108                                 and in_array($_GET['var_mode'], array('recalcul', 'debug'))) {
    109                                 $creer = true;
     140                        _image_imagepng($im, "$nom_fichier_sprite.png");
     141
     142                        $ext = creer_sprites_terminaison_fichier_image($fichier_sprite);
     143                        if ($ext != 'png') {
     144                                $new = extraire_attribut(image_aplatir("$nom_fichier_sprite.png", $ext, 'ffffff'), 'src');
     145                                copy($new, $fichier_sprite);
    110146                        }
    111 
    112                         if ($creer) {
    113                                 include_spip('inc/filtres_images');
    114 
    115                                 $im = imagecreatetruecolor($largeur, $hauteur);
    116                                 imagepalettetotruecolor($im);
    117                                 @imagealphablending($im, false);
    118                                 @imagesavealpha($im, true);
    119                                 $color_t = imagecolorallocatealpha($im, 0, 0, 0, 127);
    120                                 imagefill($im, 0, 0, $color_t);
    121 
    122                                 $y_total = 0;
    123                                 foreach ($sprite['fichiers'] as $img) {
    124                                         $f = 'imagecreatefrom'.str_replace('jpg', 'jpeg', creer_sprites_terminaison_fichier_image($img));
    125                                         $im_tmp = $f($img);
    126                                         @imagepalettetotruecolor($im_tmp);
    127 
    128                                         $x = imagesx($im_tmp);
    129                                         $y = imagesy($im_tmp);
    130 
    131                                         @ImageCopy($im, $im_tmp, 0, $y_total, 0, 0, $x, $y);
    132                                         $y_total += $y;
    133                                 }
    134 
    135                                 _image_imagepng($im, "$nom_fichier_sprite.png");
    136 
    137                                 $ext = creer_sprites_terminaison_fichier_image($fichier_sprite);
    138                                 if ($ext != 'png') {
    139                                         $new = extraire_attribut(image_aplatir("$nom_fichier_sprite.png", $ext, 'ffffff'), 'src');
    140                                         $ok = copy($new, $fichier_sprite);
    141                                 }
    142                                 imagedestroy($im);
    143                                 imagedestroy($im_tmp);
    144                         }
     147                        imagedestroy($im);
     148                        imagedestroy($im_tmp);
    145149                }
    146150        }
    147 
    148151        // Mettre les dates des fichiers en variable de chaque appel
    149152        $page = preg_replace_callback(',spiprempdate\[([^\]]*)\],', 'creer_sprites_remplacer_date', $page);
     
    174177 *
    175178 * Pipeline pour calculer les sprites et les timestamp
     179 * @uses filtre_creer_sprites
    176180 */
    177181function creer_sprites_affichage_final($page) {
  • _plugins_/creer_sprites_css/trunk/paquet.xml

    r118215 r118217  
    22        prefix="creer_sprites"
    33        categorie="multimedia"
    4         version="1.4.2"
    5         etat="dev"
     4        version="2.0.0"
     5        etat="test"
    66        compatibilite="[3.2.0;3.3.*]"
    77        documentation="http://www.paris-beyrouth.org/tutoriaux-spip/article/plugin-creer-sprites-css"   
     
    1111
    1212        <auteur>ARNO*</auteur>
     13        <auteur>JLuc</auteur>
    1314        <licence lien="http://www.gnu.org/licenses/gpl-2.0.html">GPL</licence>
    1415
Note: See TracChangeset for help on using the changeset viewer.