Simple GUI Library
image_view.h
Go to the documentation of this file.
1/**
2 * @author Nikita Mochalov (github.com/tralf-strues)
3 * @file image_view.h
4 * @date 2021-11-06
5 *
6 * @copyright Copyright (c) 2021
7 */
8
9#pragma once
10
11#include "component.h"
12#include "../media/image.h"
13
14namespace Sgl
15{
16 class ImageView final : public Component
17 {
18 public:
19 ImageView(Image* image = nullptr, bool preserveRatio = false);
20 virtual ~ImageView() override = default;
21
22 virtual Component* getHitComponent(int32_t x, int32_t y) override;
23 virtual void render(const Sml::Rectangle<int32_t>& targetRegion) override;
24 virtual void layout() override;
25 virtual void prerender() override;
26 virtual bool isResizable() const override;
27
28 const Image* getImage() const;
29 void setImage(const Image* image);
30
31 float getRatio() const;
32
33 bool getPreserveRatio() const;
34 void setPreserveRatio(bool preserveRatio);
35
36 int32_t getFitWidth() const;
37 void setFitWidth(int32_t width);
38
39 int32_t getFitHeight() const;
40 void setFitHeight(int32_t height);
41
42 virtual int32_t computePrefWidth(int32_t height = -1) const override;
43 virtual int32_t computePrefHeight(int32_t width = -1) const override;
44
45 virtual int32_t computeMinWidth(int32_t height = -1) const override;
46 virtual int32_t computeMinHeight(int32_t width = -1) const override;
47
48 virtual int32_t computeMaxWidth(int32_t height = -1) const override;
49 virtual int32_t computeMaxHeight(int32_t width = -1) const override;
50
51 private:
52 const Image* m_Image = nullptr;
53
54 bool m_PreserveRatio = true;
55 int32_t m_FitWidth = USE_COMPUTED_SIZE;
56 int32_t m_FitHeight = USE_COMPUTED_SIZE;
57 };
58};