SDXFrameWork 0.13 SDXFrameWork

- Main Page
- Related Pages
- Classes

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Functions Variables Enumerations Enumerator Pages
Static Public Member Functions | List of all members
SDX::Blend Class Reference

Image同士の合成処理を行う関数群[未実装]. More...

`#include <Blend.h>`

## Static Public Member Functions
static bool | Add (Image *合成元, const Image *入力, double 合成率=1.0)
| 加算合成. More...
static bool | Burn (Image *合成元, const Image *入力, double 合成率=1.0)
| 焼き込み合成. More...
static bool | Darken (Image *合成元, const Image *入力, double 合成率=1.0)
| 比較合成(暗). More...
static bool | Difference (Image *合成元, const Image *入力, double 合成率=1.0)
| 減算合成. More...
static bool | Dodge (Image *合成元, const Image *入力, double 合成率=1.0)
| 覆い焼き合成. More...
static bool | Exclusion (Image *合成元, const Image *入力, double 合成率=1.0)
| 除外合成. More...
static bool | HardLight (Image *合成元, const Image *入力, double 合成率=1.0)
| ハードライト合成. More...
static bool | Lighten (Image *合成元, const Image *入力, double 合成率=1.0)
| 比較合成(明). More...
static bool | Multiple (Image *合成元, const Image *入力, double 合成率=1.0)
| 乗算合成. More...
static bool | Normal (Image *合成元, const Image *入力, double 合成率=1.0)
| 通常合成. More...
static bool | OverLay (Image *合成元, const Image *入力, double 合成率=1.0)
| オーバーレイ合成. More...
static bool | RgbaSelectMix (Image *合成元, const Image *入力, std::string 色要素指定, double 合成率=1.0)
| RGBAの要素を選択して合成. More...
static bool | Screen (Image *合成元, const Image *入力, double 合成率=1.0)
| スクリーン合成. More...
static bool | SoftLight (Image *合成元, const Image *入力, double 合成率)
| ソフトライト合成. More...

## Detailed Description

Image同士の合成処理を行う関数群[未実装].

合成元のImageと入力Imageを合成し、画像編集ソフトにあるような合成処理を施す。
合成率は0.0～1.0の範囲で指定し、率が高い程入力の影響が強くなる。

//Copyright © 2014 SDXFramework
//[License]GNU Affero General Public License, version 3
//[Contact]http://sourceforge.jp/projects/dxframework/
//色んな画像を合成してみる
bool SampleBlend()
{
/*
//サンプルコード作成途中です。
using namespace SDX;
System::Initialise("sample", 640, 480);
Image imageA("image.bmp");
Image imageB("image.bmp");
Image imageC = BlendBlt::Add(&imageA, &imageB, 128);
while (System::Update())
{
imageA.Draw({ 10, 10 });
imageB.Draw({ 10, 200 });
imageC.Draw({ 200, 10 });
if (Input::key.Return.on){ break; }//Enterで終了
}
System::End();
*/
return true;
}

Todo:
  実装が面倒なので後回し

## Member Function Documentation

static bool SDX::Blend::Add | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

加算合成.

合成イメージに入力イメージの色を足す。

static bool SDX::Blend::Burn | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

焼き込み合成.

合成して暗くする。
[計算方法]
合成後の色 = 1.0 - ( 1.0 - 合成元の色 ) / 入力の色
※入力の色が0.0の時、合成後の色は0.0

static bool SDX::Blend::Darken | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

比較合成(暗).

合成と入力の暗い方を合成後の色にする。

static bool SDX::Blend::Difference | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

減算合成.

合成イメージから、入力イメージを減算する。

static bool SDX::Blend::Dodge | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

覆い焼き合成.

合成後、明るくする。
[計算方法]
合成後の色 = 合成元の色 / (1.0 - 入力の色)
※入力の色が1.0の場合、合成後の色は1.0

static bool SDX::Blend::Exclusion | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

除外合成.

合成後、暗くする。
[計算方法]
合成後 = 合成元 + 入力 - 2.0 * 合成元 * 入力

static bool SDX::Blend::HardLight | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

ハードライト合成.

オーバーレイ合成の条件を、合成元から入力に変更して計算。

static bool SDX::Blend::Lighten | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

比較合成(明).

合成と入力の明るい方を合成後の色にする。

static bool SDX::Blend::Multiple | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

乗算合成.

二つのイメージの色を乗算する。
各成分は0.0～1.0の値に見立てて乗算を行うので、
元の色より暗くなる事はあっても明るくなることはない。

static bool SDX::Blend::Normal | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

通常合成.

特殊な効果を付けずに合成
合成率が1に近いほど、入力画像の不透明度が高くなる。

static bool SDX::Blend::OverLay | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

オーバーレイ合成.

合成イメージの色が0.5以下の部分は暗く、それ以外は明るくする合成。
[計算方法]
GrHandleの色が0.5以下:
合成後の色 = 合成元の色 * 入力の色 * 2.0
それ以外:
合成後の色 = 2.0 * ( 合成元の色 + 入力の色 - 合成元の色 * 入力の色 ) - 1.0

static bool SDX::Blend::RgbaSelectMix | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | std::string | 色要素指定,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

RGBAの要素を選択して合成.

合成後の画像として赤・緑・青・αの各成分を 合成元、入力のどちらのどの要素から取るかを指定する。
どの色要素を使うかはRGBAのアルファベット4文字で指定し、大文字なら合成元、小文字なら入力から取る. 例えば『gBAr』とした場合、赤=入力の緑、緑=合成元の青、青=合成元のα、α=入力のαとなる。

static bool SDX::Blend::Screen | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率 = `1.0`
| ) |  |
| inline static

スクリーン合成.

加算合成のように明るくする。
[計算方法]
合成後の色 = 1.0f - ( ( 1.0f - 合成イメージの色 ) * ( 1.0f - 入力イメージの色 ) )

static bool SDX::Blend::SoftLight | ( | Image * | 合成元,
|  | const Image * | 入力,
|  | double | 合成率
| ) |  |
| inline static

ソフトライト合成.

合成イメージの色が0.5以下の部分は暗く、それ以外は明るくする合成。
[計算方法]
GrHandleの色が0.5以下:
合成後の色 = pow( 合成元, ( 1.0f - 入力 ) * 2.0 )
それ以外:
合成後の色 = pow( 合成元, 0.5 / 入力 )