---
name: "Shape"
section: "3"
platform: "linux"
package: "ivtools-dev"
version: "1.1.3-4"
release: "Debian 3.1 (Sarge)"
platforms: ["linux"]
url: "https://new.carta.tech/Shape"
---

# Shape(3)

what shape a canvas should have

## NAME

Shape - what shape a canvas should have

## SYNOPSIS

**#include \<InterViews/shape.h\>**

## DESCRIPTION

A shape specifies the desired characteristics of a canvas. An interactor should set the fields of its shape when it is reconfigured and should call Change on its parent if any of these fields change.

The dimensions of a shape are defined by a \`\`natural'' size, a stretch amount, and a shrink amount. The *width* and *height* fields indicate the desired sizes. The *hstretch*, *vstretch*, *hshrink*, *vshrink* fields define how flexible these desired sizes are. For example, an interactor may have a natural size of 100, but can adequately handle any size between 50 and 200. The stretchability for this case would be 100 and the shrinkability 50.

The constants *hfil* and *vfil* are provided to indicate \`\`infinite'' stretching or shrinking. They are represented as very large numbers and manipulated exactly the same as other stretch and shrink parameters.

The *aspect* field specifies the desired aspect ratio. A value of zero means any aspect is acceptable.

The *hunits* and *vunits* fields indicate that the canvas dimensions should be multiples of some values.

## PUBLIC OPERATIONS

- **Shape()**

  Construct a new shape with undefined natural size and infinite stretchability and shrinkability in both directions.

- **boolean Defined()**

  - **boolean Undefined()**

  Test if the shape's natural size is defined or not.

- **void Rect(int width, int height)**

  - **void Square(int side)**

  Short-hand for setting the dimensions of the shape. Square sets both dimensions to *side* and sets the aspect ratio to one.

- **void Rigid(int hshrink, int hstretch, int vshrink, int vstretch)**

  - **void Rigid()**

  Set the stretchability and shrinkability fields of the shape. If no arguments are specified, the fields are set to zero.

- **void SetUndefined()**

  Reset the shape's natural size to be undefined.

## SEE ALSO

Interactor(3I), Scene(3I)
