Skip to content
Snippets Groups Projects
WebImage.cc 2.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • Lionel Heng's avatar
    Lionel Heng committed
    /*=====================================================================
    
    QGroundControl Open Source Ground Control Station
    
    (c) 2009, 2010 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
    
    This file is part of the QGROUNDCONTROL project
    
        QGROUNDCONTROL 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 3 of the License, or
        (at your option) any later version.
    
        QGROUNDCONTROL 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 QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
    
    ======================================================================*/
    
    /**
     * @file
     *   @brief Definition of the class WebImage.
     *
     *   @author Lionel Heng <hengli@student.ethz.ch>
     *
     */
    
    #include "WebImage.h"
    
    #include <QFile>
    #include <QGLWidget>
    
    WebImage::WebImage()
    
     : mState(WebImage::UNINITIALIZED)
     , mSourceURL("")
     , mImage(0)
     , mLastReference(0)
     , mSyncFlag(false)
    
    Lionel Heng's avatar
    Lionel Heng committed
    {
    
    }
    
    void
    WebImage::clear(void)
    {
    
        mImage.reset();
        mSourceURL.clear();
        mState = WebImage::UNINITIALIZED;
        mLastReference = 0;
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    WebImage::State
    WebImage::getState(void) const
    {
    
        return mState;
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    void
    WebImage::setState(State state)
    {
    
        mState = state;
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    const QString&
    WebImage::getSourceURL(void) const
    {
    
        return mSourceURL;
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    void
    WebImage::setSourceURL(const QString& url)
    {
    
        mSourceURL = url;
    
    Lionel Heng's avatar
    Lionel Heng committed
    WebImage::getImageData(void) const
    {
    
        return mImage->scanLine(0);
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    bool
    WebImage::setData(const QByteArray& data)
    {
        QImage tempImage;
    
        if (tempImage.loadFromData(data))
        {
            if (mImage.isNull())
            {
                mImage.reset(new QImage);
    
            *mImage = QGLWidget::convertToGLFormat(tempImage);
    
    Lionel Heng's avatar
    Lionel Heng committed
    
            return true;
    
    Lionel Heng's avatar
    Lionel Heng committed
            return false;
        }
    }
    
    bool
    WebImage::setData(const QString& filename)
    {
        QImage tempImage;
    
        if (tempImage.load(filename))
        {
            if (mImage.isNull())
            {
                mImage.reset(new QImage);
    
            *mImage = QGLWidget::convertToGLFormat(tempImage);
    
    Lionel Heng's avatar
    Lionel Heng committed
    
            return true;
    
    Lionel Heng's avatar
    Lionel Heng committed
            return false;
        }
    }
    
    
    Lionel Heng's avatar
    Lionel Heng committed
    WebImage::getWidth(void) const
    {
    
        return mImage->width();
    
    Lionel Heng's avatar
    Lionel Heng committed
    WebImage::getHeight(void) const
    {
    
        return mImage->height();
    
    Lionel Heng's avatar
    Lionel Heng committed
    WebImage::getByteCount(void) const
    {
    
        return mImage->byteCount();
    
    Lionel Heng's avatar
    Lionel Heng committed
    WebImage::getLastReference(void) const
    {
    
        return mLastReference;
    
    WebImage::setLastReference(quint64 value)
    
        mLastReference = value;
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    bool
    WebImage::getSyncFlag(void) const
    {
    
        return mSyncFlag;
    
    Lionel Heng's avatar
    Lionel Heng committed
    }
    
    void
    WebImage::setSyncFlag(bool onoff)
    {
    
        mSyncFlag = onoff;