// Copyright 2013 hanguofeng. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package gocaptcha

import (
	"strconv"
)

//ImageFilter is the interface of image filter
const IMAGE_FILTER_NOISE_LINE = "ImageFilterNoiseLine"

type ImageFilterNoiseLine struct {
	ImageFilterBase
}

func imageFilterNoiseLineCreator(config FilterConfigGroup) ImageFilter {
	filter := ImageFilterNoiseLine{}
	filter.SetConfig(config)
	return &filter
}

//Proc the image
func (filter *ImageFilterNoiseLine) Proc(cimage *CImage) {

	var num int
	var err error
	v, ok := filter.config.GetItem("Num")
	if ok {
		num, err = strconv.Atoi(v)
		if nil != err {
			num = 3
		}
	} else {
		num = 3
	}

	for i := 0; i < num; i++ {
		x := rnd(0, cimage.Bounds().Max.X)
		cimage.drawHorizLine(int(float32(x)/1.5), x, rnd(0, cimage.Bounds().Max.Y), uint8(rnd(1, colorCount)))
	}
}

func (filter *ImageFilterNoiseLine) GetId() string {
	return IMAGE_FILTER_NOISE_LINE
}