Вход Регистрация
Файл: concrete5.7.5.6/concrete/js/build/core/image-editor/build/save.js
Строк: 127
<?php
im
.save = function saveImage() {
    
im.fire('ChangeActiveAction');
    
im.fire('ImageEditorWillSave');

    $.
fn.dialog.showLoader();

    
im.stage.toDataURL({
        
callback: function (data) {
            var 
fake_canvas = $('<img />').addClass('fake_canvas').appendTo(im.editorContext.children('.Editor'));
            
fake_canvas.attr('src', data);

            
fake_canvas.css({
                
position: 'absolute',
                
top: 0,
                
left: 0,
                
backgroundColor: 'white'
            
});

            var 
oldStagePosition = im.stage.getPosition(),
                
oldScale = im.scale,
                
oldWidth = im.stage.getWidth(),
                
oldHeight = im.stage.getHeight();

            
im.stage.setPosition(-im.saveArea.getX(), -im.saveArea.getY());
            
im.stage.setScale(1);
            
im.background.hide();
            
im.foreground.hide();
            
im.stage.setHeight(im.saveHeight + 100);
            
im.stage.setWidth(im.saveWidth + 100);
            
im.stage.draw();

            var 
mime = settings.mime;
            if (
mime !== 'image/jpeg' && mime !== 'image/png') {
                
// default to png
                
mime = 'image/png';
            }

            
im.stage.toDataURL({
                
mimeType: mime,
                
quality: settings.jpegCompression,
                
width: im.saveWidth,
                
height: im.saveHeight,
                
callback: function saveImageDataUrlCallback(url) {
                    
im.stage.setPosition(oldStagePosition);
                    
im.background.show();
                    
im.foreground.show();
                    
im.stage.setScale(oldScale);
                    
im.stage.setHeight(oldHeight);
                    
im.stage.setWidth(oldWidth);
                    
im.stage.draw();

                    
fake_canvas.remove();

                    $.
post(im.saveUrl, _.extend(im.saveData, {
                        
fID: im.fileId,
                        
imgData: url
                    
}), function (res) {
                        $.
fn.dialog.hideLoader();
                        var 
result = JSON.parse(res);
                        if (
result.error === 1) {
                            
alert(result.message);
                            $(
'button.save[disabled]').attr('disabled', false);
                        } else if (
result.error === 0) {
                            
im.fire('ImageEditorDidSave', _.extend(im.saveData, {
                                
fID: im.fileId,
                                
imgData: url
                            
}));
                            
Concrete.event.fire('ImageEditorDidSave', _.extend(im.saveData, {
                                
fID: im.fileId,
                                
imgData: url
                            
}));
                        }
                    });
                }
            });
        }
    });
};

im.actualPosition = function actualPosition(x, y, cx, cy, rad) {
    var 
ay = y - cy,
        
ax = x - cx,
        
degChange = im.activeElement.getRotation() + Math.atan2(ay, ax),
        
r = Math.sqrt(Math.pow(ax, 2) + Math.pow(ay, 2));
    return [
cx + (r * Math.cos(degChange)), cy + (r * Math.sin(degChange))];
};

im.getActualRect = function actualRect(cx, cy, elem) {
    var 
rect = [], rad = elem.getRotation();
    
rect.push(im.actualPosition(elem.getX(), elem.getY(), cx, cy, rad));
    
rect.push(im.actualPosition(elem.getX() + elem.getWidth() * elem.getScaleX(), elem.getY(), cx, cy, rad));
    
rect.push(im.actualPosition(elem.getX() + elem.getWidth() * elem.getScaleX(), elem.getY() + elem.getHeight() * elem.getScaleY(), cx, cy, rad));
    
rect.push(im.actualPosition(elem.getX(), elem.getY() + elem.getHeight() * elem.getScaleY(), cx, cy, rad));
    return 
rect;
};

im.adjustSavers = function AdjustingSavers(fire) {
    if (
im.activeElement.nodeType === 'Stage') return;
    
im.foreground.autoCrop = false;
    
im.background.autoCrop = false;
    var 
i, e, u, score = {min: {x: false, y: false}, max: {x: false, y: false}};
    
/*
     for (var i = im.stage.children.length - 1; i >= 0; i--) {
     var layer = im.stage.children[i];
     if (layer.autoCrop === false) continue;
     for (var e = layer.children.length - 1; e >= 0; e--) {
     var child = layer.children[e],
     rect = im.getActualRect(0, 0, child);
     console.log(child);

     for (var u = rect.length - 1; u >= 0; u--) {
     var point = rect[u], x = point[0] + layer.getX(), y = point[1] + layer.getY();
     if (x > score.max.x || score.max.x === false) score.max.x = x;
     if (x < score.min.x || score.min.x === false) score.min.x = x;
     if (y > score.max.y || score.max.y === false) score.max.y = y;
     if (y < score.min.y || score.min.y === false) score.min.y = y;
     }
     }
     }
     */
    
var child = im.activeElement,
        
layer = child.parent,
        
rect = im.getActualRect(0, 0, child),
        
u, size;

    for (
u = rect.length - 1; u >= 0; u--) {
        var 
point = rect[u], x = point[0] + layer.getX(), y = point[1] + layer.getY();
        if (
x > score.max.x || score.max.x === false) score.max.x = x;
        if (
x < score.min.x || score.min.x === false) score.min.x = x;
        if (
y > score.max.y || score.max.y === false) score.max.y = y;
        if (
y < score.min.y || score.min.y === false) score.min.y = y;
    }

    
size = {width: score.max.x - score.min.x, height: score.max.y - score.min.y};
    if (!
im.strictSize) {
        
im.alterCore('saveWidth', Math.round(size.width));
        
im.alterCore('saveHeight', Math.round(size.height));
        
im.buildBackground();
    }

    var 
ap = [im.center.x - (im.activeElement.getWidth() * im.activeElement.getScaleX()) / 2,
            
im.center.y - (im.activeElement.getHeight() * im.activeElement.getScaleY()) / 2],
        
adj = im.actualPosition(ap[0], ap[1], im.center.x, im.center.y, im.activeElement.getRotation());

    
im.activeElement.parent.setPosition(adj.map(Math.round));

    if (
fire !== false) im.fire('adjustedsavers');
    
im.stage.draw();
};

im.bind('imageLoad', function () {
    
setTimeout(im.adjustSavers, 0);
});
?>
Онлайн: 2
Реклама