unipdf/pdf/creator/drawable.go

43 lines
1.4 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
Width() float64
Height() float64
}
2017-07-31 15:25:28 +00:00
// 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.
Width, Height float64
// Page Margins.
Margins margins
// Absolute Page size, widths and height.
PageWidth float64
PageHeight float64
}