# Segment

## Description

A `Contour` object is a list of segments. A `Segment` is a list of points with some special attributes and methods.

## Overview

### Parents

`BaseSegment.contour` | The segment's parent contour.
`BaseSegment.glyph` | The segment's parent glyph.
`BaseSegment.layer` | The segment's parent layer.
`BaseSegment.font` | The segment's parent font.

### Identification

`BaseSegment.index` | The index of the segment within the ordered list of the parent contour's segments.

### Attributes

`BaseSegment.type` | The segment type.
`BaseSegment.smooth` | Boolean indicating if the segment is smooth or not.

### Points

`BaseSegment.points` | A list of points in the segment.
`BaseSegment.onCurve` | The on curve point in the segment.
`BaseSegment.offCurve` | The off curve points in the segment.

### Transformations

`BaseSegment.transformBy` | Transform the object.
`BaseSegment.moveBy` | Move the object.
`BaseSegment.scaleBy` | Scale the object.
`BaseSegment.rotateBy` | Rotate the object.
`BaseSegment.skewBy` | Skew the object.

### Normalization

`BaseSegment.round` | Round coordinates in all points.

### Environment

`BaseSegment.naked` | Return the environment's native object that has been wrapped by this object.
`BaseSegment.changed` | Tell the environment that something has changed in the object.

## Reference

class fontParts.base.BaseSegment(*args, **kwargs)

### Parents

BaseSegment.contour

  The segment’s parent contour.

BaseSegment.glyph

  The segment’s parent glyph.

BaseSegment.layer

  The segment’s parent layer.

BaseSegment.font

  The segment’s parent font.

### Identification

BaseSegment.index

  The index of the segment within the ordered list of the parent contour’s segments.

### Attributes

BaseSegment.type

  The segment type. The possible types are move, line, curve, qcurve.

BaseSegment.smooth

  Boolean indicating if the segment is smooth or not.

### Points

BaseSegment.points

  A list of points in the segment.

BaseSegment.onCurve

  The on curve point in the segment.

BaseSegment.offCurve

  The off curve points in the segment.

### Transformations

BaseSegment.transformBy(matrix, origin=None)

  Transform the object.

      >>> obj.transformBy((0.5, 0, 0, 2.0, 10, 0))
      >>> obj.transformBy((0.5, 0, 0, 2.0, 10, 0), origin=(500, 500))

  matrix must be a Transformation Matrix. origin defines the point at with the transformation should originate. It must be a Coordinate or `None`. The default is `(0, 0)`.

BaseSegment.moveBy(value)

  Move the object.

      >>> obj.moveBy((10, 0))

  value must be an iterable containing two Integer/Float values defining the x and y values to move the object by.

BaseSegment.scaleBy(value, origin=None)

  Scale the object.

      >>> obj.scaleBy(2.0)
      >>> obj.scaleBy((0.5, 2.0), origin=(500, 500))

  value must be an iterable containing two Integer/Float values defining the x and y values to scale the object by. origin defines the point at with the scale should originate. It must be a Coordinate or `None`. The default is `(0, 0)`.

BaseSegment.rotateBy(value, origin=None)

  Rotate the object.

      >>> obj.rotateBy(45)
      >>> obj.rotateBy(45, origin=(500, 500))

  value must be a Integer/Float values defining the angle to rotate the object by. origin defines the point at with the rotation should originate. It must be a Coordinate or `None`. The default is `(0, 0)`.

BaseSegment.skewBy(value, origin=None)

  Skew the object.

      >>> obj.skewBy(11)
      >>> obj.skewBy((25, 10), origin=(500, 500))

  value must be rone of the following:

  - single Integer/Float indicating the value to skew the x direction by.

  - iterable cointaining type Integer/Float defining the values to skew the x and y directions by.

  origin defines the point at with the skew should originate. It must be a Coordinate or `None`. The default is `(0, 0)`.

### Normalization

BaseSegment.round()

  Round coordinates in all points.

### Environment

BaseSegment.naked()

  Return the environment’s native object that has been wrapped by this object.

      >>> loweLevelObj = obj.naked()

BaseSegment.changed(*args, **kwargs)

  Tell the environment that something has changed in the object. The behavior of this method will vary from environment to environment.

      >>> obj.changed()

Previous

Contour

Next

bPoint