mirror of
https://github.com/bulletphysics/bullet3
synced 2024-12-13 21:30:09 +00:00
ab8f16961e
Apply clang-format-all.sh using the _clang-format file through all the cpp/.h files. make sure not to apply it to certain serialization structures, since some parser expects the * as part of the name, instead of type. This commit contains no other changes aside from adding and applying clang-format-all.sh
765 lines
22 KiB
C++
765 lines
22 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);
|
|
}
|
|
};
|
|
} // namespace Skin
|
|
} // namespace Gwen
|
|
#endif
|