105 lines
1.8 KiB
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
|
|
}
|