darker実装の為のテスト

Godが降りてきた(・∀・)

by ethertank

CSS

canvas{box-shadow:0 2px 8px #000;margin:10px;border:10px solid #000;}

JavaScript

var c = document.createElement("canvas");
c.width = 200;
c.height = 200;
document.body.appendChild(c);

var ctx = c.getContext('2d');
ctx.save();
ctx.fillStyle = "#00f";
ctx.fillRect(0, 0, 200, 200);
ctx.globalCompositeOperation = "darker";
ctx.fillStyle = "#ff0";
ctx.fillRect(50, 50, 100, 100);
ctx.restore();



var c2 = document.createElement("canvas");
c2.width = 200;
c2.height = 200;
document.body.appendChild(c2);

var ctx2 = c2.getContext("2d");

ctx2.fillStyle = "#ff0"; //inverted #00f
ctx2.fillRect(0, 0, 200, 200);
ctx2.globalCompositeOperation = "lighter"; // inverted darker
ctx2.fillStyle = "#00f"; //inverted #ff0
ctx2.fillRect(50, 50, 100, 100);
ctx2.restore();

var imageData = ctx2.getImageData(0, 0, 200, 200);
var data = imageData.data;

// invert all of ctx2's data
for (var i = 0; i < data.length; i += 4) {
    data[i] = 255 - data[i]; //R
    data[i + 1] = 255 - data[i + 1]; //G
    data[i + 2] = 255 - data[i + 2]; //B
}

// put!
ctx2.putImageData(imageData, 0, 0);

// yeah!(・∀・)
document.body.appendChild(c2);