gfx/skia/trunk/src/core/SkBBoxRecord.h

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     2 /*
     3  * Copyright 2012 Google Inc.
     4  *
     5  * Use of this source code is governed by a BSD-style license that can be
     6  * found in the LICENSE file.
     7  */
     9 #ifndef SkBBoxRecord_DEFINED
    10 #define SkBBoxRecord_DEFINED
    12 #include "SkPictureRecord.h"
    14 /**
    15   * This is an abstract SkPictureRecord subclass that intercepts draw calls and computes an
    16   * axis-aligned bounding box for each draw that it sees, subclasses implement handleBBox()
    17   * which will be called every time we get a new bounding box.
    18   */
    19 class SkBBoxRecord : public SkPictureRecord {
    20 public:
    22     SkBBoxRecord(const SkISize& size, uint32_t recordFlags) : INHERITED(size, recordFlags) {}
    23     virtual ~SkBBoxRecord() { }
    25     /**
    26      * This is called each time we get a bounding box, it will be axis-aligned,
    27      * in device coordinates, and expanded to include stroking, shadows, etc.
    28      */
    29     virtual void handleBBox(const SkRect& bbox) = 0;
    31     virtual void drawOval(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
    32     virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE;
    33     virtual void drawRect(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
    34     virtual void drawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
    35     virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
    36                             const SkPaint& paint) SK_OVERRIDE;
    37     virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE;
    38     virtual void clear(SkColor) SK_OVERRIDE;
    39     virtual void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y,
    40                           const SkPaint& paint) SK_OVERRIDE;
    41     virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
    42                             const SkPaint* paint = NULL) SK_OVERRIDE;
    43     virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
    44                                       const SkRect& dst, const SkPaint* paint,
    45                                       DrawBitmapRectFlags flags) SK_OVERRIDE;
    46     virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& mat,
    47                                   const SkPaint* paint) SK_OVERRIDE;
    48     virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
    49                                 const SkRect& dst, const SkPaint* paint) SK_OVERRIDE;
    50     virtual void drawPosText(const void* text, size_t byteLength,
    51                              const SkPoint pos[], const SkPaint& paint) SK_OVERRIDE;
    52     virtual void drawPosTextH(const void* text, size_t byteLength,
    53                               const SkScalar xpos[], SkScalar constY,
    54                               const SkPaint& paint) SK_OVERRIDE;
    55     virtual void drawSprite(const SkBitmap& bitmap, int left, int top,
    56                             const SkPaint* paint) SK_OVERRIDE;
    57     virtual void drawTextOnPath(const void* text, size_t byteLength,
    58                                 const SkPath& path, const SkMatrix* matrix,
    59                                 const SkPaint& paint) SK_OVERRIDE;
    60     virtual void drawVertices(VertexMode mode, int vertexCount,
    61                               const SkPoint vertices[], const SkPoint texs[],
    62                               const SkColor colors[], SkXfermode* xfer,
    63                               const uint16_t indices[], int indexCount,
    64                               const SkPaint& paint) SK_OVERRIDE;
    65     virtual void drawPicture(SkPicture& picture) SK_OVERRIDE;
    67 protected:
    68     virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE;
    70 private:
    71     /**
    72      * Takes a bounding box in current canvas view space, accounts for stroking and effects, and
    73      * computes an axis-aligned bounding box in device coordinates, then passes it to handleBBox()
    74      * returns false if the draw is completely clipped out, and may safely be ignored.
    75      **/
    76     bool transformBounds(const SkRect& bounds, const SkPaint* paint);
    78     typedef SkPictureRecord INHERITED;
    79 };
    81 #endif

mercurial