blob: f9edb743635b40d438e65e2e3e180cb60524ac94 [file] [log] [blame]
/*
* Copyright 2011, The Android Open Source Project
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_TAG "InspectorCanvas"
#define LOG_NDEBUG 1
#include "config.h"
#include "InspectorCanvas.h"
#include "AndroidLog.h"
#include "SkPicture.h"
namespace WebCore {
void InspectorCanvas::setHasText()
{
m_hasText = true;
setHasContent();
}
void InspectorCanvas::setHasContent()
{
m_hasContent = true;
if (m_hasText) {
// has text. Have to paint properly, so no further
// information is useful
m_picture->abortPlayback();
}
}
void InspectorCanvas::setIsBackground(const SkPaint& paint)
{
// TODO: if the paint is a solid color, opaque, and the last instruction in
// the picture, replace the picture with simple draw rect info
setHasContent();
}
void InspectorCanvas::commonDrawBitmap(const SkBitmap& bitmap,
const SkIRect* rect,
const SkMatrix&,
const SkPaint&)
{
setHasContent();
}
void InspectorCanvas::drawPaint(const SkPaint& paint)
{
setHasContent();
}
void InspectorCanvas::drawPath(const SkPath&, const SkPaint& paint)
{
setHasContent();
}
void InspectorCanvas::drawPoints(PointMode, size_t,
const SkPoint [], const SkPaint& paint)
{
setHasContent();
}
void InspectorCanvas::drawRect(const SkRect& rect, const SkPaint& paint)
{
if (rect.fLeft == 0
&& rect.fTop == 0
&& rect.width() >= m_picture->width()
&& rect.height() >= m_picture->height()) {
// rect same size as canvas, treat layer as a single color rect until
// more content is drawn
setIsBackground(paint);
} else {
// regular rect drawing path
setHasContent();
}
ALOGV("draw rect at %f %f, size %f %f, picture size %d %d",
rect.fLeft, rect.fTop, rect.width(), rect.height(),
m_picture->width(), m_picture->height());
}
void InspectorCanvas::drawSprite(const SkBitmap& , int , int ,
const SkPaint* paint)
{
setHasContent();
}
void InspectorCanvas::drawText(const void*, size_t byteLength, SkScalar,
SkScalar, const SkPaint& paint)
{
setHasText();
}
void InspectorCanvas::drawPosText(const void* , size_t byteLength,
const SkPoint [], const SkPaint& paint)
{
setHasText();
}
void InspectorCanvas::drawPosTextH(const void*, size_t byteLength,
const SkScalar [], SkScalar,
const SkPaint& paint)
{
setHasText();
}
void InspectorCanvas::drawTextOnPath(const void*, size_t byteLength,
const SkPath&, const SkMatrix*,
const SkPaint& paint)
{
setHasText();
}
} // namespace WebCore