render

package
v3.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2019 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

Package render renders images onto a canvas.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ExtractExclusiveProp

func ExtractExclusiveProp(data []PropData, namedPropsMap map[string][]string) (returnedPropsMap map[string][]string, ExtractedValue interface{}, validIndex int, err error)

ExtractExclusiveProp parses the loaded property configuration and application inputs and returns the desired property if it exists and if only one of the desired options exists

func ExtractSingleProp

func ExtractSingleProp(inputVal, propName string, typeName PropType, namedPropsMap map[string][]string) (returnedPropsMap map[string][]string, ExtractedValue interface{}, err error)

ExtractSingleProp parses the loaded property configuration and application inputs and returns the desired property if it exists

func RegisterComponent

func RegisterComponent(name string, generator func(vfs.FileSystem) Component) error

RegisterComponent adds a new component to the registry, returning an error if duplicate names exist

func StandardSetNamedProperties

func StandardSetNamedProperties(properties NamedProperties, propMap map[string][]string, setFunc PropertySetFunc) (leftovers map[string][]string, err error)

StandardSetNamedProperties iterates over all named properties, retrieves their value, and calls the provided function to map properties to inner component properties. Each implementation of Component should call this within its SetNamedProperties function.

Types

type BarcodeExtraData

type BarcodeExtraData struct {
	// AztecMinECCPercent       is required for aztec barcodes
	AztecMinECCPercent int
	// AztecUserSpecifiedLayers is required for aztec barcodes
	AztecUserSpecifiedLayers int
	// Code39IncludeChecksum    is required for code39 barcodes
	Code39IncludeChecksum bool
	// Code39FullASCIIMode      is required for code39 barcodes
	Code39FullASCIIMode bool
	// Code93IncludeChecksum    is required for code93 barcodes
	Code93IncludeChecksum bool
	// Code93FullASCIIMode      is required for code93 barcodes
	Code93FullASCIIMode bool
	// PDFSecurityLevel         is required for pdf417 barcodes
	PDFSecurityLevel byte
	// QRLevel                  is required for qr barcodes
	QRLevel qr.ErrorCorrectionLevel
	// QRMode                   is required for qr barcodes
	QRMode qr.Encoding
}

BarcodeExtraData contains additional data required for some barcode formats, leave any fields not named for the type in use alone

type BarcodeType

type BarcodeType string

BarcodeType wraps the barcode types into a single enum

const (
	// BarcodeTypeAztec           is an alias for an imported barcode type
	BarcodeTypeAztec BarcodeType = barcode.TypeAztec
	// BarcodeTypeCodabar         is an alias for an imported barcode type
	BarcodeTypeCodabar BarcodeType = barcode.TypeCodabar
	// BarcodeTypeCode128         is an alias for an imported barcode type
	BarcodeTypeCode128 BarcodeType = barcode.TypeCode128
	// BarcodeTypeCode39          is an alias for an imported barcode type
	BarcodeTypeCode39 BarcodeType = barcode.TypeCode39
	// BarcodeTypeCode93          is an alias for an imported barcode type
	BarcodeTypeCode93 BarcodeType = barcode.TypeCode93
	// BarcodeTypeDataMatrix      is an alias for an imported barcode type
	BarcodeTypeDataMatrix BarcodeType = barcode.TypeDataMatrix
	// BarcodeTypeEAN8            is an alias for an imported barcode type
	BarcodeTypeEAN8 BarcodeType = barcode.TypeEAN8
	// BarcodeTypeEAN13           is an alias for an imported barcode type
	BarcodeTypeEAN13 BarcodeType = barcode.TypeEAN13
	// BarcodeTypePDF             is an alias for an imported barcode type
	BarcodeTypePDF BarcodeType = barcode.TypePDF
	// BarcodeTypeQR              is an alias for an imported barcode type
	BarcodeTypeQR BarcodeType = barcode.TypeQR
	// BarcodeType2of5            is an alias for an imported barcode type
	BarcodeType2of5 BarcodeType = barcode.Type2of5
	// BarcodeType2of5Interleaved is an alias for an imported barcode type
	BarcodeType2of5Interleaved BarcodeType = barcode.Type2of5Interleaved
)

type Canvas

