// usage creates any necessary tags for actually using the service in the SVG. func (s *service) usage(canvas *svg.SVG, iconIds map[string]string) { canvas.Use( s.point.X, s.point.Y, "#serviceBlock", fmt.Sprintf(`id=%q`, s.name)) if len(s.iconSrc) > 0 { canvas.Use( s.point.X+serviceBlockSize/2-iconSize/2, s.point.Y+serviceBlockSize/2-iconSize/2, "#"+iconIds[s.charmPath], fmt.Sprintf(`width="%d" height="%d"`, iconSize, iconSize), ) } else { canvas.Image( s.point.X+serviceBlockSize/2-iconSize/2, s.point.Y+serviceBlockSize/2-iconSize/2, iconSize, iconSize, s.iconUrl, ) } canvas.Textlines( s.point.X+serviceBlockSize/2, s.point.Y+serviceBlockSize/6, []string{s.name}, serviceBlockSize/10, 0, "#505050", "middle") }