summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/LayoutTests/fast/canvas/canvas-imageSmoothingQuality-pixel.html
blob: 052d407db879fa85a505d2dea465b1f9a05f0bd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<!DOCTYPE html>
<html>
    <head>
        <style>
.hide {display:none}
.row {display:table-row}
.cell {display:table-cell; padding:10px}
#test-output {display:table}
label {display:row}
        </style>
    </head>
    <body>

        <script src="../../resources/js-test.js"></script>
        <canvas class="hide" id="source-up-canvas"></canvas>
        <canvas class="hide" id="source-down-canvas"></canvas>
        <div id="test-output">
            <label>Scale Up</label>
            <div id="up" class="row">
                <div class="cell">
                    <div id="low-up"></div>
                    <canvas id="low-up-canvas"></canvas>
                </div>
                <div class="cell">
                    <div id="medium-up"></div>
                    <canvas id="medium-up-canvas"></canvas>
                </div>
                <div class="cell">
                    <div id="high-up"></div>
                    <canvas id="high-up-canvas"></canvas>
                </div>
            </div>

            <label>Scale Down</label>
            <div id="down" class="row">
                <div class="cell">
                    <div id="low-down"></div>
                    <canvas id="low-down-canvas"></canvas>
                </div>
                <div class="cell">
                    <div id="medium-down"></div>
                    <canvas id="medium-down-canvas"></canvas>
                </div>
                <div class="cell">
                    <div id="high-down"></div>
                    <canvas id="high-down-canvas"></canvas>
                </div>
            </div>
        </div>
        <script>
if (window.testRunner)
    window.testRunner.dumpAsTextWithPixelResults();

drawCanvas("source", "up", drawPicture);
drawCanvas("source", "down", drawWord);

qualities = ["low", "medium", "high"];
scales = ["up", "down"];
for (var i = 0; i < scales.length; i++) {
    for (var j = 0; j < qualities.length; j++) {
        drawCanvas(qualities[j], scales[i], copyPicture);
    }
}

function drawCanvas(quality, scale, drawFunc) {
    var id = quality + "-" + scale;
    var canvas = document.getElementById(id + "-canvas");
    var context = canvas.getContext("2d");
    var testCaseTitle = document.getElementById(id);
    if (testCaseTitle) {
        testCaseTitle.innerHTML = quality;
    }
    drawFunc(canvas, context, quality, scale);
}

function copyPicture(canvas, context, quality, scale) {
    var source = document.getElementById("source-" + scale + "-canvas");
    canvas.width = 100;
    canvas.height = 100;
    context.imageSmoothingQuality = quality;
    context.drawImage(source, 0, 0, canvas.width, canvas.height);
}

function drawWord(canvas, context) {
    canvas.width = 1800;
    canvas.height = 1800;
    context.font = '250pt Calibri';
    context.textAlign = 'center';
    context.fillStyle = 'blue';
    context.fillText('Hello World!', canvas.width/2, canvas.height/2);
}


function drawPicture(canvas, context) {
    canvas.width = 5;
    canvas.height = 5;

    var image = context.createImageData(canvas.width, canvas.height);

    function drawBlackDot(x, y, col) {
        var offset = y * 4 * canvas.width + x * 4;
        image.data[offset + 0] = col[0]; // R
        image.data[offset + 1] = col[1] ; // G
        image.data[offset + 2] = col[2] ; // B
        image.data[offset + 3] = 225; // Alpha
    }

    var imageData = [
        ['b', 'w', 'b', 'w', 'b',],['w', 'b', 'w', 'b', 'w',],
        ['b', 'w', 'b', 'w', 'b',],['w', 'b', 'w', 'b', 'w',],
        ['b', 'w', 'b', 'w', 'b',],
    ]
    var nameToColor = {
        'w' : [255,255,255],
        'b' : [0,0,0],
    }
    for (var x = 0 ; x < canvas.width; x++) {
        for (var y = 0; y < canvas.height; y++) {
            drawBlackDot(x, y, nameToColor[imageData[x][y]]);
        }
    }
    context.putImageData(image, 0, 0);
}
        </script>
    </body>
</html>