fix wrong git ignore
This commit is contained in:
89
internal/pdf/creator/ellipse.go
Normal file
89
internal/pdf/creator/ellipse.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package creator
|
||||
|
||||
import (
|
||||
"gitea.tecamino.com/paadi/pdfmerge/internal/pdf/contentstream/draw"
|
||||
"gitea.tecamino.com/paadi/pdfmerge/internal/pdf/model"
|
||||
)
|
||||
|
||||
// Ellipse defines an ellipse with a center at (xc,yc) and a specified width and height. The ellipse can have a colored
|
||||
// fill and/or border with a specified width.
|
||||
// Implements the Drawable interface and can be drawn on PDF using the Creator.
|
||||
type Ellipse struct {
|
||||
xc float64
|
||||
yc float64
|
||||
width float64
|
||||
height float64
|
||||
fillColor *model.PdfColorDeviceRGB
|
||||
borderColor *model.PdfColorDeviceRGB
|
||||
borderWidth float64
|
||||
}
|
||||
|
||||
// NewEllipse creates a new ellipse centered at (xc,yc) with a width and height specified.
|
||||
func NewEllipse(xc, yc, width, height float64) *Ellipse {
|
||||
ell := &Ellipse{}
|
||||
|
||||
ell.xc = xc
|
||||
ell.yc = yc
|
||||
ell.width = width
|
||||
ell.height = height
|
||||
|
||||
ell.borderColor = model.NewPdfColorDeviceRGB(0, 0, 0)
|
||||
ell.borderWidth = 1.0
|
||||
|
||||
return ell
|
||||
}
|
||||
|
||||
// GetCoords returns the coordinates of the Ellipse's center (xc,yc).
|
||||
func (ell *Ellipse) GetCoords() (float64, float64) {
|
||||
return ell.xc, ell.yc
|
||||
}
|
||||
|
||||
// SetBorderWidth sets the border width.
|
||||
func (ell *Ellipse) SetBorderWidth(bw float64) {
|
||||
ell.borderWidth = bw
|
||||
}
|
||||
|
||||
// SetBorderColor sets the border color.
|
||||
func (ell *Ellipse) SetBorderColor(col Color) {
|
||||
ell.borderColor = model.NewPdfColorDeviceRGB(col.ToRGB())
|
||||
}
|
||||
|
||||
// SetFillColor sets the fill color.
|
||||
func (ell *Ellipse) SetFillColor(col Color) {
|
||||
ell.fillColor = model.NewPdfColorDeviceRGB(col.ToRGB())
|
||||
}
|
||||
|
||||
// GeneratePageBlocks draws the rectangle on a new block representing the page.
|
||||
func (ell *Ellipse) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error) {
|
||||
block := NewBlock(ctx.PageWidth, ctx.PageHeight)
|
||||
|
||||
drawell := draw.Circle{
|
||||
X: ell.xc - ell.width/2,
|
||||
Y: ctx.PageHeight - ell.yc - ell.height/2,
|
||||
Width: ell.width,
|
||||
Height: ell.height,
|
||||
Opacity: 1.0,
|
||||
BorderWidth: ell.borderWidth,
|
||||
}
|
||||
if ell.fillColor != nil {
|
||||
drawell.FillEnabled = true
|
||||
drawell.FillColor = ell.fillColor
|
||||
}
|
||||
if ell.borderColor != nil {
|
||||
drawell.BorderEnabled = true
|
||||
drawell.BorderColor = ell.borderColor
|
||||
drawell.BorderWidth = ell.borderWidth
|
||||
}
|
||||
|
||||
contents, _, err := drawell.Draw("")
|
||||
if err != nil {
|
||||
return nil, ctx, err
|
||||
}
|
||||
|
||||
err = block.addContentsByString(string(contents))
|
||||
if err != nil {
|
||||
return nil, ctx, err
|
||||
}
|
||||
|
||||
return []*Block{block}, ctx, nil
|
||||
}
|
||||
Reference in New Issue
Block a user