File: matrix.lua

package info (click to toggle)
oocairo 1.4-1.2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 712 kB
  • sloc: ansic: 3,352; makefile: 59; sh: 15
file content (68 lines) | stat: -rw-r--r-- 1,947 bytes parent folder | download
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
require "test-setup"
require "lunit"
local Cairo = require "oocairo"

module("test.matrix", lunit.testcase, package.seeall)

function test_create ()
    local m = Cairo.matrix_create()
    check_matrix_elems(m)
    assert_equal("cairo matrix object", m._NAME)
    assert_equal(1, m[1]); assert_equal(0, m[3]); assert_equal(0, m[5])
    assert_equal(0, m[2]); assert_equal(1, m[4]); assert_equal(0, m[6])
end

function test_transform ()
    local m = Cairo.matrix_create()
    m:translate(3, 4)
    check_matrix_elems(m)
    assert_equal(1, m[1]); assert_equal(0, m[3]); assert_equal(3, m[5])
    assert_equal(0, m[2]); assert_equal(1, m[4]); assert_equal(4, m[6])

    m = Cairo.matrix_create()
    m:scale(2, 3)
    check_matrix_elems(m)
    assert_equal(2, m[1]); assert_equal(0, m[3]); assert_equal(0, m[5])
    assert_equal(0, m[2]); assert_equal(3, m[4]); assert_equal(0, m[6])

    m = Cairo.matrix_create()
    m:rotate(2)
    check_matrix_elems(m)
    assert_not_equal(1, m[1]); assert_not_equal(0, m[3]); assert_equal(0, m[5])
    assert_not_equal(0, m[2]); assert_not_equal(1, m[4]); assert_equal(0, m[6])
end

function test_invert ()
    local m = Cairo.matrix_create()
    m:translate(3, 4)
    m:scale(2, 3)
    m:rotate(2)
    m:invert()
    check_matrix_elems(m)
end

function test_multiply ()
    local m1, m2 = Cairo.matrix_create(), Cairo.matrix_create()
    m1:scale(2, 3)
    m2:translate(4, 5)
    m1:multiply(m2)
    check_matrix_elems(m1)
    assert_equal(2, m1[1]); assert_equal(0, m1[3]); assert_equal(4, m1[5])
    assert_equal(0, m1[2]); assert_equal(3, m1[4]); assert_equal(5, m1[6])
end

function test_apply_transformation ()
    local m = Cairo.matrix_create()
    m:scale(2, 3)
    m:translate(4, 5)

    local x, y = m:transform_point(10, 100)
    assert_equal(28, x)
    assert_equal(315, y)

    x, y = m:transform_distance(10, 100)
    assert_equal(20, x)
    assert_equal(300, y)
end

-- vi:ts=4 sw=4 expandtab