Blame tests/interactive/box-shadow-animated.js

Packit d345d1
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
Packit d345d1
Packit d345d1
const UI = imports.testcommon.ui;
Packit d345d1
Packit d345d1
const { Clutter, GLib, St } = imports.gi;
Packit d345d1
const Mainloop = imports.mainloop;
Packit d345d1
Packit d345d1
const DELAY = 2000;
Packit d345d1
Packit d345d1
function resize_animated(label) {
Packit d345d1
    if (label.width == 100) {
Packit d345d1
        label.save_easing_state();
Packit d345d1
        label.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD);
Packit d345d1
        label.set_easing_duration(DELAY - 50);
Packit d345d1
        label.set_size(500, 500);
Packit d345d1
        label.restore_easing_state();
Packit d345d1
    } else {
Packit d345d1
        label.save_easing_state();
Packit d345d1
        label.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD);
Packit d345d1
        label.set_easing_duration(DELAY - 50);
Packit d345d1
        label.set_size(100, 100);
Packit d345d1
        label.restore_easing_state();
Packit d345d1
    }
Packit d345d1
}
Packit d345d1
Packit d345d1
function get_css_style(shadow_style)
Packit d345d1
{
Packit d345d1
    return 'border: 20px solid black;' +
Packit d345d1
        'border-radius: 20px;' +
Packit d345d1
        'background-color: white; ' +
Packit d345d1
        'padding: 5px;' + shadow_style;
Packit d345d1
}
Packit d345d1
Packit d345d1
function test() {
Packit d345d1
    let stage = new Clutter.Stage({ width: 1000, height: 600 });
Packit d345d1
    UI.init(stage);
Packit d345d1
Packit d345d1
    let iter = 0;
Packit d345d1
    let shadowStyles = [ 'box-shadow: 3px 50px 0px 4px rgba(0,0,0,0.5);',
Packit d345d1
                         'box-shadow: 3px 4px 10px 4px rgba(0,0,0,0.5);',
Packit d345d1
                         'box-shadow: 0px 50px 0px 0px rgba(0,0,0,0.5);',
Packit d345d1
                         'box-shadow: 100px 100px 20px 4px rgba(0,0,0,0.5);'];
Packit d345d1
    let label1 = new St.Label({ style: get_css_style(shadowStyles[iter]),
Packit d345d1
                                text: shadowStyles[iter],
Packit d345d1
                                x: 20,
Packit d345d1
                                y: 20,
Packit d345d1
                                width: 100,
Packit d345d1
                                height: 100
Packit d345d1
                             });
Packit d345d1
    stage.add_actor(label1);
Packit d345d1
    let label2 = new St.Label({ style: get_css_style(shadowStyles[iter]),
Packit d345d1
                                text: shadowStyles[iter],
Packit d345d1
                                x: 500,
Packit d345d1
                                y: 20,
Packit d345d1
                                width: 100,
Packit d345d1
                                height: 100
Packit d345d1
                              });
Packit d345d1
    stage.add_actor(label2);
Packit d345d1
Packit d345d1
    resize_animated(label1);
Packit d345d1
    resize_animated(label2);
Packit d345d1
    Mainloop.timeout_add(DELAY, () => {
Packit d345d1
        log(label1 + label1.get_size());
Packit d345d1
        resize_animated(label1);
Packit d345d1
        resize_animated(label2);
Packit d345d1
        return true;
Packit d345d1
    });
Packit d345d1
Packit d345d1
    Mainloop.timeout_add(2 * DELAY, () => {
Packit d345d1
        iter += 1;
Packit d345d1
        iter %= shadowStyles.length;
Packit d345d1
        label1.set_style(get_css_style(shadowStyles[iter]));
Packit d345d1
        label1.set_text(shadowStyles[iter]);
Packit d345d1
        label2.set_style(get_css_style(shadowStyles[iter]));
Packit d345d1
        label2.set_text(shadowStyles[iter]);
Packit d345d1
        return true;
Packit d345d1
    });
Packit d345d1
Packit d345d1
    UI.main(stage);
Packit d345d1
}
Packit d345d1
test();