Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/image-editor/filters/vignette.js
Строк: 119
<?php
var buildBezier = function (startctrl1ctrl2endlowBoundhighBound) {
    var 
AxAyBxByCxCybeziercurveXcurveYijleftCoordrightCoordtx0x1x2x3y0y1y2y3_i_j_k_ref_ref1;
    
x0 start[0];
    
y0 start[1];
    
x1 ctrl1[0];
    
y1 ctrl1[1];
    
x2 ctrl2[0];
    
y2 ctrl2[1];
    
x3 end[0];
    
y3 end[1];
    
bezier = {};
    
Cx parseInt(* (x1 x0), 10);
    
Bx * (x2 x1) - Cx;
    
Ax x3 x0 Cx Bx;
    
Cy * (y1 y0);
    
By * (y2 y1) - Cy;
    
Ay y3 y0 Cy By;
    for (
_i 0_i 1000= ++_i) {
        
1000;
        
curveX Math.round((Ax Math.pow(t3)) + (Bx Math.pow(t2)) + (Cx t) + x0);
        
curveY Math.round((Ay Math.pow(t3)) + (By Math.pow(t2)) + (Cy t) + y0);
        if (
lowBound && curveY lowBound) {
            
curveY lowBound;
        } else if (
highBound && curveY highBound) {
            
curveY highBound;
        }
        
bezier[curveX] = curveY;
    }
    if (
bezier.length end[0] + 1) {
        for (
_j 0_ref end[0]; <= _ref _j <= _ref _j >= _ref<= _ref ? ++_j : --_j) {
            if (!(
bezier[i] != null)) {
                
leftCoord = [1bezier[1]];
                for (
_k i_ref1 end[0]; <= _ref1 _k <= _ref1 _k >= _ref1<= _ref1 ? ++_k : --_k) {
                    if (
bezier[j] != null) {
                        
rightCoord = [jbezier[j]];
                        break;
                    }
                }
                
bezier[i] = leftCoord[1] + ((rightCoord[1] - leftCoord[1]) / (rightCoord[0] - leftCoord[0])) * (leftCoord[0]);
            }
        }
    }
    if (!(
bezier[end[0]] != null)) {
        
bezier[end[0]] = bezier[end[0] - 1];
    }
    return 
bezier;
};

var 
vignette = function (datastuffsizestrength) {
    var 
width data.width,
        
height data.height,
        
beziercenterendstart;
    if (
strength == null) {
        
strength 60;
    }

    if (
typeof size === 'string' && size.substr(-1) === "%") {
        
size Math.min(widthheight) * Number(size.substr(0size.length 1)) / 100;
    }
    
strength /= 100;
    
center = [width 2height 2];
    
start Math.sqrt(Math.pow(center[0], 2) + Math.pow(center[1], 2));
    
end start size;
    
bezier buildBezier([01], [3030], [7060], [10080]);
    for (var 
0data.data.lengthl+= 4) {
        var 
distdivloc;
        
loc = {x: (4) % widthyMath.floor((4) / width)};
        
dist Math.sqrt(Math.pow(center[0] - loc.x2) + Math.pow(center[1] - loc.y2));
        if (
dist end) {
            
div Math.max(1, (bezier[Math.round(((dist end) / size) * 100)] / 10) * strength);
            
data.data[i] = Math.pow(data.data[i] / 255div) * 255;
            
data.data[1] = Math.pow(data.data[1] / 255div) * 255;
            
data.data[2] = Math.pow(data.data[2] / 255div) * 255;
        }
    }
};

var 
me this;
im.bind('filterFullyLoaded', function (edata) {
    if (
data.im.namespace === me.im.namespace) {
        
//This is me, start initialization.
    
}
});
im.bind('filterChange', function (edata) {
    if (
data.im.namespace === me.im.namespace) {
        
im.showLoader('Applying Vignette');

        
_.defer(function () {
            
// Just apply, there is no variation.

            
updateVignette();
            
// Apply Filter
        
}); // Allow loader to show
    
}
});
im.bind('filterApplyExample', function (edata) {
    if (
data.namespace === me.im.namespace) {
        
data.image.setFilter(_.partial(vignette__'50%''50'));
        
im.fire('filterBuiltExample'medata.elem);
    }
});

var 
updateVignette _.debounce(function() {
    $.
fn.dialog.showLoader();
    
im.activeElement.setFilter(_.partial(vignette__size_slider.slider('value') + '%'strength_slider.slider('value')));
    
im.activeElement.applyFilter();
    $.
fn.dialog.hideLoader();

    
im.fire('VignetteFilterDidFinish');
    
im.fire('filterApplied'me);
}, 
250);

var 
elem im.controlContext.find('.filter.filter-vignette');
var 
strength_percent elem.find('.strength-percent');
var 
strength_slider elem.find('.strength-slider').slider({
    
value60,
    
step1,
    
max100,
    
min1,
    
slide: function(eventdata) {
        
updateVignette();
        
strength_percent.text(data.value '%');
    }
});
var 
size_percent elem.find('.size-percent');
var 
size_slider elem.find('.size-slider').slider({
    
value50,
    
step1,
    
max100,
    
min1,
    
slide: function(eventdata) {
        
updateVignette();
        
size_percent.text(data.value '%');
    }
});
?>
Онлайн: 0
Реклама