Home | History | Annotate | Download | only in resources
      1 // Copyright 2012 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_RESOURCE_H_
      6 #define CC_RESOURCES_RESOURCE_H_
      7 
      8 #include "cc/base/cc_export.h"
      9 #include "cc/resources/resource_provider.h"
     10 #include "third_party/khronos/GLES2/gl2.h"
     11 #include "ui/gfx/size.h"
     12 
     13 namespace cc {
     14 
     15 class CC_EXPORT Resource {
     16  public:
     17   Resource() : id_(0) {}
     18   Resource(unsigned id, const gfx::Size& size, ResourceFormat format)
     19       : id_(id),
     20         size_(size),
     21         format_(format) {}
     22 
     23   ResourceProvider::ResourceId id() const { return id_; }
     24   gfx::Size size() const { return size_; }
     25   ResourceFormat format() const { return format_; }
     26   size_t bytes() const;
     27 
     28   inline static size_t MemorySizeBytes(const gfx::Size& size,
     29                                        ResourceFormat format) {
     30     DCHECK_EQ(0u, (BitsPerPixel(format) * size.width() * size.height()) % 8);
     31     return (BitsPerPixel(format) * size.width() * size.height()) / 8;
     32   }
     33 
     34  protected:
     35   void set_id(ResourceProvider::ResourceId id) { id_ = id; }
     36   void set_dimensions(const gfx::Size& size, ResourceFormat format) {
     37     size_ = size;
     38     format_ = format;
     39   }
     40 
     41  private:
     42   ResourceProvider::ResourceId id_;
     43   gfx::Size size_;
     44   ResourceFormat format_;
     45 
     46   DISALLOW_COPY_AND_ASSIGN(Resource);
     47 };
     48 
     49 }  // namespace cc
     50 
     51 #endif  // CC_RESOURCES_RESOURCE_H_
     52