⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sfapi.h

📁 此为在MTK手机平台上添加软解码MP4要修改的源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
/* $Id: SFApi.h 142 2006-12-22 02:28:50Z snowfish $ */
/**
 * @file sfapi.h
 * @version 0.9.0
 * @author Myles Yu
 */

#ifndef __SNOWFISH_API__H__
#define __SNOWFISH_API__H__

#ifdef __cplusplus
extern "C" {
#endif //__cplusplus

//#define SF_SCREEN_WIDTH	240
//#define SF_SCREEN_HEIGHT	320

typedef unsigned short UNICHAR;

typedef const UNICHAR* UString;

typedef int SFInt;
typedef unsigned int SFUint;
typedef long SFInt32;
typedef unsigned long SFUint32;
typedef char SFInt8;
typedef unsigned char SFUint8;
typedef short SFInt16;
typedef unsigned short SFUint16;
typedef char SFChar;
typedef UNICHAR UChar;
typedef SFUint8 SFByte;
typedef SFByte* SFBytePtr;
typedef const SFByte* SFCBytePtr;

typedef SFInt32		int32;
typedef SFInt16		int16;
typedef SFInt8		int8;
typedef SFUint32	uint32;
typedef SFUint16	uint16;
typedef SFUint8		uint8;


typedef void SFVoid;
typedef void SFAny;
typedef void* SFAnyPtr;
typedef SFAnyPtr* SFAnyPtrPtr;

typedef SFUint32 SFSize_T;

#define SFNull	((void*)0)
#define SFNULL	((void*)0)

typedef unsigned int  SFLPARAM;
typedef unsigned int SFWPARAM;
typedef int SFEVT_ID;

typedef int SFBool;

typedef enum _SF_BOOLEAN
{
  SFTrue=1,
  SFFalse=0
} SF_BOOLEAN;

typedef SFUint16 SFNColor;


#define SFMAKE_PARAM(high,low) (((high&0xffff)<<16)|(low&0xffff))
#define SFGET_HIGH(v)  ((short)((v>>16)&0xffff))
#define SFGET_LOW(v) ((short)((v)&0xffff))

#define SFMAKE_POINT(x,y) SFMAKE_PARAM(x,y)
#define SFPOINT_X(p)  SFGET_HIGH(p)
#define SFPOINT_Y(p)  SFGET_LOW(p)

#define PARAM_UNUSED(x) (x)
//!定时器ID
typedef unsigned int SFTIMER_ID;
//!声音ID
typedef unsigned int SFSND_ID;
//!短消息ID
typedef unsigned int SFSMS_ID;

typedef struct tagISFApplication ISFApplication;

//!事件处理句柄,对于每一个消息都有一个事件ID(idEvent)和最多2个的关联的参数(lParam,wParam)
//以下关于事件一律写作 evt_id ( [param1 [,param2] ] )
//@param pApp - 系统维护的ISFApplication实例指针 (由系统调用SFApp_Create创建,到应用相应EVT_APP_DESTROY后指向的内容自动被清除)
//@param idEvent - 事件ID
//@param lParam - 事件的参数1
//@param wParam - 事件的参数2
typedef void (*SF_EVENT_HANDLER) (ISFApplication*pApp,SFEVT_ID idEvent,SFLPARAM lParam,SFWPARAM wParam);

typedef enum _SF_KEYCODE
{
	SFKEY_NONE=0,
	//左软键
	SFKEY_SL=1,
	//中软键
	SFKEY_SM,
	//右软键
	SFKEY_SR,

	SFKEY_UP,
	SFKEY_DOWN,
	SFKEY_LEFT,
	SFKEY_RIGHT,

	//数字键
	SFKEY_NUM0,
	SFKEY_NUM1,
	SFKEY_NUM2,
	SFKEY_NUM3,
	SFKEY_NUM4,
	SFKEY_NUM5,
	SFKEY_NUM6,
	SFKEY_NUM7,
	SFKEY_NUM8,
	SFKEY_NUM9,

	//井号
	SFKEY_POUND,
	//星号
	SFKEY_STAR,

	SFKEY_CLR,
	SFKEY_BACK
} SF_KEYCODE;

typedef enum _SF_SOCKET_STATUS
{
  SF_SOCK_STATUS_READY=0,
  SF_SOCK_STATUS_ERROR=1
} SF_SOCKET_STATUS;

typedef enum _SF_EVENT
{
  //EVT_APP_NONE()
  //@brief 空事件
  EVT_APP_NONE=0,
  //EVT_APP_START()
  //@brief 应用程序开始运行的信号
  EVT_APP_START,
  //EVT_APP_PAUSE()
  //@brief 应用程序暂停的信号
  EVT_APP_PAUSE,
  //EVT_APP_RESUME()
  //@brief 应用程序从暂停恢复的信号
  EVT_APP_RESUME,
  //EVT_APP_DESTROY()
  //@brief 应用程序关闭的信号
  EVT_APP_DESTROY,
  
  //EVT_KEYUP(SPLPARAM nKeyCode)
  //@brief
  //@param nKeyCode - 释放的按键的键值,见SF_KEYCODE
  EVT_KEYUP,
  //EVT_KEYDOWN(SPLPARAM nKeyCode)
  //@brief
  //@param nKeyCode - 按下的按键的键值,见SF_KEYCODE
  EVT_KEYDOWN,
  
  //EVT_POINTER_PRESSED(SPLPARAM ptPress)
  //@brief 触摸屏按下
  //@param ptPress - SFMAKE_POINT(x,y) 按下点的屏幕坐标
  EVT_POINTER_PRESSED,
  //EVT_POINTER_PRESSED(SPLPARAM ptRelease)
  //@brief 触摸屏释放
  //@param ptRelease - SFMAKE_POINT(x,y) 释放点的屏幕坐标
  EVT_POINTER_RELEASED,
  //EVT_POINTER_PRESSED(SPLPARAM ptDrag)
  //@brief 触摸屏拖动
  //@param ptDrag - SFMAKE_POINT(x,y) 拖动点的屏幕坐标
  EVT_POINTER_DRAGGED,
  
  //EVT_TIMER(SPLPARAM idTimer)
  //@brief 定时器到时
  //@param idTimer - SFTIMER_ID 到时的定时器ID
  EVT_TIMER,
  
  //EVT_SMS_SEND(SPLPARAM idSms,SFWPARAM nResult)
  //@brief 短消息发送结果
  //@param idSms - SFSMS_ID 之前取到的短消息发送ID
  //@param nResult - int 发送结果,1表示成功,0表示失败
  EVT_SMS_SEND,

  //EVT_SOCKET(SPLPARAM socket,SFWPARAM evt_err)
  //@brief socket消息
  //@param socket - SFSMS_ID 之前取到的短消息发送ID
  //@param evt_err - SFMAKE_PARAM(event,error);
  EVT_SOCKET,
  //EVT_SOCKET_STATUS(SPLPARAM idStatus)
  //@brief 网络系统状态
  //@param idStatus - SF_SOCK_STATUS_READY表示网络系统初始化,socket已经可以连接、SF_SOCK_STATUS_ERROR表示网络系统已出错关闭,需要重新初始化。
  EVT_SOCKET_STATUS
#ifdef WIN32
  ,EVT_MEM_PROFILE
#endif
} SF_EVENT;

//应用程序接口
struct tagISFApplication
{
  SF_EVENT_HANDLER pfnEvtHandler;
};

//这是我们提供实现的方法,但调用由你们这边调用,并需要保留返回值
/**
 * @brief 创建应用程序的需要系统维护的唯一实例
 * @param idGame - 游戏ID
 * @return 应用实例句柄
 */
ISFApplication* SFApp_Create(int idGame);
ISFApplication* SFAppTest_Create(int idGame);
/**
 * @brief 表示应用主动要求退出,系统随后应该发送EVT_APP_DESTORY消息
 */
void SFApp_Exit(void);

/**
 * @brief 获取系统的屏幕缓冲区
 * @return 屏幕缓冲区指针
 */
SFNColor* SFScreen_GetBuffer(void);

#ifdef WIN32
typedef struct HDC__* HDC;
HDC SFScreen_GetDC(void);
#endif //WIN32

/**
 * @brief 获取系统的屏幕宽度
 * @return 屏幕宽度
 */
SFInt SFScreen_GetWidth(void);

/**
 * @brief 获取系统的屏幕高度
 * @return 屏幕高度
 */
SFInt SFScreen_GetHeight(void);

/**
 * @brief 把系统的屏幕缓冲区内容刷新到前台(实际屏幕)
 */
void SFScreen_Update(void); 

/**
 * @brief 取得文字的逻辑高度,所有文字有统一的逻辑高度
 * @return 取得的逻辑高度
 */
SFInt SFFont_GetHeight(void);

/**
 * @brief 获取单个字符的宽度
 * @return 取得的宽度
 */
SFInt SFFont_GetCharWidth(UChar aChar);

/**
 * @brief 获取字符串的宽度
 * @return 取得的宽度
 */
SFInt SFFont_GetStringWidth(UString aStr,SFInt aLength);

/**
 * @brief 设置clipping区域,用于文字的clipping
 */
void SFScreen_SetClip(SFInt x,SFInt y,SFInt w,SFInt h);

/**
 * @brief 重置clipping区域
 */
void SFScreen_ResetClip(void);

/**
 * @brief 启动一个定时器
 * @param idTimer - IN 定时器ID
 * @param nExpiredTime - IN 以毫秒为单位的定时时间
 * @param bOnceOrPeriod - IN YSTrue 表示定时器只有效一次,YSFalse 表示按指定间隔反复发出信号
 */
void SFTimer_Start(SFTIMER_ID idTimer,int nExpiredTime,SFBool bOnce,ISFApplication*pHandler);

/**
 * @brief 停止指定的定时器
 * @param idTimer - IN 定时器ID
 */
void SFTimer_Stop(SFTIMER_ID idTimer);

/**
 * @brief 获取游戏中可分配的连续空间首地址
 * @return 取得的空间首地址
 */
SFAnyPtr SFSystem_GetHeap(void);
/**
 * @brief 获取游戏中可分配的连续空间大小
 * @return 空间的大小
 */
SFSize_T SFSystem_GetHeapSize(void);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -