blob: e1b5aee0adbde5786923991311a36b041efa16e4 [file] [log] [blame]
// Copyright 2013 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_UI_RESOURCE_BITMAP_H_
#define CC_RESOURCES_UI_RESOURCE_BITMAP_H_
#include "base/memory/ref_counted.h"
#include "base/memory/scoped_ptr.h"
#include "cc/base/cc_export.h"
#include "third_party/skia/include/core/SkTypes.h"
#include "ui/gfx/size.h"
namespace cc {
// Ref-counted bitmap class (can’t use SkBitmap because of ETC1). Thread-safety
// ensures that both main and impl threads can hold references to the bitmap and
// that asynchronous uploads are allowed.
class CC_EXPORT UIResourceBitmap
: public base::RefCountedThreadSafe<UIResourceBitmap> {
public:
enum UIResourceFormat {
RGBA8
};
enum UIResourceWrapMode {
CLAMP_TO_EDGE,
REPEAT
};
// Takes ownership of “pixels”.
static scoped_refptr<UIResourceBitmap> Create(uint8_t* pixels,
UIResourceFormat format,
UIResourceWrapMode wrap_mode,
gfx::Size size);
gfx::Size GetSize() const { return size_; }
UIResourceFormat GetFormat() const { return format_; }
UIResourceWrapMode GetWrapMode() const { return wrap_mode_; }
uint8_t* GetPixels() { return pixels_.get(); }
private:
friend class base::RefCountedThreadSafe<UIResourceBitmap>;
UIResourceBitmap();
~UIResourceBitmap();
scoped_ptr<uint8_t[]> pixels_;
UIResourceFormat format_;
UIResourceWrapMode wrap_mode_;
gfx::Size size_;
DISALLOW_COPY_AND_ASSIGN(UIResourceBitmap);
};
} // namespace cc
#endif // CC_RESOURCES_UI_RESOURCE_BITMAP_H_