Shinya Kitaoka 810553
#pragma once
Shinya Kitaoka 810553
Toshihiro Shimizu 890ddd
#ifndef igs_color_blend_h
Toshihiro Shimizu 890ddd
#define igs_color_blend_h
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace igs {
Shinya Kitaoka 120a6e
namespace color {
Toshihiro Shimizu 890ddd
// 01
Toshihiro Shimizu 890ddd
void over(/* アルファ合成(通常) */
Shinya Kitaoka 120a6e
          double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
          const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
          const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 02
Shinya Kitaoka 120a6e
void darken(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
            const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
            const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 03
Shinya Kitaoka 120a6e
void multiply(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
              const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
              const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 04
Toshihiro Shimizu 890ddd
void color_burn(/* 焼き込みカラー */
Shinya Kitaoka 120a6e
                double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 05
Toshihiro Shimizu 890ddd
void linear_burn(/* 焼き込みリニア */
Shinya Kitaoka 120a6e
                 double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                 const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                 const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 06
Shinya Kitaoka 120a6e
void darker_color(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                  const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                  const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 07
Shinya Kitaoka 120a6e
void lighten(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
             const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
             const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 08
Shinya Kitaoka 120a6e
void screen(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
            const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
            const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 09
Toshihiro Shimizu 890ddd
void color_dodge(/* 覆い焼きカラー */
Shinya Kitaoka 120a6e
                 double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                 const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                 const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 10
Toshihiro Shimizu 890ddd
void linear_dodge(/* 覆い焼きリニア(単純加算ではない) */
Shinya Kitaoka 120a6e
                  double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                  const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                  const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 11
Shinya Kitaoka 120a6e
void lighter_color(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                   const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                   const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 12
Shinya Kitaoka 120a6e
void overlay(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
             const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
             const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 13
Shinya Kitaoka 120a6e
void soft_light(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 14
Shinya Kitaoka 120a6e
void hard_light(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 15
Shinya Kitaoka 120a6e
void vivid_light(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                 const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                 const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 16
Shinya Kitaoka 120a6e
void linear_light(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                  const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                  const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 17
Shinya Kitaoka 120a6e
void pin_light(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
               const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
               const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 18
Shinya Kitaoka 120a6e
void hard_mix(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
              const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
              const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
//-----------------
Toshihiro Shimizu 890ddd
// 19
Shinya Kitaoka 120a6e
void cross_dissolve(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
                    const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
                    const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 20
Shinya Kitaoka 120a6e
void subtract(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
              const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
              const double up_opacity, const bool alpha_rendering_sw,
shun-iwasawa 26a3ce
              const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 21
Toshihiro Shimizu 890ddd
void add(/* 単純加算 */
Shinya Kitaoka 120a6e
         double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
         const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
         const double up_opacity, const bool do_clamp = true);
Toshihiro Shimizu 890ddd
// 22
Shinya Kitaoka 120a6e
void divide(double &dn_r, double &dn_g, double &dn_b, double &dn_a,
Shinya Kitaoka 120a6e
            const double up_r, double up_g, double up_b, double up_a,
shun-iwasawa 26a3ce
            const double up_opacity, const bool do_clamp = true);
shun-iwasawa 26a3ce
}  // namespace color
shun-iwasawa 26a3ce
}  // namespace igs
Toshihiro Shimizu 890ddd
#endif /* !igs_color_blend_h */