#pragma once #ifndef GWEN_SKINS_SIMPLE_H #define GWEN_SKINS_SIMPLE_H #include "../gwen_skin.h" #include "../gwen.h" #include "../controls/gwen_base.h" namespace Gwen { namespace Skin { class Simple : public Gwen::Skin::Base { public: Simple( Gwen::Renderer::Base* renderer ) : Gwen::Skin::Base( renderer ) { } Gwen::Color m_colBorderColor; Gwen::Color m_colControlOutlineLight; Gwen::Color m_colControlOutlineLighter; Gwen::Color m_colBG; Gwen::Color m_colBGDark; Gwen::Color m_colControl; Gwen::Color m_colControlBorderHighlight; Gwen::Color m_colControlDarker; Gwen::Color m_colControlOutlineNormal; Gwen::Color m_colControlBright; Gwen::Color m_colControlDark; Gwen::Color m_colHighlightBG; Gwen::Color m_colHighlightBorder; Gwen::Color m_colToolTipBackground; Gwen::Color m_colToolTipBorder; Gwen::Color m_colModal; Simple() { m_colBorderColor = Gwen::Color( 80, 80, 80, 255 ); m_colBG = Gwen::Color( 248, 248, 248, 255 ); m_colBGDark = Gwen::Color( 235, 235, 235, 255 ); m_colControl = Gwen::Color( 240, 240, 240, 255 ); m_colControlBright = Gwen::Color( 255, 255, 255, 255 ); m_colControlDark = Gwen::Color( 214, 214, 214, 255 ); m_colControlDarker = Gwen::Color( 180, 180, 180, 255 ); m_colControlOutlineNormal = Gwen::Color( 112, 112, 112, 255 ); m_colControlOutlineLight = Gwen::Color( 144, 144, 144, 255 ); m_colControlOutlineLighter = Gwen::Color( 210, 210, 210, 255 ); m_colHighlightBG = Gwen::Color( 192, 221, 252, 255 ); m_colHighlightBorder = Gwen::Color( 51, 153, 255, 255 ); m_colToolTipBackground = Gwen::Color( 255, 255, 225, 255 ); m_colToolTipBorder = Gwen::Color( 0, 0, 0, 255 ); m_colModal = Gwen::Color( 25, 25, 25, 150 ); m_DefaultFont.facename = "Microsoft Sans Serif"; m_DefaultFont.size = 11; } virtual void DrawGenericPanel( Controls::Base* control ) { // TODO. } virtual void DrawPanel( Controls::Base* control, unsigned char iPanelType = Gwen::Skin::Panel::Normal ) { // TODO. } virtual void DrawButton( Gwen::Controls::Base* control, bool bDepressed, bool bHovered, bool bDisabled ) { int w = control->Width(); int h = control->Height(); DrawButton( w, h, bDepressed, bHovered ); } virtual void DrawWindowCloseButton( Gwen::Controls::Base* control, bool bDepressed, bool bHovered, bool bDisabled ) { // TODO. DrawButton( control, bDepressed, bHovered, bDisabled ); } virtual void DrawWindowMaximizeButton( Gwen::Controls::Base* control, bool bDepressed, bool bHovered, bool bDisabled, bool bMaximized ) { // TODO. DrawButton( control, bDepressed, bHovered, bDisabled ); } virtual void DrawWindowMinimizeButton( Gwen::Controls::Base* control, bool bDepressed, bool bHovered, bool bDisabled ) { // TODO. DrawButton( control, bDepressed, bHovered, bDisabled ); } virtual void DrawMenuItem( Gwen::Controls::Base* control, bool bSubmenuOpen, bool bChecked ) { if ( bSubmenuOpen || control->IsHovered() ) { m_Render->SetDrawColor( m_colHighlightBG ); m_Render->DrawFilledRect( control->GetRenderBounds() ); m_Render->SetDrawColor( m_colHighlightBorder ); m_Render->DrawLinedRect( control->GetRenderBounds() ); } Gwen::Rect rect = control->GetRenderBounds(); if ( bChecked ) { m_Render->SetDrawColor( Color( 0, 0, 0, 255) ); Gwen::Rect r( control->Width() / 2 - 2, control->Height() / 2 - 2, 5, 5 ); DrawCheck( r ); } } virtual void DrawMenuStrip( Gwen::Controls::Base* control ) { int w = control->Width(); int h = control->Height(); m_Render->SetDrawColor( Gwen::Color( 246, 248, 252, 255 ) ); m_Render->DrawFilledRect( Gwen::Rect( 0, 0, w, h ) ); m_Render->SetDrawColor( Gwen::Color( 218, 224, 241, 150 ) ); m_Render->DrawFilledRect( Gwen::Rect( 0, h*0.4f, w, h*0.6f ) ); m_Render->DrawFilledRect( Gwen::Rect( 0, h*0.5f, w, h*0.5f ) ); } virtual void DrawMenu( Gwen::Controls::Base* control, bool bPaddingDisabled ) { int w = control->Width(); int h = control->Height(); m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( Gwen::Rect( 0, 0, w, h ) ); if ( !bPaddingDisabled ) { m_Render->SetDrawColor( m_colControl ); m_Render->DrawFilledRect( Gwen::Rect( 1, 0, 22, h ) ); } m_Render->SetDrawColor( m_colControlOutlineNormal ); m_Render->DrawLinedRect( Gwen::Rect( 0, 0, w, h ) ); } virtual void DrawShadow( Gwen::Controls::Base* control ) { int w = control->Width(); int h = control->Height(); int x = 4; int y = 6; m_Render->SetDrawColor( Gwen::Color( 0, 0, 0, 10 ) ); m_Render->DrawFilledRect( Gwen::Rect( x, y, w, h ) ); x+=2; m_Render->DrawFilledRect( Gwen::Rect( x, y, w, h ) ); y+=2; m_Render->DrawFilledRect( Gwen::Rect( x, y, w, h ) ); } virtual void DrawButton( int w, int h, bool bDepressed, bool bHovered, bool bSquared = false ) { if ( bDepressed ) m_Render->SetDrawColor( m_colControlDark ); else if ( bHovered )m_Render->SetDrawColor( m_colControlBright ); else m_Render->SetDrawColor( m_colControl ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, w-2, h-2 ) ); if ( bDepressed ) m_Render->SetDrawColor( m_colControlDark ); else if ( bHovered )m_Render->SetDrawColor( m_colControl ); else m_Render->SetDrawColor( m_colControlDark ); m_Render->DrawFilledRect( Gwen::Rect( 1, h*0.5, w-2, h*0.5-2 ) ); if ( !bDepressed ) { m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawShavedCornerRect( Gwen::Rect( 1, 1, w-2, h-2 ), bSquared ); } else { m_Render->SetDrawColor( m_colControlDarker ); m_Render->DrawShavedCornerRect( Gwen::Rect( 1, 1, w-2, h-2 ), bSquared ); } // Border m_Render->SetDrawColor( m_colControlOutlineNormal ); m_Render->DrawShavedCornerRect( Gwen::Rect( 0, 0, w, h ), bSquared ); } virtual void DrawRadioButton( Gwen::Controls::Base* control, bool bSelected, bool bDepressed) { Gwen::Rect rect = control->GetRenderBounds(); // Inside colour if ( control->IsHovered() ) m_Render->SetDrawColor( Gwen::Color( 220, 242, 254, 255 ) ); else m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w-2, rect.h-2 ) ); // Border if ( control->IsHovered() ) m_Render->SetDrawColor( Gwen::Color( 85, 130, 164, 255 ) ); else m_Render->SetDrawColor( m_colControlOutlineLight ); m_Render->DrawShavedCornerRect( rect ); m_Render->SetDrawColor( Gwen::Color( 0, 50, 60, 15 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w-4, rect.h-4 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w*0.3f, rect.h-4 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w-4, rect.h*0.3f ) ); if ( control->IsHovered() ) m_Render->SetDrawColor( Gwen::Color( 121, 198, 249, 255 ) ); else m_Render->SetDrawColor( Gwen::Color( 0, 50, 60, 50 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+3, 1, rect.h-5 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+3, rect.y+2, rect.w-5, 1 ) ); if ( bSelected ) { m_Render->SetDrawColor( Gwen::Color( 40, 230, 30, 255 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w -4, rect.h-4 ) ); } } virtual void DrawCheckBox( Gwen::Controls::Base* control, bool bSelected, bool bDepressed) { Gwen::Rect rect = control->GetRenderBounds(); // Inside colour if ( control->IsHovered() ) m_Render->SetDrawColor( Gwen::Color( 220, 242, 254, 255 ) ); else m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( rect ); // Border if ( control->IsHovered() ) m_Render->SetDrawColor( Gwen::Color( 85, 130, 164, 255 ) ); else m_Render->SetDrawColor( m_colControlOutlineLight ); m_Render->DrawLinedRect( rect ); m_Render->SetDrawColor( Gwen::Color( 0, 50, 60, 15 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w-4, rect.h-4 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w*0.3f, rect.h-4 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w-4, rect.h*0.3f ) ); if ( control->IsHovered() ) m_Render->SetDrawColor( Gwen::Color( 121, 198, 249, 255 ) ); else m_Render->SetDrawColor( Gwen::Color( 0, 50, 60, 50 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, 1, rect.h-4 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+2, rect.y+2, rect.w-4, 1 ) ); if ( bDepressed ) { m_Render->SetDrawColor( Color( 100, 100, 100, 255) ); Gwen::Rect r( control->Width() / 2 - 2, control->Height() / 2 - 2, 5, 5 ); DrawCheck( r ); } else if ( bSelected ) { m_Render->SetDrawColor( Color( 0, 0, 0, 255) ); Gwen::Rect r( control->Width() / 2 - 2, control->Height() / 2 - 2, 5, 5 ); DrawCheck( r ); } } virtual void DrawGroupBox( Gwen::Controls::Base* control, int textStart, int textHeight, int textWidth ) { Gwen::Rect rect = control->GetRenderBounds(); rect.y += textHeight * 0.5f; rect.h -= textHeight * 0.5f; Gwen::Color m_colDarker = Gwen::Color( 0, 50, 60, 50 ); Gwen::Color m_colLighter = Gwen::Color( 255, 255, 255, 150 ); m_Render->SetDrawColor( m_colLighter ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y+1, textStart-3, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1+textStart+textWidth, rect.y+1, rect.w-textStart+textWidth-2, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, (rect.y + rect.h)-1, rect.w-2, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y+1, 1, rect.h ) ); m_Render->DrawFilledRect( Gwen::Rect( (rect.x + rect.w)-2, rect.y+1, 1, rect.h-1 ) ); m_Render->SetDrawColor( m_colDarker ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y, textStart-3, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1+textStart+textWidth, rect.y, rect.w-textStart-textWidth-2, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, (rect.y + rect.h) -1, rect.w-2, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x, rect.y+1, 1, rect.h-1 ) ); m_Render->DrawFilledRect( Gwen::Rect( (rect.x + rect.w)-1, rect.y+1, 1, rect.h-1 ) ); } virtual void DrawTextBox( Gwen::Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); bool bHasFocus = control->HasFocus(); // Box inside m_Render->SetDrawColor( Gwen::Color( 255, 255, 255, 255 ) ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w-2, rect.h-2 ) ); m_Render->SetDrawColor( m_colControlOutlineLight ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y, rect.w-2, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x, rect.y+1, 1, rect.h-2 ) ); m_Render->SetDrawColor( m_colControlOutlineLighter ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, (rect.y + rect.h)-1, rect.w-2, 1 ) ); m_Render->DrawFilledRect( Gwen::Rect( (rect.x + rect.w)-1, rect.y+1, 1, rect.h-2 ) ); if ( bHasFocus ) { m_Render->SetDrawColor( Gwen::Color( 50, 200, 255, 150 ) ); m_Render->DrawLinedRect( rect ); } } virtual void DrawTabButton( Gwen::Controls::Base* control, bool bActive, int dir ) { Gwen::Rect rect = control->GetRenderBounds(); bool bHovered = control->IsHovered(); if ( bHovered )m_Render->SetDrawColor( m_colControlBright ); else m_Render->SetDrawColor( m_colControl ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w-2, rect.h-1 ) ); if ( bHovered )m_Render->SetDrawColor( m_colControl ); else m_Render->SetDrawColor( m_colControlDark ); m_Render->DrawFilledRect( Gwen::Rect( 1, rect.h*0.5, rect.w-2, rect.h*0.5-1 ) ); m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawShavedCornerRect( Gwen::Rect( 1, 1, rect.w-2, rect.h ) ); m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawShavedCornerRect( Gwen::Rect( 0, 0, rect.w, rect.h ) ); } virtual void DrawTabControl( Gwen::Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); m_Render->SetDrawColor( m_colControl ); m_Render->DrawFilledRect( rect ); m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawLinedRect( rect ); //m_Render->SetDrawColor( m_colControl ); //m_Render->DrawFilledRect( CurrentButtonRect ); } virtual void DrawWindow( Gwen::Controls::Base* control, int topHeight, bool inFocus ) { Gwen::Rect rect = control->GetRenderBounds(); // Titlebar if ( inFocus ) m_Render->SetDrawColor( Gwen::Color( 87, 164, 232, 230 ) ); else m_Render->SetDrawColor( Gwen::Color( 87*0.70, 164*0.70, 232*0.70, 230 ) ); int iBorderSize = 5; m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y+1, rect.w-2, topHeight-1 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y+topHeight-1, iBorderSize, rect.h-2-topHeight ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+rect.w-iBorderSize, rect.y+topHeight-1, iBorderSize, rect.h-2-topHeight ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y+rect.h-iBorderSize, rect.w-2, iBorderSize ) ); // Main inner m_Render->SetDrawColor( Gwen::Color( m_colControlDark.r, m_colControlDark.g, m_colControlDark.b, 230 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x+iBorderSize+1, rect.y+topHeight, rect.w-iBorderSize*2-2, rect.h-topHeight-iBorderSize-1 ) ); // Light inner border m_Render->SetDrawColor( Gwen::Color( 255, 255, 255, 100 ) ); m_Render->DrawShavedCornerRect( Gwen::Rect( rect.x+1, rect.y+1, rect.w-2, rect.h-2 ) ); // Dark line between titlebar and main m_Render->SetDrawColor( m_colBorderColor ); // Inside border m_Render->SetDrawColor( m_colControlOutlineNormal ); m_Render->DrawLinedRect( Gwen::Rect( rect.x+iBorderSize, rect.y+topHeight-1, rect.w - 10, rect.h - topHeight - (iBorderSize - 1) ) ); // Dark outer border m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawShavedCornerRect( Gwen::Rect( rect.x, rect.y, rect.w, rect.h ) ); } virtual void DrawHighlight( Gwen::Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); m_Render->SetDrawColor( Gwen::Color( 255, 100, 255, 255 ) ); m_Render->DrawFilledRect( rect ); } virtual void DrawScrollBar( Gwen::Controls::Base* control, bool isHorizontal, bool bDepressed ) { Gwen::Rect rect = control->GetRenderBounds(); if (bDepressed) m_Render->SetDrawColor( m_colControlDarker ); else m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( rect ); } virtual void DrawScrollBarBar( Controls::Base* control, bool bDepressed, bool isHovered, bool isHorizontal ) { //TODO: something specialized DrawButton( control, bDepressed, isHovered, false ); } virtual void DrawTabTitleBar( Gwen::Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); m_Render->SetDrawColor( Gwen::Color( 177, 193, 214, 255 ) ); m_Render->DrawFilledRect( rect ); m_Render->SetDrawColor( m_colBorderColor ); rect.h += 1; m_Render->DrawLinedRect( rect ); } virtual void DrawProgressBar( Gwen::Controls::Base* control, bool isHorizontal, float progress) { Gwen::Rect rect = control->GetRenderBounds(); Gwen::Color FillColour( 0, 211, 40, 255 ); if ( isHorizontal ) { //Background m_Render->SetDrawColor( m_colControlDark ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w-2, rect.h-2 ) ); //Right half m_Render->SetDrawColor( FillColour ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w*progress-2, rect.h-2 ) ); m_Render->SetDrawColor( Gwen::Color( 255, 255, 255, 150 ) ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w-2, rect.h*0.45f ) ); } else { //Background m_Render->SetDrawColor( m_colControlDark ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w-2, rect.h-2 ) ); //Top half m_Render->SetDrawColor( FillColour ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1 + (rect.h * (1 - progress)), rect.w-2, rect.h * progress - 2 ) ); m_Render->SetDrawColor( Gwen::Color( 255, 255, 255, 150 ) ); m_Render->DrawFilledRect( Gwen::Rect( 1, 1, rect.w*0.45f, rect.h-2 ) ); } m_Render->SetDrawColor( Gwen::Color( 255, 255, 255, 150 ) ); m_Render->DrawShavedCornerRect( Gwen::Rect( 1, 1, rect.w-2, rect.h-2 ) ); m_Render->SetDrawColor( Gwen::Color( 255, 255, 255, 70 ) ); m_Render->DrawShavedCornerRect( Gwen::Rect( 2, 2, rect.w-4, rect.h-4 ) ); m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawShavedCornerRect( rect ); } virtual void DrawListBox( Gwen::Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( rect ); m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawLinedRect( rect ); } virtual void DrawListBoxLine( Gwen::Controls::Base* control, bool bSelected, bool bEven ) { Gwen::Rect rect = control->GetRenderBounds(); if ( bSelected ) { m_Render->SetDrawColor( m_colHighlightBorder ); m_Render->DrawFilledRect( rect ); } else if ( control->IsHovered() ) { m_Render->SetDrawColor( m_colHighlightBG ); m_Render->DrawFilledRect( rect ); } } virtual void DrawSlider( Gwen::Controls::Base* control, bool bIsHorizontal, int numNotches, int barSize) { Gwen::Rect rect = control->GetRenderBounds(); Gwen::Rect notchRect = rect; if ( bIsHorizontal ) { rect.y += rect.h * 0.4; rect.h -= rect.h * 0.8; } else { rect.x += rect.w * 0.4; rect.w -= rect.w * 0.8; } m_Render->SetDrawColor( m_colBGDark ); m_Render->DrawFilledRect( rect ); m_Render->SetDrawColor( m_colControlDarker ); m_Render->DrawLinedRect( rect ); } virtual void DrawComboBox( Gwen::Controls::Base* control, bool bIsDown, bool bIsMenuOpen ) { DrawTextBox( control ); } virtual void DrawKeyboardHighlight( Gwen::Controls::Base* control, const Gwen::Rect& r, int iOffset ) { Gwen::Rect rect = r; rect.x += iOffset; rect.y += iOffset; rect.w -= iOffset*2; rect.h -= iOffset*2; //draw the top and bottom bool skip = true; for(int i=0; i< rect.w*0.5; i++) { m_Render->SetDrawColor( Gwen::Color( 0, 0, 0, 255 ) ); if (!skip) { m_Render->DrawPixel(rect.x + (i*2), rect.y); m_Render->DrawPixel(rect.x + (i*2), rect.y+rect.h-1); } else skip = !skip; } skip = false; for(int i=0; i< rect.h*0.5; i++) { m_Render->SetDrawColor( Gwen::Color( 0, 0, 0, 255 ) ); if (!skip) { m_Render->DrawPixel(rect.x , rect.y +i*2); m_Render->DrawPixel(rect.x +rect.w-1, rect.y +i*2 ); } else skip = !skip; } } virtual void DrawToolTip( Gwen::Controls::Base* control ) { Gwen::Rect rct = control->GetRenderBounds(); rct.x -= 3; rct.y -= 3; rct.w += 6; rct.h += 6; m_Render->SetDrawColor( m_colToolTipBackground ); m_Render->DrawFilledRect( rct ); m_Render->SetDrawColor( m_colToolTipBorder ); m_Render->DrawLinedRect( rct ); } virtual void DrawScrollButton( Gwen::Controls::Base* control, int iDirection, bool bDepressed, bool bHovered, bool bDisabled ) { DrawButton( control, bDepressed, false, false ); m_Render->SetDrawColor( Gwen::Color( 0, 0, 0, 240 ) ); Gwen::Rect r( control->Width() / 2 - 2, control->Height() / 2 - 2, 5, 5 ); if ( iDirection == Gwen::Pos::Top ) DrawArrowUp( r ); else if ( iDirection == Gwen::Pos::Bottom ) DrawArrowDown( r ); else if ( iDirection == Gwen::Pos::Left ) DrawArrowLeft( r ); else DrawArrowRight( r ); } virtual void DrawComboDownArrow( Gwen::Controls::Base* control, bool bHovered, bool bDown, bool bOpen, bool bDisabled ) { //DrawButton( control->Width(), control->Height(), bDepressed, false, true ); m_Render->SetDrawColor( Gwen::Color( 0, 0, 0, 240 ) ); Gwen::Rect r( control->Width() / 2 - 2, control->Height() / 2 - 2, 5, 5 ); DrawArrowDown( r ); } virtual void DrawNumericUpDownButton( Gwen::Controls::Base* control, bool bDepressed, bool bUp ) { //DrawButton( control->Width(), control->Height(), bDepressed, false, true ); m_Render->SetDrawColor( Gwen::Color( 0, 0, 0, 240 ) ); Gwen::Rect r( control->Width() / 2 - 2, control->Height() / 2 - 2, 5, 5 ); if ( bUp ) DrawArrowUp( r ); else DrawArrowDown( r ); } virtual void DrawTreeButton( Controls::Base* control, bool bOpen ) { Gwen::Rect rect = control->GetRenderBounds(); rect.x += 2; rect.y += 2; rect.w -= 4; rect.h -= 4; m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( rect ); m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawLinedRect( rect ); m_Render->SetDrawColor( m_colBorderColor ); if ( !bOpen ) // ! because the button shows intention, not the current state m_Render->DrawFilledRect( Gwen::Rect( rect.x + rect.w/2, rect.y + 2, 1, rect.h - 4 ) ); m_Render->DrawFilledRect( Gwen::Rect( rect.x +2, rect.y + rect.h/2, rect.w-4, 1 ) ); } virtual void DrawTreeControl( Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); m_Render->SetDrawColor( m_colControlBright ); m_Render->DrawFilledRect( rect ); m_Render->SetDrawColor( m_colBorderColor ); m_Render->DrawLinedRect( rect ); } void DrawTreeNode( Controls::Base* ctrl, bool bOpen, bool bSelected, int iLabelHeight, int iLabelWidth, int iHalfWay, int iLastBranch, bool bIsRoot ) { if ( bSelected ) { GetRender()->SetDrawColor( Color( 0, 150, 255, 100 ) ); GetRender()->DrawFilledRect( Gwen::Rect( 17, 0, iLabelWidth + 2, iLabelHeight-1 ) ); GetRender()->SetDrawColor( Color( 0, 150, 255, 200 ) ); GetRender()->DrawLinedRect( Gwen::Rect( 17, 0, iLabelWidth + 2, iLabelHeight-1 ) ); } Base::DrawTreeNode( ctrl, bOpen, bSelected, iLabelHeight, iLabelWidth, iHalfWay, iLastBranch, bIsRoot ); } virtual void DrawStatusBar( Controls::Base* control ) { // TODO. } void DrawColorDisplay( Controls::Base* control, Gwen::Color color ) { Gwen::Rect rect = control->GetRenderBounds(); if ( color.a != 255 ) { GetRender()->SetDrawColor( Gwen::Color( 255, 255, 255, 255 ) ); GetRender()->DrawFilledRect( rect ); GetRender()->SetDrawColor( Gwen::Color( 128, 128, 128, 128 ) ); GetRender()->DrawFilledRect( Gwen::Rect( 0, 0, rect.w * 0.5, rect.h * 0.5) ); GetRender()->DrawFilledRect( Gwen::Rect( rect.w * 0.5, rect.h * 0.5, rect.w * 0.5,rect.h * 0.5) ); } GetRender()->SetDrawColor( color ); GetRender()->DrawFilledRect( rect ); GetRender()->SetDrawColor( Gwen::Color( 0, 0, 0, 255 ) ); GetRender()->DrawLinedRect( rect ); } virtual void DrawModalControl( Controls::Base* control ) { if ( control->ShouldDrawBackground() ) { Gwen::Rect rect = control->GetRenderBounds(); GetRender()->SetDrawColor( m_colModal ); GetRender()->DrawFilledRect( rect ); } } virtual void DrawMenuDivider( Controls::Base* control ) { Gwen::Rect rect = control->GetRenderBounds(); GetRender()->SetDrawColor( m_colBGDark ); GetRender()->DrawFilledRect( rect ); GetRender()->SetDrawColor( m_colControlDarker); GetRender()->DrawLinedRect( rect ); } virtual void DrawMenuRightArrow( Controls::Base* control ) { DrawArrowRight( control->GetRenderBounds() ); } virtual void DrawSlideButton( Gwen::Controls::Base* control, bool bDepressed, bool bHorizontal ) { DrawButton( control, bDepressed, control->IsHovered(), control->IsDisabled() ); } virtual void DrawCategoryHolder( Controls::Base* ctrl ){} virtual void DrawCategoryInner( Controls::Base* ctrl, bool bCollapsed ){} }; } } #endif