v0.0.494 add tables to wpdf
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Has been cancelled
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Has been cancelled
This commit is contained in:
@@ -169,7 +169,7 @@ func EncodeImage(img image.Image, compression ImageCompresson) (bytes.Buffer, st
|
||||
}
|
||||
}
|
||||
|
||||
func ObjectFitImage(img image.Image, bbw float64, bbh float64, fit ImageFit, fillColor color.Color) (image.Image, error) {
|
||||
func ObjectFitImage(img image.Image, bbw float64, bbh float64, fit ImageFit, fillColor color.Color) (image.Image, PercentageRectangle, error) {
|
||||
|
||||
iw := img.Bounds().Size().X
|
||||
ih := img.Bounds().Size().Y
|
||||
@@ -214,12 +214,12 @@ func ObjectFitImage(img image.Image, bbw float64, bbh float64, fit ImageFit, fil
|
||||
draw.Draw(newImg, newImg.Bounds(), &image.Uniform{C: fillColor}, image.Pt(0, 0), draw.Src)
|
||||
draw.Draw(newImg, newImg.Bounds(), img, image.Pt(0, 0), draw.Over)
|
||||
|
||||
return newImg, nil
|
||||
return newImg, newImg.Bounds(), nil
|
||||
}
|
||||
|
||||
if fit == ImageFitContainCenter || fit == ImageFitContainTopLeft || fit == ImageFitContainTopRight || fit == ImageFitContainBottomLeft || fit == ImageFitContainBottomRight {
|
||||
|
||||
// image-fit:cover fills the target-bounding-box with the image, there is potentially empty-space, it potentially cuts parts of the image away
|
||||
// image-fit:contain fills the target-bounding-box with the image, there is potentially empty-space, it potentially cuts parts of the image away
|
||||
|
||||
// we use the bigger (!) value of facW and facH,
|
||||
// because the image is made to fit the bounding-box, the bigger factor (= the dimension the image is stretched less) is relevant
|
||||
@@ -266,7 +266,7 @@ func ObjectFitImage(img image.Image, bbw float64, bbh float64, fit ImageFit, fil
|
||||
draw.Draw(newImg, newImg.Bounds(), &image.Uniform{C: fillColor}, image.Pt(0, 0), draw.Src)
|
||||
draw.Draw(newImg, destBounds, img, image.Pt(0, 0), draw.Over)
|
||||
|
||||
return newImg, nil
|
||||
return newImg, destBounds, nil
|
||||
}
|
||||
|
||||
if fit == ImageFitStretch {
|
||||
@@ -293,10 +293,10 @@ func ObjectFitImage(img image.Image, bbw float64, bbh float64, fit ImageFit, fil
|
||||
draw.Draw(newImg, newImg.Bounds(), &image.Uniform{C: fillColor}, image.Pt(0, 0), draw.Src)
|
||||
draw.Draw(newImg, newImg.Bounds(), img, image.Pt(0, 0), draw.Over)
|
||||
|
||||
return newImg, nil
|
||||
return newImg, newImg.Bounds(), nil
|
||||
}
|
||||
|
||||
return nil, exerr.New(exerr.TypeInternal, fmt.Sprintf("unknown image-fit: '%s'", fit)).Build()
|
||||
return nil, image.Rectangle{}, exerr.New(exerr.TypeInternal, fmt.Sprintf("unknown image-fit: '%s'", fit)).Build()
|
||||
}
|
||||
|
||||
func VerifyAndDecodeImage(data io.Reader, mime string) (image.Image, error) {
|
||||
|
24
imageext/types.go
Normal file
24
imageext/types.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package imageext
|
||||
|
||||
type Rectangle struct {
|
||||
X float64
|
||||
Y float64
|
||||
W float64
|
||||
H float64
|
||||
}
|
||||
|
||||
type PercentageRectangle struct {
|
||||
X float64 // [0..1]
|
||||
Y float64 // [0..1]
|
||||
W float64 // [0..1]
|
||||
H float64 // [0..1]
|
||||
}
|
||||
|
||||
func (r PercentageRectangle) Of(ref Rectangle) Rectangle {
|
||||
return Rectangle{
|
||||
X: ref.X + r.X*ref.W,
|
||||
Y: ref.Y + r.Y*ref.H,
|
||||
W: r.W * ref.W,
|
||||
H: r.H * ref.H,
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user