• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
Resource()17   Resource() : id_(0) {}
Resource(unsigned id,const gfx::Size & size,ResourceFormat format)18   Resource(unsigned id, const gfx::Size& size, ResourceFormat format)
19       : id_(id),
20         size_(size),
21         format_(format) {}
22 
id()23   ResourceProvider::ResourceId id() const { return id_; }
size()24   gfx::Size size() const { return size_; }
format()25   ResourceFormat format() const { return format_; }
26   size_t bytes() const;
27 
MemorySizeBytes(const gfx::Size & size,ResourceFormat format)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:
set_id(ResourceProvider::ResourceId id)35   void set_id(ResourceProvider::ResourceId id) { id_ = id; }
set_dimensions(const gfx::Size & size,ResourceFormat format)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