*
*****************************************************************************/
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
#include <cstdlib> // atexit
#include <exception>
#include <functional>
#include <iostream>
+#include <sstream>
#include <string>
-#if PLATFORM_POSIX
-#include <termios.h>
-#else
-inline int isatty(int dummy) { return 0; }
-#endif
-
#include <stlplus/portability/file_system.hpp>
#include <stlplus/portability/subprocesses.hpp>
+#include <moof/compression.hh>
#include <moof/image.hh>
#include <moof/log.hh>
#include <moof/modal_dialog.hh>
#include <moof/string.hh>
#include <moof/video.hh>
-#include "Main.hh"
+#include "client.hh"
+
+
+#if HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#if PLATFORM_POSIX
+#include <termios.h>
+#else
+inline int isatty(int dummy) { return 0; }
+#endif
Main::Main(moof::settings& settings) :
{
moof::dispatcher& dispatcher = moof::dispatcher::global();
video_reloaded_ = dispatcher.add_target("video.newcontext",
- boost::bind(&Main::setup_opengl));
+ boost::bind(&Main::setup_opengl));
setup_opengl();
#if ENABLE_HOTLOADING
hotload_timer_.init(boost::bind(&moof::resource::reload_as_needed),
- SCALAR(0.25),
- moof::timer::repeat);
+ SCALAR(0.25), moof::timer::repeat);
#endif
}
+void Main::setup_opengl()
+{
+ glEnable(GL_TEXTURE_2D);
+ glEnable(GL_DEPTH_TEST);
+ //glEnable(GL_CULL_FACE);
+
+ //glEnable(GL_POINT_SMOOTH);
+ //glEnable(GL_LINE_SMOOTH);
+ //glEnable(GL_POLYGON_SMOOTH);
+ //glShadeModel(GL_SMOOTH);
+
+ //glEnable(GL_BLEND);
+ //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glEnable(GL_ALPHA_TEST);
+ glAlphaFunc(GL_GREATER, 0.0);
+
+ glEnable(GL_MULTISAMPLE);
+
+ glClearColor(1.0, 0.0, 0.0, 1.0);
+
+ //glEnable(GL_LIGHTING);
+ //glEnable(GL_LIGHT0);
+
+ //glEnable(GL_COLOR_MATERIAL);
+ //glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
+
+ float amb[] = {0.1f, 0.1f, 0.1f, 1.0f};
+ float dif[] = {0.6f, 0.6f, 0.6f, 1.0f};
+ //glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light);
+ glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
+ glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
+
+ float spec[] = {1.0f, 1.0f, 1.0f, 1.0f};
+ glLightfv(GL_LIGHT0, GL_SPECULAR, spec);
+}
+
void Main::update(moof::scalar t, moof::scalar dt)
{
yoink.update(t, dt);
case SDL_KEYUP:
if (event.key.keysym.sym == SDLK_f)
{
- moof::video::current()->toggle_fullscreen();
+ moof::video::current().toggle_fullscreen();
}
else if (event.key.keysym.sym == SDLK_l)
{
- moof::video::current()->toggle_cursor_captured();
- moof::video::current()->toggle_cursor_visible();
+ moof::video::current().toggle_cursor_captured();
+ moof::video::current().toggle_cursor_visible();
}
else if (event.key.keysym.sym == SDLK_ESCAPE)
{
}
}
-std::string Main::search_paths()
+
+static std::string search_paths()
{
// Add search paths; they should be searched in this order:
// 1. YOINK_DATADIR (environment)
return path;
}
-std::string Main::config_paths()
+static std::string config_paths()
{
// Build the list of config files to search for, in this order:
// 1. YOINK_DATADIR/yoinkrc
return path;
}
-void Main::setup_opengl()
-{
- glEnable(GL_TEXTURE_2D);
- glEnable(GL_DEPTH_TEST);
- //glEnable(GL_CULL_FACE);
-
- glEnable(GL_POINT_SMOOTH);
- glEnable(GL_LINE_SMOOTH);
- glEnable(GL_POLYGON_SMOOTH);
- glShadeModel(GL_SMOOTH);
-
- //glEnable(GL_BLEND);
- //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- glEnable(GL_ALPHA_TEST);
- glAlphaFunc(GL_GREATER, 0.0);
-
- glClearColor(1.0, 0.0, 0.0, 1.0);
-
- //glEnable(GL_LIGHTING);
- glEnable(GL_LIGHT0);
-
- glEnable(GL_COLOR_MATERIAL);
- glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
-
- float amb[] = {0.1f, 0.1f, 0.1f, 1.0f};
- float dif[] = {0.6f, 0.6f, 0.6f, 1.0f};
- //glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light);
- glLightfv(GL_LIGHT0, GL_AMBIENT, amb);
- glLightfv(GL_LIGHT0, GL_DIFFUSE, dif);
-
- float spec[] = {1.0f, 1.0f, 1.0f, 1.0f};
- glLightfv(GL_LIGHT0, GL_SPECULAR, spec);
-}
-
-void Main::print_usage()
+static void print_usage()
{
std::cout << "Usage: "
<< PACKAGE" [-h|--help] [-i|--info] [OPTION=VALUE]..."
<< "See documentation for more options." << std::endl;
}
-void Main::print_info(int argc, char* argv[])
+static void print_info(int argc, char* argv[])
{
#if INCLUDE_CONFIG_FILE
- extern char data_config_mk[];
- std::cout << data_config_mk;
+ extern size_t data_config_gz_size;
+ extern char data_config_gz[];
+ moof::inflate(data_config_gz, data_config_gz_size, std::cout);
#else
- std::cout << std::endl << "Configuration not included." << std::endl;
+ std::cout << std::endl << "No configuration available. :-("
+ << std::endl;
#endif
}
-void hello()
+static void hello()
{
if (isatty(1) == 1) std::cout << "\033[94m";
std::cout << std::endl << PACKAGE_STRING << std::endl
<< std::endl << moof::log::endl;
}
-void goodbye()
+static void goodbye()
{
if (isatty(1) == 1) std::cout << "\033[94m";
std::cout << std::endl << "Goodbye." << std::endl << moof::log::endl;
std::string arg(argv[1]);
if (arg == "-h" || arg == "--help")
{
- Main::print_usage();
+ print_usage();
return 0;
}
else if (arg == "-i" || arg == "--info")
{
- Main::print_info(argc, argv);
+ print_info(argc, argv);
return 0;
}
}
moof::backend backend;
- moof::resource::set_search_paths(Main::search_paths());
+ moof::resource::set_search_paths(search_paths());
- moof::settings settings(argc, argv, Main::config_paths());
+ moof::settings settings(argc, argv, config_paths());
enum moof::log::level logLevel = moof::log::info;
settings.get("loglevel", logLevel);
moof::log::level(logLevel);
+ std::cout.precision(10);
+
try
{
moof::image_handle icon("yoink", "png");
class moof::video::attributes attributes(settings);
moof::video video(PACKAGE_STRING, attributes);
- video.show_fps(true);
+
+ bool showfps = false;
+ settings.get("showfps", showfps);
+ video.show_fps(showfps);
Main app(settings);
return app.run();