Changeset 92756 in spip-zone


Ignore:
Timestamp:
Nov 8, 2015, 8:43:45 PM (4 years ago)
Author:
bystrano@…
Message:

debug du javascript de la page de massicotage

Avant ce commit, le fait de faire un zoom puis un dé-zoom ne ramenait
pas exactement sur le recadrage initial à cause d'erreurs d'arrondi qui
s'accumulaient.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/massicot/trunk/javascripts/formulaireMassicoterImage.js

    r92207 r92756  
    2323        imgAreaSelector,
    2424        initialWidth = img.attr('width'),
    25         zoom = options.zoom;
     25        zoom = options.zoom,
     26        /* On garde en mémoire la sélection telle qu'elle serait sans
     27           le zoom, pour pouvoir zoomer-dézoomer perdre de la
     28           précision à cause d'erreurs d'arrondi. */
     29        selection_nozoom = {};
    2630
    2731    /* Mise à jour du formulaire */
     
    6771        }
    6872
     73        if ( ! selection_nozoom.x1) {
     74            selection_nozoom = {
     75                x1: selection_actuelle.x1 / zoom,
     76                x2: selection_actuelle.x2 / zoom,
     77                y1: selection_actuelle.y1 / zoom,
     78                y2: selection_actuelle.y2 / zoom,
     79            }
     80        }
     81
    6982        if ( ! imgAreaSelector) {
    7083
     
    7487                show: true,
    7588                onSelectEnd: maj_formulaire,
     89                onSelectChange: function () {
     90                    selection_nozoom = {};
     91                },
    7692                x1: selection_actuelle.x1,
    7793                x2: selection_actuelle.x2,
     
    8399        } else {
    84100
    85             nouvelle_selection.x1 = Math.round(selection_actuelle.x1 / zoom * new_zoom);
    86             nouvelle_selection.x2 = Math.round(selection_actuelle.x2 / zoom * new_zoom);
    87             nouvelle_selection.y1 = Math.round(selection_actuelle.y1 / zoom * new_zoom);
    88             nouvelle_selection.y2 = Math.round(selection_actuelle.y2 / zoom * new_zoom);
     101            nouvelle_selection.x1 = Math.round(selection_nozoom.x1 * new_zoom);
     102            nouvelle_selection.x2 = Math.round(selection_nozoom.x2 * new_zoom);
     103            nouvelle_selection.y1 = Math.round(selection_nozoom.y1 * new_zoom);
     104            nouvelle_selection.y2 = Math.round(selection_nozoom.y2 * new_zoom);
    89105
    90106            nouvelle_selection.x1 = Math.max(0, nouvelle_selection.x1);
Note: See TracChangeset for help on using the changeset viewer.