### IPen

  The IPen class is designed to encapsulate most of the functionality of 2-dimensional pens.

### IPen - Member Functions and Data by Group

### Constructors & Destructor

Use the constructors in this group to construct and destroy objects of class IPen.

~IPen

      public:
      ~IPen()

  Destructs an object of class IPen.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

IPen
  Constructs an object of class IPen.

  Overload 1
  Copy constructor.

      public:
      IPen(const IPen&)

  IPen
    A constant reference to the IPen to copy from.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

  Overload 2

      public:
      IPen( EPenType type,
            GCoordinate penWidth = 1.0,
            EPenBalance = kCenterFrame )

  Constructor with input values. When creating a kHairline Pen the penWidth and the pen Balance parameters are ignored.

  type
    The type of the pen.
  penWidth
    The width of the pen in world coordinates. The default value is 1.0.
  EPenBalance
    The type of pen balance (internal, external, or centered). The default value is kCenterFrame.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

  Overload 3

      public:
      IPen()

  Constructor with default value: fPenType = kSolid, fPenWidth = 1.0, fPenBalance = kCenterFrame. When creating a kHairline Pen the penWidth and the pen Balance parameters are ignored.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Assignment Operator

Use the operator in this group to assign the given object to the target one.

operator =

      public:
      IPen& operator =(const IPen& source)

  Assignment operator.

  source
    The pen to copy from.

Return
  A non-const reference to the left-hand side object.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Comparing Two IPen Objects for Equality or Inequality

Use the operators in this group to compare the two IPen objects for equality or inequality.

operator !=

      public:
      virtual bool operator !=(const IPen&) const

  Tests two IPen objects for inequality.

  IPen
    A constant reference to the IPen to be compared with.

Return
  True if not all the corresponding parameters of the two IPen objects have same value.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

operator ==

      public:
      virtual bool operator ==(const IPen&) const

  Tests two IPen objects for equality.

  IPen
    A constant reference to the IPen to be compared with.

Return
  True if the corresponding parameters of the two IPen objects have same value.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Getting and Setting the Pen Balance Parameters

Use the functions in this group to get and set the pen balance parameters.

penParams

      public:
      EPenType
        penParams( GCoordinate& penWidth,
                   EPenBalance& penBalance ) const

  Gets the parameters of this pen.

  penWidth
    The width of the pen in world coordinates. The default value is 1.0.
  penBalance
    The type of pen balance (internal, external, or centered).

Return
  The type of pen.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setPenParams

      public:
      void
        setPenParams( EPenType type,
                      GCoordinate penWidth = 1.0,
                      EPenBalance = kCenterFrame )

  Sets the parameters of this pen using suitable combinations. (e.g. for kHairline sets penWidth to 1.0 and penBalance to unknownFrame) The Pen Balance attribute of the pen does not affect the rendering of open geometries such as lines, curves etc. Also, for hairline pen the pen width and the penBalance attributes are ignored.

  type
    The type of pen.
  penWidth
    The width of the pen in world coordinates. The default value is 1.0.
  EPenBalance
    The type of pen balance (internal, external, or centered). The default value is kCenterFrame.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Getting and Setting the Pen Balance Type

Use the functions in this group to get and set the pen balance type.

penBalance

      public:
      EPenBalance penBalance() const

  Gets the type of pen balance.

Return
  The type of pen balance.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setPenBalance

      public:
      void setPenBalance(EPenBalance penBalance)

  Sets the type of pen balance using suitable combinations. (e.g. for kHairline sets penWidth to 1.0 and penBalance to unknownFrame)

  penWidth
    The type of pen balance.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Getting and Setting the Pen Type and Width

Use the functions in this group to get and set the pen type and width.

penType

      public:
      EPenType penType() const

  Gets the type of this pen.

Return
  The type of pen.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

penWidth

      public:
      GCoordinate penWidth() const

  Gets the width of the pen in world coordinates.

Return
  The width of the pen.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setPenType

      public:
      void setPenType(EPenType penType)

  Sets the type of the pen using suitable combinations.(e.g. for kHairline sets penWidth to 1.0 and penBalance to unknownFrame) For pens setting of the pen type might also reset the other paramters: for kHairline, sets PenWidth to 1.0 and PenBalance to unknownFrame; for kUnknownPen, sets PenWidth to 1.0 and PenBalance to UnknownFrame; otherwise, no change.

  penType
    The type of the pen.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

setPenWidth

      public:
      void setPenWidth(GCoordinate penWidth)

  Sets the width of the pen in world coordinates using suitable combinations.

  penWidth
    The width of the pen in world coordinates.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### Streaming the IPen Object In and Out

Use the functions in this group to read the IPen object in from the specified stream and write it out to it.

readFromStream

      protected:
      virtual void readFromStream(IDataStream& toWhere)

  Reads the IPen object in from the specified stream.

  fromWhere
    The stream from which the IPen object is read in.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

writeToStream

      protected:
      virtual void writeToStream(IDataStream& toWhere) const

  Writes the IPen object out to the specified stream.

  toWhere
    The stream to which the IPen object is written out.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IPen - Enumerations

EPenBalance

      enum EPenBalance { kCenterFrame,
                         kInsetFrame,
                         kUnknownFrame }

  EPenBalance describes the details of the pen behavior.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

EPenType

      enum EPenType { kHairline,
                      kSolid,
                      kDashed,
                      kDot,
                      kDashDot,
                      kDashDotDot,
                      kInvisible,
                      kUnknownPen }

  EPenType describes the details of the pen behavior.

Supported Platforms

  Windows | OS/2 | AIX
  Yes | Yes | Yes

### IPen - Inherited Member Functions and Data

#### Inherited Public Functions

  IMStreamable

  -     virtual ~IMStreamable()

  -     void externalizeToStream(IDataStream& towhere) const

  -     void internalizeFromStream(IDataStream& fromwhere)

  -     virtual const ITypeRepresentation&
          typeRepresentation() const = 0

#### Inherited Public Data

  - None

#### Inherited Protected Functions

  IMStreamable

  -     IMStreamable()

  -     IMStreamable(const IMStreamable& other)

  -     virtual void readFromStream(IDataStream& fromwhere) = 0

  -     virtual void writeToStream(IDataStream& towhere) const = 0

#### Inherited Protected Data

  - None