krita

kis_composite_op.cc

00001 /*
00002  *  Copyright (c) 2005 Adrian Page <adrian@pagenet.plus.com>
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; either version 2 of the License, or
00007  *  (at your option) any later version.
00008  *
00009  *  This program is distributed in the hope that it will be useful,
00010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012  *  GNU General Public License for more details.
00013  *
00014  *  You should have received a copy of the GNU General Public License
00015  *  along with this program; if not, write to the Free Software
00016  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00017  */
00018 
00019 #include <klocale.h>
00020 
00021 #include "kis_composite_op.h"
00022 
00023 //KisIDCompositeOpMap
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("in",         i18n("In"))] =                   COMPOSITE_IN;                 
00094     s_idOpMap[KisID("out",         i18n("Out"))] =            COMPOSITE_OUT;                
00095     s_idOpMap[KisID("atop",     i18n("Atop"))] =        COMPOSITE_ATOP;               
00096     s_idOpMap[KisID("xor",         i18n("Xor"))] =            COMPOSITE_XOR;                
00097     s_idOpMap[KisID("plus",        i18n("Plus"))] =        COMPOSITE_PLUS;               
00098     s_idOpMap[KisID("minus",    i18n("Minus"))] =        COMPOSITE_MINUS;              
00099     s_idOpMap[KisID("add",         i18n("Add"))] =            COMPOSITE_ADD;                
00100     s_idOpMap[KisID("subtract",    i18n("Subtract"))] =        COMPOSITE_SUBTRACT;           
00101     s_idOpMap[KisID("diff",     i18n("Diff"))] =        COMPOSITE_DIFF;               
00102     s_idOpMap[KisID("multiply",    i18n("Multiply"))] =        COMPOSITE_MULT;               
00103     s_idOpMap[KisID("divide",    i18n("Divide"))] =        COMPOSITE_DIVIDE;             
00104     s_idOpMap[KisID("dodge",     i18n("Dodge"))] =        COMPOSITE_DODGE;              
00105     s_idOpMap[KisID("burn",     i18n("Burn"))] =        COMPOSITE_BURN;               
00106     s_idOpMap[KisID("bumpmap",     i18n("Bumpmap"))] =        COMPOSITE_BUMPMAP;            
00107     s_idOpMap[KisID("copy",     i18n("Copy"))] =        COMPOSITE_COPY;               
00108     s_idOpMap[KisID("copyred",     i18n("Copy Red"))] =        COMPOSITE_COPY_RED;           
00109     s_idOpMap[KisID("copygreen",     i18n("Copy Green"))] =        COMPOSITE_COPY_GREEN;         
00110     s_idOpMap[KisID("copyblue",     i18n("Copy Blue"))] =        COMPOSITE_COPY_BLUE;          
00111     s_idOpMap[KisID("copyopacity",     i18n("Copy Opacity"))] =    COMPOSITE_COPY_OPACITY;       
00112     s_idOpMap[KisID("clear",     i18n("Clear"))] =        COMPOSITE_CLEAR;              
00113     s_idOpMap[KisID("dissolve",     i18n("Dissolve"))] =        COMPOSITE_DISSOLVE;           
00114     s_idOpMap[KisID("displace",     i18n("Displace"))] =        COMPOSITE_DISPLACE;           
00115 #if 0                                                                                     
00116     s_idOpMap[KisID("modulate",     i18n("Modulate"))] =        COMPOSITE_MODULATE;           
00117     s_idOpMap[KisID("threshold",     i18n("Threshold"))] =        COMPOSITE_THRESHOLD;          
00118 #endif                                                                                     
00119     s_idOpMap[KisID("nocomposition",i18n("No Composition"))] =    COMPOSITE_NO;                 
00120     s_idOpMap[KisID("darken",     i18n("Darken"))] =        COMPOSITE_DARKEN;             
00121     s_idOpMap[KisID("lighten",     i18n("Lighten"))] =        COMPOSITE_LIGHTEN;            
00122     s_idOpMap[KisID("hue",         i18n("Hue"))] =            COMPOSITE_HUE;                
00123     s_idOpMap[KisID("saturation",     i18n("Saturation"))] =        COMPOSITE_SATURATION;         
00124     s_idOpMap[KisID("value",     i18n("Value"))] =        COMPOSITE_VALUE;              
00125     s_idOpMap[KisID("color",     i18n("Color"))] =        COMPOSITE_COLOR;              
00126     s_idOpMap[KisID("colorize",     i18n("Colorize"))] =        COMPOSITE_COLORIZE;           
00127     s_idOpMap[KisID("luminize",     i18n("Luminize"))] =        COMPOSITE_LUMINIZE;           
00128     s_idOpMap[KisID("screen",     i18n("Screen"))] =        COMPOSITE_SCREEN;             
00129     s_idOpMap[KisID("overlay",     i18n("Overlay"))] =        COMPOSITE_OVERLAY;            
00130     s_idOpMap[KisID("copycyan",     i18n("Copy Cyan"))] =        COMPOSITE_COPY_CYAN;          
00131     s_idOpMap[KisID("copymagenta",     i18n("Copy Magenta"))] =    COMPOSITE_COPY_MAGENTA;       
00132     s_idOpMap[KisID("copyyellow",     i18n("Copy Yellow"))] =        COMPOSITE_COPY_YELLOW;        
00133     s_idOpMap[KisID("copyblack",     i18n("Copy Black"))] =        COMPOSITE_COPY_BLACK;         
00134     s_idOpMap[KisID("erase",     i18n("Erase"))] =        COMPOSITE_ERASE;              
00135     s_idOpMap[KisID("undefined",     i18n("Undefined"))] =            COMPOSITE_UNDEF;              
00136 }
00137                  
KDE Home | KDE Accessibility Home | Description of Access Keys