-
Notifications
You must be signed in to change notification settings - Fork 13
/
StateImage.h
106 lines (85 loc) · 2.69 KB
/
StateImage.h
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
#ifndef UI_IMAGE_STATE_IMAGE_H_
#define UI_IMAGE_STATE_IMAGE_H_
#include "duilib/Core/UiTypes.h"
#include <map>
namespace ui
{
/** 控件状态与图片的映射
*/
class Control;
class Image;
class IRender;
class DpiManager;
class UILIB_API StateImage
{
public:
StateImage();
~StateImage();
/** 设置关联的控件接口
*/
void SetControl(Control* pControl);
/** 设置图片属性
* @param [in] stateType 图片类型
* @param [in] strImageString 图片属性字符串
* @param [in] dpi DPI缩放管理接口
*/
void SetImageString(ControlStateType stateType,
const DString& strImageString,
const DpiManager& dpi);
/** 获取图片属性
*@param [in] stateType 图片类型
*/
DString GetImageString(ControlStateType stateType) const;
/** 获取图片文件名
*@param [in] stateType 图片类型
*/
DString GetImagePath(ControlStateType stateType) const;
/** 比较两个状态的图片源区域是否相同
*@param [in] stateType1 图片类型1
*@param [in] stateType2 图片类型2
*/
bool AreImageSourceRectsEqual(ControlStateType stateType1, ControlStateType stateType2) const;
/** 获取图片的透明度
*@param [in] stateType 图片类型
*/
int32_t GetImageFade(ControlStateType stateType) const;
/** 获取图片接口(可读,可写)
*/
Image* GetStateImage(ControlStateType stateType) const;
public:
/** 是否包含Hot状态的图片
*/
bool HasHotImage() const;
/** 是否包含状态图片
*/
bool HasImage() const;
/** 绘制指定状态的图片
* @param [in] pRender 绘制接口
* @param [in] stateType 控件状态,用于选择绘制哪个图片
* @param [in] sImageModify 图片的附加属性
* @param [out] pDestRect 返回图片绘制的最终目标矩形区域
* @return 绘制成功返回true, 否则返回false
*/
bool PaintStateImage(IRender* pRender, ControlStateType stateType,
const DString& sImageModify = _T(""),
UiRect* pDestRect = nullptr);
/** 获取用于估算Control控件大小(宽和高)的图片接口
*/
Image* GetEstimateImage() const;
/** 获取所有图片接口
*/
void GetAllImages(std::vector<Image*>& allImages) const;
/** 清空图片缓存,释放资源
*/
void ClearImageCache();
/** 停止所有图片的动画
*/
void StopGifPlay();
private:
//关联的控件接口
Control* m_pControl;
//每个状态的图片接口
std::map<ControlStateType, Image*> m_stateImageMap;
};
} // namespace ui
#endif // UI_IMAGE_STATE_IMAGE_H_