mirror of https://github.com/stella-emu/stella.git
third 'uipalette' scheme 'Light' added
modernized UI via 'FLAT_UI' preprocessor define added
This commit is contained in:
parent
376daae713
commit
19730fa183
|
@ -599,21 +599,26 @@ void DataGridWidget::drawWidget(bool hilite)
|
|||
int x = _x + 4 + (col * _colWidth);
|
||||
int y = _y + 2 + (row * _rowHeight);
|
||||
int pos = row*_cols + col;
|
||||
uInt32 color = kTextColor;
|
||||
|
||||
// Draw the selected item inverted, on a highlighted background.
|
||||
if (_currentRow == row && _currentCol == col &&
|
||||
_hasFocus && !_editMode)
|
||||
{
|
||||
s.fillRect(x - 4, y - 2, _colWidth+1, _rowHeight+1, kTextColorHi);
|
||||
#ifdef FLAT_UI
|
||||
color = kWidColor;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (_selectedItem == pos && _editMode)
|
||||
{
|
||||
adjustOffset();
|
||||
s.drawString(_font, editString(), x, y, _colWidth, kTextColor,
|
||||
s.drawString(_font, editString(), x, y, _colWidth, color,
|
||||
TextAlign::Left, -_editScrollOffset, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
uInt32 color = kTextColor;
|
||||
if(_changedList[pos])
|
||||
{
|
||||
s.fillRect(x - 3, y - 1, _colWidth-1, _rowHeight-1, kDbgChangedColor);
|
||||
|
|
|
@ -130,7 +130,11 @@ bool FrameBuffer::initialize()
|
|||
}
|
||||
|
||||
// Set palette for GUI (upper area of array, doesn't change during execution)
|
||||
int palID = myOSystem.settings().getString("uipalette") == "classic" ? 1 : 0;
|
||||
int palID = 0;
|
||||
if(myOSystem.settings().getString("uipalette") == "classic")
|
||||
palID = 1;
|
||||
else if(myOSystem.settings().getString("uipalette") == "light")
|
||||
palID = 2;
|
||||
|
||||
for(int i = 0, j = 256; i < kNumColors-256; ++i, ++j)
|
||||
{
|
||||
|
@ -937,12 +941,16 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
|
|||
kScrollColor Normal scrollbar color
|
||||
kScrollColorHi Highlighted scrollbar color
|
||||
|
||||
// Slider colors
|
||||
kSliderColor,
|
||||
kSliderColorHi
|
||||
|
||||
// Debugger colors
|
||||
kDbgChangedColor Background color for changed cells
|
||||
kDbgChangedTextColor Text color for changed cells
|
||||
kDbgColorHi Highlighted color in debugger data cells
|
||||
*/
|
||||
uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = {
|
||||
uInt32 FrameBuffer::ourGUIColors[3][kNumColors-256] = {
|
||||
// Standard
|
||||
{ 0x686868, 0x000000, 0xa38c61, 0xdccfa5, 0x404040, 0x000000, 0x62a108, 0x9f0000,
|
||||
0xc9af7c, 0xf0f0cf, 0xc80000,
|
||||
|
@ -961,5 +969,15 @@ uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = {
|
|||
0x20a020, 0x00ff00,
|
||||
0x20a020, 0x00ff00,
|
||||
0xc80000, 0x00ff00, 0xc8c8ff
|
||||
},
|
||||
// Light
|
||||
{
|
||||
0x686868, 0x000000, 0xc0c0c0, 0xe1e1e1, 0x333333, 0x000000, 0x0078d7, 0x0078d7, // base
|
||||
0xf0f0f0, 0xffffff, 0x0f0f0f, // elements
|
||||
0xe1e1e1, 0xe5f1fb, 0x202020, 0x000000, // buttons
|
||||
0x333333, // checkbox
|
||||
0x808080, 0x0078d7, // scrollbar
|
||||
0x333333, 0x0078d7, // slider
|
||||
0x800000, 0xffff80, 0x00e0e0 // debugger
|
||||
}
|
||||
};
|
||||
|
|
|
@ -520,7 +520,7 @@ class FrameBuffer
|
|||
vector<shared_ptr<FBSurface>> mySurfaceList;
|
||||
|
||||
// Holds UI palette data (standard and classic colours)
|
||||
static uInt32 ourGUIColors[2][kNumColors-256];
|
||||
static uInt32 ourGUIColors[3][kNumColors-256];
|
||||
|
||||
private:
|
||||
// Following constructors and assignment operators not supported
|
||||
|
|
|
@ -117,11 +117,20 @@ void CheckListWidget::drawWidget(bool hilite)
|
|||
if (_selectedItem == pos && _editMode)
|
||||
{
|
||||
adjustOffset();
|
||||
#ifndef FLAT_UI
|
||||
s.drawString(_font, editString(), _x + r.left, y, r.width(), kTextColor,
|
||||
TextAlign::Left, -_editScrollOffset, false);
|
||||
}
|
||||
else
|
||||
s.drawString(_font, _list[pos], _x + r.left, y, r.width(), kTextColor);
|
||||
#else
|
||||
s.drawString(_font, editString(), _x + r.left, y, r.width(), kTextColor,
|
||||
TextAlign::Left, -_editScrollOffset, false);
|
||||
}
|
||||
else
|
||||
s.drawString(_font, _list[pos], _x + r.left, y, r.width(),
|
||||
_selectedItem == pos && hilite && _hasFocus && !_editMode ? kWidColor : kTextColor);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Only draw the caret while editing, and if it's in the current viewport
|
||||
|
|
|
@ -58,7 +58,11 @@ void ContextMenu::addItems(const VariantList& items)
|
|||
maxwidth = std::max(maxwidth, _font.getStringWidth(e.first));
|
||||
|
||||
_x = _y = 0;
|
||||
#ifndef FLAT_UI
|
||||
_w = maxwidth + 10;
|
||||
#else
|
||||
_w = maxwidth + 10 + 5;
|
||||
#endif
|
||||
_h = 1; // recalculate this in ::recalc()
|
||||
|
||||
_scrollUpColor = _firstEntry > 0 ? kScrollColor : kColor;
|
||||
|
|
|
@ -271,7 +271,11 @@ void Dialog::drawDialog()
|
|||
{
|
||||
// cerr << "Dialog::drawDialog(): w = " << _w << ", h = " << _h << " @ " << &s << endl << endl;
|
||||
s.fillRect(_x, _y, _w, _h, kDlgColor);
|
||||
#ifndef FLAT_UI
|
||||
s.box(_x, _y, _w, _h, kColor, kShadowColor);
|
||||
#else
|
||||
s.frameRect(_x, _y, _w, _h, kColor);
|
||||
#endif // !FLAT_UI
|
||||
|
||||
// Make all child widget dirty
|
||||
Widget* w = _firstWidget;
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "PopUpWidget.hxx"
|
||||
|
||||
// Little up/down arrow
|
||||
#ifndef FLAT_UI
|
||||
static uInt32 up_down_arrows[8] = {
|
||||
0b00000000,
|
||||
0b00001000,
|
||||
|
@ -34,6 +35,18 @@ static uInt32 up_down_arrows[8] = {
|
|||
0b00011100,
|
||||
0b00001000,
|
||||
};
|
||||
#else
|
||||
static uInt32 down_arrow[8] = {
|
||||
0b100000001,
|
||||
0b110000011,
|
||||
0b111000111,
|
||||
0b011101110,
|
||||
0b001111100,
|
||||
0b000111000,
|
||||
0b000010000,
|
||||
0b000000000
|
||||
};
|
||||
#endif
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
PopUpWidget::PopUpWidget(GuiObject* boss, const GUI::Font& font,
|
||||
|
@ -53,7 +66,11 @@ PopUpWidget::PopUpWidget(GuiObject* boss, const GUI::Font& font,
|
|||
if(!_label.empty() && _labelWidth == 0)
|
||||
_labelWidth = _font.getStringWidth(_label);
|
||||
|
||||
#ifndef FLAT_UI
|
||||
_w = w + _labelWidth + 15;
|
||||
#else
|
||||
_w = w + _labelWidth + 23;
|
||||
#endif
|
||||
|
||||
// vertically center the arrows and text
|
||||
myTextY = (_h - _font.getFontHeight()) / 2;
|
||||
|
@ -137,6 +154,22 @@ void PopUpWidget::handleMouseWheel(int x, int y, int direction)
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef FLAT_UI
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PopUpWidget::handleMouseEntered(int button)
|
||||
{
|
||||
setFlags(WIDGET_HILITED);
|
||||
setDirty();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PopUpWidget::handleMouseLeft(int button)
|
||||
{
|
||||
clearFlags(WIDGET_HILITED);
|
||||
setDirty();
|
||||
}
|
||||
#endif
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool PopUpWidget::handleEvent(Event::Type e)
|
||||
{
|
||||
|
@ -190,18 +223,32 @@ void PopUpWidget::drawWidget(bool hilite)
|
|||
s.drawString(_font, _label, _x, _y + myTextY, _labelWidth,
|
||||
isEnabled() ? _textcolor : uInt32(kColor), TextAlign::Right);
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Draw a thin frame around us.
|
||||
s.hLine(x, _y, x + w - 1, kColor);
|
||||
s.hLine(x, _y +_h-1, x + w - 1, kShadowColor);
|
||||
s.vLine(x, _y, _y+_h-1, kColor);
|
||||
s.vLine(x + w - 1, _y, _y +_h - 1, kShadowColor);
|
||||
#else
|
||||
s.frameRect(x, _y, w - 16, _h, kColor);
|
||||
s.frameRect(x + w - 17, _y, 17, _h, hilite ? kTextColorHi : kColor);
|
||||
#endif // !FLAT_UI
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Fill the background
|
||||
s.fillRect(x + 1, _y + 1, w - 2, _h - 2, kWidColor);
|
||||
|
||||
// Draw an arrow pointing down at the right end to signal this is a dropdown/popup
|
||||
s.drawBitmap(up_down_arrows, x+w - 10, _y + myArrowsY,
|
||||
!isEnabled() ? kColor : hilite ? kTextColorHi : kTextColor);
|
||||
#else
|
||||
// Fill the background
|
||||
s.fillRect(x + 1, _y + 1, w - 2 - 16, _h - 2, kWidColor);
|
||||
s.fillRect(x + w - 15 - 1, _y + 1, 15, _h - 2, kBGColorHi);
|
||||
//s.vLine(x + w - 17, _y, _y + _h - 1, kShadowColor);
|
||||
// Draw an arrow pointing down at the right end to signal this is a dropdown/popup
|
||||
s.drawBitmap(down_arrow, x + w - 13, _y + myArrowsY + 1,
|
||||
!isEnabled() ? kCheckColor : kTextColor, 9u, 8u);
|
||||
#endif
|
||||
|
||||
// Draw the selected entry, if any
|
||||
const string& name = myMenu->getSelectedName();
|
||||
|
|
|
@ -63,6 +63,10 @@ class PopUpWidget : public Widget, public CommandSender
|
|||
protected:
|
||||
void handleMouseDown(int x, int y, int button, int clickCount) override;
|
||||
void handleMouseWheel(int x, int y, int direction) override;
|
||||
#ifdef FLAT_UI
|
||||
void handleMouseEntered(int button) override;
|
||||
void handleMouseLeft(int button) override;
|
||||
#endif
|
||||
bool handleEvent(Event::Type e) override;
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||
void drawWidget(bool hilite) override;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "RadioButtonWidget.hxx"
|
||||
|
||||
/* Radiobutton bitmaps */
|
||||
#ifndef FLAT_UI
|
||||
static uInt32 radio_img_outercircle[14] =
|
||||
{
|
||||
0b00001111110000,
|
||||
|
@ -76,6 +77,69 @@ static uInt32 radio_img_inactive[8] =
|
|||
0b01111110,
|
||||
0b00111100
|
||||
};
|
||||
#else
|
||||
static uInt32 radio_img_outercircle[14] =
|
||||
{
|
||||
0b00001111110000,
|
||||
0b00110000001100,
|
||||
0b01000000000010,
|
||||
0b01000000000010,
|
||||
0b10000000000001,
|
||||
0b10000000000001,
|
||||
0b10000000000001,
|
||||
0b10000000000001,
|
||||
0b10000000000001,
|
||||
0b10000000000001,
|
||||
0b01000000000010,
|
||||
0b01000000000010,
|
||||
0b00110000001100,
|
||||
0b00001111110000
|
||||
};
|
||||
|
||||
static uInt32 radio_img_innercircle[12] =
|
||||
{
|
||||
0b000111111000,
|
||||
0b011111111110,
|
||||
0b011111111110,
|
||||
0b111111111111,
|
||||
0b111111111111,
|
||||
0b111111111111,
|
||||
0b111111111111,
|
||||
0b111111111111,
|
||||
0b111111111111,
|
||||
0b011111111110,
|
||||
0b011111111110,
|
||||
0b000111111000
|
||||
};
|
||||
|
||||
static uInt32 radio_img_active[10] =
|
||||
{
|
||||
0b0011111100,
|
||||
0b0111111110,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b0111111110,
|
||||
0b0011111100,
|
||||
};
|
||||
|
||||
static uInt32 radio_img_inactive[10] =
|
||||
{
|
||||
0b0011111100,
|
||||
0b0111111110,
|
||||
0b1111001111,
|
||||
0b1110000111,
|
||||
0b1100000011,
|
||||
0b1100000011,
|
||||
0b1110000111,
|
||||
0b1111001111,
|
||||
0b0111111110,
|
||||
0b0011111100
|
||||
};
|
||||
#endif
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
RadioButtonWidget::RadioButtonWidget(GuiObject* boss, const GUI::Font& font,
|
||||
|
@ -153,6 +217,7 @@ void RadioButtonWidget::drawWidget(bool hilite)
|
|||
{
|
||||
FBSurface& s = _boss->dialog().surface();
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Draw the outer bounding circle
|
||||
s.drawBitmap(radio_img_outercircle, _x, _y + _boxY, kShadowColor, 14, 14);
|
||||
|
||||
|
@ -162,6 +227,20 @@ void RadioButtonWidget::drawWidget(bool hilite)
|
|||
// draw state
|
||||
if(_state)
|
||||
s.drawBitmap(_img, _x + 3, _y + _boxY + 3, isEnabled() ? kCheckColor : kShadowColor);
|
||||
#else
|
||||
// Draw the outer bounding circle
|
||||
s.drawBitmap(radio_img_outercircle, _x, _y + _boxY, hilite ? kScrollColorHi : kShadowColor, 14, 14);
|
||||
|
||||
// Draw the inner bounding circle with enabled color
|
||||
s.drawBitmap(radio_img_innercircle, _x + 1, _y + _boxY + 1, isEnabled()
|
||||
? _bgcolor : kColor, 12, 12);
|
||||
|
||||
// draw state
|
||||
if(_state)
|
||||
s.drawBitmap(_img, _x + 2, _y + _boxY + 2, isEnabled()
|
||||
? hilite ? kScrollColorHi : kCheckColor
|
||||
: kShadowColor, 10);
|
||||
#endif
|
||||
|
||||
// Finally draw the label
|
||||
s.drawString(_font, _label, _x + 20, _y + _textY, _w,
|
||||
|
|
|
@ -68,11 +68,20 @@ void StringListWidget::drawWidget(bool hilite)
|
|||
if (_selectedItem == pos && _editMode)
|
||||
{
|
||||
adjustOffset();
|
||||
#ifndef FLAT_UI
|
||||
s.drawString(_font, editString(), _x + r.left, y, r.width(), kTextColor,
|
||||
TextAlign::Left, -_editScrollOffset, false);
|
||||
}
|
||||
else
|
||||
s.drawString(_font, _list[pos], _x + r.left, y, r.width(), kTextColor);
|
||||
#else
|
||||
s.drawString(_font, editString(), _x + r.left, y, r.width(), kTextColor,
|
||||
TextAlign::Left, -_editScrollOffset, false);
|
||||
}
|
||||
else
|
||||
s.drawString(_font, _list[pos], _x + r.left, y, r.width(),
|
||||
_selectedItem == pos && _hilite && _hasFocus && !_editMode ? kWidColor : kTextColor);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Only draw the caret while editing, and if it's in the current viewport
|
||||
|
|
|
@ -193,6 +193,20 @@ void TabWidget::handleMouseDown(int x, int y, int button, int clickCount)
|
|||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void TabWidget::handleMouseEntered(int button)
|
||||
{
|
||||
setFlags(WIDGET_HILITED);
|
||||
setDirty();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void TabWidget::handleMouseLeft(int button)
|
||||
{
|
||||
clearFlags(WIDGET_HILITED);
|
||||
setDirty();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void TabWidget::handleCommand(CommandSender* sender, int cmd, int data, int id)
|
||||
{
|
||||
|
@ -239,11 +253,12 @@ void TabWidget::loadConfig()
|
|||
updateActiveTab();
|
||||
}
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void TabWidget::box(int x, int y, int width, int height,
|
||||
uInt32 colorA, uInt32 colorB, bool omitBottom)
|
||||
{
|
||||
//cerr << "TabWidget::box\n";
|
||||
//cerr << "TabWidget::box\n";
|
||||
FBSurface& s = _boss->dialog().surface();
|
||||
|
||||
s.hLine(x + 1, y, x + width - 2, colorA);
|
||||
|
@ -259,6 +274,7 @@ void TabWidget::box(int x, int y, int width, int height,
|
|||
s.vLine(x + width - 1, y + 1, y + height - (omitBottom ? 1 : 2), colorB);
|
||||
s.vLine(x + width - 2, y + 1, y + height - (omitBottom ? 2 : 1), colorB);
|
||||
}
|
||||
#endif
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void TabWidget::drawWidget(bool hilite)
|
||||
|
@ -275,9 +291,11 @@ void TabWidget::drawWidget(bool hilite)
|
|||
const int left2 = right1 + _tabWidth;
|
||||
const int right2 = _x + _w - 2;
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Draw horizontal line
|
||||
s.hLine(left1, _y + _tabHeight - 2, right1, kShadowColor);
|
||||
s.hLine(left2, _y + _tabHeight - 2, right2, kShadowColor);
|
||||
#endif
|
||||
|
||||
// Iterate over all tabs and draw them
|
||||
int i, x = _x + kTabLeftOffset;
|
||||
|
@ -285,14 +303,24 @@ void TabWidget::drawWidget(bool hilite)
|
|||
{
|
||||
uInt32 fontcolor = _tabs[i].enabled ? kTextColor : kColor;
|
||||
uInt32 boxcolor = (i == _activeTab) ? kColor : kShadowColor;
|
||||
#ifndef FLAT_UI
|
||||
int yOffset = (i == _activeTab) ? 0 : 2;
|
||||
box(x, _y + yOffset, _tabWidth, _tabHeight - yOffset, boxcolor, boxcolor, (i == _activeTab));
|
||||
s.drawString(_font, _tabs[i].title, x + kTabPadding,
|
||||
_y + yOffset / 2 + (_tabHeight - _fontHeight - 1),
|
||||
_tabWidth - 2 * kTabPadding, fontcolor, TextAlign::Center);
|
||||
#else
|
||||
int yOffset = (i == _activeTab) ? 0 : 1;
|
||||
s.fillRect(x, _y, _tabWidth, _tabHeight, (i == _activeTab)
|
||||
? kDlgColor : kBGColorHi);
|
||||
s.drawString(_font, _tabs[i].title, x + kTabPadding + yOffset,
|
||||
_y + yOffset + (_tabHeight - _fontHeight - 1),
|
||||
_tabWidth - 2 * kTabPadding, (i == _activeTab |true) ? fontcolor : kColor, TextAlign::Center);
|
||||
#endif
|
||||
x += _tabWidth + kTabSpacing;
|
||||
}
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Draw a frame around the widget area (belows the tabs)
|
||||
s.hLine(left1, _y + _tabHeight - 1, right1, kColor);
|
||||
s.hLine(left2, _y + _tabHeight - 1, right2, kColor);
|
||||
|
@ -300,6 +328,9 @@ void TabWidget::drawWidget(bool hilite)
|
|||
s.hLine(_x+1, _y + _h - 1, _x + _w - 2, kColor);
|
||||
s.vLine(_x + _w - 2, _y + _tabHeight - 1, _y + _h - 2, kColor);
|
||||
s.vLine(_x + _w - 1, _y + _tabHeight - 1, _y + _h - 2, kShadowColor);
|
||||
#else
|
||||
s.hLine(right1, _y, left2, kScrollColorHi);
|
||||
#endif
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -60,6 +60,9 @@ class TabWidget : public Widget, public CommandSender
|
|||
|
||||
protected:
|
||||
void handleMouseDown(int x, int y, int button, int clickCount) override;
|
||||
void handleMouseEntered(int button) override;
|
||||
void handleMouseLeft(int button) override;
|
||||
|
||||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||
bool handleEvent(Event::Type event) override;
|
||||
|
||||
|
@ -93,9 +96,10 @@ class TabWidget : public Widget, public CommandSender
|
|||
};
|
||||
|
||||
private:
|
||||
#ifndef FLAT_UI
|
||||
void box(int x, int y, int width, int height,
|
||||
uInt32 colorA, uInt32 colorB, bool omitBottom);
|
||||
|
||||
#endif
|
||||
void updateActiveTab();
|
||||
|
||||
private:
|
||||
|
|
|
@ -151,6 +151,7 @@ UIDialog::UIDialog(OSystem& osystem, DialogContainer& parent,
|
|||
items.clear();
|
||||
VarList::push_back(items, "Standard", "standard");
|
||||
VarList::push_back(items, "Classic", "classic");
|
||||
VarList::push_back(items, "Light", "light");
|
||||
myPalettePopup = new PopUpWidget(myTab, font, xpos, ypos, pwidth, lineHeight,
|
||||
items, "Interface Palette (*) ", lwidth);
|
||||
wid.push_back(myPalettePopup);
|
||||
|
|
|
@ -90,7 +90,11 @@ void Widget::draw()
|
|||
// Draw border
|
||||
if(hasBorder)
|
||||
{
|
||||
#ifndef FLAT_UI
|
||||
s.box(_x, _y, _w, _h, kColor, kShadowColor);
|
||||
#else
|
||||
s.frameRect(_x, _y, _w, _h, (_flags & WIDGET_HILITED) ? kScrollColorHi : kColor);
|
||||
#endif // !FLAT_UI
|
||||
_x += 4;
|
||||
_y += 4;
|
||||
_w -= 8;
|
||||
|
@ -442,6 +446,7 @@ void ButtonWidget::drawWidget(bool hilite)
|
|||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
/* 8x8 checkbox bitmap */
|
||||
#ifndef FLAT_UI
|
||||
static uInt32 checked_img_active[8] =
|
||||
{
|
||||
0b11111111,
|
||||
|
@ -477,7 +482,49 @@ static uInt32 checked_img_circle[8] =
|
|||
0b01111110,
|
||||
0b00011000
|
||||
};
|
||||
#else
|
||||
static uInt32 checked_img_active[10] =
|
||||
{
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111
|
||||
};
|
||||
|
||||
static uInt32 checked_img_inactive[10] =
|
||||
{
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111001111,
|
||||
0b1110000111,
|
||||
0b1100000011,
|
||||
0b1100000011,
|
||||
0b1110000111,
|
||||
0b1111001111,
|
||||
0b1111111111,
|
||||
0b1111111111
|
||||
};
|
||||
|
||||
static uInt32 checked_img_circle[10] =
|
||||
{
|
||||
0b0001111000,
|
||||
0b0111111110,
|
||||
0b0111111110,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b1111111111,
|
||||
0b0111111110,
|
||||
0b0111111110,
|
||||
0b0001111000
|
||||
};
|
||||
#endif // !FLAT_UI
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
CheckboxWidget::CheckboxWidget(GuiObject* boss, const GUI::Font& font,
|
||||
int x, int y, const string& label,
|
||||
|
@ -512,6 +559,20 @@ CheckboxWidget::CheckboxWidget(GuiObject* boss, const GUI::Font& font,
|
|||
setFill(CheckboxWidget::Normal);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void CheckboxWidget::handleMouseEntered(int button)
|
||||
{
|
||||
setFlags(WIDGET_HILITED);
|
||||
setDirty();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void CheckboxWidget::handleMouseLeft(int button)
|
||||
{
|
||||
clearFlags(WIDGET_HILITED);
|
||||
setDirty();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void CheckboxWidget::handleMouseUp(int x, int y, int button, int clickCount)
|
||||
{
|
||||
|
@ -574,14 +635,24 @@ void CheckboxWidget::drawWidget(bool hilite)
|
|||
{
|
||||
FBSurface& s = _boss->dialog().surface();
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Draw the box
|
||||
if(_drawBox)
|
||||
s.box(_x, _y + _boxY, 14, 14, kColor, kShadowColor);
|
||||
|
||||
// Do we draw a square or cross?
|
||||
s.fillRect(_x + 2, _y + _boxY + 2, 10, 10, isEnabled() ? _bgcolor : kColor);
|
||||
if(_state)
|
||||
s.drawBitmap(_img, _x + 3, _y + _boxY + 3, isEnabled() ? kCheckColor : kShadowColor);
|
||||
#else
|
||||
if(_drawBox)
|
||||
s.frameRect(_x, _y + _boxY, 14, 14, hilite ? kScrollColorHi : kShadowColor);
|
||||
// Do we draw a square or cross?
|
||||
s.fillRect(_x + 1, _y + _boxY + 1, 12, 12, isEnabled() ? _bgcolor : kColor);
|
||||
if(_state)
|
||||
s.drawBitmap(_img, _x + 2, _y + _boxY + 2, isEnabled()
|
||||
? hilite ? kScrollColorHi : kCheckColor
|
||||
: kShadowColor, 10);
|
||||
#endif
|
||||
|
||||
// Finally draw the label
|
||||
s.drawString(_font, _label, _x + 20, _y + _textY, _w,
|
||||
|
@ -725,17 +796,25 @@ void SliderWidget::drawWidget(bool hilite)
|
|||
if(_labelWidth > 0)
|
||||
s.drawString(_font, _label, _x, _y + 2, _labelWidth,
|
||||
isEnabled() ? kTextColor : kColor, TextAlign::Right);
|
||||
|
||||
#ifndef FLAT_UI
|
||||
// Draw the box
|
||||
s.box(_x + _labelWidth, _y, _w - _labelWidth, _h, kColor, kShadowColor);
|
||||
|
||||
// Fill the box
|
||||
s.fillRect(_x + _labelWidth + 2, _y + 2, _w - _labelWidth - 4, _h - 4,
|
||||
!isEnabled() ? kBGColorHi : kWidColor);
|
||||
|
||||
// Draw the 'bar'
|
||||
s.fillRect(_x + _labelWidth + 2, _y + 2, valueToPos(_value), _h - 4,
|
||||
!isEnabled() ? kColor : hilite ? kSliderColorHi : kSliderColor);
|
||||
#else
|
||||
// Draw the box
|
||||
s.frameRect(_x + _labelWidth, _y, _w - _labelWidth, _h, hilite ? kSliderColorHi : kShadowColor);
|
||||
// Fill the box
|
||||
s.fillRect(_x + _labelWidth + 1, _y + 1, _w - _labelWidth - 2, _h - 2,
|
||||
!isEnabled() ? kBGColorHi : kWidColor);
|
||||
// Draw the 'bar'
|
||||
s.fillRect(_x + _labelWidth + 2, _y + 2, valueToPos(_value), _h - 4,
|
||||
!isEnabled() ? kColor : hilite ? kSliderColorHi : kSliderColor);
|
||||
#endif
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -268,8 +268,8 @@ class CheckboxWidget : public ButtonWidget
|
|||
bool getState() const { return _state; }
|
||||
|
||||
void handleMouseUp(int x, int y, int button, int clickCount) override;
|
||||
void handleMouseEntered(int button) override { }
|
||||
void handleMouseLeft(int button) override { }
|
||||
void handleMouseEntered(int button) override;
|
||||
void handleMouseLeft(int button) override;
|
||||
|
||||
static int boxSize() { return 14; } // box is square
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
<AdditionalOptions>/MP /std:c++latest %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>FLAT_UI;BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
|
@ -142,7 +142,7 @@
|
|||
<AdditionalOptions>/MP /std:c++latest %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>FLAT_UI;BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>false</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
|
@ -171,7 +171,7 @@
|
|||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>FLAT_UI;BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>
|
||||
|
@ -204,7 +204,7 @@
|
|||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\yacc;..\emucore;..\emucore\tia;..\emucore\tia\frame-manager;..\common;..\common\tv_filters;..\gui;..\debugger\gui;..\debugger;..\windows;..\cheat;..\zlib;..\libpng;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>FLAT_UI;BSPF_WINDOWS;WIN32;NDEBUG;JOYSTICK_SUPPORT;DEBUGGER_SUPPORT;WINDOWED_SUPPORT;SOUND_SUPPORT;CHEATCODE_SUPPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<RuntimeTypeInfo>false</RuntimeTypeInfo>
|
||||
<PrecompiledHeader>
|
||||
|
|
Loading…
Reference in New Issue