Foundation > グラフィック・オブジェクト > 新規グラフィック・オブジェクト・クラスの作成 > ヘッダー・ファイルの作成
 
ヘッダー・ファイルの作成
このexampleでは、新規クラスと必要なオーバーロード・メンバー関数を宣言するヘッダー・ファイルを作成します。
ヘッダー・ファイル shadellp.h には次の行が含まれます。
#define DefaultShadowThickness 4
 
class ShadowEllipse
: public IlvSimpleGraphic {
public:
ShadowEllipse(IlvDisplay* display,
const IlvRect& rect,
IlUShort thickness = DefaultShadowThickness,
IlvPalette* palette = 0)
: IlvSimpleGraphic(display, palette),
_rect(rect), _thickness(thickness)
{
_invertedPalette = 0;
computeInvertedPalette();
}
~ShadowEllipse();
 
virtual void draw(IlvPort*, const IlvTransformer* t = 0,
const IlvRegion* clip = 0) const;
virtual IlBoolean contains(const IlvPoint& p,
const IlvPoint& tp,
const IlvTransformer* t) const;
virtual void boundingBox(IlvRect& rect,
const IlvTransformer* t = 0) const;
virtual void applyTransform(const IlvTransformer* t);
IlUShort getThickness() const
{ return _thickness; }
void setThickness(IlUShort thickness)
{ _thickness = thickness; }
 
virtual void setBackground(IlvColor* c);
virtual void setForeground(IlvColor* c);
virtual void setMode(IlvDrawMode m);
virtual void setPalette(IlvPalette* p);
 
DeclareTypeInfo();
DeclareIOConstructors(ShadowEllipse);
protected:
IlvRect _rect;
IlUShort _thickness;
IlvPalette* _invertedPalette;
void computeInvertedPalette();
};
このオブジェクトは、標準 Rogue Wave Views ライブラリーにある他の少数のオブジェクトと同様、2 つの異なった IlvPalette オブジェクトを利用します。これは、楕円とその影を描画する際に、ダミーのパレット・オブジェクトを作成する必要がないため、描画時間という点でオブジェクトの効率を高めたい場合に用いられる一般的な方法です。
ShadowEllipse クラスは、メンバー関数 drawcontainsboundingBox を定義します。また必要なパレット管理関連のメンバー関数も定義し、標準パレット・オブジェクト (IlvSimpleGraphic に格納されているもの) と新しいパレット・オブジェクトである _invertedPalette の両方を更新します。
この例では、入出力関数は宣言されていません。実際は、入出力関数はそれらを外部のものとして宣言する DeclareTypeInfo マクロにより宣言されます。これらのメンバー関数は、readwrite、および copy です。これらにはデフォルトで実装されていないため、IlvGraphic クラスの各サブクラスにこれらのバージョンを提供する必要があります。DeclareTypeInfoRO と呼ばれるこの 2 番目のバージョンがあり、これはこのオブジェクトのタイプが保存されないことがわかっていれば、メンバー関数 write を宣言しません。

Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.