~stefan-schwarzburg/qreator/touch-reorganized-colortheme

« back to all changes in this revision

Viewing changes to qreator/QrCodeCanvas.qml

  • Committer: Stefan Schwarzburg
  • Date: 2013-06-13 09:13:52 UTC
  • Revision ID: stefan.schwarzburg@gmail.com-20130613091352-w3olbgn62ubcirdk
Started to implement a color theme selector. 

Working so far: change foreground color of the standard theme by moving rgb sliders in the theme-page.
Not working: changing background color; changing main or eye theme.

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
    id: container
9
9
    height: parent.height
10
10
    width: parent.width
11
 
    property string text
 
11
 
 
12
    property var qrModules: [21, 25, 29, 33, 37, 41, 45, 49, 53, 57, 61, 65, 69, 73, 77, 81, 85, 89, 93, 97, 101, 105, 109, 113, 117, 121, 125, 129, 133, 137, 141, 145, 149, 153, 157, 161, 165, 169, 173, 177]
 
13
    property string text: "Qreator"
 
14
    property int qrCodeVersion: 4
 
15
    property string qrErrorLevel: 'M'
 
16
    property real qrPixelSize: height / qrModules[qrCodeVersion - 1] 
12
17
 
13
18
    RectangularGlow {
14
19
        id: effect
24
29
        width: container.width
25
30
        height: container.height
26
31
        antialiasing: true
27
 
            
28
32
        onPaint: drawQrCode(container.text)
29
33
    }
30
34
    
 
35
 
31
36
    function requestQrCodePaint(textme) {
32
37
        container.text = textme;
33
38
        qrcanvas.requestPaint();
35
40
 
36
41
    function drawQrCode (textdata) {
37
42
        var ctx = qrcanvas.getContext('2d');
38
 
        
39
 
        var pixel_size = 8;
40
 
        // Determines the overall dimensions of the symbol (1..10)
41
 
        // We choose Version 4 (33×33).
42
 
        var QRCodeVersion = 4;
43
 
        var QRErrorCorrectLevel = 'M'
 
43
        var pixel_size = container.qrPixelSize;
 
44
        var QRCodeVersion = container.qrCodeVersion;
 
45
        var QRErrorCorrectLevel = container.qrErrorLevel;
44
46
        var qr = QrCode.qrcode(QRCodeVersion, QRErrorCorrectLevel);
45
47
        
46
48
        qr.addData(textdata);
47
49
        qr.make();
48
50
 
49
 
        for (var row = 0; row < qr.getModuleCount(); row++) {
50
 
            for (var col = 0; col < qr.getModuleCount(); col++) {
51
 
                if (qr.isDark(row, col) ) {
52
 
                        ctx.fillStyle = "rgb(51,51,51)";
53
 
                } else {
54
 
                        ctx.fillStyle = "rgb(255,255,255)";  
55
 
                }
56
 
                drawPixelShape(ctx, 1, col*pixel_size, row*pixel_size, pixel_size, pixel_size);
57
 
            }
58
 
        }
59
 
    }
60
 
 
61
 
    function drawPixelShape(context, shape, x, y, width, height){
62
 
        // FIXME: need to add constants (enum) for shape. See
63
 
        // http://www.misfitgeek.com/2011/10/using-enum-in-javascript/
64
 
        if (shape == 1) {
65
 
            // Square-shaped pixels
66
 
            context.fillRect (x, y, width, height);
67
 
        }
68
 
 
69
 
        if (shape == 2) {
70
 
            // Round-shaped pixels
71
 
            context.beginPath();
72
 
            context.arc(x + width/2, y + height/2, width/2, 0, 2 * Math.PI, false);
73
 
            context.fill();
74
 
        }
75
 
 
76
 
    }
 
51
        // loop over pixels
 
52
        standardTheme.drawDots(qr, ctx, pixel_size)
 
53
    }
 
54
 
77
55
}