/*
* Descent 3
* Copyright (C) 2024 Parallax Software
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
--- HISTORICAL COMMENTS FOLLOW ---
* $Logfile: /DescentIII/Main/ui/UIStatic.cpp $
* $Revision: 12 $
* $Date: 4/14/99 1:53a $
* $Author: Jeff $
*
* Static text
*
* $Log: /DescentIII/Main/ui/UIStatic.cpp $
*
* 12 4/14/99 1:53a Jeff
* fixed case mismatched #includes
*
* 11 1/02/99 6:46p Matt
* Fixed compile warning
*
* 10 12/30/98 12:16p Kevin
* Auto Mission Download system
*
* 9 10/01/98 12:57p Samir
* fixed hotspots so their width and height touch text, no outer border.
*
* 8 8/31/98 12:37p Samir
* disable all static controls.
*
* 7 6/05/98 5:36p Samir
* disable static items by default, so they don't mess up keyboard focus.
*
* 6 2/13/98 6:34p Samir
* Added UIStatic class.
*
* 5 1/30/98 7:07p Samir
* Changes to gadget system.
*
* 4 1/18/98 4:22p Samir
* Implemented new UIItem system.
*
* 3 1/08/98 12:18p Samir
* Static control size is always calculated.
*
* 2 1/05/98 4:36p Samir
* Moved centering and fittext control flags to UIGadget class.
*
* 1 1/02/98 12:49p Samir
* Initial revision.
*
*
* $NoKeywords: $
*/
#include "UIlib.h"
#include
// ----------------------------------------------------------------------------
// UIText
// This is a simple text.
void UIText::Create(UIWindow *parent, UITextItem *text, int x, int y, int flags) {
UIStatic::Create(parent, text, x, y, 1, 1, flags);
}
// inheritable operations
// override: called when resized or before drawing.
void UIText::OnFormat() {
m_W = m_Title->width();
m_H = m_Title->height();
UIGadget::OnFormat();
}
UIStatic::UIStatic() {
m_Title = NULL;
m_Background = NULL;
}
UIStatic::~UIStatic() {}
void UIStatic::Create(UIWindow *parent, UIItem *item, int x, int y, int w, int h, int flags) {
m_Background = NULL;
if (item)
m_Title = item->CopyUIItem();
else
m_Title = NULL;
UIGadget::Create(parent, -1, x, y, w, h, flags);
UIGadget::Disable();
}
void UIStatic::SetBackground(UIPrimativeItem *item) {
if (m_Background)
delete m_Background;
m_Background = NULL;
if (item)
m_Background = (UIPrimativeItem *)item->CopyUIItem();
}
void UIStatic::SetTitle(UIItem *item) {
if (m_Title)
delete m_Title;
m_Title = NULL;
if (item)
m_Title = (UIPrimativeItem *)item->CopyUIItem();
}
void UIStatic::OnDraw() {
if (m_Flags & UIF_BORDER)
ui_DrawBox(GR_WHITE, 0, 0, m_W, m_H);
if (m_Background)
m_Background->draw(0, 0, m_W, m_H);
if (m_Title) {
// int y = (m_H/2 - m_Title->height()/2);
// int x = (m_W/2 - m_Title->width()/2);
m_Title->draw(0, 0);
}
}
void UIStatic::OnFormat() {
if (m_Flags & UIF_FIT) {
if (m_Title) {
m_W = m_Title->width();
m_H = m_Title->height();
} else {
m_W = 10;
m_H = 10;
}
}
UIGadget::OnFormat();
}
// called when gadget is being nuked.
void UIStatic::OnDestroy() {
if (m_Title)
delete m_Title;
if (m_Background)
delete m_Background;
m_Title = NULL;
m_Background = NULL;
}
// ----------------------------------------------------------------------------
// UIProgress
// This is a simple text.
void UIProgress::Create(UIWindow *parent, int x, int y, int w, int h, int flags) {
m_W = w;
m_H = h;
m_ProgressWidth = 0;
UIStatic::Create(parent, NULL, x, y, w, h, flags);
}
// inheritable operations
// override: called when resized or before drawing.
void UIProgress::OnFormat() { UIGadget::OnFormat(); }
void UIProgress::Update(float progress) {
m_Progress = progress;
m_ProgressWidth = ((int)((m_W - 2) * m_Progress));
}
void UIProgress::OnDraw() {
// Take the x & y & w/h & progress to draw the progress bar
ui_DrawBox(GR_WHITE, 0, 0, m_W, m_H);
ui_DrawBox(GR_WHITE, 1, 1, m_W - 1, m_H - 1);
ui_DrawRect(GR_LIGHTGRAY, 2, 2, m_ProgressWidth, m_H - 2);
}