MCPcopy
hub / github.com/tdewolff/canvas / parseDimension

Method parseDimension

svg.go:155–205  ·  view source on GitHub ↗
(v string, parent float64)

Source from the content-addressed store, hash-verified

153}
154
155func (svg *svgParser) parseDimension(v string, parent float64) float64 {
156 if len(v) == 0 {
157 return 0.0
158 }
159
160 nn, _ := parse.Dimension([]byte(v))
161 num, err := strconv.ParseFloat(v[:nn], 64)
162 if err != nil {
163 if svg.err == nil {
164 svg.err = parse.NewErrorLexer(svg.z, "bad dimension: %w: %s", err, v)
165 }
166 return 0.0
167 }
168
169 dim := v[nn:]
170 switch strings.ToLower(dim) {
171 // lengths
172 case "cm":
173 return num * 10.0 * 96.0 / 25.4
174 case "mm":
175 return num * 96.0 / 25.4
176 case "q":
177 return num * 0.25 * 96.0 / 25.4
178 case "in":
179 return num * 96.0
180 case "pc":
181 return num * 96.0 / 6.0
182 case "pt":
183 return num * 96.0 / 72.0
184 case "", "px":
185 return num
186
187 // angles
188 case "deg":
189 return num
190 case "grad":
191 return num / 400.0 * 360.0
192 case "rad":
193 return num / math.Pi * 180.0
194 case "turn":
195 return num * 360.0
196
197 // other
198 case "%":
199 return num * parent / 100.0
200 }
201 if svg.err == nil {
202 svg.err = parse.NewErrorLexer(svg.z, "unknown dimension: %s", dim)
203 }
204 return 0.0
205}
206
207func (svg *svgParser) parseColorComponent(v string) uint8 {
208 v = strings.TrimSpace(v)

Callers 4

parseViewBoxMethod · 0.95
parseDefsMethod · 0.95
setAttributeMethod · 0.95
drawShapeMethod · 0.95

Calls

no outgoing calls

Tested by

no test coverage detected