GUIWindow::GUIWindow(Renderer* pRenderer, unsigned int GUIFont, const std::string &title) : Container(pRenderer), m_GUIFont(GUIFont) { m_titleBar = new TitleBar(pRenderer, GUIFont, title); // We created the title bar, so we own it (Must delete it) mb_ownsTitleBar = true; m_titleBar->SetParent(this); // The base class component parent functionality m_titleBar->SetGUIWindowParent(this); m_titleBar->SetDepth(2.0f); m_pBackgroundIcon = new DirectDrawRectangle(pRenderer); DirectDrawRectangle *lpDirectDrawRect = (DirectDrawRectangle *)m_pBackgroundIcon; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); Add(m_pBackgroundIcon); Add(m_titleBar); m_bMinimized = false; m_bAllowMoving = true; m_bAllowClosing = true; m_bAllowMinimizing = true; m_bAllowScrolling = true; m_bSnapToWindow = true; m_bRenderTitleBar = true; m_bRenderWindowBackground = true; m_applicationBorderLeft = 0; m_applicationBorderRight = 0; m_applicationBorderTop = 0; m_applicationBorderBottom = 0; m_outlineRender = false; m_pParentGUI = NULL; }
TitleBar::TitleBar(Renderer* pRenderer, unsigned int GUIFont, const std::string &title, GUIWindowCloseButton* pCloseButton, GUIWindowMinimizeButton* pMinimizeButton) : Container(pRenderer), m_title(pRenderer, GUIFont, title, Colour(1.0f, 1.0f, 1.0f)) { m_closeButton = pCloseButton; m_minimizeButton = pMinimizeButton; mb_ownsButtons = false; m_pBackgroundIcon = new DirectDrawRectangle(pRenderer); DirectDrawRectangle *lpDirectDrawRect = (DirectDrawRectangle *)m_pBackgroundIcon; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); Add(m_pBackgroundIcon); int lTitleBarSpace = 1; m_title.SetLocation(lTitleBarSpace, lTitleBarSpace); m_title.SetDepth(2.0f); Add(&m_title); Add(m_closeButton); Add(m_minimizeButton); m_nextX = 0; m_nextY = 0; m_lastX = 0; m_lastY = 0; m_bDragging = false; m_bFirstOutsideDrag = false; m_outlineRender = false; }
Slider::Slider(Renderer* pRenderer, unsigned int GUIFont, const std::string &label, float min, float max, float defaultValue, bool addIncrementButtons, float incrementAmount) : Container(pRenderer), m_value(pRenderer, GUIFont, "", Colour(0.0f, 0.0f, 0.0f)), m_name(pRenderer, GUIFont, label, Colour(0.0f, 0.0f, 0.0f)), m_fontID(GUIFont), m_minValue(min), m_maxValue(max), m_defaultValue(defaultValue), m_eSliderDirection(ESliderDirection_Horizontal) { m_pScrollerDefault = new DirectDrawRectangle(pRenderer); m_pScrollerHover = new DirectDrawRectangle(pRenderer); m_pScrollerDragging = new DirectDrawRectangle(pRenderer); m_pScrollerDisabled = new DirectDrawRectangle(pRenderer); m_pScrollBackbarDefault = new DirectDrawRectangle(pRenderer); m_pScrollBackbarPressed = new DirectDrawRectangle(pRenderer); DirectDrawRectangle *lpDirectDrawRect = (DirectDrawRectangle *)m_pScrollerDefault; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pScrollerHover; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pScrollerDragging; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pScrollerDisabled; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pScrollBackbarDefault; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pScrollBackbarPressed; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.5f, 0.5f, 0.5f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.5f, 0.5f, 0.5f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.5f, 0.5f, 0.5f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.5f, 0.5f, 0.5f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.05f, 0.05f, 0.05f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.05f, 0.05f, 0.05f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.05f, 0.05f, 0.05f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.05f, 0.05f, 0.05f, 1.0f)); m_pPlusButton = new Button(pRenderer, GUIFont, "+"); m_pPlusButton->SetCallBackFunction(_PlusPressed); m_pPlusButton->SetCallBackData(this); m_pPlusButton->SetLabelOffset(0, 0); m_pMinusButton = new Button(pRenderer, GUIFont, "-"); m_pMinusButton->SetCallBackFunction(_MinusPressed); m_pMinusButton->SetCallBackData(this); m_pMinusButton->SetLabelOffset(1, 2); m_pPlusButton->SetDepth(2.0f); m_pMinusButton->SetDepth(2.0f); m_currentValue = defaultValue; m_bShowValue = true; m_ValuePrecision = 2; m_bDragging = false; m_bAllowDragging = true; m_bHover = false; m_bDragginOutside = false; m_bFirstOutsideDrag = false; m_bAllowDragginOutside = false; m_bPressedBar = false; m_bAllowReleasingOnBar = true; m_bOverBar = false; m_bRenderBackgroundBar = true; m_bDynamicColourBackground = false; m_lastX = 0; m_lastY = 0; m_disabled = false; Add(m_pScrollerDefault); Add(m_pScrollerHover); Add(m_pScrollerDragging); Add(m_pScrollerDisabled); Add(m_pScrollBackbarDefault); Add(m_pScrollBackbarPressed); m_labelOffset_X = 0; m_labelOffset_Y = 0; m_valueOffset_X = 0; m_valueOffset_Y = 0; m_incrementButtonsOffset_X = 0; m_incrementButtonsOffset_Y = 0; m_incrementButtons = addIncrementButtons; m_incrementAmount = incrementAmount; if(addIncrementButtons) { Add(m_pPlusButton); Add(m_pMinusButton); } Add(&m_value); Add(&m_name); m_ValueChangedCallback = NULL; m_pValueChangedCallbackData = NULL; ValueChanged(); }
MenuItem::MenuItem(Renderer* pRenderer, unsigned int GUIFont, unsigned int OutlineGUIFont, const std::string &label, Colour lLabelColour, Colour outlineColour) : AbstractButton(pRenderer, GUIFont, label) { m_pDefaultIcon = new DirectDrawRectangle(pRenderer); m_pHoverIcon = new DirectDrawRectangle(pRenderer); m_pSelectedIcon = new DirectDrawRectangle(pRenderer); m_pDisabledIcon = new DirectDrawRectangle(pRenderer); DirectDrawRectangle *lpDirectDrawRect = (DirectDrawRectangle *)m_pDefaultIcon; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pHoverIcon; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pSelectedIcon; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.25f, 0.25f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pDisabledIcon; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.25f, 0.25f, 0.25f, 1.0f)); Add(m_pDefaultIcon); Add(m_pSelectedIcon); Add(m_pHoverIcon); Add(m_pDisabledIcon); m_label.SetLocation(0, 0); m_label.SetColour(lLabelColour); m_label.SetOutline(true); m_label.SetOutlineColour(outlineColour); m_label.SetOutlineFont(OutlineGUIFont); Add(&m_label); m_pDefaultIcon->SetDepth(3.0f); m_pSelectedIcon->SetDepth(3.0f); m_pHoverIcon->SetDepth(3.0f); m_pDisabledIcon->SetDepth(3.0f); // Start out disabled, since most menus are not open to start with... SetEnabled(false); m_bOnlyShowSelectedItems = false; }
ProgressBar::ProgressBar(Renderer* pRenderer, unsigned int GUIFont, float min, float max) : Container(pRenderer), m_minValue(min), m_maxValue(max), m_eProgressDirection(EProgressDirection_Horizontal) { m_currentValue = m_minValue; m_pProgressBackground = new DirectDrawRectangle(pRenderer); m_pProgressFiller = new DirectDrawRectangle(pRenderer); DirectDrawRectangle *lpDirectDrawRect = (DirectDrawRectangle *)m_pProgressBackground; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.75f, 0.75f, 0.75f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.25f, 0.25f, 0.25f, 1.0f)); lpDirectDrawRect = (DirectDrawRectangle *)m_pProgressFiller; lpDirectDrawRect->SetBackgroundColourTopLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourTopRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomLeft(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetBackgroundColourBottomRight(Colour(0.52f, 0.53f, 0.91f, 1.0f)); lpDirectDrawRect->SetOutlineColourTop(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourBottom(Colour(0.0f, 0.0f, 0.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourLeft(Colour(1.0f, 1.0f, 1.0f, 1.0f)); lpDirectDrawRect->SetOutlineColourRight(Colour(0.0f, 0.0f, 0.0f, 1.0f)); Add(m_pProgressFiller); Add(m_pProgressBackground); m_pProgressBackground->SetDepth(2.0f); m_pProgressFiller->SetDepth(3.0f); }