Skip to content
Snippets Groups Projects
Select Git revision
  • 5c42c523d92e5f476c51b88870cdfe9f33d6c39b
  • master default protected
  • release/202005
  • release/202001
  • release/201912
  • release/201911
  • release/releaseWindowsTestOne
  • release/windowsReleaseTest
  • release/releaseTest
  • release/releaseWindowsTest
  • release/201910
  • release/qt/201910
  • release/windows-test/201910
  • release/201908
  • release/201906
  • release/201905
  • release/201904
  • release/201903
  • release/201902
  • release/201901
  • release/201812
  • 4.0.0
  • 2.2.0
  • 2.1.0
  • 2.0.1
  • 2.0.0
  • 1.4.1
  • 1.4.0
  • 1.3.0
  • 1.2.0
  • 1.1.0
31 results

TransparentWidget.cpp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    TransparentWidget.cpp 2.49 KiB
    /*
     * Copyright (C) 2004-2005 Savoir-Faire Linux inc.
     * Author: Jean-Philippe Barrette-LaPierre
     *           (jean-philippe.barrette-lapierre@savoirfairelinux.com)
     *
     * This 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 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.
     *
     * You should have received a copy of the GNU General Public
     * License along with dpkg; if not, write to the Free Software
     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
     */
    
    #include <qbitmap.h>
    #include <qcolor.h>
    #include <qdragobject.h>
    #include <qmime.h>
    #include <iostream>
    
    #include "DebugOutput.hpp"
    #include "TransparentWidget.hpp"
    
    
    TransparentWidget::TransparentWidget(const QString &pixmap,
    				     QWidget* parent)
      : QLabel(parent) 
    {
      mImage = transparize(pixmap);
      setPixmap(mImage);
      updateMask(this, mImage);
    
      resize(mImage.size());
    }
    
    TransparentWidget::TransparentWidget(QWidget* parent)
      : QLabel(parent) 
    {}
    
    void
    TransparentWidget::updateMask(QWidget *w, QPixmap image)
    {
    #ifdef QT3_SUPPORT
      if(image.hasAlpha()) {
        w->setMask(image.mask());
      }
    #else
      if(image.mask()) {
        w->setMask(*image.mask());
      }
    #endif
    }
    
    QPixmap
    TransparentWidget::retreive(const QString &image)
    {
      return QPixmap::fromMimeSource(image);
    }
    
    QPixmap
    TransparentWidget::transparize(const QSize &)
    {
      /*
      QImage image(size, QImage::Format_RGB32);
      QColor c(12,32,35,123);
      image.fill(c.rgb());
    
      QPixmap p(QPixmap::fromImage(image));
      p.setMask(p.createHeuristicMask());
      //p.setMask(p.alphaChannel());
      */
      return QPixmap();
    }
    
    TransparentWidget::~TransparentWidget()
    {}
    
    QPixmap
    TransparentWidget::transparize(const QString &image)
    {
    #ifdef QT3_SUPPORT
      QPixmap p(retreive(image));
      if (!p.mask()) {
        if (p.hasAlphaChannel()) {
          p.setMask(p.alphaChannel());
        } 
        else {
          p.setMask(p.createHeuristicMask());
        }
      }
    #else
      //  QPixmap p(QPixmap::fromMimeSource(image));
      QImage img(QImage::fromMimeSource(image));
      QPixmap p;
      p.convertFromImage(img);
      
      
        QBitmap bm;
        if (img.hasAlphaBuffer()) {
          bm = img.createAlphaMask();
        } 
        else {
          bm = img.createHeuristicMask();
        }
        p.setMask(bm);
    #endif
      return p;
    }