aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2010-04-20 15:28:17 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2013-01-05 17:17:47 +0100
commitf2b29d039424262426fd4598ce076f54e31854cf (patch)
tree86b6a67c0f41722e0cb4776b11ff580709333ded
parent453785055b37a84d64c344f2175874bdb9e1563e (diff)
downloadusdx-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
-rw-r--r--src/menu/container.cpp58
-rw-r--r--src/menu/container.hpp53
-rw-r--r--src/menu/control.cpp38
-rw-r--r--src/menu/control.hpp40
-rw-r--r--src/menu/drawable.cpp4
-rw-r--r--src/menu/drawable.hpp6
-rw-r--r--src/menu/drawable_control.cpp38
-rw-r--r--src/menu/drawable_control.hpp50
-rw-r--r--src/menu/frame.cpp61
-rw-r--r--src/menu/frame.hpp56
-rw-r--r--src/menu/frame_background.cpp38
-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.hpp50
-rw-r--r--test/Makefile2
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)