// AddLayer adds a new layer with given name, color and line type. // If setcurrent is true, set current layer to it. func (d *Drawing) AddLayer(name string, cl color.ColorNumber, lt *table.LineType, setcurrent bool) (*table.Layer, error) { if l, exist := d.Layers[name]; exist { if setcurrent { d.CurrentLayer = l } return l, errors.New(fmt.Sprintf("layer %s already exists", name)) } l := table.NewLayer(name, cl, lt) l.SetPlotStyle(d.PlotStyle) d.Layers[name] = l d.Sections[2].(table.Tables).AddLayer(l) if setcurrent { d.CurrentLayer = l } return l, nil }
// ParseLayer parses LAYER tables. func ParseLayer(d *drawing.Drawing, data [][2]string) (table.SymbolTable, error) { var name string var flag int var col color.ColorNumber var lt *table.LineType var lw int for _, dt := range data { switch dt[0] { case "2": name = dt[1] case "70": val, err := strconv.ParseInt(strings.TrimSpace(dt[1]), 10, 64) if err != nil { return nil, err } flag = int(val) case "62": val, err := strconv.ParseInt(strings.TrimSpace(dt[1]), 10, 64) if err != nil { return nil, err } col = color.ColorNumber(val) case "6": l, err := d.LineType(dt[1]) if err != nil { return nil, err } lt = l case "370": val, err := strconv.ParseInt(strings.TrimSpace(dt[1]), 10, 64) if err != nil { return nil, err } lw = int(val) case "390": // plotstyle } } l := table.NewLayer(name, col, lt) l.SetFlag(flag) l.SetLineWidth(lw) l.SetPlotStyle(d.PlotStyle) return l, nil }