Mercurial > gemma
annotate pkg/mesh/meshserialize_v1.go @ 5687:8ff842858434 sr-v2
More stubs for serializing v2.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 12 Feb 2024 01:31:48 +0100 |
parents | a57be8bfb6ea |
children | da9720b4aa42 |
rev | line source |
---|---|
5675
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1 // This is Free Software under GNU Affero General Public License v >= 3.0 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
2 // without warranty, see README.md and license for details. |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
3 // |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
4 // SPDX-License-Identifier: AGPL-3.0-or-later |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
5 // License-Filename: LICENSES/AGPL-3.0.txt |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
6 // |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
7 // Copyright (C) 2024 by via donau |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
8 // – Österreichische Wasserstraßen-Gesellschaft mbH |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 // Software engineering by Intevation GmbH |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 // |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 // Author(s): |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de> |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 package mesh |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 import ( |
5676
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
17 "bufio" |
5675
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 "encoding/binary" |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 "io" |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 "math" |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 "gemma.intevation.de/gemma/pkg/log" |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 ) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 func (s *STRTree) serializeV1(w io.Writer) error { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 if err := s.tin.serializeV1(w); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 if err := binary.Write(w, binary.LittleEndian, uint8(s.Entries)); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 if err := s.serializeIndexV1(w); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 } |
5687
8ff842858434
More stubs for serializing v2.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5677
diff
changeset
|
35 return s.serializeBBoxesV1(w) |
5675
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 func (s *STRTree) serializeBBoxesV1(w io.Writer) error { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 if err := binary.Write(w, binary.LittleEndian, int32(len(s.bboxes))); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 var err error |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 write := func(v float64) { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 if err == nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 err = binary.Write(w, binary.LittleEndian, math.Float64bits(v)) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 for _, box := range s.bboxes { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 write(box.X1) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 write(box.Y1) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 write(box.X2) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 write(box.Y2) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
57 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
58 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
60 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
61 func (s *STRTree) serializeIndexV1(w io.Writer) error { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
62 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 if err := binary.Write(w, binary.LittleEndian, int32(len(s.index))); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
65 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
66 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 var buf [binary.MaxVarintLen32]byte |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 var last int32 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 var written int |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 for _, x := range s.index { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
73 delta := x - last |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
74 n := binary.PutVarint(buf[:], int64(delta)) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
75 for p := buf[:n]; len(p) > 0; p = p[n:] { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
76 var err error |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
77 if n, err = w.Write(p); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 written += n |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
81 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
82 last = x |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
83 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
84 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 log.Infof("compressed index in bytes: %d %.2f (%d %.2f)\n", |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
86 written, |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 float64(written)/(1024*1024), |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
88 4*len(s.index), |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 float64(4*len(s.index))/(1024*1024), |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
90 ) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
91 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 return nil |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 func (t *Tin) serializeV1(w io.Writer) error { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
97 if err := binary.Write(w, binary.LittleEndian, t.EPSG); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 if err := t.Min.Write(w); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
102 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
103 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 if err := t.Max.Write(w); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
106 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
108 if err := binary.Write( |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
109 w, binary.LittleEndian, uint32(len(t.Vertices))); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
111 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
112 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
113 var err error |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 vwrite := func(v float64) { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 if err == nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 err = binary.Write(w, binary.LittleEndian, math.Float64bits(v)) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
120 for _, v := range t.Vertices { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
121 vwrite(v.X) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
122 vwrite(v.Y) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
123 vwrite(v.Z) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
124 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
125 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
126 if err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
127 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
128 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 log.Infof("vertices %d (%d)\n", len(t.Vertices), len(t.Vertices)*3*8) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
130 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
131 if err := binary.Write( |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 w, binary.LittleEndian, uint32(len(t.Triangles))); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
134 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
135 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 var buf [binary.MaxVarintLen32]byte |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 var written int |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
138 var last int32 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 for _, triangle := range t.Triangles { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 for _, idx := range triangle { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
141 value := idx - last |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
142 n := binary.PutVarint(buf[:], int64(value)) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 for p := buf[:n]; len(p) > 0; p = p[n:] { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 var err error |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 if n, err = w.Write(p); err != nil { |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
146 return err |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
148 written += n |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
149 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
150 last = idx |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
151 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
152 } |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
153 log.Infof("compressed tin indices in bytes: %d (%d)\n", |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 written, 3*4*len(t.Triangles)) |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 return nil |
b8da63027b48
Started to separate mesh serialisation in different files.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
157 } |
5676
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
158 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
159 func (s *STRTree) deserializeBBoxesV1(r *bufio.Reader) error { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
160 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
161 var numBBoxes int32 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
162 if err := binary.Read(r, binary.LittleEndian, &numBBoxes); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
163 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
164 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
165 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
166 bboxes := make([]Box2D, numBBoxes) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
167 s.bboxes = bboxes |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
168 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
169 var err error |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
170 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
171 read := func(v *float64) { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
172 if err == nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
173 err = binary.Read(r, binary.LittleEndian, v) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
174 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
175 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
176 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
177 for i := range bboxes { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
178 read(&bboxes[i].X1) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
179 read(&bboxes[i].Y1) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
180 read(&bboxes[i].X2) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
181 read(&bboxes[i].Y2) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
182 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
183 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
184 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
185 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
186 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
187 func (s *STRTree) deserializeIndexV1(r *bufio.Reader) error { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
188 var numIndex int32 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
189 if err := binary.Read(r, binary.LittleEndian, &numIndex); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
190 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
191 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
192 index := make([]int32, numIndex) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
193 s.index = index |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
194 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
195 var last int32 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
196 for i := range index { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
197 v, err := binary.ReadVarint(r) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
198 if err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
199 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
200 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
201 value := int32(v) + last |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
202 index[i] = value |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
203 last = value |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
204 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
205 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
206 return nil |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
207 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
208 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
209 func (s *STRTree) deserializeV1(r *bufio.Reader) error { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
210 s.tin = new(Tin) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
211 if err := s.tin.deserializeV1(r); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
212 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
213 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
214 var numEntries uint8 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
215 if err := binary.Read(r, binary.LittleEndian, &numEntries); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
216 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
217 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
218 s.Entries = int(numEntries) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
219 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
220 if err := s.deserializeIndexV1(r); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
221 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
222 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
223 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
224 return s.deserializeBBoxesV1(r) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
225 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
226 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
227 // deserializeV1 restores a TIN from a binary representation. |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
228 func (t *Tin) deserializeV1(r *bufio.Reader) error { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
229 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
230 if err := binary.Read(r, binary.LittleEndian, &t.EPSG); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
231 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
232 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
233 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
234 log.Infof("EPSG: %d\n", t.EPSG) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
235 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
236 if err := t.Min.Read(r); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
237 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
238 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
239 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
240 if err := t.Max.Read(r); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
241 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
242 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
243 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
244 log.Infof("BBOX: [[%f, %f, %f], [%f, %f, %f]]\n", |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
245 t.Min.X, t.Min.Y, t.Min.Z, |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
246 t.Max.X, t.Max.Y, t.Max.Z) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
247 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
248 var numVertices uint32 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
249 if err := binary.Read(r, binary.LittleEndian, &numVertices); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
250 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
251 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
252 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
253 log.Infof("vertices: %d\n", numVertices) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
254 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
255 vertices := make([]Vertex, numVertices) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
256 t.Vertices = vertices |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
257 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
258 for i := range vertices { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
259 if err := vertices[i].Read(r); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
260 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
261 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
262 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
263 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
264 var numTriangles uint32 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
265 if err := binary.Read(r, binary.LittleEndian, &numTriangles); err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
266 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
267 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
268 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
269 log.Infof("triangles: %d\n", numTriangles) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
270 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
271 indices := make([]int32, 3*numTriangles) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
272 triangles := make([][]int32, numTriangles) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
273 t.Triangles = triangles |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
274 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
275 var last int32 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
276 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
277 for i := range triangles { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
278 tri := indices[:3] |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
279 indices = indices[3:] |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
280 triangles[i] = tri |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
281 for j := range tri { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
282 v, err := binary.ReadVarint(r) |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
283 if err != nil { |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
284 return err |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
285 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
286 value := int32(v) + last |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
287 tri[j] = value |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
288 last = value |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
289 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
290 } |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
291 |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
292 return nil |
d56e043bbbca
More code moving.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
5675
diff
changeset
|
293 } |