Re-land: C++ readability review
[chromium-blink-merge.git] / cc / resources / resource.h
blobedafaefcfa363303711ebf8c61582cb7011944b1
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.
5 #ifndef CC_RESOURCES_RESOURCE_H_
6 #define CC_RESOURCES_RESOURCE_H_
8 #include "cc/base/cc_export.h"
9 #include "cc/resources/resource_provider.h"
10 #include "ui/gfx/geometry/size.h"
12 namespace cc {
14 class CC_EXPORT Resource {
15 public:
16 Resource() : id_(0) {}
17 Resource(unsigned id, const gfx::Size& size, ResourceFormat format)
18 : id_(id),
19 size_(size),
20 format_(format) {}
22 ResourceProvider::ResourceId id() const { return id_; }
23 gfx::Size size() const { return size_; }
24 ResourceFormat format() const { return format_; }
25 size_t bytes() const;
27 inline static size_t MemorySizeBytes(const gfx::Size& size,
28 ResourceFormat format) {
29 DCHECK_EQ(0u, (BitsPerPixel(format) * size.width() * size.height()) % 8);
30 return (BitsPerPixel(format) * size.width() * size.height()) / 8;
33 protected:
34 void set_id(ResourceProvider::ResourceId id) { id_ = id; }
35 void set_dimensions(const gfx::Size& size, ResourceFormat format) {
36 size_ = size;
37 format_ = format;
40 private:
41 ResourceProvider::ResourceId id_;
42 gfx::Size size_;
43 ResourceFormat format_;
45 DISALLOW_COPY_AND_ASSIGN(Resource);
48 } // namespace cc
50 #endif // CC_RESOURCES_RESOURCE_H_