soui 5.0.0.1
Soui5 Doc
 
Loading...
Searching...
No Matches
SResProvider-i.h
Go to the documentation of this file.
1/**
2 * Copyright (C) 2014-2050
3 * All rights reserved.
4 *
5 * @file SResProvider-i.h
6 * @brief
7 * @version v1.0
8 * @author SOUI group
9 * @date 2014/08/02
10 *
11 * Describe
12 */
13
14#ifndef _SRESPROVIDER_I_
15#define _SRESPROVIDER_I_
16
17#include <interface/obj-ref-i.h>
18#include <interface/SRender-i.h>
19
20#define UIRES_INDEX _T("uires.idx") //文件夹资源的文件映射表索引表文件名
21
22#ifdef _WIN32
23#define PATH_SLASH '\\'
24#else
25#define PATH_SLASH '/'
26#endif //_WIN32
27
28SNSBEGIN
29
30typedef enum BUILTIN_RESTYPE
31{
32 RES_PE = 0,
33 RES_FILE,
34} BUILTIN_RESTYPE;
35
36typedef BOOL(CALLBACK *EnumResCallback)(LPCTSTR pszType, LPCTSTR pszName, LPARAM lp);
37typedef BOOL(CALLBACK *EnumFileCallback)(LPCTSTR pszFileName, LPARAM lp);
38
39/**
40 * @struct IResProvider
41 * @brief ResProvider对象
42 *
43 * Describe 实现各种资源的加载
44 */
45#undef INTERFACE
46#define INTERFACE IResProvider
47DECLARE_INTERFACE_(IResProvider, IObjRef)
48{
49 /**
50 * @brief 添加引用
51 * @return long -- 引用计数
52 */
53 STDMETHOD_(long, AddRef)(THIS) PURE;
54
55 /**
56 * @brief 释放引用
57 * @return long -- 引用计数
58 */
59 STDMETHOD_(long, Release)(THIS) PURE;
60
61 /**
62 * @brief 释放对象
63 * @return void
64 */
65 STDMETHOD_(void, OnFinalRelease)(THIS) PURE;
66
67 /**
68 * @brief 资源初始化函数
69 * @param wParam WPARAM -- 参数1
70 * @param lParam LPARAM -- 参数2
71 * @return BOOL -- TRUE: 成功
72 * @remark 每个ResProvider必须实现此接口
73 */
74 STDMETHOD_(BOOL, Init)(THIS_ WPARAM wParam, LPARAM lParam) PURE;
75
76 /**
77 * @brief 查询一个资源是否存在
78 * @param pszType LPCTSTR -- 资源类型
79 * @param pszResName LPCTSTR -- 资源名称
80 * @return BOOL -- TRUE: 存在,FALSE: 不存在
81 */
82 STDMETHOD_(BOOL, HasResource)(THIS_ LPCTSTR pszType, LPCTSTR pszResName) PURE;
83
84 /**
85 * @brief 从资源中加载ICON
86 * @param pszResName LPCTSTR -- ICON名称
87 * @param cx int -- ICON宽度
88 * @param cy int -- ICON高度
89 * @return HICON -- 成功返回ICON的句柄,失败返回0
90 */
91 STDMETHOD_(HICON, LoadIcon)(THIS_ LPCTSTR pszResName, int cx, int cy) PURE;
92
93 /**
94 * @brief 从资源中加载HBITMAP
95 * @param pszResName LPCTSTR -- BITMAP名称
96 * @return HBITMAP -- 成功返回BITMAP的句柄,失败返回0
97 */
98 STDMETHOD_(HBITMAP, LoadBitmap)(THIS_ LPCTSTR pszResName) PURE;
99
100 /**
101 * @brief 从资源中加载光标
102 * @param pszResName LPCTSTR -- 光标名
103 * @return HCURSOR -- 成功返回光标的句柄,失败返回0
104 * @remark 支持动画光标
105 */
106 STDMETHOD_(HCURSOR, LoadCursor)(THIS_ LPCTSTR pszResName) PURE;
107
108 /**
109 * @brief 从资源加载一个IBitmap对象
110 * @param pszType LPCTSTR -- 图片类型
111 * @param pszResName LPCTSTR -- 图片名
112 * @return IBitmapS* -- 成功返回一个IBitmap对象,失败返回0
113 * @remark 如果没有定义strType,则根据name使用FindImageType自动查找匹配的类型
114 */
115 STDMETHOD_(IBitmapS *, LoadImage)(THIS_ LPCTSTR pszType, LPCTSTR pszResName) PURE;
116
117 /**
118 * @brief 从资源中创建一个IImgX对象
119 * @param pszType LPCTSTR -- 图片类型
120 * @param pszResName LPCTSTR -- 图片名
121 * @return IImgX* -- 成功返回一个IImgX对象,失败返回0
122 */
123 STDMETHOD_(IImgX *, LoadImgX)(THIS_ LPCTSTR pszType, LPCTSTR pszResName) PURE;
124
125 /**
126 * @brief 获得资源数据大小
127 * @param pszType LPCTSTR -- 资源类型
128 * @param pszResName LPCTSTR -- 资源名
129 * @return size_t -- 资源大小(byte),失败返回0
130 */
131 STDMETHOD_(size_t, GetRawBufferSize)(THIS_ LPCTSTR pszType, LPCTSTR pszResName) PURE;
132
133 /**
134 * @brief 获得资源内存块
135 * @param pszType LPCTSTR -- 资源类型
136 * @param pszResName LPCTSTR -- 资源名
137 * @param pBuf LPVOID -- 输出内存块
138 * @param size size_t -- 内存大小
139 * @return BOOL -- TRUE: 成功
140 * @remark 应该先用GetRawBufferSize查询资源大小再分配足够空间
141 */
142 STDMETHOD_(BOOL, GetRawBuffer)
143 (THIS_ LPCTSTR pszType, LPCTSTR pszResName, LPVOID pBuf, size_t size) PURE;
144
145 /**
146 * @brief 枚举资源
147 * @param funEnumCB EnumResCallback -- 枚举使用的回调函数
148 * @param lp LPARAM -- 回调参数
149 * @return void
150 */
151 STDMETHOD_(void, EnumResource)(THIS_ EnumResCallback funEnumCB, LPARAM lp) PURE;
152
153 /**
154 * @brief 枚举资源文件,返回文件路径
155 * @param funEnumCB EnumFileCallback -- 枚举使用的回调函数
156 * @param lp LPARAM -- 回调参数
157 * @return void
158 */
159 STDMETHOD_(void, EnumFile)(THIS_ EnumFileCallback funEnumCB, LPARAM lp) PURE;
160};
161
162SNSEND
163
164#endif //_SRESPROVIDER_I_
Bitmap object interface.
Definition SRender-i.h:420
Interface for image data.
Interface for reference counting.
Definition obj-ref-i.h:19
ResProvider对象
IImgX * LoadImgX(LPCTSTR pszType, LPCTSTR pszResName) PURE
从资源中创建一个IImgX对象
void EnumFile(EnumFileCallback funEnumCB, LPARAM lp) PURE
枚举资源文件,返回文件路径
IBitmapS * LoadImage(LPCTSTR pszType, LPCTSTR pszResName) PURE
从资源加载一个IBitmap对象
HICON LoadIcon(LPCTSTR pszResName, int cx, int cy) PURE
从资源中加载ICON
void EnumResource(EnumResCallback funEnumCB, LPARAM lp) PURE
枚举资源
HCURSOR LoadCursor(LPCTSTR pszResName) PURE
从资源中加载光标
BOOL GetRawBuffer(LPCTSTR pszType, LPCTSTR pszResName, LPVOID pBuf, size_t size) PURE
获得资源内存块
HBITMAP LoadBitmap(LPCTSTR pszResName) PURE
从资源中加载HBITMAP
BOOL HasResource(LPCTSTR pszType, LPCTSTR pszResName) PURE
查询一个资源是否存在
size_t GetRawBufferSize(LPCTSTR pszType, LPCTSTR pszResName) PURE
获得资源数据大小
void OnFinalRelease() PURE
释放对象
long AddRef() PURE
添加引用
BOOL Init(WPARAM wParam, LPARAM lParam) PURE
资源初始化函数
long Release() PURE
释放引用