File indexing completed on 2024-05-12 03:47:30

0001 /*
0002     File                 : ImageEditor.h
0003     Project              : LabPlot
0004     Description          : Edit Image on the basis of input color attributes
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2015 Ankit Wagadre <wagadre.ankit@gmail.com>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef IMAGEEDITOR_H
0011 #define IMAGEEDITOR_H
0012 
0013 #include <QList>
0014 
0015 #include <backend/datapicker/DatapickerImage.h>
0016 
0017 class QColor;
0018 
0019 class ImageEditor {
0020 public:
0021     static void discretize(QImage*, const QImage*, const DatapickerImage::EditorSettings&, QColor);
0022     static bool processedPixelIsOn(const QImage&, int, int);
0023     static QRgb findBackgroundColor(const QImage*);
0024     static int colorAttributeMax(DatapickerImage::ColorAttributes);
0025     static void uploadHistogram(int*, QImage*, QColor, DatapickerImage::ColorAttributes);
0026     static int discretizeValueForeground(int, int, DatapickerImage::ColorAttributes, const QColor, const QImage*);
0027     static bool pixelIsOn(int, DatapickerImage::ColorAttributes, const DatapickerImage::EditorSettings&);
0028 
0029     static int discretizeHue(int, int, const QImage*);
0030     static int discretizeSaturation(int, int, const QImage*);
0031     static int discretizeValue(int, int, const QImage*);
0032     static int discretizeIntensity(int, int, const QImage*);
0033     static int discretizeForeground(int, int, const QColor, const QImage*);
0034 
0035 private:
0036     static bool colorCompare(QRgb color1, QRgb color2);
0037     static bool pixelIsOn(int, int, int);
0038 
0039     struct ColorEntry {
0040         QColor color;
0041         int count;
0042     };
0043     typedef QVector<ColorEntry> ColorList;
0044 };
0045 #endif // IMAGEEDITOR_H