2023-11-20 05:20:31 +00:00
|
|
|
package types
|
|
|
|
|
2023-11-20 18:01:35 +00:00
|
|
|
import (
|
|
|
|
swfsubtypes "git.gammaspectra.live/WeebDataHoarder/swf2ass-go/swf/tag/subtypes"
|
|
|
|
swftypes "git.gammaspectra.live/WeebDataHoarder/swf2ass-go/swf/types"
|
|
|
|
"git.gammaspectra.live/WeebDataHoarder/swf2ass-go/types/math"
|
|
|
|
)
|
2023-11-20 05:20:31 +00:00
|
|
|
|
|
|
|
type StyleRecord interface {
|
2023-11-20 18:01:35 +00:00
|
|
|
ApplyColorTransform(transform math.ColorTransform) StyleRecord
|
2023-11-20 05:20:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type LineStyleRecord struct {
|
2023-11-20 18:01:35 +00:00
|
|
|
Width swftypes.Twip
|
|
|
|
Color math.Color
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *LineStyleRecord) ApplyColorTransform(transform math.ColorTransform) StyleRecord {
|
|
|
|
return &LineStyleRecord{
|
|
|
|
Width: r.Width,
|
|
|
|
Color: transform.ApplyToColor(r.Color),
|
|
|
|
}
|
2023-11-20 05:20:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
type FillStyleRecord struct {
|
|
|
|
// Fill can be a Color or Gradient
|
|
|
|
Fill any
|
|
|
|
Border *LineStyleRecord
|
|
|
|
}
|
2023-11-20 18:01:35 +00:00
|
|
|
|
|
|
|
func (r *FillStyleRecord) ApplyColorTransform(transform math.ColorTransform) StyleRecord {
|
|
|
|
fill := r.Fill
|
|
|
|
if color, ok := fill.(math.Color); ok {
|
|
|
|
fill = transform.ApplyToColor(color)
|
|
|
|
} else if gradient, ok := fill.(Gradient); ok {
|
|
|
|
fill = gradient.ApplyColorTransform(transform)
|
|
|
|
}
|
|
|
|
return &FillStyleRecord{
|
|
|
|
Border: r.Border,
|
|
|
|
Fill: fill,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func FillStyleRecordFromSWFFILLSTYLE(fillStyle swfsubtypes.FILLSTYLE) (r *FillStyleRecord) {
|
|
|
|
switch fillStyle.FillStyleType {
|
|
|
|
case swfsubtypes.FillStyleSolid:
|
|
|
|
return &FillStyleRecord{
|
|
|
|
Fill: math.Color{
|
|
|
|
R: fillStyle.Color.R(),
|
|
|
|
G: fillStyle.Color.G(),
|
|
|
|
B: fillStyle.Color.B(),
|
|
|
|
Alpha: fillStyle.Color.A(),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
//TODO other styles
|
|
|
|
}
|
|
|
|
|
|
|
|
return &FillStyleRecord{
|
|
|
|
Fill: math.Color{
|
|
|
|
R: 0,
|
|
|
|
G: 0,
|
|
|
|
B: 0,
|
|
|
|
Alpha: 0,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|