annotate pkg/geoserver/templates.go @ 3841:8e47d6f12998 sld-colors

Merged default into sld-colors branch.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 08 Jul 2019 14:34:42 +0200
parents 0ffea636d6b0
children 3fcc4e11fc00
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
2 // without warranty, see README.md and license for details.
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
3 //
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
6 //
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
7 // Copyright (C) 2018 by via donau
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
9 // Software engineering by Intevation GmbH
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
10 //
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
11 // Author(s):
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
12 // * Sascha L. Teichmann <sascha.teichmann@intevation.de>
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
13
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
14 package geoserver
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
15
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
16 import (
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
17 "context"
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
18 "database/sql"
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
19 "fmt"
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
20 "image/color"
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
21 "math"
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
22 "sort"
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
23 "strconv"
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
24 "strings"
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
25 "text/template"
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
26
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
27 "gemma.intevation.de/gemma/pkg/auth"
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
28 )
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
29
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
30 const (
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
31 selectClassBreaksSQL = `
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
32 SELECT config_val FROM sys_admin.system_config
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
33 WHERE config_key = $1`
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
34 )
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
35
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
36 func init() {
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
37 RegisterStylePreprocessor(
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
38 "sounding_results_contour_lines_geoserver",
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
39 templateContourLinesFunc("morphology_classbreaks"))
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
40 RegisterStylePreprocessor(
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
41 "sounding_differences",
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
42 templateContourLinesFunc("morphology_classbreaks_compare"))
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
43 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
44
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
45 type (
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
46 colorClass struct {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
47 value float64
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
48 color color.RGBA
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
49 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
50
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
51 colorClasses []colorClass
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
52
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
53 classBreak struct {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
54 High float64
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
55 HasHigh bool
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
56 Low float64
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
57 HasLow bool
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
58 color color.RGBA
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
59 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
60 )
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
61
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
62 func (cb *classBreak) Color() string {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
63 return fmt.Sprintf("#%02x%02x%02x",
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
64 cb.color.R,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
65 cb.color.G,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
66 cb.color.B,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
67 )
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
68 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
69
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
70 func (cc colorClasses) toClassBreaks() []classBreak {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
71
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
72 cbs := make([]classBreak, len(cc), len(cc)+1)
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
73 for i := range cc {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
74 if i > 0 {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
75 cbs[i].Low = cc[i-1].value
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
76 cbs[i].HasLow = true
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
77 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
78 cbs[i].High = cc[i].value
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
79 cbs[i].HasHigh = true
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
80 cbs[i].color = cc[i].color
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
81 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
82 if len(cc) > 0 {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
83 cbs = append(cbs, classBreak{
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
84 color: cc[len(cc)-1].color,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
85 Low: cc[len(cc)-1].value,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
86 HasLow: true,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
87 })
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
88 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
89
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
90 return cbs
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
91 }
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
93 func (cc colorClasses) interpolate(v float64) (color.RGBA, bool) {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 if len(cc) == 0 || v < cc[0].value || v > cc[len(cc)-1].value {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95 return color.RGBA{}, false
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
98 if len(cc) == 1 {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
99 return cc[0].color, cc[0].value == v
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
100 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
101
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
102 for i := 0; i < len(cc)-1; i++ {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 v1 := cc[i].value
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 v2 := cc[i+1].value
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
105 if v1 <= v && v <= v2 {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106 // f(v1) = 0
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 // f(v2) = 1
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 // 0 = m*v1 + c <=> c = -m*v1
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 // 1 = m*v2 + c
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 // (1 - 0) = m*(v2 - v1)
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 // m = 1/(v2 - v1) for v2 != v1
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113 if v1 == v2 {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114 return color.RGBA{
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 R: uint8((uint16(cc[i].color.R) + uint16(cc[i+1].color.R)) / 2),
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116 G: uint8((uint16(cc[i].color.G) + uint16(cc[i+1].color.G)) / 2),
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 B: uint8((uint16(cc[i].color.B) + uint16(cc[i+1].color.B)) / 2),
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 A: 0xff,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
119 }, true
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
120 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121 m := 1 / (v2 - v1)
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
122 c := -m * v1
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
123 s := v*m + c
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124
3830
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
125 interpolate := func(a, b uint8) uint8 {
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
126 v := math.Round(float64(a) + (float64(b)-float64(a))*s)
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
127 if v < 0 {
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
128 return 0
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
129 }
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
130 if v > 255 {
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
131 return 255
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
132 }
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
133 return uint8(v)
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
134 }
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
135
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
136 return color.RGBA{
3830
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
137 R: interpolate(cc[i].color.R, cc[i+1].color.R),
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
138 G: interpolate(cc[i].color.G, cc[i+1].color.G),
464a6a6e05e6 Clean color handling a bit.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3828
diff changeset
139 B: interpolate(cc[i].color.B, cc[i+1].color.B),
3826
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 A: 0xff,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 }, true
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
142 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145 return color.RGBA{}, false
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 func parseColorClasses(s string) (colorClasses, error) {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
150 var err error
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
151
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
152 parseFloat := func(s string) float64 {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
153 var v float64
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
154 if err == nil {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
155 v, err = strconv.ParseFloat(s, 64)
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
156 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157 return v
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
160 parseColor := func(s string) color.RGBA {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
161 if err != nil {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
162 return color.RGBA{}
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
163 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
164 s = strings.Map(func(r rune) rune {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
165 if ('a' <= r && r <= 'f') || ('0' <= r && r <= '9') {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
166 return r
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
167 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
168 return -1
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
169 }, strings.ToLower(s))
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
170
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
171 var v int64
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
172 v, err = strconv.ParseInt(s, 16, 64)
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
173 return color.RGBA{
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
174 R: uint8(v >> 16),
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
175 G: uint8(v >> 8),
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
176 B: uint8(v >> 0),
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
177 A: 0xff,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
178 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
179 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
181 lines := strings.Split(s, ",")
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
182
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
183 // first pass: find defined colors
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
184 var defined colorClasses
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
185
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
186 for _, line := range lines {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
187 // ignore the lines w/o a color.
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
188 if !strings.ContainsRune(line, ':') {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
189 continue
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
190 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
191 parts := strings.SplitN(line, ":", 2)
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
192 if len(parts) < 2 {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
193 continue
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
194 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
195 value := parseFloat(parts[0])
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
196 color := parseColor(parts[1])
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
197
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
198 defined = append(defined, colorClass{
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
199 value: value,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
200 color: color,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
201 })
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
202 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
203
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
204 if err != nil {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
205 return nil, err
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
206 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
207
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
208 sort.Slice(defined, func(i, j int) bool {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
209 return defined[i].value < defined[j].value
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
210 })
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
211
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
212 // second pass: interpolate the rest
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
213 var final colorClasses
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
214 for _, line := range lines {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
215 if idx := strings.IndexRune(line, ':'); idx >= 0 {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
216 line = line[:idx]
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
217 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
218 value := parseFloat(line)
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
219 if color, ok := defined.interpolate(value); ok {
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
220 final = append(final, colorClass{
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
221 value: value,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
222 color: color,
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
223 })
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
224 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
225 }
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
226
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
227 return final, err
4b1184fa0326 Added templating and a failing test.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
228 }
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
229
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
230 func templateContourLinesFunc(configKey string) func(string) (string, error) {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
231 return func(data string) (string, error) {
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
232 return templateContourLines(data, configKey)
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
233 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
234 }
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
235
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
236 func templateContourLines(data, configKey string) (string, error) {
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
237 tmpl, err := template.New("template").Parse(data)
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
238 if err != nil {
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
239 return "", err
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
240 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
241
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
242 var cb []classBreak
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
243
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
244 if cb, err = countourLinesClassBreaks(configKey); err != nil {
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
245 return "", err
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
246 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
247
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
248 var buf strings.Builder
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
249 if err = tmpl.Execute(&buf, cb); err != nil {
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
250 return "", err
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
251 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
252 return buf.String(), nil
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
253 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
254
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
255 func countourLinesClassBreaks(configKey string) ([]classBreak, error) {
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
256
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
257 var config string
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
258 ctx := context.Background()
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
259 if err := auth.RunAs(
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
260 ctx,
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
261 "sys_admin",
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
262 func(conn *sql.Conn) error {
3831
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
263 return conn.QueryRowContext(
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
264 ctx,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
265 selectClassBreaksSQL,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
266 configKey,
0ffea636d6b0 Prepared class break templating mechanism to work with differences, too. Needs an adjusted template.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3830
diff changeset
267 ).Scan(&config)
3828
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
268 },
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
269 ); err != nil {
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
270 return nil, err
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
271 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
272
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
273 cc, err := parseColorClasses(config)
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
274 if err != nil {
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
275 return nil, err
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
276 }
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
277
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
278 return cc.toClassBreaks(), nil
885eb90255ff Cleanup templating of styles [WIP].
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 3826
diff changeset
279 }