mirror of
https://github.com/unidoc/unipdf.git
synced 2025-04-27 13:48:51 +08:00
50 lines
1.6 KiB
Go
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
|
|
}
|