diff options
author | Alexander Sulfrian <alexander@sulfrian.net> | 2010-04-20 15:28:17 +0200 |
---|---|---|
committer | Alexander Sulfrian <alexander@sulfrian.net> | 2013-01-05 17:17:47 +0100 |
commit | f2b29d039424262426fd4598ce076f54e31854cf (patch) | |
tree | 86b6a67c0f41722e0cb4776b11ff580709333ded | |
parent | 453785055b37a84d64c344f2175874bdb9e1563e (diff) | |
download | usdx-f2b29d039424262426fd4598ce076f54e31854cf.tar.gz usdx-f2b29d039424262426fd4598ce076f54e31854cf.tar.xz usdx-f2b29d039424262426fd4598ce076f54e31854cf.zip |
started gui framework
renamed menubackground to framebackground and splited out framebackgroundcolor
created control as base class
renamed draw to repaint and on_draw to draw in drawable
implemented drawablecontrol as base for all visible controls on windows
created container (subclass of drawablecontrol) that could contain other drawablecontrols
created frame (subclass of container) with a background
added openGL ldflag
Diffstat (limited to '')
-rw-r--r-- | src/menu/container.cpp | 58 | ||||
-rw-r--r-- | src/menu/container.hpp | 53 | ||||
-rw-r--r-- | src/menu/control.cpp | 38 | ||||
-rw-r--r-- | src/menu/control.hpp | 40 | ||||
-rw-r--r-- | src/menu/drawable.cpp | 4 | ||||
-rw-r--r-- | src/menu/drawable.hpp | 6 | ||||
-rw-r--r-- | src/menu/drawable_control.cpp | 38 | ||||
-rw-r--r-- | src/menu/drawable_control.hpp | 50 | ||||
-rw-r--r-- | src/menu/frame.cpp | 61 | ||||
-rw-r--r-- | src/menu/frame.hpp | 56 | ||||
-rw-r--r-- | src/menu/frame_background.cpp | 38 | ||||
-rw-r--r-- | src/menu/frame_background.hpp (renamed from src/menu/menuBackground.hpp) | 35 | ||||
-rw-r--r-- | src/menu/frame_background_color.cpp (renamed from src/menu/menuBackground.cpp) | 27 | ||||
-rw-r--r-- | src/menu/frame_background_color.hpp | 50 | ||||
-rw-r--r-- | test/Makefile | 2 |
15 files changed, 505 insertions, 51 deletions
diff --git a/src/menu/container.cpp b/src/menu/container.cpp new file mode 100644 index 00000000..57bac666 --- /dev/null +++ b/src/menu/container.cpp @@ -0,0 +1,58 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "container.hpp" + +namespace usdx +{ + Container::Container() + { + } + + Container::~Container() + { + for (std::list<DrawableControl*>::iterator it = + controls.begin(); it != controls.end(); it++) { + delete *it; + } + + controls.clear(); + } + + void Container::repaint(void) const + { + if (get_visible()) { + draw(); + + for (std::list<DrawableControl*>::const_iterator it = + controls.begin(); + it != controls.end(); it++) { + + (*it)->repaint(); + } + } + } +}; diff --git a/src/menu/container.hpp b/src/menu/container.hpp new file mode 100644 index 00000000..d85320a2 --- /dev/null +++ b/src/menu/container.hpp @@ -0,0 +1,53 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef CONTAINER_HPP +#define CONTAINER_HPP + +#include "drawable_control.hpp" +#include <list> + +namespace usdx +{ + class Container : public DrawableControl + { + private: + std::list<DrawableControl*> controls; + + public: + Container(); + virtual ~Container(); + + /** + * Method for redraw all contained objects. + */ + void repaint(void) const; + + }; +}; + + +#endif diff --git a/src/menu/control.cpp b/src/menu/control.cpp new file mode 100644 index 00000000..373fb482 --- /dev/null +++ b/src/menu/control.cpp @@ -0,0 +1,38 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "control.hpp" + +namespace usdx +{ + Control::Control() + { + } + + Control::~Control() + { + } +}; diff --git a/src/menu/control.hpp b/src/menu/control.hpp new file mode 100644 index 00000000..2d47eb55 --- /dev/null +++ b/src/menu/control.hpp @@ -0,0 +1,40 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef CONTROL_HPP +#define CONTROL_HPP + +namespace usdx +{ + class Control + { + public: + Control(); + virtual ~Control(); + }; +}; + +#endif diff --git a/src/menu/drawable.cpp b/src/menu/drawable.cpp index 8bfd5772..5f744e62 100644 --- a/src/menu/drawable.cpp +++ b/src/menu/drawable.cpp @@ -32,10 +32,10 @@ namespace usdx { } - void Drawable::draw(void) const + void Drawable::repaint(void) const { if (visible) { - on_draw(); + draw(); } }; diff --git a/src/menu/drawable.hpp b/src/menu/drawable.hpp index 84f9daa0..e2cc43fc 100644 --- a/src/menu/drawable.hpp +++ b/src/menu/drawable.hpp @@ -41,16 +41,16 @@ namespace usdx /** * Pure virtual method, that descendant classes have to implement. */ - virtual void on_draw(void) const = 0; + virtual void draw(void) const = 0; public: Drawable(void); virtual ~Drawable(void) {}; /** - * Method for redraw this Object. If visible issues on_draw. + * Method for redraw this Object. If visible issues draw. */ - void draw(void) const; + void repaint(void) const; /** * Setter for visible. diff --git a/src/menu/drawable_control.cpp b/src/menu/drawable_control.cpp new file mode 100644 index 00000000..404b0e4c --- /dev/null +++ b/src/menu/drawable_control.cpp @@ -0,0 +1,38 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "drawable_control.hpp" + +namespace usdx +{ + DrawableControl::DrawableControl() + { + } + + DrawableControl::~DrawableControl() + { + } +}; diff --git a/src/menu/drawable_control.hpp b/src/menu/drawable_control.hpp new file mode 100644 index 00000000..612e17d3 --- /dev/null +++ b/src/menu/drawable_control.hpp @@ -0,0 +1,50 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef DRAWABLE_CONTROL_HPP +#define DRAWABLE_CONTROL_HPP + +#include "drawable.hpp" +#include "control.hpp" + +namespace usdx +{ + class DrawableControl : public Drawable, public Control + { + protected: + /** + * Pure virtual method, that descendant classes have to + * implement. (Should be left pure virtual.) + */ + virtual void draw(void) const = 0; + + public: + DrawableControl(); + virtual ~DrawableControl(); + }; +}; + +#endif diff --git a/src/menu/frame.cpp b/src/menu/frame.cpp new file mode 100644 index 00000000..8707f0cc --- /dev/null +++ b/src/menu/frame.cpp @@ -0,0 +1,61 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "frame.hpp" + +namespace usdx +{ + Frame::Frame() : background(NULL) + { + } + + Frame::Frame(FrameBackground* background) : background(background) + { + } + + Frame::~Frame() + { + if (background) { + delete background; + background = NULL; + } + } + + void Frame::set_background(FrameBackground* background) + { + this->background = background; + } + + const FrameBackground* Frame::get_background(void) const + { + return background; + } + + void Frame::draw(void) const + { + background->repaint(); + } +}; diff --git a/src/menu/frame.hpp b/src/menu/frame.hpp new file mode 100644 index 00000000..7f9af120 --- /dev/null +++ b/src/menu/frame.hpp @@ -0,0 +1,56 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef FRAME_HPP +#define FRAME_HPP + +#include "container.hpp" +#include "frame_background.hpp" + +namespace usdx +{ + class Frame : public Container + { + private: + FrameBackground* background; + + protected: + virtual void draw(void) const; + + public: + Frame(); + Frame(FrameBackground* background); + + virtual ~Frame(); + + void set_background(FrameBackground* background); + + const FrameBackground* get_background() const; + }; +}; + + +#endif diff --git a/src/menu/frame_background.cpp b/src/menu/frame_background.cpp new file mode 100644 index 00000000..5c18cf45 --- /dev/null +++ b/src/menu/frame_background.cpp @@ -0,0 +1,38 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#include "frame_background.hpp" + +namespace usdx +{ + FrameBackground::FrameBackground() + { + } + + FrameBackground::~FrameBackground() + { + } +}; diff --git a/src/menu/menuBackground.hpp b/src/menu/frame_background.hpp index c398b381..e815094a 100644 --- a/src/menu/menuBackground.hpp +++ b/src/menu/frame_background.hpp @@ -24,45 +24,34 @@ * $Id$ */ -#ifndef MENUBACKGROUND_HPP -#define MENUBACKGROUND_HPP +#ifndef FRAME_BACKGROUND_HPP +#define FRAME_BACKGROUND_HPP + +#include "drawable.hpp" namespace usdx { // Exception - class MenuBackgroundException { }; + class FrameBackgroundException { }; - // MenuBackground - abstract class for MenuBackgrounds - class MenuBackground + // FrameBackground - abstract class for FrameBackgrounds + class FrameBackground : public Drawable { public: - virtual void draw(void) = 0; + FrameBackground(); // optional methods - virtual ~MenuBackground() {} + virtual ~FrameBackground(); virtual void on_show(void) {} virtual void on_finish(void) {} protected: // no copy and no assignment - MenuBackground(const MenuBackground&); - MenuBackground& operator=(const MenuBackground&); - }; - - class MenuBackgroundNone : MenuBackground - { - public: - virtual void draw(void); - }; + FrameBackground(const FrameBackground&); + FrameBackground& operator=(const FrameBackground&); - class MenuBackgroundColor : MenuBackground - { - private: - RGB color; - public: - MenuBackgroundColor(RGB &color); - virtual void draw(void); + virtual void draw(void) = 0; }; }; diff --git a/src/menu/menuBackground.cpp b/src/menu/frame_background_color.cpp index f34cf987..3c3adfd8 100644 --- a/src/menu/menuBackground.cpp +++ b/src/menu/frame_background_color.cpp @@ -24,35 +24,18 @@ * $Id$ */ -#if 0 - -#include "menuBackground.hpp" +#include "frame_background_color.hpp" #include <GL/gl.h> -int screen_act = 1; - namespace usdx { - void MenuBackgroundNone::draw(void) - { - // clear just once when in dual screen mode - if (screen_act == 0) - glClear(GL_DEPTH_BUFFER_BIT); - } - - MenuBackgroundColor::MenuBackgrundColor(RGB &color) + FrameBackgroundColor::FrameBackgroundColor(RgbColor &color) : color(color) { - this->color = color; } - void MenuBackgroundColor::draw(void) + void FrameBackgroundColor::draw(void) const { - // just clear once, even when using two screens - if (screen_act == 1) { - glClearColor(color.r, color.g, color.b, 0); - glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); - } + glClearColor(color.get_red(), color.get_green(), color.get_blue(), 0); + glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); } }; - -#endif diff --git a/src/menu/frame_background_color.hpp b/src/menu/frame_background_color.hpp new file mode 100644 index 00000000..d1fdcc17 --- /dev/null +++ b/src/menu/frame_background_color.hpp @@ -0,0 +1,50 @@ +/* + * UltraStar Deluxe - Karaoke Game + * + * UltraStar Deluxe is the legal property of its developers, whose names + * are too numerous to list here. Please refer to the COPYRIGHT + * file distributed with this source distribution. + * + * 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 2 + * 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; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + * $URL$ + * $Id$ + */ + +#ifndef FRAME_BACKGROUND_COLOR_HPP +#define FRAME_BACKGROUND_COLOR_HPP + +#include "frame_background.hpp" +#include "utils/rgb_color.hpp" + +namespace usdx +{ + class FrameBackgroundColor : public FrameBackground + { + private: + RgbColor color; + + protected: + virtual void draw(void) const; + + public: + FrameBackgroundColor(RgbColor &color); + + }; +}; + + +#endif diff --git a/test/Makefile b/test/Makefile index 6278be7d..937ee760 100644 --- a/test/Makefile +++ b/test/Makefile @@ -10,7 +10,7 @@ sources:=$(wildcard *.cpp) $(wildcard */*.cpp) $(wildcard $(TOP)/src/*/*/*.cpp) deps:=$(sources:.cpp=.d) CXXFLAGS:=-Wall -Werror -I$(TOP)/src -I$(TOP)/src/base -I$(TOP)/src/menu -I$(TOP)/src/media -I$(TOP)/src/screens -g -LDFLAGS:=-lsqlite3 -lSDL -llog4cxx -lboost_program_options-mt -lboost_filesystem-mt -lSDL_image -lcppunit +LDFLAGS:=-lsqlite3 -lSDL -llog4cxx -lboost_program_options-mt -lboost_filesystem-mt -lSDL_image -lcppunit -lGL TARGET:=$(PROJECT) objects:=$(sources:.cpp=.o) |