unipdf/creator/drawable.go
2019-05-16 20:44:51 +00:00

50 lines
1.6 KiB
Go

/*
* This file is subject to the terms and conditions defined in
* file 'LICENSE.md', which is part of this source code package.
*/
package creator
// Drawable is a widget that can be used to draw with the Creator.
type Drawable interface {
// GeneratePageBlocks draw onto blocks representing Page contents. As the content can wrap over many pages, multiple
// templates are returned, one per Page. The function also takes a draw context containing information
// where to draw (if relative positioning) and the available height to draw on accounting for Margins etc.
GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
}
// VectorDrawable is a Drawable with a specified width and height.
type VectorDrawable interface {
Drawable
// Width returns the width of the Drawable.
Width() float64
// Height returns the height of the Drawable.
Height() float64
}
// DrawContext defines the drawing context. The DrawContext is continuously used and updated when
// drawing the page contents in relative mode. Keeps track of current X, Y position, available
// height as well as other page parameters such as margins and dimensions.
type DrawContext struct {
// Current page number.
Page int
// Current position. In a relative positioning mode, a drawable will be placed at these coordinates.
X, Y float64
// Context dimensions. Available width and height (on current page).
Width, Height float64
// Page Margins.
Margins margins
// Absolute Page size, widths and height.
PageWidth float64
PageHeight float64
// Controls whether the components are stacked horizontally
Inline bool
}