Home | History | Annotate | Download | only in resources
      1 // Copyright 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CC_RESOURCES_PLATFORM_COLOR_H_
      6 #define CC_RESOURCES_PLATFORM_COLOR_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/logging.h"
     10 #include "cc/resources/resource_format.h"
     11 #include "third_party/khronos/GLES2/gl2.h"
     12 #include "third_party/khronos/GLES2/gl2ext.h"
     13 #include "third_party/skia/include/core/SkTypes.h"
     14 
     15 namespace cc {
     16 
     17 class PlatformColor {
     18  public:
     19   enum SourceDataFormat {
     20     SOURCE_FORMAT_RGBA8,
     21     SOURCE_FORMAT_BGRA8
     22   };
     23 
     24   static SourceDataFormat Format() {
     25     return SK_B32_SHIFT ? SOURCE_FORMAT_RGBA8 : SOURCE_FORMAT_BGRA8;
     26   }
     27 
     28   // Returns the most efficient texture format for this platform.
     29   static ResourceFormat BestTextureFormat(bool supports_bgra8888) {
     30     switch (Format()) {
     31       case SOURCE_FORMAT_BGRA8:
     32         return (supports_bgra8888) ? BGRA_8888 : RGBA_8888;
     33       case SOURCE_FORMAT_RGBA8:
     34         return RGBA_8888;
     35     }
     36     NOTREACHED();
     37     return RGBA_8888;
     38   }
     39 
     40   // Return true if the given texture format has the same component order
     41   // as the color on this platform.
     42   static bool SameComponentOrder(ResourceFormat format) {
     43     switch (Format()) {
     44       case SOURCE_FORMAT_RGBA8:
     45         return format == RGBA_8888 || format == RGBA_4444;
     46       case SOURCE_FORMAT_BGRA8:
     47         return format == BGRA_8888 || format == RGBA_4444;
     48     }
     49     NOTREACHED();
     50     return false;
     51   }
     52 
     53  private:
     54   DISALLOW_IMPLICIT_CONSTRUCTORS(PlatformColor);
     55 };
     56 
     57 }  // namespace cc
     58 
     59 #endif  // CC_RESOURCES_PLATFORM_COLOR_H_
     60