type Canvas interface {
	SetUnderlyingImage(newImage image.Image) Canvas
	GetUnderlyingImage() image.Image
	GetWidth() int
	GetHeight() int
	GetPPI() float64
	SetPPI(float64) Canvas
	Rectangle(topLeft image.Point, width, height int, colour color.Color) (Canvas, error)
	Circle(centre image.Point, radius int, colour color.Color) (Canvas, error)
	Text(text string, start image.Point, typeFace font.Face, colour color.Color, maxWidth int) (Canvas, error)
	TryText(text string, start image.Point, typeFace font.Face, colour color.Color, maxWidth int) (bool, int)
	DrawImage(start image.Point, subImage image.Image) (Canvas, error)
	Barcode(codeType BarcodeType, content []byte, extra BarcodeExtraData, start image.Point, width, height int, dataColour color.Color, bgColour color.Color) (Canvas, error)
}

Canvas holds the image struct and associated properties

type Component

type Component interface {
	Write(canvas Canvas) (Canvas, error)
	SetNamedProperties(properties NamedProperties) (Component, error)
	GetJSONFormat() interface{}
	VerifyAndSetJSONData(interface{}) (Component, NamedProperties, error)
}

Component provides a generic interface for operations to perform on a canvas

func Decode

func Decode(name string) (Component, error)

Decode searches the registry for a component matching the provided name and returns a new blank component of that type

type ComponentConditional

type ComponentConditional struct {
	Name     string              `json:"name"`
	Not      bool                `json:"boolNot"`
	Operator conditionalOperator `json:"operator"`
	Value    string              `json:"value"`
	Group    conditionalGroup    `json:"group"`
	// contains filtered or unexported fields
}

ComponentConditional enables or disables a component based on named properties.

All properties will be assumed to be either strings or floats based on the operator.

String operators: "equals", "contains", "startswith", "endswith", "ci_equals", "ci_contains", "ci_startswith", "ci_endswith". Operators including "ci_" are case-insensitive variants.

Float operators: "=", ">", "<", "<=", ">=".

Group operators can be "and", "or", "nand", "nor", "xor".

func (ComponentConditional) GetNamedPropertiesList

func (c ComponentConditional) GetNamedPropertiesList() NamedProperties

GetNamedPropertiesList returns a list of all named props found in the conditional

func (ComponentConditional) SetValue

func (c ComponentConditional) SetValue(name string, value interface{}) (ComponentConditional, error)

SetValue sets the value of a specific named property through this conditional chain, evaluating any conditions along the way

func (ComponentConditional) Validate

func (c ComponentConditional) Validate() (bool, error)

Validate validates this conditional chain, erroring if a value down the line has not been set and evaluated

type DeconstructedDataValue

type DeconstructedDataValue struct {
	StaticValues []string
	PropNames    []string
}

DeconstructedDataValue is a string broken down into static values and property names. The reconstruction always starts with a static value, always has one more static value than props, and always alternates static, prop, static, prop... if any props exist.

func ParseDataValue

func ParseDataValue(value string) (hasNamedProperties bool, deconstructed DeconstructedDataValue, err error)

ParseDataValue determines whether a string represents raw data or a named variable and returns this information as well as the data cleaned of any variable definitions

type ImageCanvas

type ImageCanvas struct {
	Image draw.Image
	// contains filtered or unexported fields
}

ImageCanvas uses golang's native Image package to implement the Canvas interface

func NewCanvas

func NewCanvas(width, height int) (ImageCanvas, error)

NewCanvas generates a new canvas of the given width and height

func (ImageCanvas) Barcode

func (canvas ImageCanvas) Barcode(codeType BarcodeType, content []byte, extra BarcodeExtraData, start image.Point, width, height int, dataColour color.Color, backgroundColour color.Color) (Canvas, error)

Barcode draws a barcode on the canvas

func (ImageCanvas) Circle

func (canvas ImageCanvas) Circle(centre image.Point, radius int, colour color.Color) (Canvas, error)

Circle draws a circle of a specific colour on the canvas

func (ImageCanvas) DrawImage

func (canvas ImageCanvas) DrawImage(start image.Point, subImage image.Image) (Canvas, error)

DrawImage draws another image on the canvas

func (ImageCanvas) GetHeight

func (canvas ImageCanvas) GetHeight() int

GetHeight returns the height of the underlying Image. Returns 0 if no canvas is set.

func (ImageCanvas) GetPPI

func (canvas ImageCanvas) GetPPI() float64

GetPPI returns the pixels per inch of the canvas

func (ImageCanvas) GetUnderlyingImage

func (canvas ImageCanvas) GetUnderlyingImage() image.Image

