// Copyright 2014 by Sascha L. Teichmann // Use of this source code is governed by the MIT license // that can be found in the LICENSE file. package main import ( "bufio" "fmt" "image/color" "os" "strings" ) type Colors struct { Colors []color.RGBA NameIndex map[string]int32 } func ParseColors(filename string) (colors *Colors, err error) { var file *os.File if file, err = os.Open(filename); err != nil { return } defer file.Close() nameIndex := make(map[string]int32) cols := make([]color.RGBA, 0, 2200) scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() if strings.HasPrefix(line, "#") { continue } c := color.RGBA{A: 0xff} var name string if n, _ := fmt.Sscanf( line, "%s %d %d %d %d", &name, &c.R, &c.G, &c.B, &c.A); n > 0 { idx := int32(len(cols)) cols = append(cols, c) nameIndex[name] = idx } } err = scanner.Err() colors = &Colors{Colors: cols, NameIndex: nameIndex} return }