# `GSPenProtocol`

*Protocol*

## Declaration

```swift
protocol GSPenProtocol
```

```objc
@protocol GSPenProtocol
```

```python
GSPenProtocol
```

## Topics

### Instance Properties

- [`GSPenProtocol.fillColor`](/Core/GlyphsCore/GSPenProtocol/fillColor) — drawing attributes
- [`GSPenProtocol.grid`](/Core/GlyphsCore/GSPenProtocol/grid)
- [`GSPenProtocol.hasContent`](/Core/GlyphsCore/GSPenProtocol/hasContent)
- [`GSPenProtocol.ignoreSingleNodes`](/Core/GlyphsCore/GSPenProtocol/ignoreSingleNodes)
- [`GSPenProtocol.closed`](/Core/GlyphsCore/GSPenProtocol/closed)
- [`GSPenProtocol.lastPoint`](/Core/GlyphsCore/GSPenProtocol/lastPoint)
- [`GSPenProtocol.lineCapStyle`](/Core/GlyphsCore/GSPenProtocol/lineCapStyle)
- [`GSPenProtocol.lineJoinStyle`](/Core/GlyphsCore/GSPenProtocol/lineJoinStyle)
- [`GSPenProtocol.lineWidth`](/Core/GlyphsCore/GSPenProtocol/lineWidth)
- [`GSPenProtocol.strokeColor`](/Core/GlyphsCore/GSPenProtocol/strokeColor)
- [`GSPenProtocol.transform`](/Core/GlyphsCore/GSPenProtocol/transform)

### Instance Methods

- [`GSPenProtocol addImage:`](/Core/GlyphsCore/GSPenProtocol/addImage:)
- [`GSPenProtocol addComponent:transformation:`](/Core/GlyphsCore/GSPenProtocol/addComponent:transformation:)
- [`GSPenProtocol append:`](/Core/GlyphsCore/GSPenProtocol/append:) — Appends the contents of another pen to this pen.
- [`GSPenProtocol beginPath`](/Core/GlyphsCore/GSPenProtocol/beginPath) — starts an empty new path
- [`GSPenProtocol clear`](/Core/GlyphsCore/GSPenProtocol/clear)
- [`GSPenProtocol closePath`](/Core/GlyphsCore/GSPenProtocol/closePath) — Close the current sub path. You must call either pen.closePath() or pen.endPath() after each sub path.
- [`GSPenProtocol curveTo:off1:off2:`](/Core/GlyphsCore/GSPenProtocol/curveTo:off1:off2:) — Draw a cubic bezier with an arbitrary number of control points.
- [`GSPenProtocol curveTo:off1:off2:connection:selected:`](/Core/GlyphsCore/GSPenProtocol/curveTo:off1:off2:connection:selected:)
- [`GSPenProtocol curveTo:off1:off2:connection:selected:attributes:`](/Core/GlyphsCore/GSPenProtocol/curveTo:off1:off2:connection:selected:attributes:)
- [`GSPenProtocol curveTo:off1:off2:objects:`](/Core/GlyphsCore/GSPenProtocol/curveTo:off1:off2:objects:)
- [`GSPenProtocol drawInPen:`](/Core/GlyphsCore/GSPenProtocol/drawInPen:)
- [`GSPenProtocol endGlyph:`](/Core/GlyphsCore/GSPenProtocol/endGlyph:)
- [`GSPenProtocol endPath`](/Core/GlyphsCore/GSPenProtocol/endPath) — End the current sub path, but don’t close it. You must call either pen.closePath() or pen.endPath() after each sub path.
- [`GSPenProtocol lineTo:connection:selected:attributes:`](/Core/GlyphsCore/GSPenProtocol/lineTo:connection:selected:attributes:)
- [`GSPenProtocol lineTo:objects:`](/Core/GlyphsCore/GSPenProtocol/lineTo:objects:)
- [`GSPenProtocol lineTo:`](/Core/GlyphsCore/GSPenProtocol/lineTo:) — Draw a straight line from the current point to ‘pt’.
- [`GSPenProtocol moveTo:connection:selected:attributes:`](/Core/GlyphsCore/GSPenProtocol/moveTo:connection:selected:attributes:)
- [`GSPenProtocol moveTo:objects:`](/Core/GlyphsCore/GSPenProtocol/moveTo:objects:)
- [`GSPenProtocol moveTo:`](/Core/GlyphsCore/GSPenProtocol/moveTo:) — Begin a new sub path, set the current point to ‘pt’. You must end each sub path with a call to pen.closePath() or pen.endPath().
- [`GSPenProtocol qCurveWithPoints:count:objects:`](/Core/GlyphsCore/GSPenProtocol/qCurveWithPoints:count:objects:)
- [`GSPenProtocol qCurveWithPoints:count:`](/Core/GlyphsCore/GSPenProtocol/qCurveWithPoints:count:) — Draw a whole string of quadratic curve segments.
- [`GSPenProtocol qCurveTo:`](/Core/GlyphsCore/GSPenProtocol/qCurveTo:) — Draw a whole sting of quadratic curve segments.
- [`GSPenProtocol quartTo:off1:off2:off3:`](/Core/GlyphsCore/GSPenProtocol/quartTo:off1:off2:off3:)
- [`GSPenProtocol quartTo:off1:off2:off3:connection:selected:attributes:`](/Core/GlyphsCore/GSPenProtocol/quartTo:off1:off2:off3:connection:selected:attributes:)
- [`GSPenProtocol quartTo:off1:off2:off3:objects:`](/Core/GlyphsCore/GSPenProtocol/quartTo:off1:off2:off3:objects:)
- [`GSPenProtocol setGradient:bounds:`](/Core/GlyphsCore/GSPenProtocol/setGradient:bounds:)
- [`GSPenProtocol setHints:`](/Core/GlyphsCore/GSPenProtocol/setHints:)
- [`GSPenProtocol setIdentifier:`](/Core/GlyphsCore/GSPenProtocol/setIdentifier:)
- [`GSPenProtocol setLastPoint:`](/Core/GlyphsCore/GSPenProtocol/setLastPoint:)
- [`GSPenProtocol setShadow:`](/Core/GlyphsCore/GSPenProtocol/setShadow:)
- [`GSPenProtocol startGlyph:`](/Core/GlyphsCore/GSPenProtocol/startGlyph:) — To initialize stuff
- [`GSPenProtocol startPath:`](/Core/GlyphsCore/GSPenProtocol/startPath:)

## Relationships

### Conforming Types

- [`GSBasePen`](/Core/GlyphsCore/GSBasePen)
- [`GSBoundsPen`](/Core/GlyphsCore/GSBoundsPen)
- [`GSCoreGraphicsPen`](/Core/GlyphsCore/GSCoreGraphicsPen)
- [`GSNullPen`](/Core/GlyphsCore/GSNullPen)
- [`GSSegmentPen`](/Core/GlyphsCore/GSSegmentPen)

