#ifndef UI_VIEWS_CONTROLS_IMAGE_VIEW_BASE_H_
#define UI_VIEWS_CONTROLS_IMAGE_VIEW_BASE_H_
#include <string>
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
#include "ui/views/metadata/view_factory.h"
#include "ui/views/view.h"
namespace views {
class VIEWS_EXPORT ImageViewBase : public View {
public:
METADATA_HEADER(ImageViewBase);
enum class Alignment { kLeading, kCenter, kTrailing };
ImageViewBase();
ImageViewBase(const ImageViewBase&) = delete;
ImageViewBase& operator=(const ImageViewBase&) = delete;
~ImageViewBase() override;
void SetImageSize(const gfx::Size& image_size);
gfx::Rect GetImageBounds() const;
void ResetImageSize();
void SetHorizontalAlignment(Alignment ha);
Alignment GetHorizontalAlignment() const;
void SetVerticalAlignment(Alignment va);
Alignment GetVerticalAlignment() const;
void SetTooltipText(const std::u16string& tooltip);
const std::u16string& GetTooltipText() const;
void AdjustAccessibleName(std::u16string& new_name,
ax::mojom::NameFrom& name_from) override;
std::u16string GetTooltipText(const gfx::Point& p) const override;
gfx::Size CalculatePreferredSize() const override;
views::PaintInfo::ScaleType GetPaintScaleType() const override;
void OnBoundsChanged(const gfx::Rect& previous_bounds) override;
void PreferredSizeChanged() override;
protected:
virtual gfx::Size GetImageSize() const = 0;
absl::optional<gfx::Size> image_size_;
private:
friend class ImageViewTest;
void UpdateImageOrigin();
gfx::Point image_origin_;
Alignment horizontal_alignment_ = Alignment::kCenter;
Alignment vertical_alignment_ = Alignment::kCenter;
std::u16string tooltip_text_;
};
BEGIN_VIEW_BUILDER(VIEWS_EXPORT, ImageViewBase, View)
VIEW_BUILDER_PROPERTY(gfx::Size, ImageSize)
VIEW_BUILDER_PROPERTY(ImageViewBase::Alignment, HorizontalAlignment)
VIEW_BUILDER_PROPERTY(ImageViewBase::Alignment, VerticalAlignment)
VIEW_BUILDER_PROPERTY(std::u16string, TooltipText)
END_VIEW_BUILDER
}
DEFINE_VIEW_BUILDER(VIEWS_EXPORT, ImageViewBase)
#endif