/******************************************************************************* 概要 : テキスト描画 説明 : ウィンドウバッファに文字列を描画します。 Include : WM.h 引数 : WMDO_PP *P_PP 受け渡しパラメータ 戻り値 : void *******************************************************************************/ void WM::DrawText( WMDO_PP *P_PP ) { Color4 (*P_WinBuf)[WINBUF_MAX_WIDTH] = P_PP->P_WinBuf; //描画先バッファ Text* P_Text = (Text*)P_PP->P_Object; //テキストオブジェクト const char* CPc_Text = (const char*)KStdLib::ConvL2K( P_Text->GetText(), P_PP->Pv_LocalBase ); //文字列 ui ui_CharCount; //文字カウンタ ui ui_StrX = 0, ui_StrY = 0; // Rect Area = P_Text->GetArea(); //テキストオブジェクトの領域 Rect ValidArea = Area; //有効領域 Color4 TextColor = { P_PP->Pu4_Option[0] }; //エラー処理 if( P_Text->GetText() == NULL ) //文字列が設定されていなければエラー return; if( TextColor.u1_Alpha == 0 ) //透明なら描画しない。 return; ValidArea.And( P_PP->ChArea ); //有効領域を設定 //文字列ループ for( ui_CharCount = 0; CPc_Text[ui_CharCount] != '\0'; ui_CharCount++ ) { //改行コードならXをリセット、Yをインクリメント if( CPc_Text[ui_CharCount] == '\n' ) { ui_StrY++; ui_StrX = 0; continue; } //文字描画 DrawChar( P_WinBuf, CPc_Text[ui_CharCount], Area.Msi_Left + ( ui_StrX++ << 3 ), Area.Msi_Top + ( ui_StrY << 4 ), TextColor, ValidArea ); } }