diff --git a/Auto-Image.js b/Auto-Image.js index 36cfba3..2e870e5 100644 --- a/Auto-Image.js +++ b/Auto-Image.js @@ -13,6 +13,10 @@ PAINTING_SPEED_ENABLED: false, AUTO_CAPTCHA_ENABLED: false, // Disabled by default COOLDOWN_CHARGE_THRESHOLD: 1, // Default wait threshold + OVERLAY: { + OPACITY_DEFAULT: 0.6, + BLUE_MARBLE_DEFAULT: false, + }, // --- START: Color data from colour-converter.js --- COLOR_PALETTE: [ [0,0,0],[60,60,60],[120,120,120],[170,170,170],[210,210,210],[255,255,255], @@ -351,6 +355,8 @@ language: "en", paintingSpeed: CONFIG.PAINTING_SPEED.DEFAULT, // pixels per second cooldownChargeThreshold: CONFIG.COOLDOWN_CHARGE_THRESHOLD, + overlayOpacity: CONFIG.OVERLAY.OPACITY_DEFAULT, + blueMarbleEnabled: CONFIG.OVERLAY.BLUE_MARBLE_DEFAULT, } // Placeholder for the resize preview update function @@ -442,6 +448,28 @@ chunkCtx.drawImage(this.imageBitmap, sX, sY, sW, sH, dX, dY, sW, sH); + // --- NEW: BLUE MARBLE EFFECT --- + if (state.blueMarbleEnabled) { + const imageData = chunkCtx.getImageData(0, 0, this.tileSize, this.tileSize); + const data = imageData.data; + for (let pixelY = 0; pixelY < this.tileSize; pixelY++) { + for (let pixelX = 0; pixelX < this.tileSize; pixelX++) { + const canvasX = pixelX; + const canvasY = pixelY; + const imageX = canvasX - dX; + const imageY = canvasY - dY; + + if ((imageX + imageY) % 2 === 0) { + const index = (canvasY * this.tileSize + canvasX) * 4; + if (data[index + 3] > 0) { + data[index + 3] = 0; + } + } + } + } + chunkCtx.putImageData(imageData, 0, 0); + } + const chunkBitmap = await chunkCanvas.transferToImageBitmap(); this.chunkedTiles.set(tileKey, chunkBitmap); } @@ -475,7 +503,7 @@ ctx.drawImage(originalTileBitmap, 0, 0); // Set opacity and draw our solid overlay chunk on top - ctx.globalAlpha = 0.6; + ctx.globalAlpha = state.overlayOpacity; ctx.drawImage(chunkBitmap, 0, 0); finalBlob = await canvas.convertToBlob({ type: 'image/png' }); @@ -2666,6 +2694,32 @@ window.addEventListener('message', (event) => { + +
+ +
+ +
+
+ Overlay Opacity +
${Math.round(state.overlayOpacity * 100)}%
+
+ +
+ + +
+
+