// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "config.h" #if USE(ACCELERATED_COMPOSITING) #include "CCSolidColorLayerImpl.h" #include "CCQuadSink.h" #include "CCSolidColorDrawQuad.h" #include using namespace std; using WebKit::WebTransformationMatrix; namespace cc { CCSolidColorLayerImpl::CCSolidColorLayerImpl(int id) : CCLayerImpl(id) , m_tileSize(256) { } CCSolidColorLayerImpl::~CCSolidColorLayerImpl() { } void CCSolidColorLayerImpl::appendQuads(CCQuadSink& quadSink, CCAppendQuadsData& appendQuadsData) { CCSharedQuadState* sharedQuadState = quadSink.useSharedQuadState(createSharedQuadState()); appendDebugBorderQuad(quadSink, sharedQuadState, appendQuadsData); // We create a series of smaller quads instead of just one large one so that the // culler can reduce the total pixels drawn. int width = contentBounds().width(); int height = contentBounds().height(); for (int x = 0; x < width; x += m_tileSize) { for (int y = 0; y < height; y += m_tileSize) { IntRect solidTileRect(x, y, min(width - x, m_tileSize), min(height - y, m_tileSize)); quadSink.append(CCSolidColorDrawQuad::create(sharedQuadState, solidTileRect, backgroundColor()), appendQuadsData); } } } } // namespace cc #endif // USE(ACCELERATED_COMPOSITING)