v0.0.450 wpdf
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Failing after 3m33s
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Failing after 3m33s
This commit is contained in:
137
wpdf/wpdfMultiCell.go
Normal file
137
wpdf/wpdfMultiCell.go
Normal file
@@ -0,0 +1,137 @@
|
||||
package wpdf
|
||||
|
||||
import "gogs.mikescher.com/BlackForestBytes/goext/langext"
|
||||
|
||||
type PDFMultiCellOpt struct {
|
||||
width *float64
|
||||
height *float64
|
||||
border *PDFBorder
|
||||
align *PDFTextAlign
|
||||
fill *bool
|
||||
fontNameOverride *PDFFontFamily
|
||||
fontStyleOverride *PDFFontStyle
|
||||
fontSizeOverride *float64
|
||||
extraLn *float64
|
||||
x *float64
|
||||
}
|
||||
|
||||
func NewPDFMultiCellOpt() *PDFMultiCellOpt {
|
||||
return &PDFMultiCellOpt{}
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Width(v float64) *PDFMultiCellOpt {
|
||||
opt.width = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Height(v float64) *PDFMultiCellOpt {
|
||||
opt.height = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Border(v PDFBorder) *PDFMultiCellOpt {
|
||||
opt.border = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Align(v PDFTextAlign) *PDFMultiCellOpt {
|
||||
opt.align = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) FillBackground(v bool) *PDFMultiCellOpt {
|
||||
opt.fill = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Font(fontName PDFFontFamily, fontStyle PDFFontStyle, fontSize float64) *PDFMultiCellOpt {
|
||||
opt.fontNameOverride = &fontName
|
||||
opt.fontStyleOverride = &fontStyle
|
||||
opt.fontSizeOverride = &fontSize
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) FontName(v PDFFontFamily) *PDFMultiCellOpt {
|
||||
opt.fontNameOverride = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) FontStyle(v PDFFontStyle) *PDFMultiCellOpt {
|
||||
opt.fontStyleOverride = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) FontSize(v float64) *PDFMultiCellOpt {
|
||||
opt.fontSizeOverride = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Bold() *PDFMultiCellOpt {
|
||||
opt.fontStyleOverride = langext.Ptr(Bold)
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) Italic() *PDFMultiCellOpt {
|
||||
opt.fontStyleOverride = langext.Ptr(Italic)
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) LnAfter(v float64) *PDFMultiCellOpt {
|
||||
opt.extraLn = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (opt *PDFMultiCellOpt) X(v float64) *PDFMultiCellOpt {
|
||||
opt.x = &v
|
||||
return opt
|
||||
}
|
||||
|
||||
func (b *WPDFBuilder) MultiCell(txt string, opts ...*PDFMultiCellOpt) {
|
||||
|
||||
txtTR := b.tr(txt)
|
||||
|
||||
width := float64(0)
|
||||
height := b.cellHeight
|
||||
border := BorderNone
|
||||
align := AlignLeft
|
||||
fill := false
|
||||
var fontNameOverride *PDFFontFamily
|
||||
var fontStyleOverride *PDFFontStyle
|
||||
var fontSizeOverride *float64
|
||||
extraLn := float64(0)
|
||||
var x *float64
|
||||
|
||||
for _, opt := range opts {
|
||||
width = langext.Coalesce(opt.width, width)
|
||||
height = langext.Coalesce(opt.height, height)
|
||||
border = langext.Coalesce(opt.border, border)
|
||||
align = langext.Coalesce(opt.align, align)
|
||||
fill = langext.Coalesce(opt.fill, fill)
|
||||
fontNameOverride = langext.CoalesceOpt(opt.fontNameOverride, fontNameOverride)
|
||||
fontStyleOverride = langext.CoalesceOpt(opt.fontStyleOverride, fontStyleOverride)
|
||||
fontSizeOverride = langext.CoalesceOpt(opt.fontSizeOverride, fontSizeOverride)
|
||||
extraLn = langext.Coalesce(opt.extraLn, extraLn)
|
||||
x = langext.CoalesceOpt(opt.x, x)
|
||||
}
|
||||
|
||||
if fontNameOverride != nil || fontStyleOverride != nil || fontSizeOverride != nil {
|
||||
oldFontName := b.fontName
|
||||
oldFontStyle := b.fontStyle
|
||||
oldFontSize := b.fontSize
|
||||
newFontName := langext.Coalesce(fontNameOverride, oldFontName)
|
||||
newFontStyle := langext.Coalesce(fontStyleOverride, oldFontStyle)
|
||||
newFontSize := langext.Coalesce(fontSizeOverride, oldFontSize)
|
||||
b.SetFont(newFontName, newFontStyle, newFontSize)
|
||||
defer func() { b.SetFont(oldFontName, oldFontStyle, oldFontSize) }()
|
||||
}
|
||||
|
||||
if x != nil {
|
||||
b.b.SetX(*x)
|
||||
}
|
||||
|
||||
b.b.MultiCell(width, height, txtTR, string(border), string(align), fill)
|
||||
|
||||
if extraLn != 0 {
|
||||
b.b.Ln(extraLn)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user