mirror of
https://github.com/aseprite/aseprite.git
synced 2024-10-06 06:50:07 +00:00
Add missing src/app/script/blend_mode.h file for 17c66181ae
This commit is contained in:
parent
17c66181ae
commit
e79907dae3
204
src/app/script/blend_mode.h
Normal file
204
src/app/script/blend_mode.h
Normal file
@ -0,0 +1,204 @@
|
|||||||
|
// Aseprite
|
||||||
|
// Copyright (c) 2023 Igara Studio S.A.
|
||||||
|
//
|
||||||
|
// This program is distributed under the terms of
|
||||||
|
// the End-User License Agreement for Aseprite.
|
||||||
|
|
||||||
|
#ifndef APP_SCRIPT_BLEND_MODE_H_INCLUDED
|
||||||
|
#define APP_SCRIPT_BLEND_MODE_H_INCLUDED
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "base/convert_to.h"
|
||||||
|
#include "doc/blend_mode.h"
|
||||||
|
#include "os/paint.h"
|
||||||
|
|
||||||
|
namespace app {
|
||||||
|
namespace script {
|
||||||
|
|
||||||
|
// Blend modes for doc::BlendMode and os::BlendMode, used in
|
||||||
|
// Layer.blendMode and GraphicsContext.blendMode.
|
||||||
|
enum class BlendMode : int {
|
||||||
|
CLEAR,
|
||||||
|
SRC,
|
||||||
|
DST,
|
||||||
|
SRC_OVER,
|
||||||
|
DST_OVER,
|
||||||
|
SRC_IN,
|
||||||
|
DST_IN,
|
||||||
|
SRC_OUT,
|
||||||
|
DST_OUT,
|
||||||
|
SRC_ATOP,
|
||||||
|
DST_ATOP,
|
||||||
|
XOR,
|
||||||
|
PLUS,
|
||||||
|
MODULATE,
|
||||||
|
MULTIPLY,
|
||||||
|
SCREEN,
|
||||||
|
OVERLAY,
|
||||||
|
DARKEN,
|
||||||
|
LIGHTEN,
|
||||||
|
COLOR_DODGE,
|
||||||
|
COLOR_BURN,
|
||||||
|
HARD_LIGHT,
|
||||||
|
SOFT_LIGHT,
|
||||||
|
DIFFERENCE,
|
||||||
|
EXCLUSION,
|
||||||
|
HUE,
|
||||||
|
SATURATION,
|
||||||
|
COLOR,
|
||||||
|
LUMINOSITY,
|
||||||
|
ADDITION,
|
||||||
|
SUBTRACT,
|
||||||
|
DIVIDE,
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace script
|
||||||
|
} // namespace app
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline os::BlendMode convert_to(const app::script::BlendMode& from) {
|
||||||
|
switch (from) {
|
||||||
|
case app::script::BlendMode::CLEAR: return os::BlendMode::Clear;
|
||||||
|
case app::script::BlendMode::SRC: return os::BlendMode::Src;
|
||||||
|
case app::script::BlendMode::DST: return os::BlendMode::Dst;
|
||||||
|
case app::script::BlendMode::SRC_OVER: return os::BlendMode::SrcOver;
|
||||||
|
case app::script::BlendMode::DST_OVER: return os::BlendMode::DstOver;
|
||||||
|
case app::script::BlendMode::SRC_IN: return os::BlendMode::SrcIn;
|
||||||
|
case app::script::BlendMode::DST_IN: return os::BlendMode::DstIn;
|
||||||
|
case app::script::BlendMode::SRC_OUT: return os::BlendMode::SrcOut;
|
||||||
|
case app::script::BlendMode::DST_OUT: return os::BlendMode::DstOut;
|
||||||
|
case app::script::BlendMode::SRC_ATOP: return os::BlendMode::SrcATop;
|
||||||
|
case app::script::BlendMode::DST_ATOP: return os::BlendMode::DstATop;
|
||||||
|
case app::script::BlendMode::XOR: return os::BlendMode::Xor;
|
||||||
|
case app::script::BlendMode::PLUS: return os::BlendMode::Plus;
|
||||||
|
case app::script::BlendMode::MODULATE: return os::BlendMode::Modulate;
|
||||||
|
case app::script::BlendMode::MULTIPLY: return os::BlendMode::Multiply;
|
||||||
|
case app::script::BlendMode::SCREEN: return os::BlendMode::Screen;
|
||||||
|
case app::script::BlendMode::OVERLAY: return os::BlendMode::Overlay;
|
||||||
|
case app::script::BlendMode::DARKEN: return os::BlendMode::Darken;
|
||||||
|
case app::script::BlendMode::LIGHTEN: return os::BlendMode::Lighten;
|
||||||
|
case app::script::BlendMode::COLOR_DODGE: return os::BlendMode::ColorDodge;
|
||||||
|
case app::script::BlendMode::COLOR_BURN: return os::BlendMode::ColorBurn;
|
||||||
|
case app::script::BlendMode::HARD_LIGHT: return os::BlendMode::HardLight;
|
||||||
|
case app::script::BlendMode::SOFT_LIGHT: return os::BlendMode::SoftLight;
|
||||||
|
case app::script::BlendMode::DIFFERENCE: return os::BlendMode::Difference;
|
||||||
|
case app::script::BlendMode::EXCLUSION: return os::BlendMode::Exclusion;
|
||||||
|
case app::script::BlendMode::HUE: return os::BlendMode::Hue;
|
||||||
|
case app::script::BlendMode::SATURATION: return os::BlendMode::Saturation;
|
||||||
|
case app::script::BlendMode::COLOR: return os::BlendMode::Color;
|
||||||
|
case app::script::BlendMode::LUMINOSITY: return os::BlendMode::Luminosity;
|
||||||
|
case app::script::BlendMode::ADDITION: return os::BlendMode::Plus;
|
||||||
|
// Default value
|
||||||
|
case app::script::BlendMode::SUBTRACT:
|
||||||
|
case app::script::BlendMode::DIVIDE:
|
||||||
|
return os::BlendMode::SrcOver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline app::script::BlendMode convert_to(const os::BlendMode& from) {
|
||||||
|
switch (from) {
|
||||||
|
case os::BlendMode::Clear: return app::script::BlendMode::CLEAR;
|
||||||
|
case os::BlendMode::Src: return app::script::BlendMode::SRC;
|
||||||
|
case os::BlendMode::Dst: return app::script::BlendMode::DST;
|
||||||
|
case os::BlendMode::SrcOver: return app::script::BlendMode::SRC_OVER;
|
||||||
|
case os::BlendMode::DstOver: return app::script::BlendMode::DST_OVER;
|
||||||
|
case os::BlendMode::SrcIn: return app::script::BlendMode::SRC_IN;
|
||||||
|
case os::BlendMode::DstIn: return app::script::BlendMode::DST_IN;
|
||||||
|
case os::BlendMode::SrcOut: return app::script::BlendMode::SRC_OUT;
|
||||||
|
case os::BlendMode::DstOut: return app::script::BlendMode::DST_OUT;
|
||||||
|
case os::BlendMode::SrcATop: return app::script::BlendMode::SRC_ATOP;
|
||||||
|
case os::BlendMode::DstATop: return app::script::BlendMode::DST_ATOP;
|
||||||
|
case os::BlendMode::Xor: return app::script::BlendMode::XOR;
|
||||||
|
case os::BlendMode::Plus: return app::script::BlendMode::PLUS;
|
||||||
|
case os::BlendMode::Modulate: return app::script::BlendMode::MODULATE;
|
||||||
|
case os::BlendMode::Screen: return app::script::BlendMode::SCREEN;
|
||||||
|
case os::BlendMode::Overlay: return app::script::BlendMode::OVERLAY;
|
||||||
|
case os::BlendMode::Darken: return app::script::BlendMode::DARKEN;
|
||||||
|
case os::BlendMode::Lighten: return app::script::BlendMode::LIGHTEN;
|
||||||
|
case os::BlendMode::ColorDodge: return app::script::BlendMode::COLOR_DODGE;
|
||||||
|
case os::BlendMode::ColorBurn: return app::script::BlendMode::COLOR_BURN;
|
||||||
|
case os::BlendMode::HardLight: return app::script::BlendMode::HARD_LIGHT;
|
||||||
|
case os::BlendMode::SoftLight: return app::script::BlendMode::SOFT_LIGHT;
|
||||||
|
case os::BlendMode::Difference: return app::script::BlendMode::DIFFERENCE;
|
||||||
|
case os::BlendMode::Exclusion: return app::script::BlendMode::EXCLUSION;
|
||||||
|
case os::BlendMode::Multiply: return app::script::BlendMode::MULTIPLY;
|
||||||
|
case os::BlendMode::Hue: return app::script::BlendMode::HUE;
|
||||||
|
case os::BlendMode::Saturation: return app::script::BlendMode::SATURATION;
|
||||||
|
case os::BlendMode::Color: return app::script::BlendMode::COLOR;
|
||||||
|
case os::BlendMode::Luminosity: return app::script::BlendMode::LUMINOSITY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline doc::BlendMode convert_to(const app::script::BlendMode& from) {
|
||||||
|
switch (from) {
|
||||||
|
case app::script::BlendMode::SRC_OVER: return doc::BlendMode::NORMAL;
|
||||||
|
case app::script::BlendMode::PLUS: return doc::BlendMode::ADDITION;
|
||||||
|
case app::script::BlendMode::MULTIPLY: return doc::BlendMode::MULTIPLY;
|
||||||
|
case app::script::BlendMode::SCREEN: return doc::BlendMode::SCREEN;
|
||||||
|
case app::script::BlendMode::OVERLAY: return doc::BlendMode::OVERLAY;
|
||||||
|
case app::script::BlendMode::DARKEN: return doc::BlendMode::DARKEN;
|
||||||
|
case app::script::BlendMode::LIGHTEN: return doc::BlendMode::LIGHTEN;
|
||||||
|
case app::script::BlendMode::COLOR_DODGE: return doc::BlendMode::COLOR_DODGE;
|
||||||
|
case app::script::BlendMode::COLOR_BURN: return doc::BlendMode::COLOR_BURN;
|
||||||
|
case app::script::BlendMode::HARD_LIGHT: return doc::BlendMode::HARD_LIGHT;
|
||||||
|
case app::script::BlendMode::SOFT_LIGHT: return doc::BlendMode::SOFT_LIGHT;
|
||||||
|
case app::script::BlendMode::DIFFERENCE: return doc::BlendMode::DIFFERENCE;
|
||||||
|
case app::script::BlendMode::EXCLUSION: return doc::BlendMode::EXCLUSION;
|
||||||
|
case app::script::BlendMode::HUE: return doc::BlendMode::HSL_HUE;
|
||||||
|
case app::script::BlendMode::SATURATION: return doc::BlendMode::HSL_SATURATION;
|
||||||
|
case app::script::BlendMode::COLOR: return doc::BlendMode::HSL_COLOR;
|
||||||
|
case app::script::BlendMode::LUMINOSITY: return doc::BlendMode::HSL_LUMINOSITY;
|
||||||
|
case app::script::BlendMode::ADDITION: return doc::BlendMode::ADDITION;
|
||||||
|
case app::script::BlendMode::SUBTRACT: return doc::BlendMode::SUBTRACT;
|
||||||
|
case app::script::BlendMode::DIVIDE: return doc::BlendMode::DIVIDE;
|
||||||
|
// Default value
|
||||||
|
case app::script::BlendMode::CLEAR:
|
||||||
|
case app::script::BlendMode::SRC:
|
||||||
|
case app::script::BlendMode::DST:
|
||||||
|
case app::script::BlendMode::DST_OVER:
|
||||||
|
case app::script::BlendMode::SRC_IN:
|
||||||
|
case app::script::BlendMode::DST_IN:
|
||||||
|
case app::script::BlendMode::SRC_OUT:
|
||||||
|
case app::script::BlendMode::DST_OUT:
|
||||||
|
case app::script::BlendMode::SRC_ATOP:
|
||||||
|
case app::script::BlendMode::DST_ATOP:
|
||||||
|
case app::script::BlendMode::XOR:
|
||||||
|
case app::script::BlendMode::MODULATE:
|
||||||
|
return doc::BlendMode::NORMAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<>
|
||||||
|
inline app::script::BlendMode convert_to(const doc::BlendMode& from) {
|
||||||
|
switch (from) {
|
||||||
|
case doc::BlendMode::NORMAL: return app::script::BlendMode::SRC_OVER;
|
||||||
|
case doc::BlendMode::MULTIPLY: return app::script::BlendMode::MULTIPLY;
|
||||||
|
case doc::BlendMode::SCREEN: return app::script::BlendMode::SCREEN;
|
||||||
|
case doc::BlendMode::OVERLAY: return app::script::BlendMode::OVERLAY;
|
||||||
|
case doc::BlendMode::DARKEN: return app::script::BlendMode::DARKEN;
|
||||||
|
case doc::BlendMode::LIGHTEN: return app::script::BlendMode::LIGHTEN;
|
||||||
|
case doc::BlendMode::COLOR_DODGE: return app::script::BlendMode::COLOR_DODGE;
|
||||||
|
case doc::BlendMode::COLOR_BURN: return app::script::BlendMode::COLOR_BURN;
|
||||||
|
case doc::BlendMode::HARD_LIGHT: return app::script::BlendMode::HARD_LIGHT;
|
||||||
|
case doc::BlendMode::SOFT_LIGHT: return app::script::BlendMode::SOFT_LIGHT;
|
||||||
|
case doc::BlendMode::DIFFERENCE: return app::script::BlendMode::DIFFERENCE;
|
||||||
|
case doc::BlendMode::EXCLUSION: return app::script::BlendMode::EXCLUSION;
|
||||||
|
case doc::BlendMode::HSL_HUE: return app::script::BlendMode::HUE;
|
||||||
|
case doc::BlendMode::HSL_SATURATION: return app::script::BlendMode::SATURATION;
|
||||||
|
case doc::BlendMode::HSL_COLOR: return app::script::BlendMode::COLOR;
|
||||||
|
case doc::BlendMode::HSL_LUMINOSITY: return app::script::BlendMode::LUMINOSITY;
|
||||||
|
case doc::BlendMode::ADDITION: return app::script::BlendMode::ADDITION;
|
||||||
|
case doc::BlendMode::SUBTRACT: return app::script::BlendMode::SUBTRACT;
|
||||||
|
case doc::BlendMode::DIVIDE: return app::script::BlendMode::DIVIDE;
|
||||||
|
default:
|
||||||
|
return app::script::BlendMode::SRC_OVER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue
Block a user