clip

package
v0.7.1 Latest Latest
Warning

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

Go to latest
Published: Jul 16, 2024 License: MIT, Unlicense Imports: 10 Imported by: 441

Documentation

Overview

Package clip provides operations for defining areas that applies to operations such as paints and pointer handlers.

The current clip is initially the infinite set. Pushing an Op sets the clip to the intersection of the current clip and pushed clip area. Popping the area restores the clip to its state before pushing.

General clipping areas are constructed with Path. Common cases such as rectangular clip areas also exist as convenient constructors.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Ellipse

type Ellipse image.Rectangle

Ellipse represents the largest axis-aligned ellipse that is contained in its bounds.

func (Ellipse) Op

func (e Ellipse) Op(ops *op.Ops) Op

Op returns the op for the filled ellipse.

func (Ellipse) Path

func (e Ellipse) Path(o *op.Ops) PathSpec

Path constructs a path for the ellipse.

func (Ellipse) Push

func (e Ellipse) Push(ops *op.Ops) Stack

Push the filled ellipse clip op on the clip stack.

type Op

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

Op represents a clip area. Op intersects the current clip area with itself.

func (Op) Push

func (p Op) Push(o *op.Ops) Stack

Push saves the current clip state on the stack and updates the current state to the intersection of the current p.

type Outline

type Outline struct {
	Path PathSpec
}

Outline represents the area inside of a path, according to the non-zero winding rule.

func (Outline) Op

func (o Outline) Op() Op

Op returns a clip operation representing the outline.

type Path

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

Path constructs a Op clip path described by lines and Bézier curves, where drawing outside the Path is discarded. The inside-ness of a pixel is determines by the non-zero winding rule, similar to the SVG rule of the same name.

Path generates no garbage and can be used for dynamic paths; path data is stored directly in the Ops list supplied to Begin.

func (*Path) Arc

func (p *Path) Arc(f1, f2 f32.Point, angle float32)

Arc is like ArcTo where f1 and f2 are relative to the current position.

func (*Path) ArcTo

func (p *Path) ArcTo(f1, f2 f32.Point, angle float32)

ArcTo adds an elliptical arc to the path. The implied ellipse is defined by its focus points f1 and f2. The arc starts in the current point and ends angle radians along the ellipse boundary. The sign of angle determines the direction; positive being counter-clockwise, negative clockwise.

func (*Path) Begin

func (p *Path) Begin(o *op.Ops)

Begin the path, storing the path data and final Op into ops.

Caller must also call End to finish the drawing. Forgetting to call it will result in a "panic: cannot mix multi ops with single ones".

func (*Path) Close

func (p *Path) Close()

Close closes the path contour.

func (*Path) Cube

func (p *Path) Cube(ctrl0, ctrl1, to f32.Point)

Cube records a cubic Bézier from the pen through two control points ending in to.

func (*Path) CubeTo

func (p *Path) CubeTo(ctrl0, ctrl1, to f32.Point)

CubeTo records a cubic Bézier from the pen through two control points ending in to, with absolute coordinates.

func (*Path) End

func (p *Path) End() PathSpec

End returns a PathSpec ready to use in clipping operations.

func (*Path) Line

func (p *Path) Line(delta f32.Point)

Line moves the pen by the amount specified by delta, recording a line.

func (*Path) LineTo

func (p *Path) LineTo(to f32.Point)

LineTo moves the pen to the absolute point specified, recording a line.

func (*Path) Move

func (p *Path) Move(delta f32.Point)

Move moves the pen by the amount specified by delta.

func (*Path) MoveTo

func (p *Path) MoveTo(to f32.Point)

MoveTo moves the pen to the specified absolute coordinate.

func (*Path) Pos

func (p *Path) Pos() f32.Point

Pos returns the current pen position.

func (*Path) Quad

func (p *Path) Quad(ctrl, to f32.Point)

Quad records a quadratic Bézier from the pen to end with the control point ctrl.

func (*Path) QuadTo

func (p *Path) QuadTo(ctrl, to f32.Point)

QuadTo records a quadratic Bézier from the pen to end with the control point ctrl, with absolute coordinates.

type PathSpec

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

type RRect

type RRect struct {
	Rect image.Rectangle
	// The corner radii.
	SE, SW, NW, NE int
}

RRect represents the clip area of a rectangle with rounded corners.

Specify a square with corner radii equal to half the square size to construct a circular clip area.

func UniformRRect

func UniformRRect(rect image.Rectangle, radius int) RRect

UniformRRect returns an RRect with all corner radii set to the provided radius.

func (RRect) Op

func (rr RRect) Op(ops *op.Ops) Op

Op returns the op for the rounded rectangle.

func (RRect) Path

func (rr RRect) Path(ops *op.Ops) PathSpec

Path returns the PathSpec for the rounded rectangle.

func (RRect) Push

func (rr RRect) Push(ops *op.Ops) Stack

Push the rectangle clip on the clip stack.

type Rect

type Rect image.Rectangle

Rect represents the clip area of a pixel-aligned rectangle.

func (Rect) Op

func (r Rect) Op() Op

Op returns the op for the rectangle.

func (Rect) Path

func (r Rect) Path() PathSpec

Path returns the PathSpec for the rectangle.

func (Rect) Push

func (r Rect) Push(ops *op.Ops) Stack

Push the clip operation on the clip stack.

type Stack

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

Stack represents an Op pushed on the clip stack.

func (Stack) Pop

func (s Stack) Pop()

type Stroke

type Stroke struct {
	Path PathSpec
	// Width of the stroked path.
	Width float32
}

Stroke represents a stroked path.

func (Stroke) Op

func (s Stroke) Op() Op

Op returns a clip operation representing the stroke.

Jump to

Keyboard shortcuts

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