📄 image.h
字号:
/*==========================================================================;
*
* 光线游戏引擎(Light Game Engine)
*
* 版权所有 (C) 2005-2007 康 旭。 保留所有权利。
* Copyright (C) KangXu. All Rights Reserved.
*
* 文件: image.h
* 内容: 图像类
*
****************************************************************************/
/*! \file image.h * 图像函数. * 此文件是图像函数头文件. */
/* 图像显示特效标志 */
#define LFSOURRECT 1
#define LFDESTRECT 2
#define LFROTATE 4
#define LFBLEND 8
#define LFLIGHTENESS 16
#define LFREVERSALX 32
#define LFREVERSALY 64
/* 图像显示特效结构 */
typedef struct _LIMAGEPLUS
{
DWORD flags; /* 标志 */
RECT sour_rect; /* 源区域 */
RECT dest_rect; /* 目标区域 */
float rotate; /* 旋转角度 */
float blend; /* 透明度 */
float lighteness; /* 亮度 */
} LIMAGEPLUS, *LPLIMAGEPLUS;
/*! \class LightImage * \brief 图像类 * * 本类负责图像文件的读取和显示,支持渲染到图像。
* 支持 25 种图像文件 .bmp, .cut, .dds, .doom, .gif, .ico, .jpg, .lbm, .mdl, .mng, .pal, .pbm, .pcd, .pcx, .pgm, * .pic, .png, .ppm, .psd, .psp, .raw, .sgi, .tga, .tif 和 .hdr 的读取,支持 15 种图像文件 .bmp, .dds, .h, .jpg, * .pal, .pbm, .pcx, .hdr, .pgm,.png, .ppm, .raw, .sgi, .tga 和 .tif 的保存。 * 每个 LightImage 实例都必须通过 LightEngine 类的 NewImage 方法分配。 */
class LightImage
{
public:
/*! \fn int Load ( const char *filename ) = 0 * \brief 将图像文件读入内存 * * 将图像文件读入内存 * * \param const char *filename 图像文件名 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Load ( const char *filename ) = 0;
/*! \fn int Build( int width, int height, unsigned char *rgba ) = 0 * \brief 从内存中创建图像 * * 从内存中创建图像 * * \param int width 图像宽度 * * \param int height 图像高度 * * \param unsigned char *rgba 图像颜色数据指针 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Build( int width, int height, unsigned char *rgba ) = 0;
/*! \fn int Create( int width, int height, int type ) = 0 * \brief 创建新图像 * * 创建新图像 * * \param int width 图像宽度 * * \param int height 图像高度 * * \param int type 图像类型 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Create( int width, int height, int type ) = 0;
/*! \fn bool IsValid( void ) = 0 * \brief 查询图像是否有效 * * 查询图像是否有效 * * \param 无 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual bool IsValid( void ) = 0;
/*! \fn int Speed( int speed ) = 0 * \brief 设置动画播放速度 * * 设置动画播放速度 * * \param int speed 动画播放的速度,用每帧持续的时间表示,以千分之一秒为单位。 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Speed( int speed ) = 0;
/*! \fn int Draw ( int x, int y ) = 0 * \brief 在指定位置显示图像 * * 在指定位置显示图像 * * \param int x 图像左上角在屏幕上 x 坐标 * * \param int y 图像左上角在屏幕上 y 坐标 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Draw ( int x, int y ) = 0;
/*! \fn int DrawPlus ( int x, int y, LPLIMAGEPLUS plus ) = 0 * \brief 在指定位置显示图像特效 * * 在指定位置显示图像特效 * * \param int x 图像左上角在屏幕上 x 坐标 * * \param int y 图像左上角在屏幕上 y 坐标 * * \param LPLIMAGEPLUS plus 图像显示特效结构指针,具体结构见头文件的定义。 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int DrawPlus ( int x, int y, LPLIMAGEPLUS plus ) = 0;
/*! \fn int ActiveFrame( int frame ) = 0 * \brief 将图像的指定帧激活为当前图像 * * 将图像的指定帧激活为当前图像s。 * * \param int frame 要激活的图像帧,如果该帧不存在,则该帧被指定为写入、渲染和保存的目标帧。 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int ActiveFrame( int frame ) = 0;
/*! \fn int Render( bool Screen ) = 0 * \brief 渲染到图像 * * 渲染到图像 * * \param bool Screen 是否渲染到图像 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Render( bool Screen ) = 0;
/*! \fn int GetSize ( LPSIZE lpPoint ) = 0 * \brief 查询图像的宽度和高度 * * 查询图像的宽度和高度 * * \param LPSIZE lpPoint 返回图像大小的指针 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int GetSize ( LPSIZE lpPoint ) = 0;
/*! \fn int Save( const char *filename, int format, int color ) = 0 * \brief 将图像颜色数据保存到指定的图像文件中。 * * 将图像颜色数据保存到指定的图像文件中。如果是动画图像,则保存活动帧。 * 支持 15 种图像文件 .bmp, .dds, .h, .jpg, .pal, .pbm, .pcx, .hdr, .pgm,.png, .ppm, .raw, .sgi, .tga 和 .tif 的保存 * * \param const char *filename 要保存颜色数据的图像文件名 * * \param int format 图像文件的格式,如果是 LIGHT_AUTO 则根据文件扩展名确定。 * * \param int color 图像文件的颜色模式 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Save( const char *filename, int format, int color ) = 0;
/*! \fn int Unload ( void ) = 0 * \brief 从内存中释放图像 * * 从内存中释放图像 * * \param 无 * * \return 如果函数调用成功,返回非零值;如果函数调用失败,返回零。 * * \see
*/
virtual int Unload ( void ) = 0;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -