diff --git a/web/page/bspaint.js b/web/page/bspaint.js
index 23bbd32..6c2f654 100644
--- a/web/page/bspaint.js
+++ b/web/page/bspaint.js
@@ -282,8 +282,20 @@ function createDrawArea(canvas = blankCanvas()) {
ctx.restore();
}
this.composite();
+ },
+ removeLayer(layer=this.activeLayer) {
+ const i = layers.indexOf(layer);
+ if (i !==-1) {
+ layers.splice(i,1);
+ if (layer === this.activeLayer) {
+ this.activeLayer = layers[Math.min(layers.length-1,i)];
+ }
+ }
+ },
+ addEmptyLayer() {
+ layers.push( new Layer("new layer", canvas));
+
}
-
}
eventOverlay.pic = result;
sidebar.addEventListener("mousedown",_=> setExportPic(result))
@@ -731,7 +743,9 @@ function poulateLayerControl() {
-
+
`)
@@ -751,6 +765,14 @@ function poulateLayerControl() {
updateLayerList();
});
+ $(".add_layer").on("click",_=>{
+ activePic.addEmptyLayer();
+ updateLayerList();
+ });
+ $(".remove_layer").on("click",_=>{
+ activePic.removeLayer(activePic.activeLayer)
+ updateLayerList();
+ });
}
function updateLayerList() {
@@ -800,7 +822,7 @@ function updateLayerList() {
while(layer_list.firstChild) layer_list.removeChild(layer_list.firstChild)
if (!activePic) return;
-
+
const newControls = activePic.layers.map(makeLayerWidget);
newControls.reverse().forEach(element=>layer_list.appendChild(element))
diff --git a/web/page/style.css b/web/page/style.css
index dddb424..fbce755 100644
--- a/web/page/style.css
+++ b/web/page/style.css
@@ -260,10 +260,17 @@ input[type="color"] {
}
#layer_control {
+ --control-height :400px;
bottom:0px;
- height:400px;
+ height:var(--control-height);
}
+.layer_list {
+ height:calc(var(--control-height) - 100px);
+ overflow-y: auto;
+}
+
+
.layer-attributes {
position:relative;
}
@@ -346,6 +353,39 @@ input[type="color"] {
height:24px;
}
+.layer_actions {
+ position: absolute;
+ bottom: 2px;
+ border: 1px solid black;
+ height: 26px;
+ left: 0px;
+ right: 0px;
+}
+.layer_actions .remove_layer {
+ position:absolute;
+
+ width:24px;
+ height:24px;
+ right:0px;
+ bottom:0px;
+ box-sizing: border-box;
+
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-6 -12 24 24'%3E%3Cpath d='M 0 7 L -1 -6 L 13 -6 L 12 7 Z M 3 4 v -7 a 1 1 0 0 0 -1 0 v 7 a 1 1 0 0 0 1 0 Z M 6.5 4 v -7 a 1 1 0 0 0 -1 0 v 7 a 1 1 0 0 0 1 0 Z M 10 3.8 v -7 a 1 1 0 0 0 -1 0 v 7 a 1 1 0 0 0 1 0 m 4 -10 h -16 a 1 0.2 0 0 1 16 0 m -9 -1.3 h 2 a 1 1 0 0 0 -2 0' fill='%2300000080'/%3E%3C/svg%3E");
+}
+
+.layer_actions .add_layer {
+ position:absolute;
+
+ width:24px;
+ height:24px;
+ left:0px;
+ bottom:0px;
+ box-sizing: border-box;
+
+ background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-12 -12 24 24'%3E%3Cpath d='M -1 7 H 1 V 1 H 7 V -1 H 1 V -7 H -1 V -1 H -7 V 1 H -1' fill='%2300000080'/%3E%3C/svg%3E")
+}
+
+
input.maskColor {
display:inline-block;
position:absolute;
@@ -368,3 +408,4 @@ input.maskColor {
width: 100%;
text-align: center;
}
+