LayerRendererSurface.cpp [plain text]
#include "config.h"
#if USE(ACCELERATED_COMPOSITING)
#include "LayerRendererSurface.h"
#include "LayerCompositingThread.h"
#include "LayerRenderer.h"
#include "TextureCacheCompositingThread.h"
namespace WebCore {
LayerRendererSurface::LayerRendererSurface(LayerRenderer* renderer, LayerCompositingThread* owner)
: m_ownerLayer(owner)
, m_layerRenderer(renderer)
, m_opacity(1.0)
{
}
LayerRendererSurface::~LayerRendererSurface()
{
}
void LayerRendererSurface::setContentRect(const IntRect& contentRect)
{
m_contentRect = contentRect;
m_size = contentRect.size();
}
FloatRect LayerRendererSurface::drawRect() const
{
float bx = m_size.width() / 2.0;
float by = m_size.height() / 2.0;
FloatQuad transformedBounds;
transformedBounds.setP1(m_drawTransform.mapPoint(FloatPoint(-bx, -by)));
transformedBounds.setP2(m_drawTransform.mapPoint(FloatPoint(-bx, by)));
transformedBounds.setP3(m_drawTransform.mapPoint(FloatPoint(bx, by)));
transformedBounds.setP4(m_drawTransform.mapPoint(FloatPoint(bx, -by)));
FloatRect rect = transformedBounds.boundingBox();
if (m_ownerLayer->replicaLayer()) {
FloatQuad bounds;
bounds.setP1(m_replicaDrawTransform.mapPoint(FloatPoint(-bx, -by)));
bounds.setP2(m_replicaDrawTransform.mapPoint(FloatPoint(-bx, by)));
bounds.setP3(m_replicaDrawTransform.mapPoint(FloatPoint(bx, by)));
bounds.setP4(m_replicaDrawTransform.mapPoint(FloatPoint(bx, -by)));
rect.unite(bounds.boundingBox());
}
return rect;
}
bool LayerRendererSurface::ensureTexture()
{
if (!m_texture)
m_texture = textureCacheCompositingThread()->createTexture();
return m_texture->protect(m_size);
}
void LayerRendererSurface::releaseTexture()
{
m_texture->unprotect();
}
}
#endif // USE(ACCELERATED_COMPOSITING)