| Index: skia/sgl/SkBitmapSampler.h
|
| ===================================================================
|
| --- skia/sgl/SkBitmapSampler.h (revision 16859)
|
| +++ skia/sgl/SkBitmapSampler.h (working copy)
|
| @@ -1,170 +0,0 @@
|
| -/* libs/graphics/sgl/SkBitmapSampler.h
|
| -**
|
| -** Copyright 2006, The Android Open Source Project
|
| -**
|
| -** Licensed under the Apache License, Version 2.0 (the "License");
|
| -** you may not use this file except in compliance with the License.
|
| -** You may obtain a copy of the License at
|
| -**
|
| -** http://www.apache.org/licenses/LICENSE-2.0
|
| -**
|
| -** Unless required by applicable law or agreed to in writing, software
|
| -** distributed under the License is distributed on an "AS IS" BASIS,
|
| -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| -** See the License for the specific language governing permissions and
|
| -** limitations under the License.
|
| -*/
|
| -
|
| -#ifndef SkBitmapSampler_DEFINED
|
| -#define SkBitmapSampler_DEFINED
|
| -
|
| -#include "SkBitmap.h"
|
| -#include "SkPaint.h"
|
| -#include "SkShader.h"
|
| -
|
| -typedef int (*SkTileModeProc)(int value, unsigned max);
|
| -
|
| -class SkBitmapSampler {
|
| -public:
|
| - SkBitmapSampler(const SkBitmap&, bool filter, SkShader::TileMode tmx, SkShader::TileMode tmy);
|
| - virtual ~SkBitmapSampler() {}
|
| -
|
| - const SkBitmap& getBitmap() const { return fBitmap; }
|
| - bool getFilterBitmap() const { return fFilterBitmap; }
|
| - SkShader::TileMode getTileModeX() const { return fTileModeX; }
|
| - SkShader::TileMode getTileModeY() const { return fTileModeY; }
|
| -
|
| - /** Given a pixel center at [x,y], return the color sample
|
| - */
|
| - virtual SkPMColor sample(SkFixed x, SkFixed y) const = 0;
|
| -
|
| - virtual void setPaint(const SkPaint& paint);
|
| -
|
| - // This is the factory for finding an optimal subclass
|
| - static SkBitmapSampler* Create(const SkBitmap&, bool filter,
|
| - SkShader::TileMode tmx, SkShader::TileMode tmy);
|
| -
|
| -protected:
|
| - const SkBitmap& fBitmap;
|
| - uint16_t fMaxX, fMaxY;
|
| - bool fFilterBitmap;
|
| - SkShader::TileMode fTileModeX;
|
| - SkShader::TileMode fTileModeY;
|
| - SkTileModeProc fTileProcX;
|
| - SkTileModeProc fTileProcY;
|
| -
|
| - // illegal
|
| - SkBitmapSampler& operator=(const SkBitmapSampler&);
|
| -};
|
| -
|
| -static inline int fixed_clamp(SkFixed x)
|
| -{
|
| -#ifdef SK_CPU_HAS_CONDITIONAL_INSTR
|
| - if (x >> 16)
|
| - x = 0xFFFF;
|
| - if (x < 0)
|
| - x = 0;
|
| -#else
|
| - if (x >> 16)
|
| - {
|
| - if (x < 0)
|
| - x = 0;
|
| - else
|
| - x = 0xFFFF;
|
| - }
|
| -#endif
|
| - return x;
|
| -}
|
| -
|
| -//////////////////////////////////////////////////////////////////////////////////////
|
| -
|
| -static inline int fixed_repeat(SkFixed x)
|
| -{
|
| - return x & 0xFFFF;
|
| -}
|
| -
|
| -static inline int fixed_mirror(SkFixed x)
|
| -{
|
| - SkFixed s = x << 15 >> 31;
|
| - // s is FFFFFFFF if we're on an odd interval, or 0 if an even interval
|
| - return (x ^ s) & 0xFFFF;
|
| -}
|
| -
|
| -static inline bool is_pow2(int count)
|
| -{
|
| - SkASSERT(count > 0);
|
| - return (count & (count - 1)) == 0;
|
| -}
|
| -
|
| -static inline int do_clamp(int index, unsigned max)
|
| -{
|
| - SkASSERT((int)max >= 0);
|
| -
|
| -#ifdef SK_CPU_HAS_CONDITIONAL_INSTR
|
| - if (index > (int)max)
|
| - index = max;
|
| - if (index < 0)
|
| - index = 0;
|
| -#else
|
| - if ((unsigned)index > max)
|
| - {
|
| - if (index < 0)
|
| - index = 0;
|
| - else
|
| - index = max;
|
| - }
|
| -#endif
|
| - return index;
|
| -}
|
| -
|
| -static inline int do_repeat_mod(int index, unsigned max)
|
| -{
|
| - SkASSERT((int)max >= 0);
|
| -
|
| - if ((unsigned)index > max)
|
| - {
|
| - if (index < 0)
|
| - index = max - (~index % (max + 1));
|
| - else
|
| - index = index % (max + 1);
|
| - }
|
| - return index;
|
| -}
|
| -
|
| -static inline int do_repeat_pow2(int index, unsigned max)
|
| -{
|
| - SkASSERT((int)max >= 0 && is_pow2(max + 1));
|
| -
|
| - return index & max;
|
| -}
|
| -
|
| -static inline int do_mirror_mod(int index, unsigned max)
|
| -{
|
| - SkASSERT((int)max >= 0);
|
| -
|
| - // have to handle negatives so that
|
| - // -1 -> 0, -2 -> 1, -3 -> 2, etc.
|
| - // so we can't just cal abs
|
| - index ^= index >> 31;
|
| -
|
| - if ((unsigned)index > max)
|
| - {
|
| - int mod = (max + 1) << 1;
|
| - index = index % mod;
|
| - if ((unsigned)index > max)
|
| - index = mod - index - 1;
|
| - }
|
| - return index;
|
| -}
|
| -
|
| -static inline int do_mirror_pow2(int index, unsigned max)
|
| -{
|
| - SkASSERT((int)max >= 0 && is_pow2(max + 1));
|
| -
|
| - int s = (index & (max + 1)) - 1;
|
| - s = ~(s >> 31);
|
| - // at this stage, s is FFFFFFFF if we're on an odd interval, or 0 if an even interval
|
| - return (index ^ s) & max;
|
| -}
|
| -
|
| -#endif
|
|
|