package main

import (
	"image"
	"image/color"
	"log"

	"git.lxtend.com/lixiangwuxian/imagedd/font2img"
	"git.lxtend.com/lixiangwuxian/imagedd/sprite"
)

func main() {
	board := sprite.NewNamedSpriteBoard()
	{
		whiteBackground := image.NewRGBA(image.Rect(0, 0, 200, 200))
		for i := range whiteBackground.Bounds().Dx() {
			for j := range whiteBackground.Bounds().Dy() {
				whiteBackground.Set(i, j, color.White)
			}
		}
		board.AddSprite(&sprite.Sprite{
			Name:     "background",
			Image:    whiteBackground,
			Index:    0,
			Position: image.Point{X: 0, Y: 0},
		})
	}
	// {
	// 	wordSprite := &sprite.Sprite{
	// 		Name:     "word",
	// 		Index:    5,
	// 		Position: image.Point{X: 0, Y: 0},
	// 	}
	// 	img, err := font2img.RenderCharToImage(font, '🤣', 90, color.Black)
	// 	if err != nil {
	// 		log.Fatal(err)
	// 	}
	// 	wordSprite.Image = img
	// 	board.AddSprite(wordSprite)
	// }
	{
		textSprite := &sprite.Sprite{
			Name:     "text",
			Index:    5,
			Position: image.Point{X: 10, Y: 12},
		}
		img, err := font2img.RenderTextToTrimmedImage(nil, "usss测试\n测试📧测✌试测\n试🥳🧁🍰\n🎁🎂🎈🎺🎉🎊\n📧🧿🌶无焊无缝🔋😂❤😍🤣😊🥺\n🙏💕😭😘👍\n😅👏测试测试", 12, color.Black, 0, 0)
		if err != nil {
			log.Fatal(err)
		}
		textSprite.Image = img
		board.AddSprite(textSprite)
	}
	// {
	// 	faceBytes, err := os.ReadFile("face.png")
	// 	if err != nil {
	// 		log.Fatal(err)
	// 	}
	// 	faceImage, err := png.Decode(bytes.NewReader(faceBytes))
	// 	if err != nil {
	// 		log.Fatal(err)
	// 	}
	// 	faceSprite := &sprite.Sprite{
	// 		Name:     "face",
	// 		Image:    faceImage,
	// 		Index:    1,
	// 		Position: image.Point{X: -100, Y: -100},
	// 	}
	// 	faceSprite.Rotate(math.Pi / 2)
	// 	board.AddSprite(faceSprite)
	// }
	// {
	// 	rect := image.NewRGBA(image.Rect(0, 0, 101, 101))
	// 	rectSprite := &sprite.Sprite{
	// 		Name:     "rect",
	// 		Image:    rect,
	// 		Index:    2,
	// 		Position: image.Point{X: 20, Y: 20},
	// 	}
	// 	lineL := &sprite.Line{
	// 		Start: image.Point{X: 0, Y: 100},
	// 		End:   image.Point{X: 50, Y: 0},
	// 		Width: 1,
	// 		Color: color.RGBA{0, 0, 0, 255},
	// 	}
	// 	lineL.AddToSprite(rectSprite)
	// 	lineR := &sprite.Line{
	// 		Start: image.Point{X: 100, Y: 100},
	// 		End:   image.Point{X: 50, Y: 0},
	// 		Width: 1,
	// 		Color: color.RGBA{0, 0, 0, 255},
	// 	}
	// 	lineR.AddToSprite(rectSprite)
	// 	lineB := &sprite.Line{
	// 		Start: image.Point{X: 0, Y: 100},
	// 		End:   image.Point{X: 100, Y: 100},
	// 		Width: 1,
	// 		Color: color.RGBA{0, 0, 0, 255},
	// 	}
	// 	lineB.AddToSprite(rectSprite)
	// 	board.AddSprite(rectSprite)
	// }
	// {
	// 	circleSprite := &sprite.Sprite{
	// 		Name:     "circle",
	// 		Image:    image.NewRGBA(image.Rect(0, 0, 101, 101)),
	// 		Index:    3,
	// 		Position: image.Point{X: 30, Y: 20},
	// 	}
	// 	for r := 15; r < 45; r++ {
	// 		circle := &sprite.Circle{
	// 			Center: image.Point{X: 50, Y: 50},
	// 			Radius: r,
	// 			Color:  color.RGBA{0, 0, 255, 255},
	// 		}
	// 		circle.AddToSprite(circleSprite)
	// 	}
	// 	board.AddSprite(circleSprite)
	// }
	board.SaveToPng("test.png")
}
