### IMDrawable

  IMDrawable is an abstract base which allows a graphic object to draw itself.

### IMDrawable - Member Functions and Data by Group

### Constructors & Destructor

This functions in this group consist of a protected constructors and a virtual destructor for creating and destroying objects of class IMDrawable.

~IMDrawable

      public:
      virtual ~IMDrawable()

  Virtual destructor.

Supported Platforms

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

IMDrawable

  Overload 1
  Protected copy constructor.

      protected:
      IMDrawable(const IMDrawable&)

  const IMDrawable&
    The IMDrawable to be copied from.

Supported Platforms

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

  Overload 2
  Protected default constructor.

      protected:
      IMDrawable()

Supported Platforms

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

### Assignment Operator

The operator in this group assigns the given IMDrawable object to the target one.

operator =

      protected:
      IMDrawable& operator =(const IMDrawable& source)

  Protected assignment operator for Abstract class.

  const IMDrawable&
    The IMDrawable to be copied from.

Return
  A reference to the left-hand side object.

Supported Platforms

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

### Rendering the Image

This group contains a pure virtual function for drawing an object to a graphics port.

draw

      public:
      virtual void draw(IGrafPort& port) const = 0

  Draws the graphic to the specific IGrafPort. This is a pure virtual function.

  port
    The port to which drawing should go.

Exception

  Determined | by derived classes.

Supported Platforms

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

### Streaming the Object In and Out

This group contains virtual functions for streaming an object in and out.

readFromStream

      protected:
      virtual void readFromStream(IDataStream& toWhere)

  This function reads the IMDrawable object in from the specified stream.

  fromWhere
    The stream used to stream in the object.

Supported Platforms

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

writeToStream

      protected:
      virtual void writeToStream(IDataStream& toWhere) const

  Streams the object out to the specified data stream.

  toWhere
    The stream used to stream out the object.

Supported Platforms

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

### Testing Two Objects for Equality or Inequality

Testing two objects for equality or inequality.

operator !=

      public:
      bool operator !=(const IMDrawable&) const

  Tests two IMDrawables for inequality, determining whether their geometries and bundles are different.

  const IMDrawable&
    The IMDrawable to be compared with this one.

Return
  True if the geometries or bundles of this IMDrawable and the argument are not equal.

Supported Platforms

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

operator ==

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

  Tests two IMDrawables for equality, determining whether the geometries are equal and the bundles are equal.

  const IMDrawable&
    The IMDrawable to be compared with this one.

Return
  True if this IMDrawable and the argument have equal geometries and bundles.

Supported Platforms

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

### IMDrawable - 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(const IMStreamable& other)

  -     IMStreamable()

  -     virtual void readFromStream(IDataStream& fromwhere) = 0

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

#### Inherited Protected Data

  - None