kpDualColorButton::kpDualColorButton (QWidget *parent) : QFrame (parent), m_dragStartPoint (KP_INVALID_POINT) { setSizePolicy (QSizePolicy::Fixed/*horizontal*/, QSizePolicy::Fixed/*vertical*/); setFrameStyle (QFrame::Panel | QFrame::Sunken); m_color [0] = kpColor (0, 0, 0); // black m_color [1] = kpColor (255, 255, 255); // white setAcceptDrops (true); }
// protected virtual [base QWidget] void kpDualColorButton::dropEvent (QDropEvent *e) { QColor col = KColorMimeData::fromMimeData (e->mimeData ()); #if DEBUG_KP_DUAL_COLOR_BUTTON qCDebug(kpLogWidgets) << "kpDualColorButton::dropEvent() col=" << (int *) col.rgba() << " (with alpha=" << (int *) col.rgba () << ")" << endl; #endif if (col.isValid ()) { if (foregroundRect ().contains (e->pos ())) setForegroundColor (kpColor (col.rgba())); else if (backgroundRect ().contains (e->pos ())) setBackgroundColor (kpColor (col.rgba())); } }
// protected virtual [base QWidget] void kpDualColorButton::mouseDoubleClickEvent (QMouseEvent *e) { int whichColor = -1; if (foregroundRect ().contains (e->pos ())) whichColor = 0; else if (backgroundRect ().contains (e->pos ())) whichColor = 1; if (whichColor == 0 || whichColor == 1) { QColorDialog dialog(this); dialog.setCurrentColor(color(whichColor).toQColor()); dialog.setOptions(QColorDialog::ShowAlphaChannel); if ( dialog.exec() == QDialog::Accepted ) setColor(whichColor, kpColor(dialog.currentColor().rgba())); } }
// public kpColor kpTransformAutoCropBorder::averageColor () const { if (!m_rect.isValid ()) return kpColor::Invalid; if (m_referenceColor.isTransparent ()) return kpColor::Transparent; else if (m_processedColorSimilarity == 0) return m_referenceColor; else { int numPixels = (m_rect.width () * m_rect.height ()); Q_ASSERT (numPixels > 0); return kpColor (m_redSum / numPixels, m_greenSum / numPixels, m_blueSum / numPixels); } }
// public kpColor kpToolAutoCropBorder::averageColor () const { if (!m_rect.isValid ()) return kpColor::invalid; if (m_referenceColor.isTransparent ()) return kpColor::transparent; else if (m_processedColorSimilarity == 0) return m_referenceColor; else { int numPixels = (m_rect.width () * m_rect.height ()); if (numPixels <= 0) { kdError () << "kpToolAutoCropBorder::averageColor() rect=" << m_rect << endl; return kpColor::invalid; } return kpColor (m_redSum / numPixels, m_greenSum / numPixels, m_blueSum / numPixels); } }