レンダリングアプリケーションでは、ジオメトリキャッシュの長い更新なしに、レンダリング中に描画色を変更する必要がある場合があります。たとえば、この機能は、補正されたカラーパレット、反転色、グレースケールまたはモノクロレンダリングモード、カラーガンマ、明るさ、コントラスト補正を使用してグラフィックを描画するのに役立ちます。この機能は、すべての主要なTeighaベクタライズモジュール(「WinGDI.txv」、「WinOpenGL.txv」、「WinDirectX.txv」、「WinGLES2.txv」)で利用できます。
カラーコンバーターインターフェースを含めます。
// 1) Include color conversion callback interface
#include "Teigha/Kernel/Extensions/ExRender/ExColorConverterCallback.h"
独自のカラー変換関数を実装します。
// 2) Define your own color conversion callback method. In this example we invert R, G and B color components.
class UserDefColorConversionCallback : public OdColorConverterCallback
{
virtual ODCOLORREF convert(ODCOLORREF originalColor)
{
return ODRGBA(~ODGETRED(originalColor), ~ODGETGREEN(originalColor), ~ODGETBLUE(originalColor), ODGETALPHA(originalColor));
}
};
変換された色をOdGsDeviceプロパティを使用してTeighaベクタライズモジュールにアタッチします。
// 3) Construct and attach user-defined color conversion callback to Teigha vectorization device using device properties.
void attachColorConverter(OdGsDevice *pGsDevice)
{
if (pGsDevice && pGsDevice->properties() && pGsDevice->properties()->has(OD_T("ColorConverter")))
{
OdColorConverterCallbackPtr pCC = OdRxObjectImpl<UserDefColorConversionCallback>::createObject()
pGsDevice->properties()->putAt(OD_T("ColorConverter"), pCC);
}
}
色変換前の描画例:
ソースコード例のカラー反転関数を使用した、色変換後の同じ描画の例: