Changeset 111562 in spip-zone


Ignore:
Timestamp:
Sep 11, 2018, 8:11:03 AM (8 months ago)
Author:
bystrano@…
Message:

debug contrainte de sélections

File:
1 edited

Legend:

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

    r111561 r111562  
    540540         * identique à la sélection passée en paramètre.
    541541         */
    542         function contraindre_selection (s, contrainte, last_selection, image) {
    543 
    544                 var zoom_min = zoom_min_get(contrainte, image);
    545 
    546                 // Si c'est nécessaire, on commence par zoomer.
    547                 if (s.zoom < zoom_min) {
    548                         s.zoom = zoom_min;
    549                         s = zoom_selection(s, last_selection, image);
    550                 }
    551 
    552                 // Une fois qu'on est certain d'avoir la place, on calcule une nouvelle
    553                 // sélection.
    554                 var taille_canevas  = {
     542        function contraindre_selection (selection, contrainte, last_selection, image) {
     543
     544                var s = Object.assign({}, selection),
     545                        taille_canevas  = {
    555546                                x: round(image.x * s.zoom),
    556547                                y: round(image.y * s.zoom)
     
    561552                        },
    562553                        zoom_reel = min(1, s.zoom),
     554                        // echelle max avant que la sélection ne dépasse du canevas
    563555                        echelle_max = min(
    564                                 taille_canevas.x / contrainte.x,
    565                                 taille_canevas.y / contrainte.y
     556                                taille_canevas.x / zoom_reel / contrainte.x,
     557                                taille_canevas.y / zoom_reel / contrainte.y
    566558                        ),
    567                         echelle_x = (s.x2 - s.x1) * zoom_reel / contrainte.x,
    568                         echelle_y = (s.y2 - s.y1) * zoom_reel / contrainte.y,
     559                        echelle_x = (s.x2 - s.x1) / zoom_reel / contrainte.x,
     560                        echelle_y = (s.y2 - s.y1) / zoom_reel / contrainte.y,
    569561                        echelle = min(
    570562                                max(zoom_reel, (echelle_x + echelle_y) / 2),
    571563                                echelle_max
    572564                        ),
    573                         largeur_selection = contrainte.x * echelle,
    574                         hauteur_selection = contrainte.y * echelle;
     565                        largeur_selection = contrainte.x * zoom_reel * echelle,
     566                        hauteur_selection = contrainte.y * zoom_reel * echelle;
    575567
    576568                s = $.extend(s, {
     
    607599        ));
    608600        tests.push(make_test_equals(
     601                'contraindre une sélection ok ne la modifie pas (zoom = 1, zoom_cible petit)',
     602                { x1: 0, x2: 150, y1: 25, y2: 75, zoom: 0.25 },
     603                function () {
     604                        return contraindre_selection(
     605                                { x1: 0, x2: 150, y1: 25, y2: 75, zoom: 0.25 },
     606                                { x: 300, y: 100 },
     607                                { x1: 0, x2: 600, y1: 100, y2: 300, zoom: 1 },
     608                                { x: 600, y: 400 }
     609                        );
     610                }
     611        ));
     612        tests.push(make_test_equals(
    609613                'contraindre une sélection ok ne la modifie pas (zoom < 1)',
    610614                { x1: 50, x2: 100, y1: 0, y2: 25, zoom: 0.5 },
     
    680684        tests.push(make_test_equals(
    681685                'contraindre une sélection trop petite fonctionne (zoom < 1)',
    682                 { x1: 150, x2: 250, y1: 145, y2: 155, zoom: 0.5 },
     686                { x1: 175, x2: 225, y1: 145, y2: 155, zoom: 0.5 },
    683687                function () {
    684688                        return contraindre_selection(
    685689                                { x1: 190, x2: 210, y1: 145, y2: 155, zoom: 0.5 },
    686                                 { x: 200, y: 20 },
     690                                { x: 200, y: 40 },
    687691                                null,
    688692                                { x: 800, y: 600 }
Note: See TracChangeset for help on using the changeset viewer.