void Window_Selectable::DrawContentItem(int index, BYTE fontColor) const{ TCHAR buf[WND_SELECTABLE_TITLELENGTH]; WINDOWAREA tmpArea; int ddx=0; // 中央揃え・右揃えの時の描画位置のずれ tmpArea = GetDrawArea(index); GetContent(buf, index); switch(windowFont.align){ case 0: ddx = 0; break; case 1: ddx = (tmpArea.w - GetStrWidth(buf, strlen(buf), windowFont.hFont))/2; break; case 2: ddx = tmpArea.w - GetStrWidth(buf, strlen(buf), windowFont.hFont); break; } int color = fontColor; switch(color){ case WND_SELECTABLE_COLOR_SELECTED: color = windowFont.color; break; case WND_SELECTABLE_COLOR_ACTIVE: color = windowFont.iColor; break; case WND_SELECTABLE_COLOR_INACTIVE: color = windowFont.nColor; break; } DrawStringToHandle( tmpArea.x+ddx, tmpArea.y, buf, color, windowFont.hFont); }
void Window_Selectable::DrawFocus() const{ WINDOWAREA tmpArea; // フォーカスの描画 tmpArea = GetDrawArea(select.index); pSkin->DrawFocusRect( tmpArea.x, tmpArea.y, tmpArea.w, tmpArea.h, count); }
void Window_Selectable::DrawContentBack() const{ WINDOWAREA area; for(int n=0; n<num; n++){ area = GetDrawArea(n); pSkin->DrawContentBack( area.x, area.y, area.w, area.h, n ); } }
// -------------------------------------------------------------------- // 背景を塗りつぶす関数 // -------------------------------------------------------------------- void DrawBG() { RECT screenRect; // 描画エリアを格納する変数 // 描画エリアを取得する GetDrawArea(&screenRect); // 背景を塗りつぶす DrawBox(screenRect.left, // X1座標 screenRect.top, // Y1座標 screenRect.right - 1, // X2座標 この引数は幅を指定するのではなく座標をしているので-1している。 screenRect.bottom - 1, // Y2座標 この引数は幅を指定するのではなく座標をしているので-1している。 BG_COLOR, // 塗りつぶし色 TRUE); // 塗りつぶしモード(TRUEで塗りつぶし、FALSE) return; }
void Window_Selectable::DrawContentItem(int index, BYTE _fontColorType) const{ TCHAR buf[WND_SELECTABLE_TITLELENGTH]; WINDOWAREA tmpArea; int ddx=0; // 中央揃え・右揃えの時の描画位置のずれ tmpArea = GetDrawArea(index, false); GetContent(buf, index); switch(align){ case 0: ddx = 0; break; case 1: ddx = (tmpArea.w - GetStrWidth(buf, strlen(buf), fontBandle.hFont))/2; break; case 2: ddx = tmpArea.w - GetStrWidth(buf, strlen(buf), fontBandle.hFont); break; } int color = 0; switch(_fontColorType){ case WND_SELECTABLE_COLOR_SELECTED: color = GetPresetColor(presetColorIndex, COLORSET_COLOR_ACTIVE); break; case WND_SELECTABLE_COLOR_ACTIVE: color = GetPresetColor(presetColorIndex, COLORSET_COLOR_NORMAL); break; case WND_SELECTABLE_COLOR_INACTIVE: color = GetPresetColor(presetColorIndex, COLORSET_COLOR_INACTIVE); break; } DrawStringToHandle( tmpArea.x+ddx, tmpArea.y, buf, color, fontBandle.hFont); }
void Window_Selectable::DrawContent() const{ TCHAR buf[WND_SELECTABLE_TITLELENGTH]; WINDOWAREA tmpArea; BYTE color; int contentSize = 0; if(GetActive()){ int cntX = frameArea.x + contentArea.x; int cntY = frameArea.y + contentArea.y; // タイトルを描画する場合 if(content.useTitle){ GetTitle(buf); DrawStringToHandle( cntX + GetDrawDeltaX(buf, -1, content.hTitleFont), cntY, buf, windowFont.color, content.hTitleFont); cntY += content.titleHeight; } // 各選択肢の描画 contentSize = GetContentSize(); for(int n=0; n<contentSize; n++){ tmpArea = GetDrawArea(n); color = select.isActive[n] ? ((select.index == n) ? WND_SELECTABLE_COLOR_SELECTED : WND_SELECTABLE_COLOR_ACTIVE) : WND_SELECTABLE_COLOR_INACTIVE, DrawContentItem(n, color); if(n == select.index){ // フォーカスの描画 pSkin->DrawFocus( tmpArea.x, tmpArea.y, tmpArea.w, tmpArea.h, count); } } /* for(int h=0; h<row; h++){ for(int w=0; w<column; w++){ cell = w+h*column; GetContent(buf, cell); cntX = frameArea.x + contentArea.x + (item_width+item_margin_x)*w; switch(windowFont.align){ case 0: ddx = 0; break; case 1: ddx = (item_width - GetDrawStringWidthToHandle(buf, strlen(buf), windowFont.hFont))/2; break; case 2: ddx = item_width - GetDrawStringWidthToHandle(buf, strlen(buf), windowFont.hFont); break; } DrawStringToHandle( cntX+ddx, cntY, buf, select.isActive[cell] ? ((select.index == cell) ? windowFont.color : windowFont.iColor) : windowFont.nColor, windowFont.hFont); if(cell == select.index){ // フォーカスの描画 pSkin->DrawFocus( cntX, cntY, item_width, windowFont.fontSize, count); } } cntY += windowFont.lineHeight; } */ } SetDrawBlendMode(DX_BLENDMODE_NOBLEND, 255); }