diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 47d455dd55be855e4cc691c32f687f723d9247ee (patch) | |
tree | 52e236aaa2576bdb3840ebede26619692fed6d7d /kolourpaint/kpselectiontransparency.cpp | |
download | tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.tar.gz tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdegraphics@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kolourpaint/kpselectiontransparency.cpp')
-rw-r--r-- | kolourpaint/kpselectiontransparency.cpp | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/kolourpaint/kpselectiontransparency.cpp b/kolourpaint/kpselectiontransparency.cpp new file mode 100644 index 00000000..62919be4 --- /dev/null +++ b/kolourpaint/kpselectiontransparency.cpp @@ -0,0 +1,178 @@ + +/* + Copyright (c) 2003,2004,2005 Clarence Dang <[email protected]> + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + + +#define DEBUG_KP_SELECTION_TRANSPARENCY 0 + + +#include <kpselectiontransparency.h> + +#include <kdebug.h> + +#include <kpcolor.h> +#include <kpcolorsimilaritydialog.h> + + +kpSelectionTransparency::kpSelectionTransparency () + : m_isOpaque (true) +{ + setColorSimilarity (0); +} + +kpSelectionTransparency::kpSelectionTransparency (const kpColor &transparentColor, double colorSimilarity) + : m_isOpaque (false), + m_transparentColor (transparentColor) +{ + setColorSimilarity (colorSimilarity); +} + +kpSelectionTransparency::kpSelectionTransparency (bool isOpaque, const kpColor &transparentColor, + double colorSimilarity) + : m_isOpaque (isOpaque), + m_transparentColor (transparentColor) +{ + setColorSimilarity (colorSimilarity); +} + +bool kpSelectionTransparency::operator== (const kpSelectionTransparency &rhs) const +{ +#if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + kdDebug () << "kpSelectionTransparency::operator==()" << endl; +#endif + + if (m_isOpaque != rhs.m_isOpaque) + { + #if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + kdDebug () << "\tdifferent opacity: lhs=" << m_isOpaque + << " rhs=" << rhs.m_isOpaque + << endl; + #endif + return false; + } + + if (m_isOpaque) + { + #if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + kdDebug () << "\tboth opaque - eq" << endl; + #endif + return true; + } + +#if DEBUG_KP_SELECTION_TRANSPARENCY && 0 + kdDebug () << "\tcolours: lhs=" << (int *) m_transparentColor.toQRgb () + << " rhs=" << (int *) rhs.m_transparentColor.toQRgb () + << endl; + kdDebug () << "\tcolour similarity: lhs=" << m_colorSimilarity + << " rhs=" << rhs.m_colorSimilarity + << endl; +#endif + + return (m_transparentColor == rhs.m_transparentColor && + m_colorSimilarity == rhs.m_colorSimilarity); +} + +bool kpSelectionTransparency::operator!= (const kpSelectionTransparency &rhs) const +{ + return !(*this == rhs); +} + +kpSelectionTransparency::~kpSelectionTransparency () +{ +} + + +// public +bool kpSelectionTransparency::isOpaque () const +{ + return m_isOpaque; +} + +// public +bool kpSelectionTransparency::isTransparent () const +{ + return !isOpaque (); +} + +// public +void kpSelectionTransparency::setOpaque (bool yes) +{ + m_isOpaque = yes; +} + +// public +void kpSelectionTransparency::setTransparent (bool yes) +{ + setOpaque (!yes); +} + + +// public +kpColor kpSelectionTransparency::transparentColor () const +{ + if (m_isOpaque) + { + // There are legitimate uses for this so no kdError() + kdDebug () << "kpSelectionTransparency::transparentColor() " + "getting transparent color even though opaque" << endl; + } + + return m_transparentColor; +} + +// public +void kpSelectionTransparency::setTransparentColor (const kpColor &transparentColor) +{ + m_transparentColor = transparentColor; +} + + +// public +double kpSelectionTransparency::colorSimilarity () const +{ + if (m_colorSimilarity < 0 || + m_colorSimilarity > kpColorSimilarityDialog::maximumColorSimilarity) + { + kdError () << "kpSelectionTransparency::colorSimilarity() invalid colorSimilarity" << endl; + return 0; + } + + return m_colorSimilarity; +} + +// pubulic +void kpSelectionTransparency::setColorSimilarity (double colorSimilarity) +{ + m_colorSimilarity = colorSimilarity; + m_processedColorSimilarity = kpColor::processSimilarity (colorSimilarity); +} + +// public +int kpSelectionTransparency::processedColorSimilarity () const +{ + return m_processedColorSimilarity; +} + |