| /* |
| * 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 |