blob: 642ba16570468c4d89db1189b46cb0c2c1df66e4 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// 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
James Robinson646469d2014-10-03 15:33:28 -07008#include "cc/resources/resource_provider.h"
James Robinson30d547e2014-10-23 18:20:06 -07009#include "ui/gfx/geometry/size.h"
James Robinson646469d2014-10-03 15:33:28 -070010
11namespace cc {
12
James Robinson41b80ab2015-04-03 16:10:47 -070013class Resource {
James Robinson646469d2014-10-03 15:33:28 -070014 public:
15 Resource() : id_(0) {}
16 Resource(unsigned id, const gfx::Size& size, ResourceFormat format)
17 : id_(id),
18 size_(size),
19 format_(format) {}
20
21 ResourceProvider::ResourceId id() const { return id_; }
22 gfx::Size size() const { return size_; }
23 ResourceFormat format() const { return format_; }
24 size_t bytes() const;
25
26 inline static size_t MemorySizeBytes(const gfx::Size& size,
27 ResourceFormat format) {
28 DCHECK_EQ(0u, (BitsPerPixel(format) * size.width() * size.height()) % 8);
29 return (BitsPerPixel(format) * size.width() * size.height()) / 8;
30 }
31
32 protected:
33 void set_id(ResourceProvider::ResourceId id) { id_ = id; }
34 void set_dimensions(const gfx::Size& size, ResourceFormat format) {
35 size_ = size;
36 format_ = format;
37 }
38
39 private:
40 ResourceProvider::ResourceId id_;
41 gfx::Size size_;
42 ResourceFormat format_;
43
44 DISALLOW_COPY_AND_ASSIGN(Resource);
45};
46
47} // namespace cc
48
49#endif // CC_RESOURCES_RESOURCE_H_