go-dcp/dcp/subtitle.go

105 lines
1.8 KiB
Go

package dcp
import (
"image/color"
"time"
)
type SubtitleEffect int
const (
SubtitleEffectNone = SubtitleEffect(iota)
SubtitleEffectBorder
SubtitleEffectShadow
)
var DefaultSubtitleFont = SubtitleFont{
Color: color.RGBA{
R: 0xFF,
G: 0xFF,
B: 0xFF,
A: 0xFF,
},
Size: 42,
Effect: SubtitleEffectNone,
EffectColor: color.RGBA{
R: 0xFF,
G: 0x00,
B: 0x00,
A: 0xFF,
},
AspectRatio: 1,
Italic: false,
Bold: false,
Underline: false,
Spacing: 0,
}
type SubtitleFont struct {
//TODO: fontname
Color color.RGBA
Size float64
Effect SubtitleEffect
EffectColor color.RGBA
// AspectRatio Controls the horizontal scale
AspectRatio float64
Italic bool
Bold bool
Underline bool
Spacing float64
}
type SubtitleAlignment int
const (
SubtitleAlignmentBottomLeft = SubtitleAlignment(iota)
SubtitleAlignmentBottomCenter
SubtitleAlignmentBottomRight
SubtitleAlignmentCenterLeft
SubtitleAlignmentCenterCenter
SubtitleAlignmentCenterRight
SubtitleAlignmentTopLeft
SubtitleAlignmentTopCenter
SubtitleAlignmentTopRight
)
// SubtitleAlignmentFromVerticalHorizontal
// v 0 = left, 1 = center, 2 = right
// h 0 = bottom, 1 = center, 2 = top
func SubtitleAlignmentFromVerticalHorizontal(v, h int) SubtitleAlignment {
return SubtitleAlignment(v*3 + h)
}
type SubtitleDirection int
const (
SubtitleDirectionHorizontal = SubtitleDirection(iota)
SubtitleDirectionVertical
)
type SubtitleEvent struct {
Start, End time.Duration
FadeIn, FadeOut time.Duration
Alignment SubtitleAlignment
Direction SubtitleDirection
// MarginRight MarginLeft MarginVertical float64 0-1 percentage of margin relative to width/height
MarginRight float64
MarginLeft float64
MarginVertical float64
Text []SubtitleText
}
type SubtitleText struct {
Font SubtitleFont
Text string
}