Code

bdb6bcad3271bdc19fd59c9a6ce62c043c5b90ce
[inkscape.git] / src / 2geom / transforms.cpp
1 #include "transforms.h"
3 namespace Geom {
5 Matrix operator*(Translate const &t, Scale const &s) {
6     Matrix ret(s);
7     ret[4] = t[X] * s[X];
8     ret[5] = t[Y] * s[Y];
9     return ret;
10 }
12 Matrix operator*(Translate const &t, Rotate const &r) {
13     Matrix ret(r);
14     ret.setTranslation(t.vec * ret);
15     return ret;
16 }
18 Matrix operator*(Scale const &s, Translate const &t) {
19     return Matrix(s[0], 0,
20                   0   , s[1],
21                   t[0], t[1]);
22 }
24 Matrix operator*(Scale const &s, Matrix const &m) {
25     Matrix ret(m);
26     ret[0] *= s[X];
27     ret[1] *= s[X];
28     ret[2] *= s[Y];
29     ret[3] *= s[Y];
30     return ret;
31 }
33 Matrix operator*(Matrix const &m, Translate const &t) {
34     Matrix ret(m);
35     ret[4] += t[X];
36     ret[5] += t[Y];
37     return ret;
38 }
40 Matrix operator*(Matrix const &m, Scale const &s) {
41     Matrix ret(m);
42     ret[0] *= s[X]; ret[1] *= s[Y];
43     ret[2] *= s[X]; ret[3] *= s[Y];
44     ret[4] *= s[X]; ret[5] *= s[Y];
45     return ret;
46 }
48 }
50 /*
51   Local Variables:
52   mode:c++
53   c-file-style:"stroustrup"
54   c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
55   indent-tabs-mode:nil
56   fill-column:99
57   End:
58 */
59 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :