Chromium Code Reviews| Index: src/gpu/GrTexturePriv.h |
| diff --git a/src/gpu/GrTexturePriv.h b/src/gpu/GrTexturePriv.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2913cf62f96d626f43dc71776a8e422ff3e415e3 |
| --- /dev/null |
| +++ b/src/gpu/GrTexturePriv.h |
| @@ -0,0 +1,75 @@ |
| +/* |
| + * Copyright 2014 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#ifndef GrTexturePriv_DEFINED |
| +#define GrTexturePriv_DEFINED |
| + |
| +#include "GrTexture.h" |
| +#include "SkRefCnt.h" |
| + |
|
robertphillips
2014/09/29 13:34:28
// A wrapper class that grants access to GrTexture
bsalomon
2014/09/29 18:42:11
Done.
|
| +class GrTexturePriv : SkNoncopyable { |
| +public: |
| + void setFlag(GrTextureFlags flags) { |
| + fTexture->fDesc.fFlags = fTexture->fDesc.fFlags | flags; |
| + } |
| + |
| + void resetFlag(GrTextureFlags flags) { |
| + fTexture->fDesc.fFlags = fTexture->fDesc.fFlags & ~flags; |
| + } |
| + |
| + bool isSetFlag(GrTextureFlags flags) const { |
| + return 0 != (fTexture->fDesc.fFlags & flags); |
| + } |
| + |
| + void dirtyMipMaps(bool mipMapsDirty); |
| + |
| + bool mipMapsAreDirty() const { |
| + return GrTexture::kValid_MipMapsStatus != fTexture->fMipMapsStatus; |
| + } |
| + |
| + bool hasMipMaps() const { |
| + return GrTexture::kNotAllocated_MipMapsStatus != fTexture->fMipMapsStatus; |
| + } |
| + |
| + static GrResourceKey ComputeKey(const GrGpu* gpu, |
| + const GrTextureParams* params, |
| + const GrTextureDesc& desc, |
| + const GrCacheID& cacheID); |
| + static GrResourceKey ComputeScratchKey(const GrTextureDesc& desc); |
| + static bool NeedsResizing(const GrResourceKey& key); |
| + static bool NeedsBilerp(const GrResourceKey& key); |
| + |
| + |
|
robertphillips
2014/09/29 13:34:28
It seems like these two should be static functions
bsalomon
2014/09/29 18:42:11
Agreed, will mark as TODO.
|
| + SkFixed normalizeFixedX(SkFixed x) const { |
| + SkASSERT(SkIsPow2(fTexture->fDesc.fWidth)); |
| + return x >> fTexture->fShiftFixedX; |
| + } |
| + |
| + SkFixed normalizeFixedY(SkFixed y) const { |
| + SkASSERT(SkIsPow2(fTexture->fDesc.fHeight)); |
| + return y >> fTexture->fShiftFixedY; |
| + } |
| + |
| +private: |
| + GrTexturePriv(GrTexture* texture) : fTexture(texture) { } |
| + |
| + // No taking addresses of this type. |
| + const GrTexturePriv* operator&() const; |
| + GrTexturePriv* operator&(); |
| + |
| + GrTexture* fTexture; |
| + |
|
robertphillips
2014/09/29 13:34:28
// For access to ctor, ComputeScratchKey.
?
bsalomon
2014/09/29 18:42:10
first yes, CSK is already public.
|
| + friend class GrTexture; |
| +}; |
| + |
| +inline GrTexturePriv GrTexture::texturePriv() { return GrTexturePriv(this); } |
| + |
| +inline const GrTexturePriv GrTexture::texturePriv () const { |
| + return GrTexturePriv(const_cast<GrTexture*>(this)); |
| +} |
| + |
| +#endif |