unipdf/pdf/creator/drawable.go

47 lines
1.5 KiB
Go
Raw Normal View History

/*
* This file is subject to the terms and conditions defined in
* file 'LICENSE.md', which is part of this source code package.
*/
package creator
2017-07-31 15:25:28 +00:00
// Drawable is a widget that can be used to draw with the Creator.
type Drawable interface {
// 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)
}
2017-07-31 15:25:28 +00:00
// VectorDrawable is a Drawable with a specified width and height.
type VectorDrawable interface {
Drawable
2018-07-26 13:50:17 +00:00
// Width returns the width of the Drawable.
Width() float64
2018-07-26 13:50:17 +00:00
// 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
2018-07-26 13:50:17 +00:00
// 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
}