$(function() { let frame = $(".frame") let frameWidth = frame.attr("w") let frameHeight = frame.attr("h") let frameBorder = frame.attr("b") let frameAngle = frame.find("img.frame-angle").detach() let frameBorderTop = frame.find("img.frame-border-top").detach() let frameBorderRight = frame.find("img.frame-border-right").detach() let frameInsideBorderSize = $("#frame-box #frame-inside-border-size").val() let frameInsideBorder = $("#frame-box #frame-inside-border").val() frame.css({ "width": frameWidth, "height": frameHeight, "padding": frameBorder / 2 - 1, }) rerenderFrame() function rerenderFrame(frameBox = frame, width = frameWidth, height= frameHeight) { frameBox.css({ "width": width, "height": height }) } makeFrameAngles(frame) function makeFrameAngles(frame, frameAngleCopy = frameAngle) { frame.find('img.frame-angle').remove(); for (var i = 0; i < 4; i++) { var clonedAngle = frameAngleCopy.clone(); var rotationAngle = i * 90; clonedAngle.css({ "width": frameBorder, "height": frameBorder, "transform": "rotate(" + rotationAngle + "deg)" }); switch (i) { case 0: clonedAngle.addClass("frame-angle-top-left"); break; case 1: clonedAngle.addClass("frame-angle-top-right"); break; case 2: clonedAngle.addClass("frame-angle-bottom-right"); break; case 3: clonedAngle.addClass("frame-angle-bottom-left"); break; default: break; } frame.append(clonedAngle); } } makeFrameBorders(frame) function makeFrameBorders(frame, frameBorderTopCopy = frameBorderTop, frameBorderRightCopy = frameBorderRight){ frame.find('div.frame-border').remove(); for (var i = 0; i < 4; i++) { var emptyDiv = $("
"); var rotationAngle = i * 90; if ((i == 0 ) || (i == 2)) { emptyDiv.css({ "width": "calc(100% - " + frameBorder * 2 + "px + 2px)", "height": frameBorder / 2 + "px", "transform": "rotate(" + rotationAngle + "deg)", "background-image": "url(" + frameBorderTopCopy.attr('src') + ")", }) } else { emptyDiv.css({ "width": frameBorder / 2 + "px", "height": "calc(100% - " + frameBorder * 2 + "px + 2px)", "background-image": "url(" + frameBorderRightCopy.attr('src') + ")", }) } switch (i) { case 0: emptyDiv.addClass("frame-border-top"); emptyDiv.css({ "left": "calc(" + frameBorder + "px - 1px)", "top": 0, }) break; case 1: emptyDiv.addClass("frame-border-right"); emptyDiv.css({ "top": "calc(" + frameBorder + "px - 1px)", "right": 0, }) break; case 2: emptyDiv.addClass("frame-border-bottom"); emptyDiv.css({ "left": "calc(" + frameBorder + "px - 1px)", "bottom": 0, }) break; case 3: emptyDiv.addClass("frame-border-left"); emptyDiv.css({ "top": "calc(" + frameBorder + "px - 1px)", "left": 0, }) break; default: break; } frame.append(emptyDiv); } } //* Frame panel images handler $('#input-frame-image-btn').on('change', function(e) { var file = e.target.files[0]; var reader = new FileReader(); reader.onload = function(e) { var imageUrl = e.target.result; addImageToFrame(imageUrl) }; reader.readAsDataURL(file); }); function addImageToFrame(imageUrl) { frameWidth =$("#input-frame-width").val(); frame.find('img.frame-image').remove(); var imgElement = $('