コード例 #1
0
ファイル: text_checker.cpp プロジェクト: click3/SubProjects
bool TextCheck(std::string &error_message, const char *filename) {
	std::ifstream in(filename, std::ios::binary);
	if(!in.is_open()) {
		error_message = "ファイルオープンに失敗しました。";
		return false;
	}
	in.seekg(0, std::ios::end);
	const unsigned int file_size = static_cast<unsigned int>(in.tellg());
	in.seekg(0, std::ios::beg);
#define READ(buffer, size) in.read(buffer, size); if(!in.good()) { error_message = "ファイルからの読み込みに失敗しました。"; return false; }

	if(file_size == 0) {
		return true;
	}
	std::vector<char> buffer(file_size);
	READ(&buffer.front(), file_size);
	std::vector<wchar_t> result;
	if(!SJISToWChar(result, buffer) && !UTF8ToWChar(result, buffer)) {
		error_message = "不明な文字エンコードです。";
		return false;
	}
	const bool is_no_print_char = std::accumulate(result.begin(), result.end(), true, CheckNoPrintString());
	if(!is_no_print_char) {
		error_message = "印字不可能文字が記述されています。";
		return false;
	}

	return true;
}
コード例 #2
0
void StateMenu::RenderPlay()	{
    switch( m_SubState_Play ) {
    case PlayState::INITPLAYER : {
        return;
    }
    break;
    case PlayState::WAITPLAYER: {
        RenderTiles();
    }
    break;
    case PlayState::EXECUTE: {
        RenderTiles();
    }
    break;
    case PlayState::GAMEOVER: {
    }
    break;
    }
    // draw player next number
    Player* playernow;
    if( m_PlayerTurn == PlayerType::B ) {
        playernow = &m_Player_B; // blue
        unsigned int nnumb = playernow->Numbers[ playernow->NumberIndex+1 ];
        char temp[8];
        itoa( nnumb , temp, 10);
        wchar_t* tempwch = UTF8ToWChar( temp );
        if( nnumb < 10 )
            m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 731, 384 ), Colors::OrangeRed, 0 );
        else
            m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 724, 384 ), Colors::OrangeRed, 0 );
        delete[] tempwch;
    } else {
        playernow = &m_Player_A;
        unsigned int nnumb = playernow->Numbers[ playernow->NumberIndex+1 ];
        char temp[8];
        itoa( nnumb , temp, 10);
        wchar_t* tempwch = UTF8ToWChar( temp );
        if( nnumb < 10 )
            m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 731, 54 ), Colors::OrangeRed, 0 );
        else
            m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , tempwch, XMFLOAT2( 724, 54 ), Colors::OrangeRed, 0 );
        delete[] tempwch;
    }
}
コード例 #3
0
ファイル: Utf.cpp プロジェクト: BBkBlade/e
size_t ConvertFromUTF8toString(const wxCharBuffer& utf8_buff, size_t utf8_buff_len, wxString& text) { // static
	// The length can never be longer in widechars than the bytecount in the uft8 (plus trailing null byte)
	wxChar* buff = text.GetWriteBuf(utf8_buff_len+1);

	// Convert to widechar
	const size_t wchar_len = UTF8ToWChar(buff, utf8_buff_len, utf8_buff, utf8_buff_len);
	if (wchar_len == wxCONV_FAILED) { // invalid conversion
		text.UngetWriteBuf(0);
		return wxCONV_FAILED;
	}

	text.UngetWriteBuf(wchar_len);

	return wchar_len;
}
コード例 #4
0
void StateMenu::RenderTiles() {
    bool isYouOdd=false;
    unsigned int index =0;
    for(int j=0; j<m_HexaColCount; j++) {
        for(int i=0; i<m_HexaRowCount; i++) {
            if( isYouOdd ) {
                m_HexTiles[ index ]->SetPos( m_StartPointX+(i*(m_HexaWidth+32))+48,m_StartPointY+(j*(m_HexaHeight/2 -1 ))  );
            } else {
                m_HexTiles[ index ]->SetPos( m_StartPointX+(i*(m_HexaWidth+32)),m_StartPointY+(j*(m_HexaHeight/2-1) )  );
            }
            m_HexTiles[ index ]->SetAnim( m_HexTiles[ index ]->Color );
            m_HexTiles[ index ]->Render();
            if( !(m_HexTiles[ index ]->Color == HEXACOLOR::NETRAL || m_HexTiles[ index ]->Color == HEXACOLOR::HOVER) ) {
                // little centering trick
                int FONT_OFFSET_X = 13;
                int FONT_OFFSET_Y = 15;
                if( m_HexTiles[ index ]->Number < 10  ) {
                    FONT_OFFSET_X = 19;
                    FONT_OFFSET_Y = 15;
                    if(  m_HexTiles[ index ]->Number ==1 ) {
                        FONT_OFFSET_X = 19;
                        FONT_OFFSET_Y = 15;
                    }
                }
                //
                int _px,_py;
                m_HexTiles[ index ]->GetPos( _px, _py );
                char temp[10];
                itoa( m_HexTiles[ index ]->Number, temp, 10 );
                if( m_TempNumberDraw )
                    delete m_TempNumberDraw;
                m_TempNumberDraw = UTF8ToWChar( temp );
                m_SprFont->DrawString( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L1 ] , m_TempNumberDraw ,
                                       XMFLOAT2( _px+FONT_OFFSET_X, _py+FONT_OFFSET_Y ), Colors::OrangeRed, 0 );
            }
            index++;
        }
        isYouOdd = !isYouOdd;
    }
}
コード例 #5
0
SQLRETURN CDiagRec::GetDiagRec(SQLSMALLINT	RecNumber,
						DWORD	ErrorMsgLang,
						SQLWCHAR *SqlState,
						SQLINTEGER	*NativeErrPtr, 
						SQLWCHAR *MessageText,
						SQLSMALLINT	BufferLength,
						SQLSMALLINT *TextLengthPtr)
{
	CDiagStatusPtr	diagStatusPtr;
	short			strLen;
	short			tmpStrLen;
	ODBCMXMSG_Def	MsgStruct;
	SQLRETURN		rc = SQL_SUCCESS;
	SQLINTEGER		translateLength;
	SQLINTEGER		translateLengthMax;
	UCHAR			errorMsg[MAX_TRANSLATE_ERROR_MSG_LEN];
	char			cTmpBuf[132];
	
	if (RecNumber <= (SQLSMALLINT)m_DiagStatusCollect.size())
	{	
		GETDIAGRECPTR(diagStatusPtr, m_DiagStatusCollect, RecNumber-1);
		
		// Get the Formatted Message Text from mc file
		if (MAX_DIAG_PARAMS >= 4) // if MAX_DIAG_PARAMS is changed you may need to change here
		{
			gDrvrGlobal.gOdbcMsg.GetOdbcMessage(ErrorMsgLang, diagStatusPtr->m_DiagErrorCode, &MsgStruct,
				diagStatusPtr->m_DiagParams[0].c_str(), diagStatusPtr->m_DiagParams[1].c_str(), 
				diagStatusPtr->m_DiagParams[2].c_str(), diagStatusPtr->m_DiagParams[3].c_str());
		}
		// Append the Message Text
		MsgStruct.lpsMsgText.append(diagStatusPtr->m_DiagMessageText);
		// Insert the Message Header
		MsgStruct.lpsMsgText.insert(0, gErrorMsgHeader[diagStatusPtr->m_DiagComponentCode]);
		// Append row id
		if(diagStatusPtr->m_DiagRowNumber>SQL_NO_ROW_NUMBER)
		{
			MsgStruct.lpsMsgText.append(" Row: ");
			MsgStruct.lpsMsgText.append(itoa(diagStatusPtr->m_DiagRowNumber,cTmpBuf,10));
			// Append column id
			if(diagStatusPtr->m_DiagColumnNumber>SQL_COLUMN_NUMBER_UNKNOWN)
			{
				MsgStruct.lpsMsgText.append(" Column: ");
				MsgStruct.lpsMsgText.append(itoa(diagStatusPtr->m_DiagColumnNumber,cTmpBuf,10));
			}
		}
		int transLen = 0;
		if (SqlState != NULL)
		{
			char tmpSqlState[6];
			char error[50];
			if (diagStatusPtr->m_DiagSqlState[0] != '\0')
				strncpy((char *)tmpSqlState, (const char *)diagStatusPtr->m_DiagSqlState, 5);
			else
				strncpy((char *)tmpSqlState, MsgStruct.lpsSQLState, 5);
			tmpSqlState[5] = 0;
			SqlState[0] = 0;
			//convert to UTF-16
			rc = UTF8ToWChar(tmpSqlState, 5, SqlState, 6, &transLen, error);
			if(pdwGlobalTraceVariable && *pdwGlobalTraceVariable && rc == SQL_ERROR)
				TraceOut(TR_ODBC_API, "CDiagRec::GetDiagRec: SqlState Error: tmpSqlState \"%s\"", tmpSqlState);
		}
		if (NativeErrPtr != NULL)
			*NativeErrPtr = diagStatusPtr->m_DiagNative;
		tmpStrLen = MsgStruct.lpsMsgText.size();

		//Double strLen to circumvent the bug in driver manager, that requires us to give 
		//the NO. OF BYTES instead of no. of characters
		strLen = tmpStrLen * 2;

		translateLengthMax = (BufferLength == SQL_NTS) ? strLen : BufferLength; 
		
		if (MessageText != NULL)
		{
			// translate from UTF8 to WChar
			if ( (rc = UTF8ToWChar((char *)MsgStruct.lpsMsgText.c_str(), tmpStrLen, MessageText, 
					translateLengthMax/2, (int *)&translateLength, (char *)errorMsg)) != SQL_SUCCESS )
				rc = SQL_SUCCESS_WITH_INFO; //ERROR;

			strLen = translateLength; 
			((wchar_t *)MessageText)[strLen] = L'\0' ; 
		}
		if (TextLengthPtr != NULL)
		*TextLengthPtr = strLen;
	}
	else
	{
		if (SqlState != NULL)
			wcsncpy(SqlState, L"00000", 5);
		if (MessageText != NULL)
			MessageText[0] =L'\0';
		if (TextLengthPtr != NULL)
			*TextLengthPtr = 0;
		rc = SQL_NO_DATA;
	}
	return rc;
}	
コード例 #6
0
SQLRETURN returnAttrValue(BOOL reportError, 
						  CHandle *pHandle,
						  RETURN_VALUE_STRUCT *retValues,
						  SQLPOINTER ValuePtr,
						  SQLINTEGER BufferLength,
						  SQLINTEGER *StringLengthPtr)
{
	SQLINTEGER strLen = DRVR_PENDING;
	SQLRETURN rc = SQL_SUCCESS;
	SQLINTEGER	translateLength = 0;
	SQLINTEGER	translateLengthMax = 0;
	UCHAR		errorMsg[MAX_TRANSLATE_ERROR_MSG_LEN];
	
	errorMsg[0] = '\0';
	if (ValuePtr != NULL)
	{
		switch (retValues->dataType)
		{
		case SQL_C_SBIGINT:
			*(IDL_long_long*)ValuePtr = retValues->u.s64Value;
			strLen = sizeof(IDL_long_long);
			break;
		case SQL_C_UBIGINT:
			*(IDL_unsigned_long_long*)ValuePtr = retValues->u.u64Value;
			strLen = sizeof(IDL_unsigned_long_long);
			break;
		case SQL_IS_POINTER:
			*(SQLPOINTER *)ValuePtr = retValues->u.pValue;
			strLen = sizeof(SQLPOINTER);
			break;
		case SQL_IS_INTEGER:
			*(SQLINTEGER *)ValuePtr = retValues->u.s32Value;
			strLen = sizeof(SQLINTEGER);
			break;
		case SQL_IS_UINTEGER:
			*(SQLUINTEGER *)ValuePtr = retValues->u.u32Value;
			strLen = sizeof(SQLUINTEGER);
			break;
		case SQL_IS_SMALLINT:
			*(SQLSMALLINT *)ValuePtr = retValues->u.s16Value;
			strLen = sizeof(SQLSMALLINT);
			break;
		case SQL_IS_USMALLINT:
			*(SQLUSMALLINT *)ValuePtr = retValues->u.u16Value;
			strLen = sizeof(SQLUSMALLINT);
			break;
		default:
			{
				if (retValues->u.strPtr != NULL)
				{
					strLen = strlen(retValues->u.strPtr);
					if ((BufferLength <= 0 && BufferLength != SQL_NTS) || (BufferLength % 2 != 0))
					{
						if (reportError)
							pHandle->setDiagRec(DRIVER_ERROR, IDS_HY_090);
						rc = SQL_ERROR;
					}
					else
					{
						if(strLen > 0) // && BufferLength > 2)
						{
							translateLengthMax = (BufferLength == SQL_NTS) ? strLen : BufferLength;

							if((rc = UTF8ToWChar(retValues->u.strPtr, strLen, (wchar_t *)ValuePtr, translateLengthMax/2,
								(int *)(&translateLength), (char *)errorMsg)) != SQL_SUCCESS)
							{
								if (errorMsg && errorMsg[0] != '\0')
								{
									if (reportError)
										pHandle->setDiagRec(DRIVER_ERROR, IDS_186_DSTODRV_TRUNC, 0, (char *)errorMsg);
								}
								else
								{
									if (reportError)
										pHandle->setDiagRec(DRIVER_ERROR, IDS_186_DSTODRV_TRUNC);
								}
								strLen = translateLength * 2;
							}
							else
								strLen = translateLength * 2;
						}
						else
							*((wchar_t *)ValuePtr) = L'\0';
					}
				}
			} //default
			break;
		}
	}
	else
	{
		switch (retValues->dataType)
		{
		case SQL_IS_POINTER:
			strLen = sizeof(SQLPOINTER);
			break;
		case SQL_IS_INTEGER:
			strLen = sizeof(SQLINTEGER);
			break;
		case SQL_IS_UINTEGER:
			strLen = sizeof(SQLUINTEGER);
			break;
		case SQL_IS_SMALLINT:
			strLen = sizeof(SQLSMALLINT);
			break;
		case SQL_IS_USMALLINT:
			strLen = sizeof(SQLUSMALLINT);
			break;
		default:
			if (retValues->u.strPtr != NULL)
				strLen = strlen(retValues->u.strPtr);
			break;
		}
	}
	if (strLen != DRVR_PENDING)
		if (StringLengthPtr != NULL)
			*StringLengthPtr = strLen;
	return rc;
}
コード例 #7
0
void StateMenu::Initialize() {
    m_SubState = SUBSTATE::MAIN;
    m_SubState_Play = PlayState::INITPLAYER;
    std::function<void(void* sender)> _buttonPlayCallback  = std::bind(&StateMenu::ButtonPlayCB, this, std::placeholders::_1);
    std::function<void(void* sender)> _buttonOptCallback   = std::bind(&StateMenu::ButtonOptionCB, this, std::placeholders::_1);
    std::function<void(void* sender)> _buttonExitCallback  = std::bind(&StateMenu::ButtonExitCB, this, std::placeholders::_1);
    std::function<void(void* sender)> _buttonInfoCallback  = std::bind(&StateMenu::ButtonInfoCB, this, std::placeholders::_1);
    std::function<void(void* sender)> _buttonSoundCallback = std::bind(&StateMenu::ButtonSoundCB, this, std::placeholders::_1);
// std::string tmp_str;
// this->m_XDSystem->FileSystem->ResolveToROFolder( tmp_str,"test_gui_01.ep");
// GUI.Load(tmp_str);
// GUI.RegisterCallback( "Play", _buttonPlayCallback );
// GUI.RegisterCallback( "Option", _buttonOptCallback );
// GUI.RegisterCallback( "Exit", _buttonExitCallback );
    std::string corrected_path="";
    m_XDSystem->FileSystem->ResolveToROFolder(corrected_path, "fonts\\AB_18.spritefont" );
    assert ( ( m_XDSystem->FileSystem->FileExist ( corrected_path.c_str() ) == true ) );
    m_SprFont = std::unique_ptr < SpriteFont >(new SpriteFont( m_XDSystem->Renderer->GetDevice(), UTF8ToWChar (corrected_path.c_str() ) ));
    //
    m_SprBg        =  m_XDSystem->Resource->GetSprite( "backgmain.xml" );
    m_SprBg->SetSpriteBatch ( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L0 ] );
    //
    m_SprGames     =  m_XDSystem->Resource->GetSprite( "proximity.xml" );
    m_SprGames->SetSpriteBatch ( m_XDSystem->Renderer->SpriteBatchs[ XDGameRenderer::EBATCH::L0 ] );
    //
    m_AnimBg           = m_XDSystem->Resource->GetAnim( "background.anim" );
    m_AnimBg->SetSprite( m_SprBg );
    m_AnimClick = m_XDSystem->Resource->GetAnim( "m_AnimClick.anim" );
    m_AnimClick->SetSprite( m_SprGames );
    m_AnimGreenPop = m_XDSystem->Resource->GetAnim( "m_AnimGreenPop.anim" );
    m_AnimGreenPop->SetSprite( m_SprGames );
    m_AnimBluePop = m_XDSystem->Resource->GetAnim( "m_AnimBluePop.anim" );
    m_AnimBluePop->SetSprite( m_SprGames );
    m_AnimGreenGear = m_XDSystem->Resource->GetAnim( "m_AnimGreenGear.anim" );
    m_AnimGreenGear->SetSprite( m_SprGames );
    m_AnimBlueGear = m_XDSystem->Resource->GetAnim( "m_AnimBlueGear.anim" );
    m_AnimBlueGear->SetSprite( m_SprGames );
    m_AnimClick->SetPos( 100, 100 );
    m_AnimClick->SetAnim( 9 );
    m_AnimClick->SetAnimLoop(XDAnimObject::ANIMLOOP::ONCE);
    m_AnimClick->ShowAfterFinish( false );
    m_AnimGreenPop->SetPos( 720, 50 );
    m_AnimGreenPop->SetAnim( 7 );
    m_AnimGreenPop->SetAnimLoop(XDAnimObject::ANIMLOOP::ONCE);
    m_AnimGreenPop->ShowAfterFinish( true );
    m_AnimGreenPop->SetFinishFrame( 4 );
    m_AnimBluePop->SetPos( 720, 380 );
    m_AnimBluePop->SetAnim( 8 );
    m_AnimBluePop->SetAnimLoop(XDAnimObject::ANIMLOOP::ONCE);
    m_AnimBluePop->ShowAfterFinish( true );
    m_AnimBluePop->SetFinishFrame( 5 );
    //
    m_Swidth       = 480;
    m_Sheight      = 800;
    m_HexaWidth    = 64;
    m_HexaHeight   = 64;
    m_HexaRowCount = 7;
    m_HexaColCount = 14;
    m_StartPointX  = 5;
    m_StartPointY  = 4;//( m_Swidth - ( m_HexaHeight*m_HexaRowCount ) ) / 2 ;
    m_PlayerTurn   = PlayerType::A;
}