gfx/skia/trunk/src/core/SkSpriteBlitterTemplate.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.

     2 /*
     3  * Copyright 2006 The Android Open Source Project
     4  *
     5  * Use of this source code is governed by a BSD-style license that can be
     6  * found in the LICENSE file.
     7  */
    11 class SkSPRITE_CLASSNAME : public SkSpriteBlitter {
    12 public:
    13     SkSPRITE_CLASSNAME(const SkBitmap& source SkSPRITE_ARGS)
    14         : SkSpriteBlitter(source) {
    15         SkSPRITE_INIT
    16     }
    18     virtual void blitRect(int x, int y, int width, int height) {
    19         SkASSERT(width > 0 && height > 0);
    20         int srcX = x - fLeft;
    21         int srcY = y - fTop;
    22         SkSPRITE_DST_TYPE* SK_RESTRICT dst =fDevice->SkSPRITE_DST_GETADDR(x, y);
    23         const SkSPRITE_SRC_TYPE* SK_RESTRICT src =
    24                                       fSource->SkSPRITE_SRC_GETADDR(srcX, srcY);
    25         size_t dstRB = fDevice->rowBytes();
    26         size_t srcRB = fSource->rowBytes();
    28         SkDEBUGCODE((void)fDevice->SkSPRITE_DST_GETADDR(x + width - 1, y + height - 1);)
    29         SkDEBUGCODE((void)fSource->SkSPRITE_SRC_GETADDR(srcX + width  - 1, srcY + height - 1);)
    31         SkSPRITE_PREAMBLE((*fSource), srcX, srcY);
    33         do {
    34             SkSPRITE_DST_TYPE* d = dst;
    35             const SkSPRITE_SRC_TYPE* s = src;
    36 #ifdef SkSPRITE_BEGIN_ROW
    37             SkSPRITE_BEGIN_ROW
    38 #endif
    40 #ifdef SkSPRITE_ROW_PROC
    41             SkSPRITE_ROW_PROC(d, s, width, x, y);
    42 #else
    43             int w = width;
    44             do {
    45                 SkSPRITE_SRC_TYPE sc = *s++;
    46                 SkSPRITE_BLIT_PIXEL(d, sc);
    47                 d += 1;
    48             } while (--w != 0);
    49 #endif
    50             dst = (SkSPRITE_DST_TYPE* SK_RESTRICT)((char*)dst + dstRB);
    51             src = (const SkSPRITE_SRC_TYPE* SK_RESTRICT)
    52                                             ((const char*)src + srcRB);
    53             SkSPRITE_NEXT_ROW
    54 #ifdef SkSPRITE_ROW_PROC
    55             y += 1;
    56 #endif
    57         } while (--height != 0);
    59         SkSPRITE_POSTAMBLE((*fSource));
    60     }
    62 private:
    63     SkSPRITE_FIELDS
    64 };
    66 #undef SkSPRITE_BLIT_PIXEL
    67 #undef SkSPRITE_CLASSNAME
    68 #undef SkSPRITE_DST_TYPE
    69 #undef SkSPRITE_SRC_TYPE
    70 #undef SkSPRITE_DST_GETADDR
    71 #undef SkSPRITE_SRC_GETADDR
    72 #undef SkSPRITE_PREAMBLE
    73 #undef SkSPRITE_POSTAMBLE
    74 #undef SkSPRITE_ARGS
    75 #undef SkSPRITE_FIELDS
    76 #undef SkSPRITE_INIT
    77 #undef SkSPRITE_NEXT_ROW
    78 #undef SkSPRITE_BEGIN_ROW
    80 #ifdef SkSPRITE_ROW_PROC
    81     #undef SkSPRITE_ROW_PROC
    82 #endif

mercurial