File indexing completed on 2024-05-26 04:32:36

0001 /*
0002  *  SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #include "black_white_point_chooser.h"
0008 
0009 #include "klocalizedstring.h"
0010 
0011 #include "kis_global.h"
0012 
0013 #include <QApplication>
0014 #include <QDesktopWidget>
0015 
0016 #include <QFormLayout>
0017 #include "kis_slider_spin_box.h"
0018 
0019 
0020 BlackWhitePointChooser::BlackWhitePointChooser(QWidget* parent)
0021     : QFrame(parent, Qt::Popup)
0022 {
0023     setFrameStyle(QFrame::Panel|QFrame::Raised);
0024 
0025     m_black = new KisDoubleSliderSpinBox(this);
0026     m_black->setRange(0.0, 10000, 4);
0027     m_black->setValue(0.0);
0028     m_black->setSingleStep(0.01);
0029     m_black->setMinimumWidth(120);
0030     m_black->setExponentRatio(6.0);
0031 
0032     m_white = new KisDoubleSliderSpinBox(this);
0033     m_white->setRange(0.0, 10000, 4);
0034     m_white->setValue(1.0);
0035     m_white->setSingleStep(0.01);
0036     m_white->setMinimumWidth(120);
0037     m_white->setExponentRatio(6.0);
0038 
0039     connect(m_black, SIGNAL(valueChanged(qreal)), SIGNAL(sigBlackPointChanged(qreal)));
0040     connect(m_white, SIGNAL(valueChanged(qreal)), SIGNAL(sigWhitePointChanged(qreal)));
0041 
0042     QFormLayout *layout = new QFormLayout(this);
0043     layout->addRow(i18n("Black:"), m_black);
0044     layout->addRow(i18n("White:"), m_white);
0045 }
0046 
0047 BlackWhitePointChooser::~BlackWhitePointChooser()
0048 {
0049 }
0050 
0051 void BlackWhitePointChooser::showPopup(const QPoint &basePoint)
0052 {
0053     show();
0054 
0055     QSize popupSize = size();
0056     QRect popupRect(basePoint - QPoint(0, popupSize.height()), popupSize);
0057     QRect screenRect = QApplication::desktop()->availableGeometry(this);
0058 
0059     popupRect = kisEnsureInRect(popupRect, screenRect);
0060     setGeometry(popupRect);
0061 }
0062 
0063 qreal BlackWhitePointChooser::blackPoint() const
0064 {
0065     return m_black->value();
0066 }
0067 
0068 void BlackWhitePointChooser::setBlackPoint(qreal bp)
0069 {
0070     m_black->setValue(bp);
0071 }
0072 
0073 qreal BlackWhitePointChooser::whitePoint() const
0074 {
0075     return m_white->value();
0076 }
0077 
0078 void BlackWhitePointChooser::setWhitePoint(qreal wp)
0079 {
0080     m_white->setValue(wp);
0081 }