00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <klocale.h>
00020
00021 #include "kis_composite_op.h"
00022
00023
00024 std::map<KisID, CompositeOp> KisCompositeOp::s_idOpMap;
00025
00026 KisCompositeOp::KisCompositeOp()
00027 {
00028 m_valid = false;
00029 }
00030
00031 KisCompositeOp::KisCompositeOp(const QString& id)
00032 {
00033 if (s_idOpMap.empty()) {
00034 fillMap();
00035 }
00036
00037 KisIDCompositeOpMap::const_iterator it;
00038 m_valid = false;
00039
00040 for (it = s_idOpMap.begin(); it != s_idOpMap.end(); ++it) {
00041
00042 const KisID& kisId = (*it).first;
00043
00044 if (kisId.id() == id) {
00045
00046 m_id = (*it).first;
00047 m_op = (*it).second;
00048 m_valid = true;
00049 break;
00050 }
00051 }
00052 }
00053
00054 KisCompositeOp::KisCompositeOp(CompositeOp compositeOp)
00055 {
00056 if (s_idOpMap.empty()) {
00057 fillMap();
00058 }
00059
00060 KisIDCompositeOpMap::const_iterator it;
00061 m_valid = false;
00062
00063 for (it = s_idOpMap.begin(); it != s_idOpMap.end(); ++it) {
00064
00065 CompositeOp compOp = (*it).second;
00066
00067 if (compOp == compositeOp) {
00068
00069 m_id = (*it).first;
00070 m_op = compositeOp;
00071 m_valid = true;
00072 break;
00073 }
00074 }
00075 }
00076
00077 bool KisCompositeOp::operator==(const KisCompositeOp& other) const
00078 {
00079 if (isValid() && other.isValid()) {
00080 return op() == other.op();
00081 }
00082 return false;
00083 }
00084
00085 bool KisCompositeOp::operator!=(const KisCompositeOp& other) const
00086 {
00087 return !(*this == other);
00088 }
00089
00090 void KisCompositeOp::fillMap()
00091 {
00092 s_idOpMap[KisID("normal", i18n("Normal"))] = COMPOSITE_OVER;
00093 s_idOpMap[KisID("alphadarken", i18n("Alpha Darken"))] = COMPOSITE_ALPHA_DARKEN;
00094 s_idOpMap[KisID("in", i18n("In"))] = COMPOSITE_IN;
00095 s_idOpMap[KisID("out", i18n("Out"))] = COMPOSITE_OUT;
00096 s_idOpMap[KisID("atop", i18n("Atop"))] = COMPOSITE_ATOP;
00097 s_idOpMap[KisID("xor", i18n("Xor"))] = COMPOSITE_XOR;
00098 s_idOpMap[KisID("plus", i18n("Plus"))] = COMPOSITE_PLUS;
00099 s_idOpMap[KisID("minus", i18n("Minus"))] = COMPOSITE_MINUS;
00100 s_idOpMap[KisID("add", i18n("Add"))] = COMPOSITE_ADD;
00101 s_idOpMap[KisID("subtract", i18n("Subtract"))] = COMPOSITE_SUBTRACT;
00102 s_idOpMap[KisID("diff", i18n("Diff"))] = COMPOSITE_DIFF;
00103 s_idOpMap[KisID("multiply", i18n("Multiply"))] = COMPOSITE_MULT;
00104 s_idOpMap[KisID("divide", i18n("Divide"))] = COMPOSITE_DIVIDE;
00105 s_idOpMap[KisID("dodge", i18n("Dodge"))] = COMPOSITE_DODGE;
00106 s_idOpMap[KisID("burn", i18n("Burn"))] = COMPOSITE_BURN;
00107 s_idOpMap[KisID("bumpmap", i18n("Bumpmap"))] = COMPOSITE_BUMPMAP;
00108 s_idOpMap[KisID("copy", i18n("Copy"))] = COMPOSITE_COPY;
00109 s_idOpMap[KisID("copyred", i18n("Copy Red"))] = COMPOSITE_COPY_RED;
00110 s_idOpMap[KisID("copygreen", i18n("Copy Green"))] = COMPOSITE_COPY_GREEN;
00111 s_idOpMap[KisID("copyblue", i18n("Copy Blue"))] = COMPOSITE_COPY_BLUE;
00112 s_idOpMap[KisID("copyopacity", i18n("Copy Opacity"))] = COMPOSITE_COPY_OPACITY;
00113 s_idOpMap[KisID("clear", i18n("Clear"))] = COMPOSITE_CLEAR;
00114 s_idOpMap[KisID("dissolve", i18n("Dissolve"))] = COMPOSITE_DISSOLVE;
00115 s_idOpMap[KisID("displace", i18n("Displace"))] = COMPOSITE_DISPLACE;
00116 #if 0
00117 s_idOpMap[KisID("modulate", i18n("Modulate"))] = COMPOSITE_MODULATE;
00118 s_idOpMap[KisID("threshold", i18n("Threshold"))] = COMPOSITE_THRESHOLD;
00119 #endif
00120 s_idOpMap[KisID("nocomposition",i18n("No Composition"))] = COMPOSITE_NO;
00121 s_idOpMap[KisID("darken", i18n("Darken"))] = COMPOSITE_DARKEN;
00122 s_idOpMap[KisID("lighten", i18n("Lighten"))] = COMPOSITE_LIGHTEN;
00123 s_idOpMap[KisID("hue", i18n("Hue"))] = COMPOSITE_HUE;
00124 s_idOpMap[KisID("saturation", i18n("Saturation"))] = COMPOSITE_SATURATION;
00125 s_idOpMap[KisID("value", i18n("Value"))] = COMPOSITE_VALUE;
00126 s_idOpMap[KisID("color", i18n("Color"))] = COMPOSITE_COLOR;
00127 s_idOpMap[KisID("colorize", i18n("Colorize"))] = COMPOSITE_COLORIZE;
00128 s_idOpMap[KisID("luminize", i18n("Luminize"))] = COMPOSITE_LUMINIZE;
00129 s_idOpMap[KisID("screen", i18n("Screen"))] = COMPOSITE_SCREEN;
00130 s_idOpMap[KisID("overlay", i18n("Overlay"))] = COMPOSITE_OVERLAY;
00131 s_idOpMap[KisID("copycyan", i18n("Copy Cyan"))] = COMPOSITE_COPY_CYAN;
00132 s_idOpMap[KisID("copymagenta", i18n("Copy Magenta"))] = COMPOSITE_COPY_MAGENTA;
00133 s_idOpMap[KisID("copyyellow", i18n("Copy Yellow"))] = COMPOSITE_COPY_YELLOW;
00134 s_idOpMap[KisID("copyblack", i18n("Copy Black"))] = COMPOSITE_COPY_BLACK;
00135 s_idOpMap[KisID("erase", i18n("Erase"))] = COMPOSITE_ERASE;
00136 s_idOpMap[KisID("undefined", i18n("Undefined"))] = COMPOSITE_UNDEF;
00137 }
00138