void SkDeferredCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
    if (fDeferredDrawing && isFullFrame(&rect, &paint) &&
            isPaintOpaque(&paint)) {
        getDeferredDevice()->contentsCleared();
    }

    drawingCanvas()->drawRect(rect, paint);
}
Esempio n. 2
0
void SkDeferredCanvas::drawPaint(const SkPaint& paint)
{
    if (fDeferredDrawing && isFullFrame(NULL, &paint) && isPaintOpaque(paint)) {
        getDeferredDevice()->purgePending();
    }

    drawingCanvas()->drawPaint(paint);
}
bool isPaintOpaque(const SkPaint* paint, const SkBitmap* bmpReplacesShader) {
    SkPaintBitmapOpacity contentType;

    if(!bmpReplacesShader)
        contentType = kNoBitmap_SkPaintBitmapOpacity;
    else if(bmpReplacesShader->isOpaque())
        contentType = kOpaque_SkPaintBitmapOpacity;
    else
        contentType = kUnknown_SkPaintBitmapOpacity;

    return isPaintOpaque(paint, contentType);
}
void SkDeferredCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar left,
                                  SkScalar top, const SkPaint* paint) {
    SkRect bitmapRect = SkRect::MakeXYWH(left, top,
                                         SkIntToScalar(bitmap.width()), SkIntToScalar(bitmap.height()));
    if (fDeferredDrawing &&
            isFullFrame(&bitmapRect, paint) &&
            isPaintOpaque(paint, &bitmap)) {
        getDeferredDevice()->contentsCleared();
    }

    drawingCanvas()->drawBitmap(bitmap, left, top, paint);
    flushIfNeeded(bitmap);
}
void SkDeferredCanvas::drawBitmapRect(const SkBitmap& bitmap,
                                      const SkIRect* src,
                                      const SkRect& dst,
                                      const SkPaint* paint) {
    if (fDeferredDrawing &&
            isFullFrame(&dst, paint) &&
            isPaintOpaque(paint, &bitmap)) {
        getDeferredDevice()->contentsCleared();
    }

    drawingCanvas()->drawBitmapRect(bitmap, src,
                                    dst, paint);
    flushIfNeeded(bitmap);
}
Esempio n. 6
0
void SkDeferredCanvas::drawSprite(const SkBitmap& bitmap, int left, int top,
                                  const SkPaint* paint)
{
    SkRect bitmapRect = SkRect::MakeXYWH(left, top, bitmap.width(),
        bitmap.height());
    if (fDeferredDrawing && 
        isFullFrame(&bitmapRect, paint) &&
        isPaintOpaque(*paint, &bitmap)) {
        getDeferredDevice()->purgePending();
    }

    drawingCanvas()->drawSprite(bitmap, left, top,
                                paint);
    flushIfNeeded(bitmap);
}
bool isPaintOpaque(const SkPaint* paint, const SkImage* image) {
    return isPaintOpaque(paint, image->isOpaque() ?
                         kOpaque_SkPaintBitmapOpacity : kUnknown_SkPaintBitmapOpacity);
}