IlvFilterFlow クラス
IlvFilterFlow クラスは、名前を入出力として使用して、
IlvBitmapFilter インスタンスを連結します。このフローの例として、下に影を付ける効果の作成があります。イメージのアルファ・チャネルをガウスぼかし用の入力として使用し、ぼかしたイメージをオフセットして元のイメージとマージします。
IlvFilterFlow クラスはプログラムで作成できますが、フィルター・フローの XML 表現を使用したほうが便利です。これは SVG でのフィルター定義方法と似ています。
以下の XML ファイル は、このフローの例です ($ILVHOME/data/filters には、多数の定義済み XML フィルター・フローがあります)。
<?xml version="1.0"?>
<ÉtÉBÉãÉ^Å[>
<filter id="DropShadow2" x="-10" y="-10" width="125" height="125">
<desc>Applies a drop shadow effect</desc>
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
<feOffset dx="2" dy="2" result="offsetBlur"/>
<feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/>
</filter>
</filters>
以下は各行の説明です。
<?xml version="1.0"?>
Rogue Wave Views フィルターの定義は、XML 規則に従っています。
<ÉtÉBÉãÉ^Å[>
フィルターの要素を開きます (フィルターはいくつでも含めることができます)。
<filter id="DropShadow2" x="-10" y="-10" width="125" height="125">
フィルター名 DropShadow2 の要素を開きます。
いくつかのフィルターは、ソース・イメージをすべての方向に何ピクセルか拡張しています。したがって、フィルターがどれだけ拡張するかを指定する必要があります。
このフィルターは、ソース・イメージを左と上に 10 ピクセル、幅と高さを 25 ピクセル拡張します。
<desc>Applies a drop shadow effect</desc>
このタグはフィルターの説明です。
<feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
このフローで使用する最初の構成要素フィルターは、IlvGaussianBlurFilter で、両方向の偏差は 3 です。
フィルター・フローによって次の 2 つの名前が定義されます。
SourceAlpha:入力イメージのアルファ値のみを含みます。
SourceGraphic:入力イメージを含みます。
ここで必要なのはイメージのアルファ・コンポーネントにぼかしを適用することだけです。
<feOffset dx="2" dy="2" result="offsetBlur"/>
2 つ目の構成要素フィルターは IlvOffsetFilter で、変位は 2 です。
何も指定されていない場合、フィルターからの入力は前のフィルターの出力となるため指定する必要はありません。結果として、offsetBlur という名前で格納されるイメージができます。
<feComposite in="SourceGraphic" in2="offsetBlur" operator="over"/>
3 つ目、そして最後の構成要素フィルターは、IlvComposeFilter で、over 演算子を使用して入力イメージでぼかしたイメージのオフセットを作成します。
</filter>
フィルター・フロー記述を終了します。
</filters>
フィルター列挙を終了します。
このような IlvFilterFlow は、次の行で作成できます。ここではフィルター・フローを含むファイルが、standard.xml という名前でディスクに保存されていると想定します。
IlIUrlStream input("standard.xml");
IlvFilterFlow* flow = new IlvFilterFlow(input, "DropShadow2");
Version 6.0
Copyright © 2015, Rogue Wave Software, Inc. All Rights Reserved.