#ifndef CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_THUMBNAIL_LAYER_H_
#define CHROME_BROWSER_ANDROID_COMPOSITOR_LAYER_THUMBNAIL_LAYER_H_
#include <stddef.h>
#include "base/memory/scoped_refptr.h"
#include "cc/resources/ui_resource_client.h"
#include "cc/slim/ui_resource_layer.h"
#include "chrome/browser/android/compositor/layer/layer.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size_f.h"
namespace thumbnail {
class Thumbnail;
}
namespace cc::slim {
class Layer;
}
namespace android {
class ThumbnailLayer : public Layer {
public:
static scoped_refptr<ThumbnailLayer> Create();
ThumbnailLayer(const ThumbnailLayer&) = delete;
ThumbnailLayer& operator=(const ThumbnailLayer&) = delete;
void SetThumbnail(thumbnail::Thumbnail* thumbnail);
void Clip(const gfx::Rect& clipping);
void ClearClip();
void AddSelfToParentOrReplaceAt(scoped_refptr<cc::slim::Layer> parent,
size_t index);
scoped_refptr<cc::slim::Layer> layer() override;
protected:
ThumbnailLayer();
~ThumbnailLayer() override;
private:
void UpdateSizes(const gfx::SizeF& content_size,
const gfx::SizeF& resource_size);
scoped_refptr<cc::slim::UIResourceLayer> layer_;
gfx::SizeF content_size_;
gfx::Rect last_clipping_;
bool clipped_ = false;
gfx::SizeF resource_size_;
};
}
#endif