+2008-02-20 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Oliver.
+
+ Remove m_drawingContext and change m_data to m_imageBuffer
+
+ * html/HTMLCanvasElement.cpp:
+ (WebCore::HTMLCanvasElement::HTMLCanvasElement):
+ (WebCore::HTMLCanvasElement::reset):
+ (WebCore::HTMLCanvasElement::paint):
+ (WebCore::HTMLCanvasElement::createImageBuffer):
+ (WebCore::HTMLCanvasElement::buffer):
+ (WebCore::HTMLCanvasElement::createPlatformImage):
+ * html/HTMLCanvasElement.h:
+
2008-02-20 Anders Carlsson <andersca@apple.com>
Reviewed by Sam.
HTMLCanvasElement::HTMLCanvasElement(Document* doc)
: HTMLElement(canvasTag, doc)
, m_size(defaultWidth, defaultHeight)
- , m_createdDrawingContext(false)
- , m_data()
- , m_drawingContext(0)
+ , m_createdImageBuffer(false)
{
}
IntSize oldSize = m_size;
m_size = IntSize(w, h);
- bool hadDrawingContext = m_createdDrawingContext;
- m_createdDrawingContext = false;
- m_data.set(0);
- delete m_drawingContext;
- m_drawingContext = 0;
+ bool hadImageBuffer = m_createdImageBuffer;
+ m_createdImageBuffer = false;
+ m_imageBuffer.clear();
if (m_2DContext)
m_2DContext->reset();
if (m_rendererIsCanvas) {
if (oldSize != m_size)
static_cast<RenderHTMLCanvas*>(ro)->canvasSizeChanged();
- if (hadDrawingContext)
+ if (hadImageBuffer)
ro->repaint();
}
}
if (p->paintingDisabled())
return;
- if (m_data)
- p->paintBuffer(m_data.get(), r);
+ if (m_imageBuffer)
+ p->paintBuffer(m_imageBuffer.get(), r);
}
-void HTMLCanvasElement::createDrawingContext() const
+void HTMLCanvasElement::createImageBuffer() const
{
- ASSERT(!m_createdDrawingContext);
- ASSERT(!m_data);
+ ASSERT(!m_createdImageBuffer);
+ ASSERT(!m_imageBuffer);
- m_createdDrawingContext = true;
+ m_createdImageBuffer = true;
float unscaledWidth = width();
float unscaledHeight = height();
IntSize size(static_cast<unsigned>(wf), static_cast<unsigned>(hf));
- m_data.set(ImageBuffer::create(size, false).release());
+ m_imageBuffer.set(ImageBuffer::create(size, false).release());
}
GraphicsContext* HTMLCanvasElement::drawingContext() const
ImageBuffer* HTMLCanvasElement::buffer() const
{
- if (!m_createdDrawingContext)
- createDrawingContext();
- return m_data.get();
+ if (!m_createdImageBuffer)
+ createImageBuffer();
+ return m_imageBuffer.get();
}
#if PLATFORM(CG)
QPixmap HTMLCanvasElement::createPlatformImage() const
{
- if (!m_data)
+ if (!m_imageBuffer)
return QPixmap();
- return *m_data->pixmap();
+ return *m_imageBuffer->pixmap();
}
#elif PLATFORM(CAIRO)
cairo_surface_t* HTMLCanvasElement::createPlatformImage() const
{
- if (!m_data)
+ if (!m_imageBuffer)
return 0;
// Note that unlike CG, our returned image is not a copy or
// copy-on-write, but the original. This is fine, since it is only
// ever used as a source.
- cairo_surface_flush(m_data->surface());
- cairo_surface_reference(m_data->surface());
- return m_data->surface();
+ cairo_surface_flush(m_imageBuffer->surface());
+ cairo_surface_reference(m_imageBuffer->surface());
+ return m_imageBuffer->surface();
}
#endif
#endif
private:
- void createDrawingContext() const;
+ void createImageBuffer() const;
void reset();
bool m_rendererIsCanvas;
// FIXME: Web Applications 1.0 describes a security feature where we track
// if we ever drew any images outside the domain, so we can disable toDataURL.
- mutable bool m_createdDrawingContext;
- mutable OwnPtr<ImageBuffer> m_data;
- mutable GraphicsContext* m_drawingContext;
+ // m_createdImageBuffer means we tried to malloc the buffer. We didn't necessarily get it.
+ mutable bool m_createdImageBuffer;
+ mutable OwnPtr<ImageBuffer> m_imageBuffer;
};
} //namespace