package main
import (
"fmt"
"os"
"github.com/landaiqing/go-pixelnebula"
"github.com/landaiqing/go-pixelnebula/style"
"github.com/landaiqing/go-pixelnebula/theme"
)
// 自定义主题和风格示例
// 展示如何创建自定义主题和风格
func main() {
// 创建一个新的PixelNebula实例
pn := pixelnebula.NewPixelNebula()
// 1. 自定义主题示例
// 创建自定义主题 - 每个主题包含各部分的颜色设置
customThemes := []theme.Theme{
{
theme.ThemePart{
// 环境部分颜色
"env": []string{"#FF5733", "#C70039"},
// 头部颜色
"head": []string{"#FFC300", "#FF5733"},
// 衣服颜色
"clo": []string{"#2E86C1", "#1A5276"},
// 眼睛颜色
"eyes": []string{"#000000", "#FFFFFF"},
// 嘴巴颜色
"mouth": []string{"#E74C3C"},
// 头顶装饰颜色
"top": []string{"#884EA0", "#7D3C98"},
},
theme.ThemePart{
// 另一个主题配色
"env": []string{"#3498DB", "#2874A6"},
"head": []string{"#F5CBA7", "#F0B27A"},
"clo": []string{"#27AE60", "#196F3D"},
"eyes": []string{"#2C3E50", "#FDFEFE"},
"mouth": []string{"#CB4335"},
"top": []string{"#D35400", "#BA4A00"},
},
},
}
// 应用自定义主题
pn.WithCustomizeTheme(customThemes)
// 生成使用自定义主题的头像
pn.WithSize(250, 250)
pn.WithTheme(0)
// 生成第一个自定义主题的头像
svg1, err := pn.Generate("custom-theme-1", false).SetTheme(0).ToSVG()
if err != nil {
fmt.Printf("生成自定义主题1的SVG失败: %v\n", err)
} else {
// 保存到文件
err = os.WriteFile("custom_theme_1.svg", []byte(svg1), 0644)
if err != nil {
fmt.Printf("保存自定义主题1文件失败: %v\n", err)
} else {
fmt.Println("成功生成自定义主题1头像: custom_theme_1.svg")
}
}
// 生成第二个自定义主题的头像
svg2, err := pn.Generate("custom-theme-2", false).SetTheme(1).ToSVG()
if err != nil {
fmt.Printf("生成自定义主题2的SVG失败: %v\n", err)
} else {
// 保存到文件
err = os.WriteFile("custom_theme_2.svg", []byte(svg2), 0644)
if err != nil {
fmt.Printf("保存自定义主题2文件失败: %v\n", err)
} else {
fmt.Println("成功生成自定义主题2头像: custom_theme_2.svg")
}
}
// 2. 自定义风格示例
// 创建一个新的PixelNebula实例,用于自定义风格
pn2 := pixelnebula.NewPixelNebula()
// 创建自定义风格 - 每种风格包含不同形状部件的SVG路径
// 注意:这里仅作示例,实际使用中需要提供完整的SVG路径数据
customStyles := []style.StyleSet{
{
// 第一种自定义风格
style.TypeEnv: ``,
style.TypeHead: ``,
style.TypeClo: ``,
style.TypeEyes: ``,
style.TypeMouth: ``,
style.TypeTop: ``,
},
}
// 应用自定义风格
pn2.WithCustomizeStyle(customStyles)
pn2.WithSize(250, 250)
// 使用自定义风格生成头像
svg3, err := pn2.Generate("custom-style", false).SetStyleByIndex(0).ToSVG()
if err != nil {
fmt.Printf("生成自定义风格的SVG失败: %v\n", err)
} else {
// 保存到文件
err = os.WriteFile("custom_style.svg", []byte(svg3), 0644)
if err != nil {
fmt.Printf("保存自定义风格文件失败: %v\n", err)
} else {
fmt.Println("成功生成自定义风格头像: custom_style.svg")
}
}
fmt.Println("自定义主题和风格示例完成!")
}