Imported Upstream version 9.20
[platform/upstream/7zip.git] / CPP / Windows / Control / ImageList.h
1 // Windows/Control/ImageList.h\r
2 \r
3 #ifndef __WINDOWS_CONTROL_IMAGELIST_H\r
4 #define __WINDOWS_CONTROL_IMAGELIST_H\r
5 \r
6 #include "Windows/Defs.h"\r
7 \r
8 namespace NWindows {\r
9 namespace NControl {\r
10 \r
11 class CImageList\r
12 {\r
13   HIMAGELIST m_Object;\r
14 public:\r
15   operator HIMAGELIST() const {return m_Object; }\r
16   CImageList(): m_Object(NULL) {}\r
17   bool Attach(HIMAGELIST imageList)\r
18   {\r
19     if (imageList == NULL)\r
20       return false;\r
21     m_Object = imageList;\r
22     return true;\r
23   }\r
24 \r
25   HIMAGELIST Detach()\r
26   {\r
27     HIMAGELIST imageList = m_Object;\r
28     m_Object = NULL;\r
29     return imageList;\r
30   }\r
31   \r
32   bool Create(int width, int height, UINT flags, int initialNumber, int grow)\r
33   {\r
34     HIMAGELIST a = ImageList_Create(width, height, flags,\r
35       initialNumber, grow);\r
36     if (a == NULL)\r
37       return false;\r
38     return Attach(a);\r
39   }\r
40   \r
41   bool Destroy() // DeleteImageList() in MFC\r
42   {\r
43     if (m_Object == NULL)\r
44       return false;\r
45     return BOOLToBool(ImageList_Destroy(Detach()));\r
46   }\r
47 \r
48   ~CImageList()\r
49     { Destroy(); }\r
50 \r
51   int GetImageCount() const\r
52     { return ImageList_GetImageCount(m_Object); }\r
53 \r
54   bool GetImageInfo(int index, IMAGEINFO* imageInfo) const\r
55     { return BOOLToBool(ImageList_GetImageInfo(m_Object, index, imageInfo)); }\r
56 \r
57   int Add(HBITMAP hbmImage, HBITMAP hbmMask = 0)\r
58     { return ImageList_Add(m_Object, hbmImage, hbmMask); }\r
59   int AddMasked(HBITMAP hbmImage, COLORREF mask)\r
60     { return ImageList_AddMasked(m_Object, hbmImage, mask); }\r
61   int AddIcon(HICON icon)\r
62     { return ImageList_AddIcon(m_Object, icon); }\r
63   int Replace(int index, HICON icon)\r
64     { return ImageList_ReplaceIcon(m_Object, index, icon); }\r
65 \r
66   // If index is -1, the function removes all images.\r
67   bool Remove(int index)\r
68     { return BOOLToBool(ImageList_Remove(m_Object, index)); }\r
69   bool RemoveAll()\r
70     { return BOOLToBool(ImageList_RemoveAll(m_Object)); }\r
71 \r
72   HICON ExtractIcon(int index)\r
73     { return ImageList_ExtractIcon(NULL, m_Object, index); }\r
74   HICON GetIcon(int index, UINT flags)\r
75     { return ImageList_GetIcon(m_Object, index, flags); }\r
76 \r
77   bool GetIconSize(int &width, int &height) const\r
78     { return BOOLToBool(ImageList_GetIconSize(m_Object, &width, &height)); }\r
79   bool SetIconSize(int width, int height)\r
80     { return BOOLToBool(ImageList_SetIconSize(m_Object, width, height)); }\r
81 };\r
82 \r
83 }}\r
84 \r
85 #endif\r