// Copyright 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CC_RESOURCES_RESOURCE_H_ #define CC_RESOURCES_RESOURCE_H_ #include "cc/base/cc_export.h" #include "cc/resources/resource_provider.h" #include "third_party/khronos/GLES2/gl2.h" #include "ui/gfx/geometry/size.h" namespace cc { class CC_EXPORT Resource { public: Resource() : id_(0) {} Resource(unsigned id, const gfx::Size& size, ResourceFormat format) : id_(id), size_(size), format_(format) {} ResourceProvider::ResourceId id() const { return id_; } gfx::Size size() const { return size_; } ResourceFormat format() const { return format_; } size_t bytes() const; inline static size_t MemorySizeBytes(const gfx::Size& size, ResourceFormat format) { DCHECK_EQ(0u, (BitsPerPixel(format) * size.width() * size.height()) % 8); return (BitsPerPixel(format) * size.width() * size.height()) / 8; } protected: void set_id(ResourceProvider::ResourceId id) { id_ = id; } void set_dimensions(const gfx::Size& size, ResourceFormat format) { size_ = size; format_ = format; } private: ResourceProvider::ResourceId id_; gfx::Size size_; ResourceFormat format_; DISALLOW_COPY_AND_ASSIGN(Resource); }; } // namespace cc #endif // CC_RESOURCES_RESOURCE_H_