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

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /*
     2  * Copyright 2006 The Android Open Source Project
     3  *
     4  * Use of this source code is governed by a BSD-style license that can be
     5  * found in the LICENSE file.
     6  */
     8 #ifndef SkCoreBlitters_DEFINED
     9 #define SkCoreBlitters_DEFINED
    11 #include "SkBitmapProcShader.h"
    12 #include "SkBlitter.h"
    13 #include "SkBlitRow.h"
    14 #include "SkShader.h"
    15 #include "SkSmallAllocator.h"
    17 class SkRasterBlitter : public SkBlitter {
    18 public:
    19     SkRasterBlitter(const SkBitmap& device) : fDevice(device) {}
    21 protected:
    22     const SkBitmap& fDevice;
    24 private:
    25     typedef SkBlitter INHERITED;
    26 };
    28 class SkShaderBlitter : public SkRasterBlitter {
    29 public:
    30     SkShaderBlitter(const SkBitmap& device, const SkPaint& paint);
    31     virtual ~SkShaderBlitter();
    33 protected:
    34     uint32_t    fShaderFlags;
    35     SkShader*   fShader;
    37 private:
    38     // illegal
    39     SkShaderBlitter& operator=(const SkShaderBlitter&);
    41     typedef SkRasterBlitter INHERITED;
    42 };
    44 ///////////////////////////////////////////////////////////////////////////////
    46 class SkA8_Coverage_Blitter : public SkRasterBlitter {
    47 public:
    48     SkA8_Coverage_Blitter(const SkBitmap& device, const SkPaint& paint);
    49     virtual void blitH(int x, int y, int width) SK_OVERRIDE;
    50     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]) SK_OVERRIDE;
    51     virtual void blitV(int x, int y, int height, SkAlpha alpha) SK_OVERRIDE;
    52     virtual void blitRect(int x, int y, int width, int height) SK_OVERRIDE;
    53     virtual void blitMask(const SkMask&, const SkIRect&) SK_OVERRIDE;
    54     virtual const SkBitmap* justAnOpaqueColor(uint32_t*) SK_OVERRIDE;
    55 };
    57 class SkA8_Blitter : public SkRasterBlitter {
    58 public:
    59     SkA8_Blitter(const SkBitmap& device, const SkPaint& paint);
    60     virtual void blitH(int x, int y, int width);
    61     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
    62     virtual void blitV(int x, int y, int height, SkAlpha alpha);
    63     virtual void blitRect(int x, int y, int width, int height);
    64     virtual void blitMask(const SkMask&, const SkIRect&);
    65     virtual const SkBitmap* justAnOpaqueColor(uint32_t*);
    67 private:
    68     unsigned fSrcA;
    70     // illegal
    71     SkA8_Blitter& operator=(const SkA8_Blitter&);
    73     typedef SkRasterBlitter INHERITED;
    74 };
    76 class SkA8_Shader_Blitter : public SkShaderBlitter {
    77 public:
    78     SkA8_Shader_Blitter(const SkBitmap& device, const SkPaint& paint);
    79     virtual ~SkA8_Shader_Blitter();
    80     virtual void blitH(int x, int y, int width);
    81     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
    82     virtual void blitMask(const SkMask&, const SkIRect&);
    84 private:
    85     SkXfermode* fXfermode;
    86     SkPMColor*  fBuffer;
    87     uint8_t*    fAAExpand;
    89     // illegal
    90     SkA8_Shader_Blitter& operator=(const SkA8_Shader_Blitter&);
    92     typedef SkShaderBlitter INHERITED;
    93 };
    95 ////////////////////////////////////////////////////////////////
    97 class SkARGB32_Blitter : public SkRasterBlitter {
    98 public:
    99     SkARGB32_Blitter(const SkBitmap& device, const SkPaint& paint);
   100     virtual void blitH(int x, int y, int width);
   101     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
   102     virtual void blitV(int x, int y, int height, SkAlpha alpha);
   103     virtual void blitRect(int x, int y, int width, int height);
   104     virtual void blitMask(const SkMask&, const SkIRect&);
   105     virtual const SkBitmap* justAnOpaqueColor(uint32_t*);
   107 protected:
   108     SkColor                fColor;
   109     SkPMColor              fPMColor;
   110     SkBlitRow::ColorProc   fColor32Proc;
   111     SkBlitRow::ColorRectProc fColorRect32Proc;
   113 private:
   114     unsigned fSrcA, fSrcR, fSrcG, fSrcB;
   116     // illegal
   117     SkARGB32_Blitter& operator=(const SkARGB32_Blitter&);
   119     typedef SkRasterBlitter INHERITED;
   120 };
   122 class SkARGB32_Opaque_Blitter : public SkARGB32_Blitter {
   123 public:
   124     SkARGB32_Opaque_Blitter(const SkBitmap& device, const SkPaint& paint)
   125         : INHERITED(device, paint) { SkASSERT(paint.getAlpha() == 0xFF); }
   126     virtual void blitMask(const SkMask&, const SkIRect&);
   128 private:
   129     typedef SkARGB32_Blitter INHERITED;
   130 };
   132 class SkARGB32_Black_Blitter : public SkARGB32_Opaque_Blitter {
   133 public:
   134     SkARGB32_Black_Blitter(const SkBitmap& device, const SkPaint& paint)
   135         : INHERITED(device, paint) {}
   136     virtual void blitAntiH(int x, int y, const SkAlpha antialias[], const int16_t runs[]);
   138 private:
   139     typedef SkARGB32_Opaque_Blitter INHERITED;
   140 };
   142 class SkARGB32_Shader_Blitter : public SkShaderBlitter {
   143 public:
   144     SkARGB32_Shader_Blitter(const SkBitmap& device, const SkPaint& paint);
   145     virtual ~SkARGB32_Shader_Blitter();
   146     virtual void blitH(int x, int y, int width) SK_OVERRIDE;
   147     virtual void blitV(int x, int y, int height, SkAlpha alpha) SK_OVERRIDE;
   148     virtual void blitRect(int x, int y, int width, int height) SK_OVERRIDE;
   149     virtual void blitAntiH(int x, int y, const SkAlpha[], const int16_t[]) SK_OVERRIDE;
   150     virtual void blitMask(const SkMask&, const SkIRect&) SK_OVERRIDE;
   152 private:
   153     SkXfermode*         fXfermode;
   154     SkPMColor*          fBuffer;
   155     SkBlitRow::Proc32   fProc32;
   156     SkBlitRow::Proc32   fProc32Blend;
   157     bool                fShadeDirectlyIntoDevice;
   158     bool                fConstInY;
   160     // illegal
   161     SkARGB32_Shader_Blitter& operator=(const SkARGB32_Shader_Blitter&);
   163     typedef SkShaderBlitter INHERITED;
   164 };
   166 ///////////////////////////////////////////////////////////////////////////////
   168 /*  These return the correct subclass of blitter for their device config.
   170     Currently, they make the following assumptions about the state of the
   171     paint:
   173     1. If there is an xfermode, there will also be a shader
   174     2. If there is a colorfilter, there will be a shader that itself handles
   175        calling the filter, so the blitter can always ignore the colorfilter obj
   177     These pre-conditions must be handled by the caller, in our case
   178     SkBlitter::Choose(...)
   179  */
   181 SkBlitter* SkBlitter_ChooseD565(const SkBitmap& device, const SkPaint& paint,
   182                                 SkTBlitterAllocator* allocator);
   184 #endif

mercurial