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

📄 pref.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	rect.left = ptArray[0].x;	rect.top = ptArray[0].y;	rect.right = ptArray[1].x;	rect.bottom = ptArray[1].y;    }    else	return HXR_FAIL;    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return HXR_OK;}HX_RESULT CPrefTable::ReadPrefSize(INT32 nPrefKey,HXxSize& size,INT32 nIndex){    CHXBuffer* pBuffer = NULL;    HX_RESULT result;    // Try to read the pref    result = ReadPref(nPrefKey,nIndex,(IHXBuffer*&)pBuffer);    // Convert the preference to a size    HXxPoint ptArray;    if (result == HXR_OK)    {	if (ReadPoints((const char*)pBuffer->GetBuffer(),&ptArray,1))	{	    size.cx = ptArray.x;	    size.cy = ptArray.y;	    // Don't need buffer anymore	    if (pBuffer)		pBuffer->Release();	    return HXR_OK;	}    }    if (m_pPrefTable[nPrefKey].pDefaultValue)    {	ReadPoints(m_pPrefTable[nPrefKey].pDefaultValue,&ptArray,1);	size.cx = ptArray.x;	size.cy = ptArray.y;    }    else	return HXR_FAIL;    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return HXR_OK;}HX_RESULT CPrefTable::ReadPrefPoint(INT32 nPrefKey,HXxPoint& pt,INT32 nIndex){    CHXBuffer* pBuffer = NULL;    HX_RESULT result;    // Try to read the pref    result = ReadPref(nPrefKey,nIndex,(IHXBuffer*&)pBuffer);    // Convert the preference to a size    HXxPoint ptArray;    if (result == HXR_OK)    {	if (ReadPoints((const char*)pBuffer->GetBuffer(),&ptArray,1))	{	    pt.x = ptArray.x;	    pt.y = ptArray.y;	    // Don't need buffer anymore	    if (pBuffer)		pBuffer->Release();	    return HXR_OK;	}    }    if (m_pPrefTable[nPrefKey].pDefaultValue)    {	ReadPoints(m_pPrefTable[nPrefKey].pDefaultValue,&ptArray,1);	pt.x = ptArray.x;	pt.y = ptArray.y;    }    else	return HXR_FAIL;    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return HXR_OK;}HX_RESULT CPrefTable::ReadPrefString(INT32 nPrefKey,char* szString,INT32 nStrLen,INT32 nIndex){    CHXBuffer* pBuffer = NULL;    HX_RESULT result;    if (!szString || !nStrLen)	return HXR_INVALID_PARAMETER;    // Default return value    szString[0] = '\0';    // Try to read the pref    result = ReadPref(nPrefKey,nIndex,(IHXBuffer*&)pBuffer);    // Convert the preference to a string    if (result == HXR_OK)    {	strncpy(szString,(const char*)pBuffer->GetBuffer(),(int)nStrLen);        szString[nStrLen-1] = '\0';    }    // Pref doesn't exist convert default value to integer    else if (m_pPrefTable[(int)nPrefKey].pDefaultValue)    {	strncpy(szString,m_pPrefTable[nPrefKey].pDefaultValue,(int)nStrLen);        szString[nStrLen-1] = '\0';    }    else	return HXR_FAIL;    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return HXR_OK;}    HX_RESULT CPrefTable::ReadPrefBuffer(INT32 nPrefKey,IHXBuffer*& pBuffer,INT32 nIndex){    HX_RESULT result;    // read_pref creates an IHXBuffer so this should be NULL    HX_ASSERT(!pBuffer);    // Try to read the pref    result = ReadPref(nPrefKey,nIndex,pBuffer);    // If the pref read failed try to create our own IMRABuffer and copy in the default pref    if (result != HXR_OK)    {	if (m_pPrefTable[nPrefKey].pDefaultValue)	{	    pBuffer = new CHXBuffer;	    if (!pBuffer)		return HXR_OUTOFMEMORY;	    pBuffer->AddRef();	    pBuffer->Set((const UCHAR*)m_pPrefTable[nPrefKey].pDefaultValue,strlen(m_pPrefTable[nPrefKey].pDefaultValue)+1);	}	else	    return HXR_FAIL;    }    return HXR_OK;}HX_RESULT CPrefTable::WritePref(INT32 nPrefKey,INT32 nIndex,IHXBuffer* pBuffer){    // Index is out of table range if this is false    HX_ASSERT(nPrefKey >= 0 && nPrefKey < m_nTableEntries);    // Need to call SetupPrefTable() if this is false    HX_ASSERT(m_pPrefTable);    // Index is out of table range    if (nPrefKey < 0 || nPrefKey >= m_nTableEntries)	return HXR_INVALID_PARAMETER;    // Need to call SetupPrefTable()    if (!m_pPrefTable || (!m_pCPref && !m_pIHXPrefs))	return HXR_UNEXPECTED;    // If we have an indexed pref append index number to pref    if (nIndex > 0)    {        char szIndexedPref[MAX_PREF_NAME]; /* Flawfinder: ignore */	SafeSprintf(szIndexedPref,MAX_PREF_NAME,"%s%ld",m_pPrefTable[nPrefKey].szPrefName,nIndex);	return (m_pCPref ? m_pCPref->write_pref(szIndexedPref,pBuffer) : m_pIHXPrefs->WritePref(szIndexedPref,pBuffer));    }    else	return (m_pCPref ? m_pCPref->write_pref(m_pPrefTable[nPrefKey].szPrefName,pBuffer) : m_pIHXPrefs->WritePref(m_pPrefTable[nPrefKey].szPrefName,pBuffer));}IHXBuffer* CPrefTable::CreateIHXBuffer(const char* szString){    // Create new buffer    CHXBuffer* pBuffer = new CHXBuffer();    if (!pBuffer)	return NULL;    // Addref and fill buffer    pBuffer->AddRef();    pBuffer->Set((const UCHAR*)szString,strlen(szString)+1);    return pBuffer;}HX_RESULT CPrefTable::WritePrefColor(INT32 nPrefKey,const HXxColor& color,INT32 nIndex){    INT32 lValue = (INT32)color;    return WritePrefInt(nPrefKey,lValue,nIndex);}HX_RESULT CPrefTable::WritePrefInt(INT32 nPrefKey,INT32 nValue,INT32 nIndex){    IHXBuffer* pBuffer = NULL;    char szBuff[MAX_INT_BUFFER]; /* Flawfinder: ignore */        SafeSprintf(szBuff, sizeof(szBuff), "%ld", nValue);    // Create buffer and write pref    pBuffer = CreateIHXBuffer(szBuff);    HX_RESULT result = WritePref(nPrefKey,nIndex,pBuffer);    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return result;}HX_RESULT CPrefTable::WritePrefRect(INT32 nPrefKey,const HXxRect& rect,INT32 nIndex){    IHXBuffer* pBuffer = NULL;    char szBuff[MAX_RECT_BUFFER]; /* Flawfinder: ignore */        SafeSprintf(szBuff, sizeof(szBuff), "%ld,%ld,%ld,%ld",                rect.left, rect.top, rect.right, rect.bottom);    // Create buffer and write pref    pBuffer = CreateIHXBuffer(szBuff);    HX_RESULT result = WritePref(nPrefKey,nIndex,pBuffer);    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return result;}HX_RESULT CPrefTable::WritePrefSize(INT32 nPrefKey,const HXxSize& size,INT32 nIndex){    IHXBuffer* pBuffer = NULL;    char szBuff[MAX_SIZE_BUFFER]; /* Flawfinder: ignore */        SafeSprintf(szBuff, sizeof(szBuff), "%ld,%ld", size.cx, size.cy);    // Create buffer and write pref    pBuffer = CreateIHXBuffer(szBuff);    HX_RESULT result = WritePref(nPrefKey,nIndex,pBuffer);    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return result;}HX_RESULT CPrefTable::WritePrefPoint(INT32 nPrefKey,const HXxPoint& pt,INT32 nIndex){    IHXBuffer* pBuffer = NULL;    char szBuff[MAX_POINT_BUFFER]; /* Flawfinder: ignore */        SafeSprintf(szBuff, sizeof(szBuff), "%ld,%ld", pt.x, pt.y);    // Create buffer and write pref    pBuffer = CreateIHXBuffer(szBuff);    HX_RESULT result = WritePref(nPrefKey,nIndex,pBuffer);    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return result;}HX_RESULT CPrefTable::WritePrefString(INT32 nPrefKey,const char* szString,INT32 nIndex){    IHXBuffer* pBuffer = NULL;    // Create buffer and write pref    pBuffer = CreateIHXBuffer(szString);    HX_RESULT result = WritePref(nPrefKey,nIndex,pBuffer);    // Don't need buffer anymore    if (pBuffer)	pBuffer->Release();    return result;}HX_RESULT CPrefTable::WritePrefBuffer(INT32 nPrefKey,IHXBuffer* pBuffer,INT32 nIndex){    return WritePref(nPrefKey,nIndex,pBuffer);}HX_RESULT CPrefTable::BeginSubPref(INT32 nPrefKey){    // Index is out of table range if this is false    HX_ASSERT(nPrefKey >= 0 && nPrefKey < m_nTableEntries);    // Need to call SetupPrefTable() if this is false    HX_ASSERT(m_pPrefTable);    // Index is out of table range    if (nPrefKey < 0 || nPrefKey >= m_nTableEntries)	return HXR_INVALID_PARAMETER;    // Need to call SetupPrefTable()    if (!m_pPrefTable || !m_pCPref)	return HXR_UNEXPECTED;    // Call BeginSubPref with the actual string    return m_pCPref->BeginSubPref(m_pPrefTable[nPrefKey].szPrefName);}///////////////////////////////////////////////#ifdef PREFTESTING#include <stdio.h>#define INITGUID#include "hxcom.h"#include "ihxpckts.h"#include "pref.h"#include "playpref.h"#include "chxpckts.h"int main(int argc, char **argv){	CPref *mPref = 0;	CHXBuffer* pinBuffer = 0;	CHXBuffer* poutBuffer = 0;#ifdef _WINDOWS	const char* pCompanyName = HXVER_COMPANY;	const char* pProductName = HXVER_SDK_PRODUCT;	int			nMajVer = TARVER_MAJOR_VERSION;	int			nMinVer = TARVER_MINOR_VERSION;#else	const char* pCompanyName = HXVER_COMPANY;	const char* pProductName = HXVER_SDK_PRODUCT;	int			nMajVer = 6;	int			nMinVer = 0;#endif	char * pComa = HXFindChar(pCompanyName, ',');	if(pComa)        *pComa = 0;	mPref = CPlayerPref::open_pref(pCompanyName,pProductName,nMajVer,nMinVer);	pinBuffer = new CHXBuffer;	if ( !pinBuffer )	{		printf("can't create CHXBuffer\n");		exit(0);	}	char *svalue = 0;	svalue = (char*) new char [ 10 ];	strcpy(svalue, "IsADog"); /* Flawfinder: ignore */	pinBuffer->AddRef();	pinBuffer->Set((const unsigned char*) svalue, strlen(svalue) + 1);	mPref->write_pref("Pushkin",pinBuffer);	mPref->read_pref("Pushkin",poutBuffer);//	printf("Pushkin is: %s\n",(char*) (poutBuffer->GetBuffer()));	if ( mPref ) 		delete mPref;	exit(0);}#endif

⌨️ 快捷键说明

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