cassowary

package module
v0.0.0-...-6ee9ddb Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2018 License: BSD-3-Clause Imports: 5 Imported by: 0

README

Cassowary in Go

This is an implementation of the Cassowary constraint solving algorithm in Go. The initial implementation was based on the Cassowary in Dart written in Dart which itself is derived from Kiwi toolkit (written in C++).

The implementation implements a subset of the functionality described in the Cassowary paper

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConstantMember

type ConstantMember struct {
	// contains filtered or unexported fields
}

ConstantMember describes a constant part of an Expression which won't change when added to a Solver

func CM

func CM(value float64) *ConstantMember

CM just creates a new ConstantMember containing the given constant specified by value

func NewConstantMember

func NewConstantMember(value float64) *ConstantMember

NewConstantMember creates a new ConstantMember containing the given constant specified by value

func (*ConstantMember) Add

func (c *ConstantMember) Add(member EquationMember) *Expression

Add creates an expression which represents the sum of this ConstantMember and another EquationMember

func (*ConstantMember) Div

func (c *ConstantMember) Div(member EquationMember) *Expression

func (*ConstantMember) Equals

func (c *ConstantMember) Equals(member EquationMember) *Constraint

func (*ConstantMember) GreaterThanOrEqualTo

func (c *ConstantMember) GreaterThanOrEqualTo(m EquationMember) *Constraint

func (*ConstantMember) IsConstant

func (c *ConstantMember) IsConstant() bool

IsConstant returns true if this EquationMember is a constant (Which is always true for constants)

func (*ConstantMember) LessThanOrEqualTo

func (c *ConstantMember) LessThanOrEqualTo(m EquationMember) *Constraint

func (*ConstantMember) Mult

func (c *ConstantMember) Mult(member EquationMember) *Expression

func (*ConstantMember) Sub

func (c *ConstantMember) Sub(member EquationMember) *Expression

Sub creates an expression which represents the

func (*ConstantMember) Value

func (c *ConstantMember) Value() float64

Value returns the value of this constant

type Constraint

type Constraint struct {
	Priority Priority
	// contains filtered or unexported fields
}

func NewConstraint

func NewConstraint(exp *Expression, rel Relation) *Constraint

type EquationMember

type EquationMember interface {
	IsConstant() bool

	Value() float64

	GreaterThanOrEqualTo(m EquationMember) *Constraint

	LessThanOrEqualTo(m EquationMember) *Constraint

	Equals(m EquationMember) *Constraint

	Add(m EquationMember) *Expression

	Sub(m EquationMember) *Expression

	Mult(m EquationMember) *Expression

	Div(m EquationMember) *Expression
	// contains filtered or unexported methods
}

type Expression

type Expression struct {
	// contains filtered or unexported fields
}

func FromExpression

func FromExpression(exp *Expression) *Expression

func NewExpression

func NewExpression(terms []*Term, constant float64) *Expression

func (*Expression) Add

func (exp *Expression) Add(member EquationMember) *Expression

func (*Expression) Div

func (exp *Expression) Div(member EquationMember) *Expression

func (*Expression) Equals

func (exp *Expression) Equals(member EquationMember) *Constraint

func (*Expression) GreaterThanOrEqualTo

func (exp *Expression) GreaterThanOrEqualTo(member EquationMember) *Constraint

func (*Expression) IsConstant

func (exp *Expression) IsConstant() bool

func (*Expression) LessThanOrEqualTo

func (exp *Expression) LessThanOrEqualTo(member EquationMember) *Constraint

func (*Expression) Mult

func (exp *Expression) Mult(member EquationMember) *Expression

func (*Expression) Sub

func (exp *Expression) Sub(member EquationMember) *Expression

func (*Expression) Value

func (exp *Expression) Value() float64

type Param

type Param struct {
	Variable *Variable

	Context interface{}
}

func NewParam

func NewParam(val float64) *Param

func NewParamWithContext

func NewParamWithContext(val float64, context interface{}) *Param

func (*Param) Add

func (p *Param) Add(member EquationMember) *Expression

func (*Param) Div

func (p *Param) Div(member EquationMember) *Expression

func (*Param) Equals

func (p *Param) Equals(member EquationMember) *Constraint

func (*Param) GreaterThanOrEqualTo

func (p *Param) GreaterThanOrEqualTo(m EquationMember) *Constraint

func (*Param) IsConstant

func (p *Param) IsConstant() bool

func (*Param) LessThanOrEqualTo

func (p *Param) LessThanOrEqualTo(m EquationMember) *Constraint

func (*Param) Mult

func (p *Param) Mult(member EquationMember) *Expression

func (*Param) Sub

func (p *Param) Sub(member EquationMember) *Expression

func (*Param) Value

func (p *Param) Value() float64

type Priority

type Priority int64
const (
	PriorityRequired Priority = 1000000000
	PriorityStrong   Priority = 1000000
	PriorityMedium   Priority = 1000
	PriorityWeak     Priority = 1
)

type Relation

type Relation int
const (
	EqualTo Relation = iota
	LessThanOrEqualTo
	GreaterThanOrEqualTo
)

type Solver

type Solver struct {
	// contains filtered or unexported fields
}

func NewSolver

func NewSolver() *Solver

func (*Solver) AddConstraint

func (s *Solver) AddConstraint(constraint *Constraint) error

func (*Solver) AddConstraints

func (s *Solver) AddConstraints(constraints ...*Constraint) error

func (*Solver) AddEditVariable

func (s *Solver) AddEditVariable(v *Variable, priority float64) error

func (*Solver) FlushUpdates

func (s *Solver) FlushUpdates() []*Update

func (*Solver) RemoveConstraint

func (s *Solver) RemoveConstraint(constraint *Constraint) error

func (*Solver) RemoveConstraints

func (s *Solver) RemoveConstraints(constraints ...*Constraint) error

func (*Solver) SuggestValueForVariable

func (s *Solver) SuggestValueForVariable(v *Variable, value float64)

type Term

type Term struct {
	// contains filtered or unexported fields
}

func NewTerm

func NewTerm(v *Variable, c float64) *Term

func (*Term) Add

func (term *Term) Add(member EquationMember) *Expression

func (*Term) Div

func (term *Term) Div(member EquationMember) *Expression

func (*Term) Equals

func (term *Term) Equals(member EquationMember) *Constraint

func (*Term) GreaterThanOrEqualTo

func (term *Term) GreaterThanOrEqualTo(m EquationMember) *Constraint

func (*Term) IsConstant

func (term *Term) IsConstant() bool

func (*Term) LessThanOrEqualTo

func (term *Term) LessThanOrEqualTo(m EquationMember) *Constraint

func (*Term) Mult

func (term *Term) Mult(member EquationMember) *Expression

func (*Term) Sub

func (term *Term) Sub(member EquationMember) *Expression

func (*Term) Value

func (term *Term) Value() float64

type Update

type Update struct {
	Context    interface{}
	UpdatedVal float64
}

type Variable

type Variable struct {
	Value float64

	Name string
	// contains filtered or unexported fields
}

func NewVariable

func NewVariable(val float64) *Variable

func (*Variable) Param

func (v *Variable) Param() *Param

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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