GetUnderlyingImage gets the internal Image property

func (ImageCanvas) GetWidth

func (canvas ImageCanvas) GetWidth() int

GetWidth returns the width of the underlying Image. Returns 0 if no canvas is set.

func (ImageCanvas) Rectangle

func (canvas ImageCanvas) Rectangle(topLeft image.Point, width, height int, colour color.Color) (Canvas, error)

Rectangle draws a rectangle of a specific colour on the canvas

func (ImageCanvas) SetPPI

func (canvas ImageCanvas) SetPPI(ppi float64) Canvas

SetPPI sets the pixels per inch of the canvas

func (ImageCanvas) SetUnderlyingImage

func (canvas ImageCanvas) SetUnderlyingImage(newImage image.Image) Canvas

SetUnderlyingImage sets the internal Image property to the given object

func (ImageCanvas) Text

func (canvas ImageCanvas) Text(text string, start image.Point, typeFace font.Face, colour color.Color, maxWidth int) (Canvas, error)

Text draws text on the canvas

func (ImageCanvas) TryText

func (canvas ImageCanvas) TryText(text string, start image.Point, typeFace font.Face, colour color.Color, maxWidth int) (bool, int)

TryText returns whether the text would fit on the canvas, and the width the text would currently use up

type MockCanvas

type MockCanvas struct {
	mock.Mock
}

MockCanvas is a mock implementation of the Canvas interface for testing purposes

func (*MockCanvas) Barcode

func (m *MockCanvas) Barcode(codeType BarcodeType, content []byte, extra BarcodeExtraData, start image.Point, width, height int, dataColour color.Color, bgColour color.Color) (Canvas, error)

Barcode returns the preset value(s)

func (*MockCanvas) Circle

func (m *MockCanvas) Circle(centre image.Point, radius int, colour color.Color) (Canvas, error)

Circle returns the preset value(s)

func (*MockCanvas) DrawImage

func (m *MockCanvas) DrawImage(start image.Point, subImage image.Image) (Canvas, error)

DrawImage returns the preset value(s)

func (*MockCanvas) GetHeight

func (m *MockCanvas) GetHeight() int

GetHeight returns the preset value(s)

func (*MockCanvas) GetPPI

func (m *MockCanvas) GetPPI() float64

GetPPI returns the preset value(s)

func (*MockCanvas) GetUnderlyingImage

func (m *MockCanvas) GetUnderlyingImage() image.Image

GetUnderlyingImage returns the preset value(s)

func (*MockCanvas) GetWidth

func (m *MockCanvas) GetWidth() int

GetWidth returns the preset value(s)

func (*MockCanvas) Rectangle

func (m *MockCanvas) Rectangle(topLeft image.Point, width, height int, colour color.Color) (Canvas, error)

Rectangle returns the preset value(s)

func (*MockCanvas) SetPPI

func (m *MockCanvas) SetPPI(ppi float64) Canvas

SetPPI returns the preset value(s)

func (*MockCanvas) SetUnderlyingImage

func (m *MockCanvas) SetUnderlyingImage(newImage image.Image) Canvas

SetUnderlyingImage returns the preset value(s)

func (*MockCanvas) Text

func (m *MockCanvas) Text(text string, start image.Point, typeFace font.Face, colour color.Color, maxWidth int) (Canvas, error)

Text returns the preset value(s)

func (*MockCanvas) TryText

func (m *MockCanvas) TryText(text string, start image.Point, typeFace font.Face, colour color.Color, maxWidth int) (bool, int)

TryText returns the preset value(s)

type NamedProperties

type NamedProperties map[string]interface{}

NamedProperties is a map of property names to property values - application variables to be set

type PropData

type PropData struct {
	InputValue string
	PropName   string
	Type       PropType
}

PropData is a matched triplet of input property data for use with extraction of exclusive properties

type PropType

type PropType string

PropType represents the types of properties which can be parsed

const (
	// IntType is an int
	IntType PropType = "int"
	// StringType is a string
	StringType PropType = "string"
	// BoolType is a bool
	BoolType PropType = "bool"
	// Uint8Type is a uint8
	Uint8Type PropType = "uint8"
	// Float64Type is a float64
	Float64Type PropType = "float64"
	// TimeType is a *time.Time
	TimeType PropType = "time"
)

type PropertySetFunc

type PropertySetFunc func(string, interface{}) error

PropertySetFunc maps property names and values to component inner properties

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL