// Copyright 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef PlatformColor_h #define PlatformColor_h #include "Extensions3D.h" #include "GraphicsContext3D.h" #include "SkTypes.h" #include namespace cc { class PlatformColor { public: static GraphicsContext3D::SourceDataFormat format() { return SK_B32_SHIFT ? GraphicsContext3D::SourceFormatRGBA8 : GraphicsContext3D::SourceFormatBGRA8; } // Returns the most efficient texture format for this platform. static GC3Denum bestTextureFormat(WebKit::WebGraphicsContext3D* context, bool supportsBGRA8888) { GC3Denum textureFormat = GraphicsContext3D::RGBA; switch (format()) { case GraphicsContext3D::SourceFormatRGBA8: break; case GraphicsContext3D::SourceFormatBGRA8: if (supportsBGRA8888) textureFormat = Extensions3D::BGRA_EXT; break; default: ASSERT_NOT_REACHED(); break; } return textureFormat; } // Return true if the given texture format has the same component order // as the color on this platform. static bool sameComponentOrder(GC3Denum textureFormat) { switch (format()) { case GraphicsContext3D::SourceFormatRGBA8: return textureFormat == GraphicsContext3D::RGBA; case GraphicsContext3D::SourceFormatBGRA8: return textureFormat == Extensions3D::BGRA_EXT; default: ASSERT_NOT_REACHED(); return false; } } }; } // namespace cc #endif