#include "config.h"
#include "ImageDecoder.h"
#include "NotImplemented.h"
#include <QPixmap>
#include <stdio.h>
namespace WebCore {
ImageFrame::ImageFrame()
: m_hasAlpha(false)
, m_size()
, m_status(FrameEmpty)
, m_duration(0)
, m_disposalMethod(DisposeNotSpecified)
{
}
ImageFrame& ImageFrame::operator=(const ImageFrame& other)
{
if (this == &other)
return *this;
copyBitmapData(other);
setOriginalFrameRect(other.originalFrameRect());
setStatus(other.status());
setDuration(other.duration());
setDisposalMethod(other.disposalMethod());
return *this;
}
void ImageFrame::clearPixelData()
{
m_pixmap = QPixmap();
m_image = QImage();
m_status = FrameEmpty;
}
void ImageFrame::zeroFillPixelData()
{
if (m_pixmap.isNull() && !m_image.isNull()) {
m_pixmap = QPixmap(m_image.width(), m_image.height());
m_image = QImage();
}
m_pixmap.fill(QColor(0, 0, 0, 0));
}
bool ImageFrame::copyBitmapData(const ImageFrame& other)
{
if (this == &other)
return true;
m_image = other.m_image;
m_pixmap = other.m_pixmap;
m_size = other.m_size;
m_hasAlpha = other.m_hasAlpha;
return true;
}
bool ImageFrame::setSize(int newWidth, int newHeight)
{
ASSERT(width() == 0 && height() == 0);
m_size = IntSize(newWidth, newHeight);
m_image = QImage();
m_pixmap = QPixmap(newWidth, newHeight);
if (m_pixmap.isNull())
return false;
zeroFillPixelData();
return true;
}
QPixmap* ImageFrame::asNewNativeImage() const
{
if (m_pixmap.isNull() && !m_image.isNull()) {
m_pixmap = QPixmap::fromImage(m_image);
m_image = QImage();
}
return new QPixmap(m_pixmap);
}
bool ImageFrame::hasAlpha() const
{
return m_hasAlpha;
}
void ImageFrame::setHasAlpha(bool alpha)
{
m_hasAlpha = alpha;
}
void ImageFrame::setColorProfile(const ColorProfile& colorProfile)
{
notImplemented();
}
void ImageFrame::setStatus(FrameStatus status)
{
m_status = status;
}
void ImageFrame::setPixmap(const QPixmap& pixmap)
{
m_pixmap = pixmap;
m_image = QImage();
m_size = pixmap.size();
m_hasAlpha = pixmap.hasAlphaChannel();
}
int ImageFrame::width() const
{
return m_size.width();
}
int ImageFrame::height() const
{
return m_size.height();
}
}