summaryrefslogtreecommitdiffstats
path: root/src/libs/levels/imagelevels.h
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2024-11-22 18:41:30 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2024-11-22 20:55:03 +0900
commit5bed6e4a4c916a97f8fe4d1b07f7eecf4d733b90 (patch)
treef89cc49efc9ca1d0e1579ecb079ee7e7088ff8c8 /src/libs/levels/imagelevels.h
parent0bfbf616d9c1fd7abb1bd02732389ab35e5f8771 (diff)
downloaddigikam-5bed6e4a4c916a97f8fe4d1b07f7eecf4d733b90.tar.gz
digikam-5bed6e4a4c916a97f8fe4d1b07f7eecf4d733b90.zip
Rename 'digikam' folder to 'src'
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it> (cherry picked from commit ee0d99607c14cb63d3ebdb3a970b508949fa8219)
Diffstat (limited to 'src/libs/levels/imagelevels.h')
-rw-r--r--src/libs/levels/imagelevels.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/libs/levels/imagelevels.h b/src/libs/levels/imagelevels.h
new file mode 100644
index 00000000..04d10d97
--- /dev/null
+++ b/src/libs/levels/imagelevels.h
@@ -0,0 +1,105 @@
+/* ============================================================
+ *
+ * This file is a part of digiKam project
+ * http://www.digikam.org
+ *
+ * Date : 2004-07-29
+ * Description : image levels manipulation methods.
+ *
+ * Copyright (C) 2004-2008 by Gilles Caulier <caulier dot gilles at gmail dot com>
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software Foundation;
+ * either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * ============================================================ */
+
+#ifndef IMAGELEVELS_H
+#define IMAGELEVELS_H
+
+#define CLAMP(x,l,u) ((x)<(l)?(l):((x)>(u)?(u):(x)))
+
+/* Map RGB to intensity */
+
+#define LEVELS_RGB_INTENSITY_RED 0.30
+#define LEVELS_RGB_INTENSITY_GREEN 0.59
+#define LEVELS_RGB_INTENSITY_BLUE 0.11
+#define LEVELS_RGB_INTENSITY(r,g,b) ((r) * LEVELS_RGB_INTENSITY_RED + \
+ (g) * LEVELS_RGB_INTENSITY_GREEN + \
+ (b) * LEVELS_RGB_INTENSITY_BLUE)
+
+// KDE includes.
+
+#include <kurl.h>
+
+// Local includes.
+
+#include "dcolor.h"
+#include "digikam_export.h"
+
+namespace Digikam
+{
+
+class ImageLevelsPriv;
+class ImageHistogram;
+
+class DIGIKAM_EXPORT ImageLevels
+{
+
+public:
+
+ ImageLevels(bool sixteenBit);
+ ~ImageLevels();
+
+ bool isDirty();
+ bool isSixteenBits();
+ void reset();
+
+ // Methods for to manipulate the levels data.
+
+ void levelsChannelReset(int channel);
+ void levelsAuto(ImageHistogram *hist);
+ void levelsChannelAuto(ImageHistogram *hist, int channel);
+ int levelsInputFromColor(int channel, const DColor& color);
+ void levelsBlackToneAdjustByColors(int channel, const DColor& color);
+ void levelsGrayToneAdjustByColors(int channel, const DColor& color);
+ void levelsWhiteToneAdjustByColors(int channel, const DColor& color);
+ void levelsCalculateTransfers();
+ float levelsLutFunc(int n_channels, int channel, float value);
+ void levelsLutSetup(int nchannels);
+ void levelsLutProcess(uchar *srcPR, uchar *destPR, int w, int h);
+
+ // Methods for to set manually the levels values.
+
+ void setLevelGammaValue(int Channel, double val);
+ void setLevelLowInputValue(int Channel, int val);
+ void setLevelHighInputValue(int Channel, int val);
+ void setLevelLowOutputValue(int Channel, int val);
+ void setLevelHighOutputValue(int Channel, int val);
+
+ double getLevelGammaValue(int Channel);
+ int getLevelLowInputValue(int Channel);
+ int getLevelHighInputValue(int Channel);
+ int getLevelLowOutputValue(int Channel);
+ int getLevelHighOutputValue(int Channel);
+
+ // Methods for to save/load the levels values to/from a Gimp levels text file.
+
+ bool saveLevelsToGimpLevelsFile(const KURL& fileUrl);
+ bool loadLevelsFromGimpLevelsFile(const KURL& fileUrl);
+
+private:
+
+ ImageLevelsPriv* d;
+};
+
+} // NameSpace Digikam
+
+#endif /* IMAGELEVELS_H */