mirror of
git://projects.qi-hardware.com/gmenu2x.git
synced 2024-11-16 17:17:32 +02:00
Don't pass around naked Surface pointers when drawing
Use references instead.
This commit is contained in:
parent
20c5ec4eb6
commit
aff5f53f7d
@ -6,23 +6,23 @@
|
|||||||
#include "gmenu2x.h"
|
#include "gmenu2x.h"
|
||||||
|
|
||||||
|
|
||||||
Background::Background(GMenu2X &gmenu2x)
|
Background::Background(GMenu2X& gmenu2x)
|
||||||
: gmenu2x(gmenu2x)
|
: gmenu2x(gmenu2x)
|
||||||
, battery(gmenu2x.sc)
|
, battery(gmenu2x.sc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Background::paint(Surface &s) {
|
void Background::paint(Surface& s) {
|
||||||
Font &font = *gmenu2x.font;
|
Font &font = *gmenu2x.font;
|
||||||
SurfaceCollection &sc = gmenu2x.sc;
|
SurfaceCollection &sc = gmenu2x.sc;
|
||||||
|
|
||||||
sc["bgmain"]->blit(&s, 0, 0);
|
sc["bgmain"]->blit(s, 0, 0);
|
||||||
|
|
||||||
font.write(&s, clock.getTime(),
|
font.write(s, clock.getTime(),
|
||||||
s.width() / 2, gmenu2x.bottomBarTextY,
|
s.width() / 2, gmenu2x.bottomBarTextY,
|
||||||
Font::HAlignCenter, Font::VAlignMiddle);
|
Font::HAlignCenter, Font::VAlignMiddle);
|
||||||
|
|
||||||
battery.getIcon().blit(&s, s.width() - 19, gmenu2x.bottomBarIconY);
|
battery.getIcon().blit(s, s.width() - 19, gmenu2x.bottomBarIconY);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Background::handleButtonPress(InputManager::Button button) {
|
bool Background::handleButtonPress(InputManager::Button button) {
|
||||||
@ -38,6 +38,6 @@ bool Background::handleButtonPress(InputManager::Button button) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Background::handleTouchscreen(Touchscreen &/*ts*/) {
|
bool Background::handleTouchscreen(Touchscreen&) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,15 @@ class GMenu2X;
|
|||||||
*/
|
*/
|
||||||
class Background : public Layer {
|
class Background : public Layer {
|
||||||
public:
|
public:
|
||||||
Background(GMenu2X &gmenu2x);
|
Background(GMenu2X& gmenu2x);
|
||||||
|
|
||||||
// Layer implementation:
|
// Layer implementation:
|
||||||
virtual void paint(Surface &s);
|
virtual void paint(Surface& s);
|
||||||
virtual bool handleButtonPress(InputManager::Button button);
|
virtual bool handleButtonPress(InputManager::Button button);
|
||||||
virtual bool handleTouchscreen(Touchscreen &ts);
|
virtual bool handleTouchscreen(Touchscreen& ts);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GMenu2X &gmenu2x;
|
GMenu2X& gmenu2x;
|
||||||
Battery battery;
|
Battery battery;
|
||||||
Clock clock;
|
Clock clock;
|
||||||
};
|
};
|
||||||
|
@ -224,18 +224,20 @@ void BrowseDialog::quit()
|
|||||||
|
|
||||||
void BrowseDialog::paint()
|
void BrowseDialog::paint()
|
||||||
{
|
{
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
unsigned int i, iY;
|
unsigned int i, iY;
|
||||||
unsigned int firstElement, lastElement;
|
unsigned int firstElement, lastElement;
|
||||||
unsigned int offsetY;
|
unsigned int offsetY;
|
||||||
|
|
||||||
Surface bg(gmenu2x->bg);
|
Surface bg(gmenu2x->bg);
|
||||||
drawTitleIcon(&bg, "icons/explorer.png", true);
|
drawTitleIcon(bg, "icons/explorer.png", true);
|
||||||
writeTitle(&bg, title);
|
writeTitle(bg, title);
|
||||||
writeSubTitle(&bg, subtitle);
|
writeSubTitle(bg, subtitle);
|
||||||
buttonBox.paint(&bg, 5);
|
buttonBox.paint(bg, 5);
|
||||||
|
|
||||||
bg.convertToDisplayFormat();
|
bg.convertToDisplayFormat();
|
||||||
bg.blit(gmenu2x->s,0,0);
|
bg.blit(s, 0, 0);
|
||||||
|
|
||||||
// TODO(MtH): I have no idea what the right value of firstElement would be,
|
// TODO(MtH): I have no idea what the right value of firstElement would be,
|
||||||
// but originally it was undefined and that is never a good idea.
|
// but originally it was undefined and that is never a good idea.
|
||||||
@ -249,7 +251,7 @@ void BrowseDialog::paint()
|
|||||||
//Selection
|
//Selection
|
||||||
const int topBarHeight = gmenu2x->skinConfInt["topBarHeight"];
|
const int topBarHeight = gmenu2x->skinConfInt["topBarHeight"];
|
||||||
iY = topBarHeight + 1 + (selected - firstElement) * rowHeight;
|
iY = topBarHeight + 1 + (selected - firstElement) * rowHeight;
|
||||||
gmenu2x->s->box(2, iY, gmenu2x->resX - 12, rowHeight - 1,
|
s.box(2, iY, gmenu2x->resX - 12, rowHeight - 1,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
|
|
||||||
lastElement = firstElement + numRows;
|
lastElement = firstElement + numRows;
|
||||||
@ -259,7 +261,7 @@ void BrowseDialog::paint()
|
|||||||
offsetY = topBarHeight + 1;
|
offsetY = topBarHeight + 1;
|
||||||
|
|
||||||
//Files & Directories
|
//Files & Directories
|
||||||
gmenu2x->s->setClipRect(clipRect);
|
s.setClipRect(clipRect);
|
||||||
for (i = firstElement; i < lastElement; i++) {
|
for (i = firstElement; i < lastElement; i++) {
|
||||||
Surface *icon;
|
Surface *icon;
|
||||||
if (fl->isDirectory(i)) {
|
if (fl->isDirectory(i)) {
|
||||||
@ -271,8 +273,8 @@ void BrowseDialog::paint()
|
|||||||
} else {
|
} else {
|
||||||
icon = iconFile;
|
icon = iconFile;
|
||||||
}
|
}
|
||||||
icon->blit(gmenu2x->s, 5, offsetY);
|
icon->blit(s, 5, offsetY);
|
||||||
gmenu2x->font->write(gmenu2x->s, (*fl)[i], 24, offsetY + rowHeight / 2,
|
gmenu2x->font->write(s, (*fl)[i], 24, offsetY + rowHeight / 2,
|
||||||
Font::HAlignLeft, Font::VAlignMiddle);
|
Font::HAlignLeft, Font::VAlignMiddle);
|
||||||
|
|
||||||
if (ts.available() && ts.pressed()
|
if (ts.available() && ts.pressed()
|
||||||
@ -283,8 +285,8 @@ void BrowseDialog::paint()
|
|||||||
|
|
||||||
offsetY += rowHeight;
|
offsetY += rowHeight;
|
||||||
}
|
}
|
||||||
gmenu2x->s->clearClipRect();
|
s.clearClipRect();
|
||||||
|
|
||||||
gmenu2x->drawScrollBar(numRows,fl->size(), firstElement);
|
gmenu2x->drawScrollBar(numRows,fl->size(), firstElement);
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
}
|
}
|
||||||
|
@ -22,14 +22,16 @@ void ButtonBox::clear()
|
|||||||
buttons.clear();
|
buttons.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ButtonBox::paint(Surface *s, unsigned int posX)
|
void ButtonBox::paint(Surface& s, unsigned int posX)
|
||||||
{
|
{
|
||||||
for (auto button : buttons)
|
for (auto button : buttons) {
|
||||||
posX = gmenu2x->drawButton(s, button, posX);
|
posX = gmenu2x->drawButton(s, button, posX);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ButtonBox::handleTS()
|
void ButtonBox::handleTS()
|
||||||
{
|
{
|
||||||
for (auto button : buttons)
|
for (auto button : buttons) {
|
||||||
button->handleTS();
|
button->handleTS();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ public:
|
|||||||
void add(IconButton *button);
|
void add(IconButton *button);
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
void paint(Surface *s, unsigned int posX);
|
void paint(Surface& s, unsigned int posX);
|
||||||
void handleTS();
|
void handleTS();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -127,7 +127,7 @@ void ContextMenu::paint(Surface &s)
|
|||||||
|
|
||||||
// List options.
|
// List options.
|
||||||
for (uint i = 0; i < options.size(); i++) {
|
for (uint i = 0; i < options.size(); i++) {
|
||||||
font.write(&s, options[i]->text, box.x + 12, box.y + 5 + (h + 2) * i,
|
font.write(s, options[i]->text, box.x + 12, box.y + 5 + (h + 2) * i,
|
||||||
Font::HAlignLeft, Font::VAlignTop);
|
Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ Dialog::Dialog(GMenu2X *gmenu2x) : gmenu2x(gmenu2x)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dialog::drawTitleIcon(Surface *s, const std::string &icon, bool skinRes)
|
void Dialog::drawTitleIcon(Surface& s, const std::string &icon, bool skinRes)
|
||||||
{
|
{
|
||||||
Surface *i = NULL;
|
Surface *i = NULL;
|
||||||
if (!icon.empty()) {
|
if (!icon.empty()) {
|
||||||
@ -21,16 +21,19 @@ void Dialog::drawTitleIcon(Surface *s, const std::string &icon, bool skinRes)
|
|||||||
if (i==NULL)
|
if (i==NULL)
|
||||||
i = gmenu2x->sc.skinRes("icons/generic.png");
|
i = gmenu2x->sc.skinRes("icons/generic.png");
|
||||||
|
|
||||||
i->blit(s,4,(gmenu2x->skinConfInt["topBarHeight"]-32)/2);
|
i->blit(s, 4, (gmenu2x->skinConfInt["topBarHeight"] - 32) / 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dialog::writeTitle(Surface *s, const std::string &title)
|
void Dialog::writeTitle(Surface& s, const std::string &title)
|
||||||
{
|
{
|
||||||
gmenu2x->font->write(s, title, 40, 0, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, title, 40, 0, Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Dialog::writeSubTitle(Surface *s, const std::string &subtitle)
|
void Dialog::writeSubTitle(Surface& s, const std::string &subtitle)
|
||||||
{
|
{
|
||||||
std::string wrapped = gmenu2x->font->wordWrap(subtitle, gmenu2x->resX - 48);
|
std::string wrapped = gmenu2x->font->wordWrap(subtitle, gmenu2x->resX - 48);
|
||||||
gmenu2x->font->write(s, wrapped, 40, gmenu2x->skinConfInt["topBarHeight"] - gmenu2x->font->getTextHeight(wrapped), Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, wrapped, 40,
|
||||||
|
gmenu2x->skinConfInt["topBarHeight"]
|
||||||
|
- gmenu2x->font->getTextHeight(wrapped),
|
||||||
|
Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
@ -12,9 +12,9 @@ public:
|
|||||||
Dialog(GMenu2X *gmenu2x);
|
Dialog(GMenu2X *gmenu2x);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void drawTitleIcon(Surface *s, const std::string &icon, bool skinRes = false);
|
void drawTitleIcon(Surface& s, const std::string &icon, bool skinRes = false);
|
||||||
void writeTitle(Surface *s, const std::string &title);
|
void writeTitle(Surface& s, const std::string &title);
|
||||||
void writeSubTitle(Surface *s, const std::string &subtitle);
|
void writeSubTitle(Surface& s, const std::string &subtitle);
|
||||||
|
|
||||||
GMenu2X *gmenu2x;
|
GMenu2X *gmenu2x;
|
||||||
};
|
};
|
||||||
|
14
src/font.cpp
14
src/font.cpp
@ -197,7 +197,7 @@ int Font::getTextHeight(const string &text)
|
|||||||
return nLines * getLineSpacing();
|
return nLines * getLineSpacing();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Font::write(Surface *surface, const string &text,
|
void Font::write(Surface& surface, const string &text,
|
||||||
int x, int y, HAlign halign, VAlign valign)
|
int x, int y, HAlign halign, VAlign valign)
|
||||||
{
|
{
|
||||||
if (!font) {
|
if (!font) {
|
||||||
@ -220,7 +220,7 @@ void Font::write(Surface *surface, const string &text,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Font::writeLine(Surface *surface, std::string const& text,
|
void Font::writeLine(Surface& surface, std::string const& text,
|
||||||
int x, int y, HAlign halign, VAlign valign)
|
int x, int y, HAlign halign, VAlign valign)
|
||||||
{
|
{
|
||||||
if (!font) {
|
if (!font) {
|
||||||
@ -261,21 +261,21 @@ void Font::writeLine(Surface *surface, std::string const& text,
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDL_Rect rect = { (Sint16) x, (Sint16) (y - 1), 0, 0 };
|
SDL_Rect rect = { (Sint16) x, (Sint16) (y - 1), 0, 0 };
|
||||||
SDL_BlitSurface(s, NULL, surface->raw, &rect);
|
SDL_BlitSurface(s, NULL, surface.raw, &rect);
|
||||||
|
|
||||||
/* Note: rect.x / rect.y are reset everytime because SDL_BlitSurface
|
/* Note: rect.x / rect.y are reset everytime because SDL_BlitSurface
|
||||||
* will modify them if negative */
|
* will modify them if negative */
|
||||||
rect.x = x;
|
rect.x = x;
|
||||||
rect.y = y + 1;
|
rect.y = y + 1;
|
||||||
SDL_BlitSurface(s, NULL, surface->raw, &rect);
|
SDL_BlitSurface(s, NULL, surface.raw, &rect);
|
||||||
|
|
||||||
rect.x = x - 1;
|
rect.x = x - 1;
|
||||||
rect.y = y;
|
rect.y = y;
|
||||||
SDL_BlitSurface(s, NULL, surface->raw, &rect);
|
SDL_BlitSurface(s, NULL, surface.raw, &rect);
|
||||||
|
|
||||||
rect.x = x + 1;
|
rect.x = x + 1;
|
||||||
rect.y = y;
|
rect.y = y;
|
||||||
SDL_BlitSurface(s, NULL, surface->raw, &rect);
|
SDL_BlitSurface(s, NULL, surface.raw, &rect);
|
||||||
SDL_FreeSurface(s);
|
SDL_FreeSurface(s);
|
||||||
|
|
||||||
rect.x = x;
|
rect.x = x;
|
||||||
@ -289,6 +289,6 @@ void Font::writeLine(Surface *surface, std::string const& text,
|
|||||||
ERROR("Font rendering failed for text \"%s\"\n", text.c_str());
|
ERROR("Font rendering failed for text \"%s\"\n", text.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
SDL_BlitSurface(s, NULL, surface->raw, &rect);
|
SDL_BlitSurface(s, NULL, surface.raw, &rect);
|
||||||
SDL_FreeSurface(s);
|
SDL_FreeSurface(s);
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public:
|
|||||||
return lineSpacing;
|
return lineSpacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
void write(Surface *surface,
|
void write(Surface& surface,
|
||||||
const std::string &text, int x, int y,
|
const std::string &text, int x, int y,
|
||||||
HAlign halign = HAlignLeft, VAlign valign = VAlignTop);
|
HAlign halign = HAlignLeft, VAlign valign = VAlignTop);
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ private:
|
|||||||
std::string wordWrapSingleLine(const std::string &text,
|
std::string wordWrapSingleLine(const std::string &text,
|
||||||
size_t start, size_t end, int width);
|
size_t start, size_t end, int width);
|
||||||
|
|
||||||
void writeLine(Surface *surface, std::string const& text,
|
void writeLine(Surface& surface, std::string const& text,
|
||||||
int x, int y, HAlign halign, VAlign valign);
|
int x, int y, HAlign halign, VAlign valign);
|
||||||
|
|
||||||
TTF_Font *font;
|
TTF_Font *font;
|
||||||
|
@ -322,17 +322,17 @@ void GMenu2X::initBG() {
|
|||||||
bg = Surface::emptySurface(resX, resY);
|
bg = Surface::emptySurface(resX, resY);
|
||||||
}
|
}
|
||||||
|
|
||||||
drawTopBar(bg);
|
drawTopBar(*bg);
|
||||||
drawBottomBar(bg);
|
drawBottomBar(*bg);
|
||||||
|
|
||||||
Surface *bgmain = new Surface(bg);
|
Surface *bgmain = new Surface(bg);
|
||||||
sc.add(bgmain,"bgmain");
|
sc.add(bgmain,"bgmain");
|
||||||
|
|
||||||
Surface *sd = Surface::loadImage("imgs/sd.png", confStr["skin"]);
|
Surface *sd = Surface::loadImage("imgs/sd.png", confStr["skin"]);
|
||||||
if (sd) sd->blit(bgmain, 3, bottomBarIconY);
|
if (sd) sd->blit(*bgmain, 3, bottomBarIconY);
|
||||||
|
|
||||||
string df = getDiskFree(getHome().c_str());
|
string df = getDiskFree(getHome().c_str());
|
||||||
font->write(bgmain, df, 22, bottomBarTextY, Font::HAlignLeft, Font::VAlignMiddle);
|
font->write(*bgmain, df, 22, bottomBarTextY, Font::HAlignLeft, Font::VAlignMiddle);
|
||||||
delete sd;
|
delete sd;
|
||||||
|
|
||||||
cpuX = font->getTextWidth(df)+32;
|
cpuX = font->getTextWidth(df)+32;
|
||||||
@ -351,20 +351,20 @@ void GMenu2X::initBG() {
|
|||||||
if (web) {
|
if (web) {
|
||||||
Surface *webserver = Surface::loadImage(
|
Surface *webserver = Surface::loadImage(
|
||||||
"imgs/webserver.png", confStr["skin"]);
|
"imgs/webserver.png", confStr["skin"]);
|
||||||
if (webserver) webserver->blit(bgmain, serviceX, bottomBarIconY);
|
if (webserver) webserver->blit(*bgmain, serviceX, bottomBarIconY);
|
||||||
serviceX -= 19;
|
serviceX -= 19;
|
||||||
delete webserver;
|
delete webserver;
|
||||||
}
|
}
|
||||||
if (samba) {
|
if (samba) {
|
||||||
Surface *sambaS = Surface::loadImage(
|
Surface *sambaS = Surface::loadImage(
|
||||||
"imgs/samba.png", confStr["skin"]);
|
"imgs/samba.png", confStr["skin"]);
|
||||||
if (sambaS) sambaS->blit(bgmain, serviceX, bottomBarIconY);
|
if (sambaS) sambaS->blit(*bgmain, serviceX, bottomBarIconY);
|
||||||
serviceX -= 19;
|
serviceX -= 19;
|
||||||
delete sambaS;
|
delete sambaS;
|
||||||
}
|
}
|
||||||
if (inet) {
|
if (inet) {
|
||||||
Surface *inetS = Surface::loadImage("imgs/inet.png", confStr["skin"]);
|
Surface *inetS = Surface::loadImage("imgs/inet.png", confStr["skin"]);
|
||||||
if (inetS) inetS->blit(bgmain, serviceX, bottomBarIconY);
|
if (inetS) inetS->blit(*bgmain, serviceX, bottomBarIconY);
|
||||||
serviceX -= 19;
|
serviceX -= 19;
|
||||||
delete inetS;
|
delete inetS;
|
||||||
}
|
}
|
||||||
@ -1044,14 +1044,14 @@ string GMenu2X::getDiskFree(const char *path) {
|
|||||||
return df;
|
return df;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GMenu2X::drawButton(Surface *s, IconButton *btn, int x, int y) {
|
int GMenu2X::drawButton(Surface& s, IconButton *btn, int x, int y) {
|
||||||
if (y<0) y = resY+y;
|
if (y<0) y = resY+y;
|
||||||
btn->setPosition(x, y-7);
|
btn->setPosition(x, y-7);
|
||||||
btn->paint(s);
|
btn->paint(s);
|
||||||
return x+btn->getRect().w+6;
|
return x+btn->getRect().w+6;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GMenu2X::drawButton(Surface *s, const string &btn, const string &text, int x, int y) {
|
int GMenu2X::drawButton(Surface& s, const string &btn, const string &text, int x, int y) {
|
||||||
if (y<0) y = resY+y;
|
if (y<0) y = resY+y;
|
||||||
SDL_Rect re = { static_cast<Sint16>(x), static_cast<Sint16>(y - 7), 0, 16 };
|
SDL_Rect re = { static_cast<Sint16>(x), static_cast<Sint16>(y - 7), 0, 16 };
|
||||||
if (sc.skinRes("imgs/buttons/"+btn+".png") != NULL) {
|
if (sc.skinRes("imgs/buttons/"+btn+".png") != NULL) {
|
||||||
@ -1063,7 +1063,7 @@ int GMenu2X::drawButton(Surface *s, const string &btn, const string &text, int x
|
|||||||
return x+re.w+6;
|
return x+re.w+6;
|
||||||
}
|
}
|
||||||
|
|
||||||
int GMenu2X::drawButtonRight(Surface *s, const string &btn, const string &text, int x, int y) {
|
int GMenu2X::drawButtonRight(Surface& s, const string &btn, const string &text, int x, int y) {
|
||||||
if (y<0) y = resY+y;
|
if (y<0) y = resY+y;
|
||||||
if (sc.skinRes("imgs/buttons/"+btn+".png") != NULL) {
|
if (sc.skinRes("imgs/buttons/"+btn+".png") != NULL) {
|
||||||
x -= 16;
|
x -= 16;
|
||||||
@ -1097,22 +1097,22 @@ void GMenu2X::drawScrollBar(uint pageSize, uint totalSize, uint pagePos) {
|
|||||||
skinConfColors[COLOR_SELECTION_BG]);
|
skinConfColors[COLOR_SELECTION_BG]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMenu2X::drawTopBar(Surface *s) {
|
void GMenu2X::drawTopBar(Surface& s) {
|
||||||
Surface *bar = sc.skinRes("imgs/topbar.png", false);
|
Surface *bar = sc.skinRes("imgs/topbar.png", false);
|
||||||
if (bar) {
|
if (bar) {
|
||||||
bar->blit(s, 0, 0);
|
bar->blit(s, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
const int h = skinConfInt["topBarHeight"];
|
const int h = skinConfInt["topBarHeight"];
|
||||||
s->box(0, 0, resX, h, skinConfColors[COLOR_TOP_BAR_BG]);
|
s.box(0, 0, resX, h, skinConfColors[COLOR_TOP_BAR_BG]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMenu2X::drawBottomBar(Surface *s) {
|
void GMenu2X::drawBottomBar(Surface& s) {
|
||||||
Surface *bar = sc.skinRes("imgs/bottombar.png", false);
|
Surface *bar = sc.skinRes("imgs/bottombar.png", false);
|
||||||
if (bar) {
|
if (bar) {
|
||||||
bar->blit(s, 0, resY-bar->height());
|
bar->blit(s, 0, resY-bar->height());
|
||||||
} else {
|
} else {
|
||||||
const int h = skinConfInt["bottomBarHeight"];
|
const int h = skinConfInt["bottomBarHeight"];
|
||||||
s->box(0, resY - h, resX, h, skinConfColors[COLOR_BOTTOM_BAR_BG]);
|
s.box(0, resY - h, resX, h, skinConfColors[COLOR_BOTTOM_BAR_BG]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -199,13 +199,13 @@ public:
|
|||||||
void renameSection();
|
void renameSection();
|
||||||
void deleteSection();
|
void deleteSection();
|
||||||
|
|
||||||
int drawButton(Surface *s, IconButton *btn, int x=5, int y=-10);
|
int drawButton(Surface& s, IconButton *btn, int x=5, int y=-10);
|
||||||
int drawButton(Surface *s, const std::string &btn, const std::string &text, int x=5, int y=-10);
|
int drawButton(Surface& s, const std::string &btn, const std::string &text, int x=5, int y=-10);
|
||||||
int drawButtonRight(Surface *s, const std::string &btn, const std::string &text, int x=5, int y=-10);
|
int drawButtonRight(Surface& s, const std::string &btn, const std::string &text, int x=5, int y=-10);
|
||||||
void drawScrollBar(uint pageSize, uint totalSize, uint pagePos);
|
void drawScrollBar(uint pageSize, uint totalSize, uint pagePos);
|
||||||
|
|
||||||
void drawTopBar(Surface *s);
|
void drawTopBar(Surface& s);
|
||||||
void drawBottomBar(Surface *s);
|
void drawBottomBar(Surface& s);
|
||||||
|
|
||||||
Touchscreen &getTouchscreen() { return ts; }
|
Touchscreen &getTouchscreen() { return ts; }
|
||||||
};
|
};
|
||||||
|
@ -6,12 +6,12 @@
|
|||||||
#include "gmenu2x.h"
|
#include "gmenu2x.h"
|
||||||
|
|
||||||
|
|
||||||
HelpPopup::HelpPopup(GMenu2X &gmenu2x)
|
HelpPopup::HelpPopup(GMenu2X& gmenu2x)
|
||||||
: gmenu2x(gmenu2x)
|
: gmenu2x(gmenu2x)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void HelpPopup::paint(Surface &s) {
|
void HelpPopup::paint(Surface& s) {
|
||||||
Font& font = *gmenu2x.font;
|
Font& font = *gmenu2x.font;
|
||||||
Translator &tr = gmenu2x.tr;
|
Translator &tr = gmenu2x.tr;
|
||||||
int helpBoxHeight = 154;
|
int helpBoxHeight = 154;
|
||||||
@ -20,13 +20,13 @@ void HelpPopup::paint(Surface &s) {
|
|||||||
gmenu2x.skinConfColors[COLOR_MESSAGE_BOX_BG]);
|
gmenu2x.skinConfColors[COLOR_MESSAGE_BOX_BG]);
|
||||||
s.rectangle(12, 52, 296, helpBoxHeight,
|
s.rectangle(12, 52, 296, helpBoxHeight,
|
||||||
gmenu2x.skinConfColors[COLOR_MESSAGE_BOX_BORDER]);
|
gmenu2x.skinConfColors[COLOR_MESSAGE_BOX_BORDER]);
|
||||||
font.write(&s, tr["CONTROLS"], 20, 60);
|
font.write(s, tr["CONTROLS"], 20, 60);
|
||||||
#if defined(PLATFORM_A320) || defined(PLATFORM_GCW0)
|
#if defined(PLATFORM_A320) || defined(PLATFORM_GCW0)
|
||||||
font.write(&s, tr["A: Launch link / Confirm action"], 20, 80);
|
font.write(s, tr["A: Launch link / Confirm action"], 20, 80);
|
||||||
font.write(&s, tr["B: Show this help menu"], 20, 95);
|
font.write(s, tr["B: Show this help menu"], 20, 95);
|
||||||
font.write(&s, tr["L, R: Change section"], 20, 110);
|
font.write(s, tr["L, R: Change section"], 20, 110);
|
||||||
font.write(&s, tr["SELECT: Show contextual menu"], 20, 155);
|
font.write(s, tr["SELECT: Show contextual menu"], 20, 155);
|
||||||
font.write(&s, tr["START: Show options menu"], 20, 170);
|
font.write(s, tr["START: Show options menu"], 20, 170);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ bool HelpPopup::handleButtonPress(InputManager::Button button) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HelpPopup::handleTouchscreen(Touchscreen &ts) {
|
bool HelpPopup::handleTouchscreen(Touchscreen& ts) {
|
||||||
if (ts.pressed()) {
|
if (ts.pressed()) {
|
||||||
dismiss();
|
dismiss();
|
||||||
ts.setHandled();
|
ts.setHandled();
|
||||||
|
@ -14,15 +14,15 @@ class GMenu2X;
|
|||||||
*/
|
*/
|
||||||
class HelpPopup : public Layer {
|
class HelpPopup : public Layer {
|
||||||
public:
|
public:
|
||||||
HelpPopup(GMenu2X &gmenu2x);
|
HelpPopup(GMenu2X& gmenu2x);
|
||||||
|
|
||||||
// Layer implementation:
|
// Layer implementation:
|
||||||
virtual void paint(Surface &s);
|
virtual void paint(Surface& s);
|
||||||
virtual bool handleButtonPress(InputManager::Button button);
|
virtual bool handleButtonPress(InputManager::Button button);
|
||||||
virtual bool handleTouchscreen(Touchscreen &ts);
|
virtual bool handleTouchscreen(Touchscreen& ts);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GMenu2X &gmenu2x;
|
GMenu2X& gmenu2x;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // HELPPOPUP_H
|
#endif // HELPPOPUP_H
|
||||||
|
@ -65,7 +65,7 @@ bool IconButton::handleTS() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IconButton::paint(Surface *s) {
|
void IconButton::paint(Surface& s) {
|
||||||
if (iconSurface) {
|
if (iconSurface) {
|
||||||
iconSurface->blit(s, iconRect);
|
iconSurface->blit(s, iconRect);
|
||||||
}
|
}
|
||||||
|
@ -23,8 +23,7 @@ public:
|
|||||||
|
|
||||||
bool handleTS();
|
bool handleTS();
|
||||||
|
|
||||||
void paint(Surface *s);
|
void paint(Surface& s);
|
||||||
void paint() { paint(gmenu2x->s); }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void recalcRects();
|
void recalcRects();
|
||||||
|
@ -55,7 +55,7 @@ ImageDialog::~ImageDialog() {
|
|||||||
|
|
||||||
void ImageDialog::beforeFileList() {
|
void ImageDialog::beforeFileList() {
|
||||||
if (fl->isFile(selected) && fileExists(getPath()+"/"+(*fl)[selected]))
|
if (fl->isFile(selected) && fileExists(getPath()+"/"+(*fl)[selected]))
|
||||||
previews[getPath()+"/"+(*fl)[selected]]->blitRight(gmenu2x->s, 310, 43);
|
previews[getPath()+"/"+(*fl)[selected]]->blitRight(*gmenu2x->s, 310, 43);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImageDialog::onChangeDir() {
|
void ImageDialog::onChangeDir() {
|
||||||
|
@ -150,25 +150,27 @@ bool InputDialog::exec() {
|
|||||||
bool caretOn = true;
|
bool caretOn = true;
|
||||||
|
|
||||||
Surface bg(gmenu2x->bg);
|
Surface bg(gmenu2x->bg);
|
||||||
drawTitleIcon(&bg, icon, false);
|
drawTitleIcon(bg, icon, false);
|
||||||
writeTitle(&bg, title);
|
writeTitle(bg, title);
|
||||||
writeSubTitle(&bg, text);
|
writeSubTitle(bg, text);
|
||||||
buttonbox->paint(&bg, 5);
|
buttonbox->paint(bg, 5);
|
||||||
bg.convertToDisplayFormat();
|
bg.convertToDisplayFormat();
|
||||||
|
|
||||||
close = false;
|
close = false;
|
||||||
ok = true;
|
ok = true;
|
||||||
while (!close) {
|
while (!close) {
|
||||||
bg.blit(gmenu2x->s,0,0);
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
|
bg.blit(s, 0, 0);
|
||||||
|
|
||||||
box.w = gmenu2x->font->getTextWidth(input) + 18;
|
box.w = gmenu2x->font->getTextWidth(input) + 18;
|
||||||
box.x = 160 - box.w / 2;
|
box.x = 160 - box.w / 2;
|
||||||
gmenu2x->s->box(box.x, box.y, box.w, box.h,
|
s.box(box.x, box.y, box.w, box.h,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
gmenu2x->s->rectangle(box.x, box.y, box.w, box.h,
|
s.rectangle(box.x, box.y, box.w, box.h,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
|
|
||||||
gmenu2x->font->write(gmenu2x->s, input, box.x + 5, box.y + box.h - 2,
|
gmenu2x->font->write(s, input, box.x + 5, box.y + box.h - 2,
|
||||||
Font::HAlignLeft, Font::VAlignBottom);
|
Font::HAlignLeft, Font::VAlignBottom);
|
||||||
|
|
||||||
curTick = SDL_GetTicks();
|
curTick = SDL_GetTicks();
|
||||||
@ -178,13 +180,13 @@ bool InputDialog::exec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (caretOn) {
|
if (caretOn) {
|
||||||
gmenu2x->s->box(box.x + box.w - 12, box.y + 3, 8, box.h - 6,
|
s.box(box.x + box.w - 12, box.y + 3, 8, box.h - 6,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ts.available()) ts.poll();
|
if (ts.available()) ts.poll();
|
||||||
drawVirtualKeyboard();
|
drawVirtualKeyboard();
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
|
|
||||||
switch (inputMgr.waitForPressedButton()) {
|
switch (inputMgr.waitForPressedButton()) {
|
||||||
case InputManager::SETTINGS:
|
case InputManager::SETTINGS:
|
||||||
@ -264,8 +266,10 @@ void InputDialog::changeKeys() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void InputDialog::drawVirtualKeyboard() {
|
void InputDialog::drawVirtualKeyboard() {
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
//keyboard border
|
//keyboard border
|
||||||
gmenu2x->s->rectangle(kbRect, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
s.rectangle(kbRect, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
|
|
||||||
if (selCol<0) selCol = selRow==(int)kb->size() ? 1 : kbLength-1;
|
if (selCol<0) selCol = selRow==(int)kb->size() ? 1 : kbLength-1;
|
||||||
if (selCol>=(int)kbLength) selCol = 0;
|
if (selCol>=(int)kbLength) selCol = 0;
|
||||||
@ -274,13 +278,13 @@ void InputDialog::drawVirtualKeyboard() {
|
|||||||
|
|
||||||
//selection
|
//selection
|
||||||
if (selRow<(int)kb->size())
|
if (selRow<(int)kb->size())
|
||||||
gmenu2x->s->box(kbLeft + selCol * KEY_WIDTH - 1,
|
s.box(kbLeft + selCol * KEY_WIDTH - 1,
|
||||||
KB_TOP + selRow * KEY_HEIGHT, KEY_WIDTH - 1, KEY_HEIGHT - 2,
|
KB_TOP + selRow * KEY_HEIGHT, KEY_WIDTH - 1, KEY_HEIGHT - 2,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
else {
|
else {
|
||||||
if (selCol > 1) selCol = 0;
|
if (selCol > 1) selCol = 0;
|
||||||
if (selCol < 0) selCol = 1;
|
if (selCol < 0) selCol = 1;
|
||||||
gmenu2x->s->box(kbLeft + selCol * kbLength * KEY_WIDTH / 2 - 1,
|
s.box(kbLeft + selCol * kbLength * KEY_WIDTH / 2 - 1,
|
||||||
KB_TOP + kb->size() * KEY_HEIGHT, kbLength * KEY_WIDTH / 2 - 1,
|
KB_TOP + kb->size() * KEY_HEIGHT, kbLength * KEY_WIDTH / 2 - 1,
|
||||||
KEY_HEIGHT - 1, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
KEY_HEIGHT - 1, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
}
|
}
|
||||||
@ -310,9 +314,9 @@ void InputDialog::drawVirtualKeyboard() {
|
|||||||
selRow = l;
|
selRow = l;
|
||||||
}
|
}
|
||||||
|
|
||||||
gmenu2x->s->rectangle(re,
|
s.rectangle(re,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
gmenu2x->font->write(gmenu2x->s, charX,
|
gmenu2x->font->write(s, charX,
|
||||||
kbLeft + xc * KEY_WIDTH + KEY_WIDTH / 2 - 1,
|
kbLeft + xc * KEY_WIDTH + KEY_WIDTH / 2 - 1,
|
||||||
KB_TOP + l * KEY_HEIGHT + KEY_HEIGHT / 2,
|
KB_TOP + l * KEY_HEIGHT + KEY_HEIGHT / 2,
|
||||||
Font::HAlignCenter, Font::VAlignMiddle);
|
Font::HAlignCenter, Font::VAlignMiddle);
|
||||||
@ -327,23 +331,23 @@ void InputDialog::drawVirtualKeyboard() {
|
|||||||
static_cast<Uint16>(kbLength * KEY_WIDTH / 2 - 1),
|
static_cast<Uint16>(kbLength * KEY_WIDTH / 2 - 1),
|
||||||
KEY_HEIGHT - 1
|
KEY_HEIGHT - 1
|
||||||
};
|
};
|
||||||
gmenu2x->s->rectangle(re, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
s.rectangle(re, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
if (ts.available() && ts.pressed() && ts.inRect(re)) {
|
if (ts.available() && ts.pressed() && ts.inRect(re)) {
|
||||||
selCol = 0;
|
selCol = 0;
|
||||||
selRow = kb->size();
|
selRow = kb->size();
|
||||||
}
|
}
|
||||||
gmenu2x->font->write(gmenu2x->s, gmenu2x->tr["Cancel"],
|
gmenu2x->font->write(s, gmenu2x->tr["Cancel"],
|
||||||
(int)(160 - kbLength * KEY_WIDTH / 4),
|
(int)(160 - kbLength * KEY_WIDTH / 4),
|
||||||
KB_TOP + kb->size() * KEY_HEIGHT + KEY_HEIGHT / 2,
|
KB_TOP + kb->size() * KEY_HEIGHT + KEY_HEIGHT / 2,
|
||||||
Font::HAlignCenter, Font::VAlignMiddle);
|
Font::HAlignCenter, Font::VAlignMiddle);
|
||||||
|
|
||||||
re.x = kbLeft + kbLength * KEY_WIDTH / 2 - 1;
|
re.x = kbLeft + kbLength * KEY_WIDTH / 2 - 1;
|
||||||
gmenu2x->s->rectangle(re, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
s.rectangle(re, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
if (ts.available() && ts.pressed() && ts.inRect(re)) {
|
if (ts.available() && ts.pressed() && ts.inRect(re)) {
|
||||||
selCol = 1;
|
selCol = 1;
|
||||||
selRow = kb->size();
|
selRow = kb->size();
|
||||||
}
|
}
|
||||||
gmenu2x->font->write(gmenu2x->s, gmenu2x->tr["OK"],
|
gmenu2x->font->write(s, gmenu2x->tr["OK"],
|
||||||
(int)(160 + kbLength * KEY_WIDTH / 4),
|
(int)(160 + kbLength * KEY_WIDTH / 4),
|
||||||
KB_TOP + kb->size() * KEY_HEIGHT + KEY_HEIGHT / 2,
|
KB_TOP + kb->size() * KEY_HEIGHT + KEY_HEIGHT / 2,
|
||||||
Font::HAlignCenter, Font::VAlignMiddle);
|
Font::HAlignCenter, Font::VAlignMiddle);
|
||||||
|
12
src/link.cpp
12
src/link.cpp
@ -67,17 +67,21 @@ bool Link::handleTS() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Link::paint() {
|
void Link::paint() {
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
if (iconSurface) {
|
if (iconSurface) {
|
||||||
iconSurface->blit(gmenu2x->s, iconX, rect.y+padding, 32,32);
|
iconSurface->blit(s, iconX, rect.y+padding, 32,32);
|
||||||
}
|
}
|
||||||
gmenu2x->font->write(gmenu2x->s, getTitle(), iconX+16, rect.y + gmenu2x->skinConfInt["linkHeight"]-padding, Font::HAlignCenter, Font::VAlignBottom);
|
gmenu2x->font->write(s, getTitle(), iconX+16, rect.y + gmenu2x->skinConfInt["linkHeight"]-padding, Font::HAlignCenter, Font::VAlignBottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Link::paintHover() {
|
void Link::paintHover() {
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
if (gmenu2x->useSelectionPng)
|
if (gmenu2x->useSelectionPng)
|
||||||
gmenu2x->sc["imgs/selection.png"]->blit(gmenu2x->s, rect, Font::HAlignCenter, Font::VAlignMiddle);
|
gmenu2x->sc["imgs/selection.png"]->blit(s, rect, Font::HAlignCenter, Font::VAlignMiddle);
|
||||||
else
|
else
|
||||||
gmenu2x->s->box(rect.x, rect.y, rect.w, rect.h, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
s.box(rect.x, rect.y, rect.w, rect.h, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Link::updateSurfaces()
|
void Link::updateSurfaces()
|
||||||
|
@ -371,8 +371,8 @@ void LinkApp::drawLaunch(Surface& s) {
|
|||||||
gmenu2x->sc[getIcon()]->blit(gmenu2x->s,x,104);
|
gmenu2x->sc[getIcon()]->blit(gmenu2x->s,x,104);
|
||||||
else
|
else
|
||||||
gmenu2x->sc["icons/generic.png"]->blit(gmenu2x->s,x,104);*/
|
gmenu2x->sc["icons/generic.png"]->blit(gmenu2x->s,x,104);*/
|
||||||
iconSurface->blit(&s, x, gmenu2x->halfY - 16);
|
iconSurface->blit(s, x, gmenu2x->halfY - 16);
|
||||||
gmenu2x->font->write(&s, text, x + 42, gmenu2x->halfY + 1, Font::HAlignLeft, Font::VAlignMiddle);
|
gmenu2x->font->write(s, text, x + 42, gmenu2x->halfY + 1, Font::HAlignLeft, Font::VAlignMiddle);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LinkApp::start() {
|
void LinkApp::start() {
|
||||||
@ -459,23 +459,25 @@ void LinkApp::showManual() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (!close) {
|
while (!close) {
|
||||||
if (repaint) {
|
Surface& s = *gmenu2x->s;
|
||||||
bg->blit(gmenu2x->s, 0, 0);
|
|
||||||
pngman->blit(gmenu2x->s, -page*320, 0);
|
|
||||||
|
|
||||||
gmenu2x->drawBottomBar(gmenu2x->s);
|
if (repaint) {
|
||||||
gmenu2x->drawButton(gmenu2x->s, "start", gmenu2x->tr["Exit"],
|
bg->blit(s, 0, 0);
|
||||||
gmenu2x->drawButton(gmenu2x->s, "cancel", "",
|
pngman->blit(s, -page*320, 0);
|
||||||
gmenu2x->drawButton(gmenu2x->s, "right", gmenu2x->tr["Change page"],
|
|
||||||
gmenu2x->drawButton(gmenu2x->s, "left", "", 5)-10))-10);
|
gmenu2x->drawBottomBar(s);
|
||||||
|
gmenu2x->drawButton(s, "start", gmenu2x->tr["Exit"],
|
||||||
|
gmenu2x->drawButton(s, "cancel", "",
|
||||||
|
gmenu2x->drawButton(s, "right", gmenu2x->tr["Change page"],
|
||||||
|
gmenu2x->drawButton(s, "left", "", 5)-10))-10);
|
||||||
|
|
||||||
ss.clear();
|
ss.clear();
|
||||||
ss << page+1;
|
ss << page+1;
|
||||||
ss >> pageStatus;
|
ss >> pageStatus;
|
||||||
pageStatus = gmenu2x->tr["Page"]+": "+pageStatus+"/"+spagecount;
|
pageStatus = gmenu2x->tr["Page"]+": "+pageStatus+"/"+spagecount;
|
||||||
gmenu2x->font->write(gmenu2x->s, pageStatus, 310, 230, Font::HAlignRight, Font::VAlignMiddle);
|
gmenu2x->font->write(s, pageStatus, 310, 230, Font::HAlignRight, Font::VAlignMiddle);
|
||||||
|
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
repaint = false;
|
repaint = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
src/menu.cpp
14
src/menu.cpp
@ -221,12 +221,12 @@ void Menu::paint(Surface &s) {
|
|||||||
int t = sectionDelta < 0 ? sectionDelta + linkWidth : sectionDelta;
|
int t = sectionDelta < 0 ? sectionDelta + linkWidth : sectionDelta;
|
||||||
x += (((t * t) / linkWidth) * t) / linkWidth;
|
x += (((t * t) / linkWidth) * t) / linkWidth;
|
||||||
}
|
}
|
||||||
icon->blit(&s, x - 16, sectionLinkPadding, 32, 32);
|
icon->blit(s, x - 16, sectionLinkPadding, 32, 32);
|
||||||
font.write(&s, sections[j], x, topBarHeight - sectionLinkPadding,
|
font.write(s, sections[j], x, topBarHeight - sectionLinkPadding,
|
||||||
Font::HAlignCenter, Font::VAlignBottom);
|
Font::HAlignCenter, Font::VAlignBottom);
|
||||||
}
|
}
|
||||||
sc.skinRes("imgs/section-l.png")->blit(&s, 0, 0);
|
sc.skinRes("imgs/section-l.png")->blit(s, 0, 0);
|
||||||
sc.skinRes("imgs/section-r.png")->blit(&s, width - 10, 0);
|
sc.skinRes("imgs/section-r.png")->blit(s, width - 10, 0);
|
||||||
|
|
||||||
vector<Link*> §ionLinks = links[iSection];
|
vector<Link*> §ionLinks = links[iSection];
|
||||||
const uint numLinks = sectionLinks.size();
|
const uint numLinks = sectionLinks.size();
|
||||||
@ -254,7 +254,7 @@ void Menu::paint(Surface &s) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (selLink()) {
|
if (selLink()) {
|
||||||
font.write(&s, selLink()->getDescription(),
|
font.write(s, selLink()->getDescription(),
|
||||||
width / 2, height - bottomBarHeight + 2,
|
width / 2, height - bottomBarHeight + 2,
|
||||||
Font::HAlignCenter, Font::VAlignBottom);
|
Font::HAlignCenter, Font::VAlignBottom);
|
||||||
}
|
}
|
||||||
@ -269,11 +269,11 @@ void Menu::paint(Surface &s) {
|
|||||||
//Manual indicator
|
//Manual indicator
|
||||||
if (!linkApp->getManual().empty())
|
if (!linkApp->getManual().empty())
|
||||||
sc.skinRes("imgs/manual.png")->blit(
|
sc.skinRes("imgs/manual.png")->blit(
|
||||||
&s, gmenu2x->manualX, gmenu2x->bottomBarIconY);
|
s, gmenu2x->manualX, gmenu2x->bottomBarIconY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ts.available()) {
|
if (ts.available()) {
|
||||||
btnContextMenu->paint();
|
btnContextMenu->paint(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,8 @@ MenuSetting::~MenuSetting()
|
|||||||
|
|
||||||
void MenuSetting::draw(int /*valueX*/, int y, int /*h*/)
|
void MenuSetting::draw(int /*valueX*/, int y, int /*h*/)
|
||||||
{
|
{
|
||||||
gmenu2x->font->write(gmenu2x->s, name, 5, y, Font::HAlignLeft, Font::VAlignTop);
|
Surface& s = *gmenu2x->s;
|
||||||
|
gmenu2x->font->write(s, name, 5, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuSetting::handleTS(int /*valueX*/, int /*y*/, int /*h*/)
|
void MenuSetting::handleTS(int /*valueX*/, int /*y*/, int /*h*/)
|
||||||
@ -51,9 +52,11 @@ void MenuSetting::handleTS(int /*valueX*/, int /*y*/, int /*h*/)
|
|||||||
|
|
||||||
void MenuSetting::drawSelected(int valueX, int y, int h)
|
void MenuSetting::drawSelected(int valueX, int y, int h)
|
||||||
{
|
{
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
// The selection rectangle
|
// The selection rectangle
|
||||||
gmenu2x->s->box(0, y, valueX - 5, h,
|
s.box(0, y, valueX - 5, h,
|
||||||
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
|
|
||||||
buttonBox.paint(gmenu2x->s, 5);
|
buttonBox.paint(s, 5);
|
||||||
}
|
}
|
||||||
|
@ -67,8 +67,9 @@ void MenuSettingBool::initButton()
|
|||||||
|
|
||||||
void MenuSettingBool::draw(int valueX, int y, int h)
|
void MenuSettingBool::draw(int valueX, int y, int h)
|
||||||
{
|
{
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
MenuSetting::draw(valueX, y, h);
|
MenuSetting::draw(valueX, y, h);
|
||||||
gmenu2x->font->write(gmenu2x->s, strvalue, valueX, y, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, strvalue, valueX, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MenuSettingBool::handleButtonPress(InputManager::Button button)
|
bool MenuSettingBool::handleButtonPress(InputManager::Button button)
|
||||||
|
@ -69,8 +69,9 @@ MenuSettingInt::MenuSettingInt(
|
|||||||
|
|
||||||
void MenuSettingInt::draw(int valueX, int y, int h)
|
void MenuSettingInt::draw(int valueX, int y, int h)
|
||||||
{
|
{
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
MenuSetting::draw(valueX, y, h);
|
MenuSetting::draw(valueX, y, h);
|
||||||
gmenu2x->font->write(gmenu2x->s, strvalue, valueX, y, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, strvalue, valueX, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MenuSettingInt::handleButtonPress(InputManager::Button button)
|
bool MenuSettingInt::handleButtonPress(InputManager::Button button)
|
||||||
|
@ -52,14 +52,16 @@ MenuSettingRGBA::MenuSettingRGBA(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MenuSettingRGBA::draw(int valueX, int y, int h) {
|
void MenuSettingRGBA::draw(int valueX, int y, int h) {
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
MenuSetting::draw(valueX, y, h);
|
MenuSetting::draw(valueX, y, h);
|
||||||
gmenu2x->s->rectangle( valueX, y + 1, h - 2, h - 2, 0,0,0,255 );
|
s.rectangle(valueX, y + 1, h - 2, h - 2, 0,0,0,255);
|
||||||
gmenu2x->s->rectangle( valueX + 1, y + 2, h - 4, h - 4, 255,255,255,255 );
|
s.rectangle(valueX + 1, y + 2, h - 4, h - 4, 255,255,255,255);
|
||||||
gmenu2x->s->box( valueX + 2, y + 3, h - 6, h - 6, value() );
|
s.box(valueX + 2, y + 3, h - 6, h - 6, value());
|
||||||
gmenu2x->font->write(gmenu2x->s, "R: "+strR, valueX + h + 3, y, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, "R: "+strR, valueX + h + 3, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
gmenu2x->font->write(gmenu2x->s, "G: "+strG, valueX + h + 3 + COMPONENT_WIDTH, y, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, "G: "+strG, valueX + h + 3 + COMPONENT_WIDTH, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
gmenu2x->font->write(gmenu2x->s, "B: "+strB, valueX + h + 3 + COMPONENT_WIDTH * 2, y, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, "B: "+strB, valueX + h + 3 + COMPONENT_WIDTH * 2, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
gmenu2x->font->write(gmenu2x->s, "A: "+strA, valueX + h + 3 + COMPONENT_WIDTH * 3, y, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(s, "A: "+strA, valueX + h + 3 + COMPONENT_WIDTH * 3, y, Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MenuSettingRGBA::handleTS(int valueX, int y, int h) {
|
void MenuSettingRGBA::handleTS(int valueX, int y, int h) {
|
||||||
|
@ -39,8 +39,9 @@ MenuSettingStringBase::~MenuSettingStringBase()
|
|||||||
|
|
||||||
void MenuSettingStringBase::draw(int valueX, int y, int h)
|
void MenuSettingStringBase::draw(int valueX, int y, int h)
|
||||||
{
|
{
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
MenuSetting::draw(valueX, y, h);
|
MenuSetting::draw(valueX, y, h);
|
||||||
gmenu2x->font->write(gmenu2x->s, value(), valueX, y,
|
gmenu2x->font->write(s, value(), valueX, y,
|
||||||
Font::HAlignLeft, Font::VAlignTop);
|
Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,8 @@ void MessageBox::setButton(InputManager::Button button, const string &label) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int MessageBox::exec() {
|
int MessageBox::exec() {
|
||||||
Surface bg(gmenu2x->s);
|
Surface& s = *gmenu2x->s;
|
||||||
|
Surface bg(s);
|
||||||
//Darken background
|
//Darken background
|
||||||
bg.box(0, 0, gmenu2x->resX, gmenu2x->resY, 0,0,0,200);
|
bg.box(0, 0, gmenu2x->resX, gmenu2x->resY, 0,0,0,200);
|
||||||
|
|
||||||
@ -83,9 +84,9 @@ int MessageBox::exec() {
|
|||||||
bg.rectangle(box, gmenu2x->skinConfColors[COLOR_MESSAGE_BOX_BORDER]);
|
bg.rectangle(box, gmenu2x->skinConfColors[COLOR_MESSAGE_BOX_BORDER]);
|
||||||
//icon+text
|
//icon+text
|
||||||
if (gmenu2x->sc[icon]) {
|
if (gmenu2x->sc[icon]) {
|
||||||
gmenu2x->sc[icon]->blitCenter( &bg, box.x + ICON_PADDING + ICON_DIMENSION / 2, box.y + ICON_PADDING + ICON_DIMENSION / 2 );
|
gmenu2x->sc[icon]->blitCenter(bg, box.x + ICON_PADDING + ICON_DIMENSION / 2, box.y + ICON_PADDING + ICON_DIMENSION / 2);
|
||||||
}
|
}
|
||||||
gmenu2x->font->write(&bg, text, box.x + TEXT_PADDING + (gmenu2x->sc[icon] ? ICON_PADDING + ICON_DIMENSION : 0), box.y + (box.h - textHeight) / 2, Font::HAlignLeft, Font::VAlignTop);
|
gmenu2x->font->write(bg, text, box.x + TEXT_PADDING + (gmenu2x->sc[icon] ? ICON_PADDING + ICON_DIMENSION : 0), box.y + (box.h - textHeight) / 2, Font::HAlignLeft, Font::VAlignTop);
|
||||||
|
|
||||||
int btnX = gmenu2x->halfX+box.w/2-6;
|
int btnX = gmenu2x->halfX+box.w/2-6;
|
||||||
for (uint i = 0; i < BUTTON_TYPE_SIZE; i++) {
|
for (uint i = 0; i < BUTTON_TYPE_SIZE; i++) {
|
||||||
@ -93,7 +94,7 @@ int MessageBox::exec() {
|
|||||||
buttonPositions[i].y = box.y+box.h+8;
|
buttonPositions[i].y = box.y+box.h+8;
|
||||||
buttonPositions[i].w = btnX;
|
buttonPositions[i].w = btnX;
|
||||||
|
|
||||||
btnX = gmenu2x->drawButtonRight(&bg, buttonLabels[i], buttons[i], btnX, buttonPositions[i].y);
|
btnX = gmenu2x->drawButtonRight(bg, buttonLabels[i], buttons[i], btnX, buttonPositions[i].y);
|
||||||
|
|
||||||
buttonPositions[i].x = btnX;
|
buttonPositions[i].x = btnX;
|
||||||
buttonPositions[i].w = buttonPositions[i].x-btnX-6;
|
buttonPositions[i].w = buttonPositions[i].x-btnX-6;
|
||||||
@ -101,8 +102,8 @@ int MessageBox::exec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bg.convertToDisplayFormat();
|
bg.convertToDisplayFormat();
|
||||||
bg.blit(gmenu2x->s,0,0);
|
bg.blit(s, 0, 0);
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
|
|
||||||
int result = -1;
|
int result = -1;
|
||||||
while (result < 0) {
|
while (result < 0) {
|
||||||
|
@ -60,19 +60,19 @@ int Selector::exec(int startSelection) {
|
|||||||
fl.browse();
|
fl.browse();
|
||||||
|
|
||||||
Surface bg(gmenu2x->bg);
|
Surface bg(gmenu2x->bg);
|
||||||
drawTitleIcon(&bg, link->getIconPath(), true);
|
drawTitleIcon(bg, link->getIconPath(), true);
|
||||||
writeTitle(&bg, link->getTitle());
|
writeTitle(bg, link->getTitle());
|
||||||
writeSubTitle(&bg, link->getDescription());
|
writeSubTitle(bg, link->getDescription());
|
||||||
|
|
||||||
if (link->getSelectorBrowser()) {
|
if (link->getSelectorBrowser()) {
|
||||||
gmenu2x->drawButton(&bg, "start", gmenu2x->tr["Exit"],
|
gmenu2x->drawButton(bg, "start", gmenu2x->tr["Exit"],
|
||||||
gmenu2x->drawButton(&bg, "accept", gmenu2x->tr["Select"],
|
gmenu2x->drawButton(bg, "accept", gmenu2x->tr["Select"],
|
||||||
gmenu2x->drawButton(&bg, "cancel", gmenu2x->tr["Up one folder"],
|
gmenu2x->drawButton(bg, "cancel", gmenu2x->tr["Up one folder"],
|
||||||
gmenu2x->drawButton(&bg, "left", "", 5)-10)));
|
gmenu2x->drawButton(bg, "left", "", 5)-10)));
|
||||||
} else {
|
} else {
|
||||||
gmenu2x->drawButton(&bg, "start", gmenu2x->tr["Exit"],
|
gmenu2x->drawButton(bg, "start", gmenu2x->tr["Exit"],
|
||||||
gmenu2x->drawButton(&bg, "cancel", "",
|
gmenu2x->drawButton(bg, "cancel", "",
|
||||||
gmenu2x->drawButton(&bg, "accept", gmenu2x->tr["Select"], 5)) - 10);
|
gmenu2x->drawButton(bg, "accept", gmenu2x->tr["Select"], 5)) - 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int top, height;
|
unsigned int top, height;
|
||||||
@ -95,7 +95,9 @@ int Selector::exec(int startSelection) {
|
|||||||
gmenu2x->sc.addSkinRes("imgs/folder.png");
|
gmenu2x->sc.addSkinRes("imgs/folder.png");
|
||||||
gmenu2x->sc.defaultAlpha = false;
|
gmenu2x->sc.defaultAlpha = false;
|
||||||
while (!close) {
|
while (!close) {
|
||||||
bg.blit(gmenu2x->s,0,0);
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
|
bg.blit(s, 0, 0);
|
||||||
|
|
||||||
if (selected >= firstElement + nb_elements)
|
if (selected >= firstElement + nb_elements)
|
||||||
firstElement = selected - nb_elements + 1;
|
firstElement = selected - nb_elements + 1;
|
||||||
@ -106,36 +108,35 @@ int Selector::exec(int startSelection) {
|
|||||||
if (selected-fl.dirCount()<screens.size()
|
if (selected-fl.dirCount()<screens.size()
|
||||||
&& !screens[selected-fl.dirCount()].empty()) {
|
&& !screens[selected-fl.dirCount()].empty()) {
|
||||||
Surface *screenshot = gmenu2x->sc[screens[selected-fl.dirCount()]];
|
Surface *screenshot = gmenu2x->sc[screens[selected-fl.dirCount()]];
|
||||||
if (screenshot)
|
if (screenshot) {
|
||||||
screenshot->blitRight(
|
screenshot->blitRight(s, 320, 0, 320, 240, 128u);
|
||||||
gmenu2x->s, 320, 0, 320, 240,
|
}
|
||||||
128u);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Selection
|
//Selection
|
||||||
iY = top + (selected - firstElement) * fontheight;
|
iY = top + (selected - firstElement) * fontheight;
|
||||||
if (selected<fl.size())
|
if (selected<fl.size())
|
||||||
gmenu2x->s->box(1, iY, 309, fontheight, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
s.box(1, iY, 309, fontheight, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
|
|
||||||
//Files & Dirs
|
//Files & Dirs
|
||||||
gmenu2x->s->setClipRect(0, top, 311, height);
|
s.setClipRect(0, top, 311, height);
|
||||||
for (i = firstElement; i < fl.size()
|
for (i = firstElement; i < fl.size()
|
||||||
&& i < firstElement + nb_elements; i++) {
|
&& i < firstElement + nb_elements; i++) {
|
||||||
iY = i-firstElement;
|
iY = i-firstElement;
|
||||||
if (fl.isDirectory(i)) {
|
if (fl.isDirectory(i)) {
|
||||||
gmenu2x->sc["imgs/folder.png"]->blit(gmenu2x->s, 4, top + (iY * fontheight));
|
gmenu2x->sc["imgs/folder.png"]->blit(s, 4, top + (iY * fontheight));
|
||||||
gmenu2x->font->write(gmenu2x->s, fl[i], 21,
|
gmenu2x->font->write(s, fl[i], 21,
|
||||||
top + (iY * fontheight) + (fontheight / 2),
|
top + (iY * fontheight) + (fontheight / 2),
|
||||||
Font::HAlignLeft, Font::VAlignMiddle);
|
Font::HAlignLeft, Font::VAlignMiddle);
|
||||||
} else
|
} else
|
||||||
gmenu2x->font->write(gmenu2x->s, titles[i - fl.dirCount()], 4,
|
gmenu2x->font->write(s, titles[i - fl.dirCount()], 4,
|
||||||
top + (iY * fontheight) + (fontheight / 2),
|
top + (iY * fontheight) + (fontheight / 2),
|
||||||
Font::HAlignLeft, Font::VAlignMiddle);
|
Font::HAlignLeft, Font::VAlignMiddle);
|
||||||
}
|
}
|
||||||
gmenu2x->s->clearClipRect();
|
s.clearClipRect();
|
||||||
|
|
||||||
gmenu2x->drawScrollBar(nb_elements, fl.size(), firstElement);
|
gmenu2x->drawScrollBar(nb_elements, fl.size(), firstElement);
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
|
|
||||||
switch (gmenu2x->input.waitForPressedButton()) {
|
switch (gmenu2x->input.waitForPressedButton()) {
|
||||||
case InputManager::SETTINGS:
|
case InputManager::SETTINGS:
|
||||||
|
@ -78,16 +78,18 @@ bool SettingsDialog::exec() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
while (!close) {
|
while (!close) {
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
if (ts.available()) ts.poll();
|
if (ts.available()) ts.poll();
|
||||||
|
|
||||||
bg.blit(gmenu2x->s,0,0);
|
bg.blit(s, 0, 0);
|
||||||
|
|
||||||
gmenu2x->drawTopBar(gmenu2x->s);
|
gmenu2x->drawTopBar(s);
|
||||||
//link icon
|
//link icon
|
||||||
drawTitleIcon(gmenu2x->s, icon);
|
drawTitleIcon(s, icon);
|
||||||
writeTitle(gmenu2x->s, text);
|
writeTitle(s, text);
|
||||||
|
|
||||||
gmenu2x->drawBottomBar(gmenu2x->s);
|
gmenu2x->drawBottomBar(s);
|
||||||
|
|
||||||
if (sel>firstElement+numRows-1) firstElement=sel-numRows+1;
|
if (sel>firstElement+numRows-1) firstElement=sel-numRows+1;
|
||||||
if (sel<firstElement) firstElement=sel;
|
if (sel<firstElement) firstElement=sel;
|
||||||
@ -119,9 +121,9 @@ bool SettingsDialog::exec() {
|
|||||||
gmenu2x->drawScrollBar(numRows, voices.size(), firstElement);
|
gmenu2x->drawScrollBar(numRows, voices.size(), firstElement);
|
||||||
|
|
||||||
//description
|
//description
|
||||||
writeSubTitle(gmenu2x->s, voices[sel]->getDescription());
|
writeSubTitle(s, voices[sel]->getDescription());
|
||||||
|
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
voices[sel]->handleTS(maxNameWidth + 15, iY, rowHeight);
|
voices[sel]->handleTS(maxNameWidth + 15, iY, rowHeight);
|
||||||
|
|
||||||
InputManager::Button button = inputMgr.waitForPressedButton();
|
InputManager::Button button = inputMgr.waitForPressedButton();
|
||||||
|
@ -159,8 +159,8 @@ void Surface::blit(SDL_Surface *destination, int x, int y, int w, int h, int a)
|
|||||||
SDL_SetAlpha(raw, SDL_SRCALPHA|SDL_RLEACCEL, a);
|
SDL_SetAlpha(raw, SDL_SRCALPHA|SDL_RLEACCEL, a);
|
||||||
SDL_BlitSurface(raw, (w==0 || h==0) ? NULL : &src, destination, &dest);
|
SDL_BlitSurface(raw, (w==0 || h==0) ? NULL : &src, destination, &dest);
|
||||||
}
|
}
|
||||||
void Surface::blit(Surface *destination, int x, int y, int w, int h, int a) const {
|
void Surface::blit(Surface& destination, int x, int y, int w, int h, int a) const {
|
||||||
blit(destination->raw,x,y,w,h,a);
|
blit(destination.raw, x, y, w, h, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Surface::blitCenter(SDL_Surface *destination, int x, int y, int w, int h, int a) const {
|
void Surface::blitCenter(SDL_Surface *destination, int x, int y, int w, int h, int a) const {
|
||||||
@ -168,17 +168,17 @@ void Surface::blitCenter(SDL_Surface *destination, int x, int y, int w, int h, i
|
|||||||
int oh = raw->h / 2; if (h != 0) oh = min(oh, h / 2);
|
int oh = raw->h / 2; if (h != 0) oh = min(oh, h / 2);
|
||||||
blit(destination, x - ow, y - oh, w, h, a);
|
blit(destination, x - ow, y - oh, w, h, a);
|
||||||
}
|
}
|
||||||
void Surface::blitCenter(Surface *destination, int x, int y, int w, int h, int a) const {
|
void Surface::blitCenter(Surface& destination, int x, int y, int w, int h, int a) const {
|
||||||
blitCenter(destination->raw,x,y,w,h,a);
|
blitCenter(destination.raw, x, y, w, h, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Surface::blitRight(SDL_Surface *destination, int x, int y, int w, int h, int a) const {
|
void Surface::blitRight(SDL_Surface *destination, int x, int y, int w, int h, int a) const {
|
||||||
if (!w) w = raw->w;
|
if (!w) w = raw->w;
|
||||||
blit(destination,x-min(raw->w,w),y,w,h,a);
|
blit(destination, x - min(raw->w, w), y, w, h, a);
|
||||||
}
|
}
|
||||||
void Surface::blitRight(Surface *destination, int x, int y, int w, int h, int a) const {
|
void Surface::blitRight(Surface& destination, int x, int y, int w, int h, int a) const {
|
||||||
if (!w) w = raw->w;
|
if (!w) w = raw->w;
|
||||||
blitRight(destination->raw,x,y,w,h,a);
|
blitRight(destination.raw, x, y, w, h, a);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Surface::box(SDL_Rect re, RGBAColor c) {
|
void Surface::box(SDL_Rect re, RGBAColor c) {
|
||||||
@ -252,7 +252,7 @@ void Surface::applyClipRect(SDL_Rect& rect) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Surface::blit(Surface *destination, SDL_Rect container, Font::HAlign halign, Font::VAlign valign) const {
|
void Surface::blit(Surface& destination, SDL_Rect container, Font::HAlign halign, Font::VAlign valign) const {
|
||||||
switch (halign) {
|
switch (halign) {
|
||||||
case Font::HAlignLeft:
|
case Font::HAlignLeft:
|
||||||
break;
|
break;
|
||||||
@ -275,7 +275,7 @@ void Surface::blit(Surface *destination, SDL_Rect container, Font::HAlign halign
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
blit(destination,container.x,container.y);
|
blit(destination, container.x, container.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t mult8x4(uint32_t c, uint8_t a) {
|
static inline uint32_t mult8x4(uint32_t c, uint8_t a) {
|
||||||
|
@ -76,10 +76,10 @@ public:
|
|||||||
void setClipRect(int x, int y, int w, int h);
|
void setClipRect(int x, int y, int w, int h);
|
||||||
void setClipRect(SDL_Rect rect);
|
void setClipRect(SDL_Rect rect);
|
||||||
|
|
||||||
void blit(Surface *destination, int x, int y, int w=0, int h=0, int a=-1) const;
|
void blit(Surface& destination, int x, int y, int w=0, int h=0, int a=-1) const;
|
||||||
void blit(Surface *destination, SDL_Rect container, Font::HAlign halign = Font::HAlignLeft, Font::VAlign valign = Font::VAlignTop) const;
|
void blit(Surface& destination, SDL_Rect container, Font::HAlign halign = Font::HAlignLeft, Font::VAlign valign = Font::VAlignTop) const;
|
||||||
void blitCenter(Surface *destination, int x, int y, int w=0, int h=0, int a=-1) const;
|
void blitCenter(Surface& destination, int x, int y, int w=0, int h=0, int a=-1) const;
|
||||||
void blitRight(Surface *destination, int x, int y, int w=0, int h=0, int a=-1) const;
|
void blitRight(Surface& destination, int x, int y, int w=0, int h=0, int a=-1) const;
|
||||||
|
|
||||||
void box(SDL_Rect re, RGBAColor c);
|
void box(SDL_Rect re, RGBAColor c);
|
||||||
void box(Sint16 x, Sint16 y, Uint16 w, Uint16 h, RGBAColor c) {
|
void box(Sint16 x, Sint16 y, Uint16 w, Uint16 h, RGBAColor c) {
|
||||||
|
@ -37,6 +37,7 @@ TextDialog::TextDialog(GMenu2X *gmenu2x, const string &title, const string &desc
|
|||||||
void TextDialog::drawText(const vector<string> &text, unsigned int y,
|
void TextDialog::drawText(const vector<string> &text, unsigned int y,
|
||||||
unsigned int firstRow, unsigned int rowsPerPage)
|
unsigned int firstRow, unsigned int rowsPerPage)
|
||||||
{
|
{
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
const int fontHeight = gmenu2x->font->getLineSpacing();
|
const int fontHeight = gmenu2x->font->getLineSpacing();
|
||||||
|
|
||||||
for (unsigned i = firstRow; i < firstRow + rowsPerPage && i < text.size(); i++) {
|
for (unsigned i = firstRow; i < firstRow + rowsPerPage && i < text.size(); i++) {
|
||||||
@ -44,10 +45,10 @@ void TextDialog::drawText(const vector<string> &text, unsigned int y,
|
|||||||
int rowY = y + (i - firstRow) * fontHeight;
|
int rowY = y + (i - firstRow) * fontHeight;
|
||||||
if (line == "----") { // horizontal ruler
|
if (line == "----") { // horizontal ruler
|
||||||
rowY += fontHeight / 2;
|
rowY += fontHeight / 2;
|
||||||
gmenu2x->s->box(5, rowY, gmenu2x->resX - 16, 1, 255, 255, 255, 130);
|
s.box(5, rowY, gmenu2x->resX - 16, 1, 255, 255, 255, 130);
|
||||||
gmenu2x->s->box(5, rowY+1, gmenu2x->resX - 16, 1, 0, 0, 0, 130);
|
s.box(5, rowY+1, gmenu2x->resX - 16, 1, 0, 0, 0, 130);
|
||||||
} else {
|
} else {
|
||||||
gmenu2x->font->write(gmenu2x->s, line, 5, rowY);
|
gmenu2x->font->write(s, line, 5, rowY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,16 +62,16 @@ void TextDialog::exec() {
|
|||||||
|
|
||||||
//link icon
|
//link icon
|
||||||
if (!fileExists(icon))
|
if (!fileExists(icon))
|
||||||
drawTitleIcon(&bg, "icons/ebook.png", true);
|
drawTitleIcon(bg, "icons/ebook.png", true);
|
||||||
else
|
else
|
||||||
drawTitleIcon(&bg, icon, false);
|
drawTitleIcon(bg, icon, false);
|
||||||
writeTitle(&bg, title);
|
writeTitle(bg, title);
|
||||||
writeSubTitle(&bg, description);
|
writeSubTitle(bg, description);
|
||||||
|
|
||||||
gmenu2x->drawButton(&bg, "start", gmenu2x->tr["Exit"],
|
gmenu2x->drawButton(bg, "start", gmenu2x->tr["Exit"],
|
||||||
gmenu2x->drawButton(&bg, "cancel", "",
|
gmenu2x->drawButton(bg, "cancel", "",
|
||||||
gmenu2x->drawButton(&bg, "down", gmenu2x->tr["Scroll"],
|
gmenu2x->drawButton(bg, "down", gmenu2x->tr["Scroll"],
|
||||||
gmenu2x->drawButton(&bg, "up", "", 5)-10))-10);
|
gmenu2x->drawButton(bg, "up", "", 5)-10))-10);
|
||||||
|
|
||||||
bg.convertToDisplayFormat();
|
bg.convertToDisplayFormat();
|
||||||
|
|
||||||
@ -82,9 +83,11 @@ void TextDialog::exec() {
|
|||||||
|
|
||||||
unsigned firstRow = 0;
|
unsigned firstRow = 0;
|
||||||
while (!close) {
|
while (!close) {
|
||||||
bg.blit(gmenu2x->s, 0, 0);
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
|
bg.blit(s, 0, 0);
|
||||||
drawText(text, contentY, firstRow, rowsPerPage);
|
drawText(text, contentY, firstRow, rowsPerPage);
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
|
|
||||||
switch(gmenu2x->input.waitForPressedButton()) {
|
switch(gmenu2x->input.waitForPressedButton()) {
|
||||||
case InputManager::UP:
|
case InputManager::UP:
|
||||||
|
@ -75,17 +75,17 @@ void TextManualDialog::exec() {
|
|||||||
|
|
||||||
//link icon
|
//link icon
|
||||||
if (!fileExists(icon))
|
if (!fileExists(icon))
|
||||||
drawTitleIcon(&bg, "icons/ebook.png", true);
|
drawTitleIcon(bg, "icons/ebook.png", true);
|
||||||
else
|
else
|
||||||
drawTitleIcon(&bg, icon, false);
|
drawTitleIcon(bg, icon, false);
|
||||||
writeTitle(&bg, title+(description.empty() ? "" : ": "+description));
|
writeTitle(bg, title+(description.empty() ? "" : ": "+description));
|
||||||
|
|
||||||
gmenu2x->drawButton(&bg, "start", gmenu2x->tr["Exit"],
|
gmenu2x->drawButton(bg, "start", gmenu2x->tr["Exit"],
|
||||||
gmenu2x->drawButton(&bg, "cancel", "",
|
gmenu2x->drawButton(bg, "cancel", "",
|
||||||
gmenu2x->drawButton(&bg, "right", gmenu2x->tr["Change page"],
|
gmenu2x->drawButton(bg, "right", gmenu2x->tr["Change page"],
|
||||||
gmenu2x->drawButton(&bg, "left", "",
|
gmenu2x->drawButton(bg, "left", "",
|
||||||
gmenu2x->drawButton(&bg, "down", gmenu2x->tr["Scroll"],
|
gmenu2x->drawButton(bg, "down", gmenu2x->tr["Scroll"],
|
||||||
gmenu2x->drawButton(&bg, "up", "", 5)-10))-10))-10);
|
gmenu2x->drawButton(bg, "up", "", 5)-10))-10))-10);
|
||||||
|
|
||||||
bg.convertToDisplayFormat();
|
bg.convertToDisplayFormat();
|
||||||
|
|
||||||
@ -97,17 +97,19 @@ void TextManualDialog::exec() {
|
|||||||
string pageStatus;
|
string pageStatus;
|
||||||
|
|
||||||
while (!close) {
|
while (!close) {
|
||||||
bg.blit(gmenu2x->s,0,0);
|
Surface& s = *gmenu2x->s;
|
||||||
writeSubTitle(gmenu2x->s, pages[page].title);
|
|
||||||
|
bg.blit(s,0,0);
|
||||||
|
writeSubTitle(s, pages[page].title);
|
||||||
drawText(pages[page].text, 42 /* TODO */, firstRow, rowsPerPage);
|
drawText(pages[page].text, 42 /* TODO */, firstRow, rowsPerPage);
|
||||||
|
|
||||||
ss.clear();
|
ss.clear();
|
||||||
ss << page+1;
|
ss << page+1;
|
||||||
ss >> pageStatus;
|
ss >> pageStatus;
|
||||||
pageStatus = gmenu2x->tr["Page"]+": "+pageStatus+"/"+spagecount;
|
pageStatus = gmenu2x->tr["Page"]+": "+pageStatus+"/"+spagecount;
|
||||||
gmenu2x->font->write(gmenu2x->s, pageStatus, 310, 230, Font::HAlignRight, Font::VAlignMiddle);
|
gmenu2x->font->write(s, pageStatus, 310, 230, Font::HAlignRight, Font::VAlignMiddle);
|
||||||
|
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
|
|
||||||
switch(gmenu2x->input.waitForPressedButton()) {
|
switch(gmenu2x->input.waitForPressedButton()) {
|
||||||
case InputManager::UP:
|
case InputManager::UP:
|
||||||
|
@ -88,41 +88,43 @@ bool WallpaperDialog::exec()
|
|||||||
unsigned int nb_elements = height / fontheight;
|
unsigned int nb_elements = height / fontheight;
|
||||||
|
|
||||||
while (!close) {
|
while (!close) {
|
||||||
|
Surface& s = *gmenu2x->s;
|
||||||
|
|
||||||
if (selected > firstElement + nb_elements - 1)
|
if (selected > firstElement + nb_elements - 1)
|
||||||
firstElement = selected - nb_elements + 1;
|
firstElement = selected - nb_elements + 1;
|
||||||
if (selected < firstElement)
|
if (selected < firstElement)
|
||||||
firstElement = selected;
|
firstElement = selected;
|
||||||
|
|
||||||
//Wallpaper
|
//Wallpaper
|
||||||
gmenu2x->sc[((string)"skin:wallpapers/" + wallpapers[selected]).c_str()]->blit(gmenu2x->s, 0, 0);
|
gmenu2x->sc[((string)"skin:wallpapers/" + wallpapers[selected]).c_str()]->blit(s, 0, 0);
|
||||||
|
|
||||||
gmenu2x->drawTopBar(gmenu2x->s);
|
gmenu2x->drawTopBar(s);
|
||||||
gmenu2x->drawBottomBar(gmenu2x->s);
|
gmenu2x->drawBottomBar(s);
|
||||||
|
|
||||||
drawTitleIcon(gmenu2x->s, "icons/wallpaper.png", true);
|
drawTitleIcon(s, "icons/wallpaper.png", true);
|
||||||
writeTitle(gmenu2x->s, gmenu2x->tr["Wallpaper selection"]);
|
writeTitle(s, gmenu2x->tr["Wallpaper selection"]);
|
||||||
writeSubTitle(gmenu2x->s, gmenu2x->tr["Select a wallpaper from the list"]);
|
writeSubTitle(s, gmenu2x->tr["Select a wallpaper from the list"]);
|
||||||
|
|
||||||
buttonbox.paint(gmenu2x->s, 5);
|
buttonbox.paint(s, 5);
|
||||||
|
|
||||||
//Selection
|
//Selection
|
||||||
iY = selected - firstElement;
|
iY = selected - firstElement;
|
||||||
iY = top + (iY * fontheight);
|
iY = top + (iY * fontheight);
|
||||||
gmenu2x->s->box(2, iY, 308, fontheight, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
s.box(2, iY, 308, fontheight, gmenu2x->skinConfColors[COLOR_SELECTION_BG]);
|
||||||
|
|
||||||
//Files & Directories
|
//Files & Directories
|
||||||
gmenu2x->s->setClipRect(0, top, 311, height);
|
s.setClipRect(0, top, 311, height);
|
||||||
for (i = firstElement; i < wallpapers.size()
|
for (i = firstElement; i < wallpapers.size()
|
||||||
&& i < firstElement + nb_elements; i++) {
|
&& i < firstElement + nb_elements; i++) {
|
||||||
iY = i-firstElement;
|
iY = i-firstElement;
|
||||||
gmenu2x->font->write(gmenu2x->s, wallpapers[i], 5,
|
gmenu2x->font->write(s, wallpapers[i], 5,
|
||||||
top + (iY * fontheight),
|
top + (iY * fontheight),
|
||||||
Font::HAlignLeft, Font::VAlignTop);
|
Font::HAlignLeft, Font::VAlignTop);
|
||||||
}
|
}
|
||||||
gmenu2x->s->clearClipRect();
|
s.clearClipRect();
|
||||||
|
|
||||||
gmenu2x->drawScrollBar(nb_elements, wallpapers.size(), firstElement);
|
gmenu2x->drawScrollBar(nb_elements, wallpapers.size(), firstElement);
|
||||||
gmenu2x->s->flip();
|
s.flip();
|
||||||
|
|
||||||
switch(gmenu2x->input.waitForPressedButton()) {
|
switch(gmenu2x->input.waitForPressedButton()) {
|
||||||
case InputManager::CANCEL:
|
case InputManager::CANCEL:
|
||||||
|
Loading…
Reference in New Issue
Block a user