mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-16 06:30:05 +00:00
751 lines
25 KiB
C++
751 lines
25 KiB
C++
#pragma once
|
|
#ifndef GWEN_SKINS_SIMPLE_H
|
|
#define GWEN_SKINS_SIMPLE_H
|
|
|
|
#include "Gwen/Skin.h"
|
|
#include "Gwen/Gwen.h"
|
|
#include "Gwen/Controls/Base.h"
|
|
|
|
namespace Gwen
|
|
{
|
|
namespace Skin
|
|
{
|
|
class Simple : public Gwen::Skin::Base
|
|
{
|
|
public:
|
|
|
|
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 = L"Microsoft Sans Serif";
|
|
m_DefaultFont.size = 11;
|
|
}
|
|
|
|
|
|
virtual void DrawButton( Gwen::Controls::Base* control, bool bDepressed, bool bHovered )
|
|
{
|
|
int w = control->Width();
|
|
int h = control->Height();
|
|
|
|
DrawButton( w, h, bDepressed, bHovered );
|
|
}
|
|
|
|
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 )
|
|
{
|
|
Gwen::Rect rect = control->GetRenderBounds();
|
|
bool bHovered = control->IsHovered();
|
|
|
|
if ( bActive )
|
|
{
|
|
m_Render->SetDrawColor( m_colControl );
|
|
m_Render->DrawFilledRect( Gwen::Rect( rect.x+1, rect.y+1, rect.w-2, rect.h-1 ) );
|
|
}
|
|
else
|
|
{
|
|
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 CurrentButtonRect )
|
|
{
|
|
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 );
|
|
}
|
|
|
|
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 )
|
|
{
|
|
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 )
|
|
{
|
|
DrawTextBox( control );
|
|
}
|
|
|
|
|
|
virtual void DrawBackground( Gwen::Controls::Base* control )
|
|
{
|
|
Gwen::Rect rect = control->GetRenderBounds();
|
|
m_Render->SetDrawColor( m_colBGDark );
|
|
m_Render->DrawFilledRect( rect );
|
|
m_Render->SetDrawColor( m_colControlDarker);
|
|
m_Render->DrawLinedRect( rect );
|
|
}
|
|
|
|
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 )
|
|
{
|
|
DrawButton( control, bDepressed, 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 DrawComboBoxButton( Gwen::Controls::Base* control, bool bDepressed )
|
|
{
|
|
//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 )
|
|
{
|
|
m_Render->SetDrawColor( Color( 0, 150, 255, 100 ) );
|
|
m_Render->DrawFilledRect( Gwen::Rect( 17, 0, iLabelWidth + 2, iLabelHeight-1 ) );
|
|
m_Render->SetDrawColor( Color( 0, 150, 255, 200 ) );
|
|
m_Render->DrawLinedRect( Gwen::Rect( 17, 0, iLabelWidth + 2, iLabelHeight-1 ) );
|
|
}
|
|
|
|
m_Render->SetDrawColor( Color( 0, 0, 0, 50 ) );
|
|
|
|
if ( !bIsRoot )
|
|
m_Render->DrawFilledRect( Gwen::Rect( 9, iHalfWay, 16-9, 1 ) );
|
|
|
|
if ( !bOpen ) return;
|
|
|
|
m_Render->DrawFilledRect( Gwen::Rect( 14 + 8, iLabelHeight, 1, iLastBranch + iHalfWay - iLabelHeight ) );
|
|
}
|
|
|
|
virtual void DrawStatusBar( Controls::Base* control )
|
|
{
|
|
DrawBackground( control );
|
|
}
|
|
|
|
virtual void DrawPropertyRow( Controls::Base* control, int iWidth, bool bBeingEdited )
|
|
{
|
|
Gwen::Rect rect = control->GetRenderBounds();
|
|
|
|
|
|
if ( bBeingEdited )
|
|
{
|
|
m_Render->SetDrawColor( m_colHighlightBG );
|
|
m_Render->DrawFilledRect( Gwen::Rect( 0, rect.y, iWidth, rect.h ) );
|
|
}
|
|
|
|
m_Render->SetDrawColor( m_colControlOutlineLighter );
|
|
|
|
m_Render->DrawFilledRect( Gwen::Rect( iWidth, rect.y, 1, rect.h ) );
|
|
|
|
rect.y += rect.h-1;
|
|
rect.h = 1;
|
|
|
|
|
|
m_Render->DrawFilledRect( rect );
|
|
}
|
|
|
|
virtual void DrawPropertyTreeNode( Controls::Base* control, int BorderLeft, int BorderTop )
|
|
{
|
|
Gwen::Rect rect = control->GetRenderBounds();
|
|
|
|
m_Render->SetDrawColor( m_colControlOutlineLighter );
|
|
|
|
m_Render->DrawFilledRect( Gwen::Rect( rect.x, rect.y, BorderLeft, rect.h ) );
|
|
m_Render->DrawFilledRect( Gwen::Rect( rect.x + BorderLeft, rect.y, rect.w - BorderLeft, BorderTop ) );
|
|
}
|
|
|
|
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 );
|
|
}
|
|
};
|
|
}
|
|
}
|
|
#endif
|