From 194ea4ace561467c0ca025e1c2f712c14a697d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Mon, 20 May 2024 00:38:04 +0200 Subject: [PATCH] v0.0.460 --- goextVersion.go | 4 +-- wpdf/utils.go | 9 +++++++ wpdf/wpdfCell.go | 57 +++++++++++++++++++++++++++++++++++++++++++ wpdf/wpdfMultiCell.go | 57 +++++++++++++++++++++++++++++++++++++++++++ wpdf/wpdfRect.go | 8 +++--- 5 files changed, 129 insertions(+), 6 deletions(-) create mode 100644 wpdf/utils.go diff --git a/goextVersion.go b/goextVersion.go index 7117554..74aa92b 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.459" +const GoextVersion = "0.0.460" -const GoextVersionTimestamp = "2024-05-20T00:20:31+0200" +const GoextVersionTimestamp = "2024-05-20T00:38:04+0200" diff --git a/wpdf/utils.go b/wpdf/utils.go new file mode 100644 index 0000000..3cc0a4f --- /dev/null +++ b/wpdf/utils.go @@ -0,0 +1,9 @@ +package wpdf + +func hexToColor(c uint32) PDFColor { + return PDFColor{R: int((c >> 16) & 0xFF), G: int((c >> 8) & 0xFF), B: int((c >> 0) & 0xFF)} +} + +func rgbToColor(r, g, b int) PDFColor { + return PDFColor{R: r, G: g, B: b} +} diff --git a/wpdf/wpdfCell.go b/wpdf/wpdfCell.go index 59bd3d4..3fde986 100644 --- a/wpdf/wpdfCell.go +++ b/wpdf/wpdfCell.go @@ -17,6 +17,9 @@ type PDFCellOpt struct { extraLn *float64 x *float64 autoWidth *bool + textColor *PDFColor + borderColor *PDFColor + fillColor *PDFColor } func NewPDFCellOpt() *PDFCellOpt { @@ -110,6 +113,36 @@ func (opt *PDFCellOpt) AutoWidth() *PDFCellOpt { return opt } +func (opt *PDFCellOpt) TextColor(cr, cg, cb int) *PDFCellOpt { + opt.textColor = langext.Ptr(rgbToColor(cr, cg, cb)) + return opt +} + +func (opt *PDFCellOpt) TextColorHex(c uint32) *PDFCellOpt { + opt.textColor = langext.Ptr(hexToColor(c)) + return opt +} + +func (opt *PDFCellOpt) BorderColor(cr, cg, cb int) *PDFCellOpt { + opt.borderColor = langext.Ptr(rgbToColor(cr, cg, cb)) + return opt +} + +func (opt *PDFCellOpt) BorderColorHex(c uint32) *PDFCellOpt { + opt.borderColor = langext.Ptr(hexToColor(c)) + return opt +} + +func (opt *PDFCellOpt) FillColor(cr, cg, cb int) *PDFCellOpt { + opt.fillColor = langext.Ptr(rgbToColor(cr, cg, cb)) + return opt +} + +func (opt *PDFCellOpt) FillColorHex(c uint32) *PDFCellOpt { + opt.fillColor = langext.Ptr(hexToColor(c)) + return opt +} + func (b *WPDFBuilder) Cell(txt string, opts ...*PDFCellOpt) { txtTR := b.tr(txt) @@ -128,6 +161,9 @@ func (b *WPDFBuilder) Cell(txt string, opts ...*PDFCellOpt) { extraLn := float64(0) var x *float64 autoWidth := false + var textColor *PDFColor + var borderColor *PDFColor + var fillColor *PDFColor for _, opt := range opts { width = langext.Coalesce(opt.width, width) @@ -144,6 +180,9 @@ func (b *WPDFBuilder) Cell(txt string, opts ...*PDFCellOpt) { extraLn = langext.Coalesce(opt.extraLn, extraLn) x = langext.CoalesceOpt(opt.x, x) autoWidth = langext.Coalesce(opt.autoWidth, autoWidth) + textColor = langext.CoalesceOpt(opt.textColor, textColor) + borderColor = langext.CoalesceOpt(opt.borderColor, borderColor) + fillColor = langext.CoalesceOpt(opt.fillColor, fillColor) } if fontNameOverride != nil || fontStyleOverride != nil || fontSizeOverride != nil { @@ -157,6 +196,24 @@ func (b *WPDFBuilder) Cell(txt string, opts ...*PDFCellOpt) { defer func() { b.SetFont(oldFontName, oldFontStyle, oldFontSize) }() } + if textColor != nil { + oldColorR, oldColorG, oldColorB := b.b.GetTextColor() + b.SetTextColor(textColor.R, textColor.G, textColor.B) + defer func() { b.SetTextColor(oldColorR, oldColorG, oldColorB) }() + } + + if borderColor != nil { + oldColorR, oldColorG, oldColorB := b.b.GetDrawColor() + b.SetDrawColor(borderColor.R, borderColor.G, borderColor.B) + defer func() { b.SetDrawColor(oldColorR, oldColorG, oldColorB) }() + } + + if fillColor != nil { + oldColorR, oldColorG, oldColorB := b.b.GetFillColor() + b.SetFillColor(fillColor.R, fillColor.G, fillColor.B) + defer func() { b.SetFillColor(oldColorR, oldColorG, oldColorB) }() + } + if x != nil { b.b.SetX(*x) } diff --git a/wpdf/wpdfMultiCell.go b/wpdf/wpdfMultiCell.go index 92749c0..1261eed 100644 --- a/wpdf/wpdfMultiCell.go +++ b/wpdf/wpdfMultiCell.go @@ -13,6 +13,9 @@ type PDFMultiCellOpt struct { fontSizeOverride *float64 extraLn *float64 x *float64 + textColor *PDFColor + borderColor *PDFColor + fillColor *PDFColor } func NewPDFMultiCellOpt() *PDFMultiCellOpt { @@ -86,6 +89,36 @@ func (opt *PDFMultiCellOpt) X(v float64) *PDFMultiCellOpt { return opt } +func (opt *PDFMultiCellOpt) TextColor(cr, cg, cb int) *PDFMultiCellOpt { + opt.textColor = langext.Ptr(rgbToColor(cr, cg, cb)) + return opt +} + +func (opt *PDFMultiCellOpt) TextColorHex(c uint32) *PDFMultiCellOpt { + opt.textColor = langext.Ptr(hexToColor(c)) + return opt +} + +func (opt *PDFMultiCellOpt) BorderColor(cr, cg, cb int) *PDFMultiCellOpt { + opt.borderColor = langext.Ptr(rgbToColor(cr, cg, cb)) + return opt +} + +func (opt *PDFMultiCellOpt) BorderColorHex(c uint32) *PDFMultiCellOpt { + opt.borderColor = langext.Ptr(hexToColor(c)) + return opt +} + +func (opt *PDFMultiCellOpt) FillColor(cr, cg, cb int) *PDFMultiCellOpt { + opt.fillColor = langext.Ptr(rgbToColor(cr, cg, cb)) + return opt +} + +func (opt *PDFMultiCellOpt) FillColorHex(c uint32) *PDFMultiCellOpt { + opt.fillColor = langext.Ptr(hexToColor(c)) + return opt +} + func (b *WPDFBuilder) MultiCell(txt string, opts ...*PDFMultiCellOpt) { txtTR := b.tr(txt) @@ -100,6 +133,9 @@ func (b *WPDFBuilder) MultiCell(txt string, opts ...*PDFMultiCellOpt) { var fontSizeOverride *float64 extraLn := float64(0) var x *float64 + var textColor *PDFColor + var borderColor *PDFColor + var fillColor *PDFColor for _, opt := range opts { width = langext.Coalesce(opt.width, width) @@ -112,6 +148,9 @@ func (b *WPDFBuilder) MultiCell(txt string, opts ...*PDFMultiCellOpt) { fontSizeOverride = langext.CoalesceOpt(opt.fontSizeOverride, fontSizeOverride) extraLn = langext.Coalesce(opt.extraLn, extraLn) x = langext.CoalesceOpt(opt.x, x) + textColor = langext.CoalesceOpt(opt.textColor, textColor) + borderColor = langext.CoalesceOpt(opt.borderColor, borderColor) + fillColor = langext.CoalesceOpt(opt.fillColor, fillColor) } if fontNameOverride != nil || fontStyleOverride != nil || fontSizeOverride != nil { @@ -125,6 +164,24 @@ func (b *WPDFBuilder) MultiCell(txt string, opts ...*PDFMultiCellOpt) { defer func() { b.SetFont(oldFontName, oldFontStyle, oldFontSize) }() } + if textColor != nil { + oldColorR, oldColorG, oldColorB := b.b.GetTextColor() + b.SetTextColor(textColor.R, textColor.G, textColor.B) + defer func() { b.SetTextColor(oldColorR, oldColorG, oldColorB) }() + } + + if borderColor != nil { + oldColorR, oldColorG, oldColorB := b.b.GetDrawColor() + b.SetDrawColor(borderColor.R, borderColor.G, borderColor.B) + defer func() { b.SetDrawColor(oldColorR, oldColorG, oldColorB) }() + } + + if fillColor != nil { + oldColorR, oldColorG, oldColorB := b.b.GetFillColor() + b.SetFillColor(fillColor.R, fillColor.G, fillColor.B) + defer func() { b.SetFillColor(oldColorR, oldColorG, oldColorB) }() + } + if x != nil { b.b.SetX(*x) } diff --git a/wpdf/wpdfRect.go b/wpdf/wpdfRect.go index 890fbb7..4fef78e 100644 --- a/wpdf/wpdfRect.go +++ b/wpdf/wpdfRect.go @@ -34,22 +34,22 @@ func (opt *PDFRectOpt) LineWidth(v float64) *PDFRectOpt { } func (opt *PDFRectOpt) DrawColor(cr, cg, cb int) *PDFRectOpt { - opt.drawColor = &PDFColor{R: cr, G: cg, B: cb} + opt.drawColor = langext.Ptr(rgbToColor(cr, cg, cb)) return opt } func (opt *PDFRectOpt) DrawColorHex(c uint32) *PDFRectOpt { - opt.drawColor = &PDFColor{R: int((c >> 16) & 0xFF), G: int((c >> 8) & 0xFF), B: int((c >> 0) & 0xFF)} + opt.drawColor = langext.Ptr(hexToColor(c)) return opt } func (opt *PDFRectOpt) FillColor(cr, cg, cb int) *PDFRectOpt { - opt.fillColor = &PDFColor{R: cr, G: cg, B: cb} + opt.fillColor = langext.Ptr(rgbToColor(cr, cg, cb)) return opt } func (opt *PDFRectOpt) FillColorHex(c uint32) *PDFRectOpt { - opt.fillColor = &PDFColor{R: int((c >> 16) & 0xFF), G: int((c >> 8) & 0xFF), B: int((c >> 0) & 0xFF)} + opt.fillColor = langext.Ptr(hexToColor(c)) return opt }