|
|
|
|
/**
|
|
|
|
|
* Copyright (C) 2014-2050
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* @file SResProvider-i.h
|
|
|
|
|
* @brief
|
|
|
|
|
* @version v1.0
|
|
|
|
|
* @author SOUI group
|
|
|
|
|
* @date 2014/08/02
|
|
|
|
|
*
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef _SRESPROVIDERBASE_
|
|
|
|
|
#define _SRESPROVIDERBASE_
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <unknown/obj-ref-i.h>
|
|
|
|
|
#include <string/tstring.h>
|
|
|
|
|
#include <souicoll.h>
|
|
|
|
|
|
|
|
|
|
#include "SRender-i.h"
|
|
|
|
|
|
|
|
|
|
#define UIRES_INDEX _T("uires.idx") //文件夹资源的文件映射表索引表文件名
|
|
|
|
|
|
|
|
|
|
namespace SOUI
|
|
|
|
|
{
|
|
|
|
|
enum BUILTIN_RESTYPE
|
|
|
|
|
{
|
|
|
|
|
RES_PE=0,
|
|
|
|
|
RES_FILE,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @struct IResProvider
|
|
|
|
|
* @brief ResProvider对象
|
|
|
|
|
*
|
|
|
|
|
* Describe 实现各种资源的加载
|
|
|
|
|
*/
|
|
|
|
|
struct IResProvider : public IObjRef
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Init
|
|
|
|
|
* @brief 资源初始化函数
|
|
|
|
|
* @param WPARAM wParam -- param 1
|
|
|
|
|
* @param LPARAM lParam -- param 2
|
|
|
|
|
* @return BOOL -- true:succeed
|
|
|
|
|
*
|
|
|
|
|
* Describe every Resprovider must implement this interface.
|
|
|
|
|
*/
|
|
|
|
|
virtual BOOL Init(WPARAM wParam,LPARAM lParam) =0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* HasResource
|
|
|
|
|
* @brief 查询一个资源是否存在
|
|
|
|
|
* @param LPCTSTR strType -- 资源类型
|
|
|
|
|
* @param LPCTSTR pszResName -- 资源名称
|
|
|
|
|
* @return BOOL -- true存在,false不存在
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
virtual BOOL HasResource(LPCTSTR pszType,LPCTSTR pszResName)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LoadIcon
|
|
|
|
|
* @brief 从资源中加载ICON
|
|
|
|
|
* @param LPCTSTR pszResName -- ICON名称
|
|
|
|
|
* @param int cx -- ICON宽度
|
|
|
|
|
* @param int cy -- ICON高度
|
|
|
|
|
* @return HICON -- 成功返回ICON的句柄,失败返回0
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
virtual HICON LoadIcon(LPCTSTR pszResName,int cx=0,int cy=0)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LoadBitmap
|
|
|
|
|
* @brief 从资源中加载HBITMAP
|
|
|
|
|
* @param LPCTSTR pszResName -- BITMAP名称
|
|
|
|
|
* @return HBITMAP -- 成功返回BITMAP的句柄,失败返回0
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
virtual HBITMAP LoadBitmap(LPCTSTR pszResName)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LoadCursor
|
|
|
|
|
* @brief 从资源中加载光标
|
|
|
|
|
* @param LPCTSTR pszResName -- 光标名
|
|
|
|
|
* @return HCURSOR -- 成功返回光标的句柄,失败返回0
|
|
|
|
|
* Describe 支持动画光标
|
|
|
|
|
*/
|
|
|
|
|
virtual HCURSOR LoadCursor(LPCTSTR pszResName)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LoadImage
|
|
|
|
|
* @brief 从资源加载一个IBitmap对象
|
|
|
|
|
* @param LPCTSTR strType -- 图片类型
|
|
|
|
|
* @param LPCTSTR pszResName -- 图片名
|
|
|
|
|
* @return IBitmap * -- 成功返回一个IBitmap对象,失败返回0
|
|
|
|
|
* Describe 如果没有定义strType,则根据name使用FindImageType自动查找匹配的类型
|
|
|
|
|
*/
|
|
|
|
|
virtual IBitmap * LoadImage(LPCTSTR pszType,LPCTSTR pszResName)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* LoadImgX
|
|
|
|
|
* @brief 从资源中创建一个IImgX对象
|
|
|
|
|
* @param LPCTSTR strType -- 图片类型
|
|
|
|
|
* @param LPCTSTR pszResName -- 图片名
|
|
|
|
|
* @return IImgX * -- 成功返回一个IImgX对象,失败返回0
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
virtual IImgX * LoadImgX(LPCTSTR pszType,LPCTSTR pszResName)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* GetRawBufferSize
|
|
|
|
|
* @brief 获得资源数据大小
|
|
|
|
|
* @param LPCTSTR strType -- 资源类型
|
|
|
|
|
* @param LPCTSTR pszResName -- 资源名
|
|
|
|
|
* @return size_t -- 资源大小(byte),失败返回0
|
|
|
|
|
* Describe
|
|
|
|
|
*/
|
|
|
|
|
virtual size_t GetRawBufferSize(LPCTSTR pszType,LPCTSTR pszResName)=0;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* GetRawBuffer
|
|
|
|
|
* @brief 获得资源内存块
|
|
|
|
|
* @param LPCTSTR strType -- 资源类型
|
|
|
|
|
* @param LPCTSTR pszResName -- 资源名
|
|
|
|
|
* @param LPVOID pBuf -- 输出内存块
|
|
|
|
|
* @param size_t size -- 内存大小
|
|
|
|
|
* @return BOOL -- true成功
|
|
|
|
|
* Describe 应该先用GetRawBufferSize查询资源大小再分配足够空间
|
|
|
|
|
*/
|
|
|
|
|
virtual BOOL GetRawBuffer(LPCTSTR pszType,LPCTSTR pszResName,LPVOID pBuf,size_t size)=0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* CheckResUsage
|
|
|
|
|
* @brief 获得资源内存块
|
|
|
|
|
* @param const SMap<SStringT,int> & mapResUsage -- 资源使用计数MAP
|
|
|
|
|
* @return void
|
|
|
|
|
* Describe debug版中检查资源的使用情况
|
|
|
|
|
*/
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
virtual void CheckResUsage(const SMap<SStringT,int> & mapResUsage){}
|
|
|
|
|
#endif
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
}//namespace SOUI
|
|
|
|
|
#endif//_SRESPROVIDERBASE_
|