blob: a68b5be59fbf0d3a5ea0f21a6c07ec85cde52ed7 (
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
|
Please note that the behavior documented here (from Sodipodi) should be considered a bug.
Inkscape should switch to the native SVG coordinate system.
-mental
Coordinate systems used by sodipodi
1. Desktop coordinates
Are the base coordinate system of all editing, UI etc.
i.e. the ones user is directly seeing (maybe some time
we'll make this configurable).
0,0 is at lower-left
X grows to the right
Y grows upwards
Only valid units are real-world ones (mm, cm...) - i.e.
there is no such unit as pixel etc.
If printed, 1 desktop mm should be 1mm on paper
2. Document coordinates
As we all know, SVG Y grows downwards. So document is
placed at 0,HEIGHT, mirrored vertically, where HEIGHT
is vieport height in desktop coordinates.
Moreover SVG coordinate space is scaled by 0.8, so
1mm in SVG space equals 1mm in desktop space.
The full matrix looks like:
[ 0.8 0.0 0.0 ]
[ 0.0 -0.8 HEIGHT ]
Where height equals SVG viewport height in real units
i.e. if viewport is 210mmx297mm HEIGHT is also 297mm.
Document coordinates are stored in desktop object,
as doc2dt[] matrix, and not directly accessible to
document itself. I.e. document renders it just as any
normal SVG viewer should do.
Technically SVG placement is achieved by specifying
doc2dt transform to drawing parent canvas group.
3. user coordinates
These are as specified by SVG spec.
1 px == 1 user unit
1 pt == 1.25 px
etc.
31/08/2002 Lauris Kaplinski <lauris@kaplinski.com>
|