kis_composite_op.cpp
1/*
2 * Copyright (c) 2005 Adrian Page <adrian@pagenet.plus.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18
19#include <tdelocale.h>
20
21#include "kis_composite_op.h"
22
23//KisIDCompositeOpMap
24std::map<KisID, CompositeOp> KisCompositeOp::s_idOpMap;
25
26KisCompositeOp::KisCompositeOp()
27{
28 m_valid = false;
29}
30
31KisCompositeOp::KisCompositeOp(const TQString& id)
32{
33 if (s_idOpMap.empty()) {
34 fillMap();
35 }
36
37 KisIDCompositeOpMap::const_iterator it;
38 m_valid = false;
39
40 for (it = s_idOpMap.begin(); it != s_idOpMap.end(); ++it) {
41
42 const KisID& kisId = (*it).first;
43
44 if (kisId.id() == id) {
45
46 m_id = (*it).first;
47 m_op = (*it).second;
48 m_valid = true;
49 break;
50 }
51 }
52}
53
54KisCompositeOp::KisCompositeOp(CompositeOp compositeOp)
55{
56 if (s_idOpMap.empty()) {
57 fillMap();
58 }
59
60 KisIDCompositeOpMap::const_iterator it;
61 m_valid = false;
62
63 for (it = s_idOpMap.begin(); it != s_idOpMap.end(); ++it) {
64
65 CompositeOp compOp = (*it).second;
66
67 if (compOp == compositeOp) {
68
69 m_id = (*it).first;
70 m_op = compositeOp;
71 m_valid = true;
72 break;
73 }
74 }
75}
76
77bool KisCompositeOp::operator==(const KisCompositeOp& other) const
78{
79 if (isValid() && other.isValid()) {
80 return op() == other.op();
81 }
82 return false;
83}
84
85bool KisCompositeOp::operator!=(const KisCompositeOp& other) const
86{
87 return !(*this == other);
88}
89
90void KisCompositeOp::fillMap()
91{
92 s_idOpMap[KisID("normal", i18n("Normal"))] = COMPOSITE_OVER;
93 s_idOpMap[KisID("alphadarken", i18n("Alpha Darken"))] = COMPOSITE_ALPHA_DARKEN;
94 s_idOpMap[KisID("in", i18n("In"))] = COMPOSITE_IN;
95 s_idOpMap[KisID("out", i18n("Out"))] = COMPOSITE_OUT;
96 s_idOpMap[KisID("atop", i18n("Atop"))] = COMPOSITE_ATOP;
97 s_idOpMap[KisID("xor", i18n("Xor"))] = COMPOSITE_XOR;
98 s_idOpMap[KisID("plus", i18n("Plus"))] = COMPOSITE_PLUS;
99 s_idOpMap[KisID("minus", i18n("Minus"))] = COMPOSITE_MINUS;
100 s_idOpMap[KisID("add", i18n("Add"))] = COMPOSITE_ADD;
101 s_idOpMap[KisID("subtract", i18n("Subtract"))] = COMPOSITE_SUBTRACT;
102 s_idOpMap[KisID("diff", i18n("Diff"))] = COMPOSITE_DIFF;
103 s_idOpMap[KisID("multiply", i18n("Multiply"))] = COMPOSITE_MULT;
104 s_idOpMap[KisID("divide", i18n("Divide"))] = COMPOSITE_DIVIDE;
105 s_idOpMap[KisID("dodge", i18n("Dodge"))] = COMPOSITE_DODGE;
106 s_idOpMap[KisID("burn", i18n("Burn"))] = COMPOSITE_BURN;
107 s_idOpMap[KisID("bumpmap", i18n("Bumpmap"))] = COMPOSITE_BUMPMAP;
108 s_idOpMap[KisID("copy", i18n("Copy"))] = COMPOSITE_COPY;
109 s_idOpMap[KisID("copyred", i18n("Copy Red"))] = COMPOSITE_COPY_RED;
110 s_idOpMap[KisID("copygreen", i18n("Copy Green"))] = COMPOSITE_COPY_GREEN;
111 s_idOpMap[KisID("copyblue", i18n("Copy Blue"))] = COMPOSITE_COPY_BLUE;
112 s_idOpMap[KisID("copyopacity", i18n("Copy Opacity"))] = COMPOSITE_COPY_OPACITY;
113 s_idOpMap[KisID("clear", i18n("Clear"))] = COMPOSITE_CLEAR;
114 s_idOpMap[KisID("dissolve", i18n("Dissolve"))] = COMPOSITE_DISSOLVE;
115 s_idOpMap[KisID("displace", i18n("Displace"))] = COMPOSITE_DISPLACE;
116#if 0
117 s_idOpMap[KisID("modulate", i18n("Modulate"))] = COMPOSITE_MODULATE;
118 s_idOpMap[KisID("threshold", i18n("Threshold"))] = COMPOSITE_THRESHOLD;
119#endif
120 s_idOpMap[KisID("nocomposition",i18n("No Composition"))] = COMPOSITE_NO;
121 s_idOpMap[KisID("darken", i18n("Darken"))] = COMPOSITE_DARKEN;
122 s_idOpMap[KisID("lighten", i18n("Lighten"))] = COMPOSITE_LIGHTEN;
123 s_idOpMap[KisID("hue", i18n("Hue"))] = COMPOSITE_HUE;
124 s_idOpMap[KisID("saturation", i18n("Saturation"))] = COMPOSITE_SATURATION;
125 s_idOpMap[KisID("value", i18n("Value"))] = COMPOSITE_VALUE;
126 s_idOpMap[KisID("color", i18n("Color"))] = COMPOSITE_COLOR;
127 s_idOpMap[KisID("colorize", i18n("Colorize"))] = COMPOSITE_COLORIZE;
128 s_idOpMap[KisID("luminize", i18n("Luminize"))] = COMPOSITE_LUMINIZE;
129 s_idOpMap[KisID("screen", i18n("Screen"))] = COMPOSITE_SCREEN;
130 s_idOpMap[KisID("overlay", i18n("Overlay"))] = COMPOSITE_OVERLAY;
131 s_idOpMap[KisID("copycyan", i18n("Copy Cyan"))] = COMPOSITE_COPY_CYAN;
132 s_idOpMap[KisID("copymagenta", i18n("Copy Magenta"))] = COMPOSITE_COPY_MAGENTA;
133 s_idOpMap[KisID("copyyellow", i18n("Copy Yellow"))] = COMPOSITE_COPY_YELLOW;
134 s_idOpMap[KisID("copyblack", i18n("Copy Black"))] = COMPOSITE_COPY_BLACK;
135 s_idOpMap[KisID("erase", i18n("Erase"))] = COMPOSITE_ERASE;
136 s_idOpMap[KisID("undefined", i18n("Undefined"))] = COMPOSITE_UNDEF;
137}
138
Chalk has a large number of extensible resources.
Definition kis_id.h:57