-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathImage.hpp
More file actions
129 lines (115 loc) · 4.99 KB
/
Image.hpp
File metadata and controls
129 lines (115 loc) · 4.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//
// AmigaOS MUI C++ wrapper
//
// (c) 2022-2026 TDolphin
//
#pragma once
#include "Area.hpp"
#include "Core/MUICompileConfig.hpp"
namespace MUI
{
class Image : public Area
{
public:
explicit Image(Object *pMuiObject)
: Area(pMuiObject)
{
}
// instanceOf
const static std::string className;
static inline bool instanceOf(Object *pMuiObject)
{
return MUI::instanceOf(pMuiObject, className.c_str());
}
// is/get/set (attributes), all setters return object reference
#ifdef MOS_MUI_VERSION_5
// MUIA_Image_Spec is isg (gettable) only on MorphOS MUI 5.0; on AOS it is i.. (init-only)
/// @brief [ @b MUIA_Image_Spec ]
std::string getSpec() const;
// MUIA_Image_BuiltinSpec is isg (gettable) only on MorphOS MUI 5.0; on AOS V21 it is i..
/// @brief [ @b MUIA_Image_BuiltinSpec ]
unsigned long getBuiltinSpec() const;
#endif
/// @brief [ @b MUIA_Image_FontMatch ]
Image &setFontMatch(const bool fontMatch);
/// @brief [ @b MUIA_Image_FontMatchHeight ]
Image &setFontMatchHeight(const bool fontMatchHeight);
#ifdef MUIA_Image_FontMatchString
/// @brief [ @b MUIA_Image_FontMatchString ]
Image &setFontMatchString(const std::string &fontMatchString);
#endif
/// @brief [ @b MUIA_Image_FontMatchWidth ]
Image &setFontMatchWidth(const bool fontMatchWidth);
/// @brief [ @b MUIA_Image_FreeHoriz ]
Image &setFreeHoriz(const bool freeHoriz);
/// @brief [ @b MUIA_Image_FreeVert ]
Image &setFreeVert(const bool freeVert);
#if defined(AOS_MUI_VERSION_5) || defined(MOS_MUI_VERSION_5) // MUI5: AmigaOS or MorphOS
/// @brief [ @b MUIA_Image_Spec (settable on AmigaOS and MorphOS MUI 5.0) ]
Image &setSpec(const std::string &spec);
/// @brief [ @b MUIA_Image_Spec with predefined images (like MUI::ImageOrBackground::ArrowUp) ]
Image &setSpec(const enum ImageOrBackground spec);
/// @brief [ @b MUIA_Image_Spec, @b 5:<n> an external picture file that should be loaded with datatypes ]
Image &setSpecPicture(const std::string &imagePath);
/// @brief [ @b MUIA_Image_Spec, @b 2:<RGB> RGB color ]
Image &setSpecColor(const unsigned long rgbColor);
#endif
/// @brief [ @b MUIA_Image_State ]
Image &setState(const long state);
};
template <typename T, typename U> class ImageBuilderTemplate : public AreaBuilderTemplate<T, U>
{
std::string spec;
char colorSpec[29] = { '2', ':', 0, 0, 0, 0, 0, 0, 0, 0, ',', 0, 0, 0, 0, 0, 0, 0, 0, ',', 0, 0, 0, 0, 0, 0, 0, 0, '\0' }; // FIXME
public:
ImageBuilderTemplate(const std::string &uniqueId = MUI::EmptyUniqueId, const std::string &muiClassName = MUIC_Image)
: AreaBuilderTemplate<T, U>(uniqueId, muiClassName)
{
}
#ifdef MUIA_Image_BuiltinSpec
/// @brief [ @b MUIA_Image_BuiltinSpec ]
T &tagBuiltinSpec(const unsigned long builtinSpec);
#endif
#ifdef MUIA_Image_CopySpec
/// @brief [ @b MUIA_Image_CopySpec ]
T &tagCopySpec(const bool copySpec);
#endif
/// @brief [ @b MUIA_Image_FontMatch ]
T &tagFontMatch(const bool fontMatch);
/// @brief [ @b MUIA_Image_FontMatchHeight ]
T &tagFontMatchHeight(const bool fontMatchHeight);
#ifdef MUIA_Image_FontMatchString
/// @brief [ @b MUIA_Image_FontMatchString ]
T &tagFontMatchString(const std::string &fontMatchString);
#endif
/// @brief [ @b MUIA_Image_FontMatchWidth ]
T &tagFontMatchWidth(const bool fontMatchWidth);
/// @brief [ @b MUIA_Image_FreeHoriz ]
/// The image if its allowed to get scaled horizontally. Default is false.
T &tagFreeHoriz(const bool freeHoriz);
/// @brief [ @b MUIA_Image_FreeVert ]
/// The image if its allowed to get scaled vertically. Default is false.
T &tagFreeVert(const bool freeVert);
/// @brief [ @b MUIA_Image_OldImage ]
T &tagOldImage(const ::Image *oldImage);
/// @brief [ @b MUIA_Image_Spec (also sets MUIA_Image_CopySpec to TRUE) ]
T &tagSpec(const std::string &spec);
/// @brief [ @b MUIA_Image_Spec with predefined images (like MUI::ImageOrBackground::ArrowUp) ]
T &tagSpec(const enum ImageOrBackground spec);
/// @brief [ @b MUIA_Image_Spec, @b 5:<n> an external picture file that should be loaded with datatypes (also for sets
/// MUIA_Image_CopySpec to TRUE) ]
T &tagSpecPicture(const std::string &imagePath);
/// @brief [ @b MUIA_Image_Spec, @b 2:<RGB> RGB color (also sets MUIA_Image_CopySpec to TRUE) ]
T &tagSpecColor(const unsigned long rgbColor);
/// @brief [ @b MUIA_Image_State ]
T &tagState(const long state);
};
class ImageBuilder : public ImageBuilderTemplate<ImageBuilder, Image>
{
public:
ImageBuilder();
};
}
#define MUI_IMAGE_TPP_INCLUDE
#include "Image.tpp"
#undef MUI_IMAGE_TPP_INCLUDE