aboutsummaryrefslogtreecommitdiff
path: root/main.cpp
diff options
context:
space:
mode:
authorRobin Haberkorn <robin.haberkorn@googlemail.com>2012-09-28 15:26:29 +0200
committerRobin Haberkorn <robin.haberkorn@googlemail.com>2012-09-28 15:26:29 +0200
commite7da86053b3df2882816b0df8089e1a51b61939f (patch)
tree8f7430f7d1e82ddb8449548886f57a3a7c646c05 /main.cpp
parent9b134ea457f91ba8ea6ae558c9192f58c09f62bc (diff)
downloadosc-graphics-e7da86053b3df2882816b0df8089e1a51b61939f.tar.gz
autotools based build system
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp231
1 files changed, 0 insertions, 231 deletions
diff --git a/main.cpp b/main.cpp
deleted file mode 100644
index d31f14f..0000000
--- a/main.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <SDL.h>
-#include <SDL_framerate.h>
-
-#include "osc_graphics.h"
-#include "osc_server.h"
-
-#include "layer.h"
-#include "layer_box.h"
-#include "layer_image.h"
-#include "layer_video.h"
-
-/*
- * Default values
- */
-#define DEFAULT_SCREEN_WIDTH 640 /* pixels */
-#define DEFAULT_SCREEN_HEIGHT 480 /* pixels */
-#define DEFAULT_SCREEN_BPP 32 /* bits */
-#define DEFAULT_SDL_FLAGS (SDL_HWSURFACE | SDL_DOUBLEBUF)
-#define DEFAULT_SHOW_CURSOR SDL_ENABLE
-#define DEFAULT_FRAMERATE 20 /* Hz */
-#define DEFAULT_PORT "7770" /* port number/service/UNIX socket */
-
-#define BOOL2STR(X) \
- ((X) ? "on" : "off")
-
-/*
- * Declarations
- */
-SDL_Surface *screen;
-
-OSCServer osc_server;
-LayerList layers;
-
-int config_dump_osc = 0;
-
-static inline void
-sdl_process_events(void)
-{
- SDL_Event event;
-
- while (SDL_PollEvent(&event)) {
- switch (event.type) {
- case SDL_KEYDOWN:
- switch (event.key.keysym.sym) {
- case SDLK_F11:
- if (!SDL_WM_ToggleFullScreen(screen)) {
- SDL_ERROR("SDL_WM_ToggleFullScreen");
- exit(EXIT_FAILURE);
- }
- break;
-
- case SDLK_F10:
- SDL_ShowCursor(!SDL_ShowCursor(SDL_QUERY));
- break;
-
- case SDLK_F9:
- config_dump_osc ^= 1;
- break;
-
- case SDLK_ESCAPE:
- exit(EXIT_SUCCESS);
-
- default:
- break;
- }
- break;
-
- case SDL_QUIT:
- exit(EXIT_SUCCESS);
-
- default:
- break;
- }
- }
-}
-
-static void
-print_help(void)
-{
- printf("osc-server [-h] [-p <port>] [-f] [-c] "
- "[-W <width>] [-H <height>] "
- "[-B <bpp>] [-F <framerate>]\n"
- "Options:\n"
- "\t-h Show this help\n"
- "\t-p <port> Listen on port <port> (default: %s)\n"
- "\t-f Toggle fullscreen (default: %s)\n"
- "\t-c Toggle cursor displaying (default: %s)\n"
- "\t-W <width> Set screen width (default: %d)\n"
- "\t-H <height> Set screen height (default: %d)\n"
- "\t-B <bpp> Set screen Bits per Pixel (default: %d)\n"
- "\t-F <framerate> Set framerate in Hz (default: %d)\n",
- DEFAULT_PORT,
- BOOL2STR(DEFAULT_SDL_FLAGS & SDL_FULLSCREEN),
- BOOL2STR(DEFAULT_SHOW_CURSOR),
- DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT,
- DEFAULT_SCREEN_BPP,
- DEFAULT_FRAMERATE);
-}
-
-static inline void
-parse_options(int argc, char **argv,
- const char *&port, Uint32 &flags, int &show_cursor,
- int &width, int &height, int &bpp, int &framerate)
-{
- for (int i = 1; i < argc; i++) {
- if (strlen(argv[i]) != 2 || argv[i][0] != '-')
- goto error;
-
- switch (argv[i][1]) {
- case 'h':
- print_help();
- exit(EXIT_SUCCESS);
- case 'p':
- if (++i == argc)
- goto error;
- port = argv[i];
- break;
- case 'f':
- flags ^= SDL_FULLSCREEN;
- break;
- case 'c':
- show_cursor = !show_cursor;
- break;
- case 'W':
- if (++i == argc)
- goto error;
- width = atoi(argv[i]);
- break;
- case 'H':
- if (++i == argc)
- goto error;
- height = atoi(argv[i]);
- break;
- case 'B':
- if (++i == argc)
- goto error;
- bpp = atoi(argv[i]);
- break;
- case 'F':
- if (++i == argc)
- goto error;
- framerate = atoi(argv[i]);
- break;
- default:
- goto error;
- }
- }
-
- return;
-
-error:
- print_help();
- exit(EXIT_FAILURE);
-}
-
-#define REGISTER_LAYER(CLASS) \
- osc_server.register_layer(CLASS::ctor_info.name, \
- CLASS::ctor_info.types, \
- CLASS::ctor_osc)
-
-int
-main(int argc, char **argv)
-{
- FPSmanager fpsm;
-
- const char *port = DEFAULT_PORT;
- Uint32 sdl_flags = DEFAULT_SDL_FLAGS;
- int show_cursor = DEFAULT_SHOW_CURSOR;
- int width = DEFAULT_SCREEN_WIDTH;
- int height = DEFAULT_SCREEN_HEIGHT;
- int bpp = DEFAULT_SCREEN_BPP;
- int framerate = DEFAULT_FRAMERATE;
-
- parse_options(argc, argv,
- port, sdl_flags, show_cursor,
- width, height, bpp, framerate);
-
-#ifdef __WIN32__
- /* disable SDL's stdio redirect */
- freopen("CON", "w", stdout);
- freopen("CON", "w", stderr);
-#endif
-
- if (SDL_Init(SDL_INIT_VIDEO)) {
- SDL_ERROR("SDL_Init");
- return EXIT_FAILURE;
- }
- atexit(SDL_Quit);
-
- SDL_WM_SetCaption("OSC Graphics", NULL);
-
- screen = SDL_SetVideoMode(width, height, bpp, sdl_flags);
- if (screen == NULL) {
- SDL_ERROR("SDL_SetVideoMode");
- return EXIT_FAILURE;
- }
-
-#if DEFAULT_SDL_FLAGS & SDL_HWSURFACE
- if (!(screen->flags & SDL_HWSURFACE))
- fprintf(stderr, "Warning: Hardware surfaces not available!\n");
-#endif
-
- SDL_ShowCursor(show_cursor);
-
- osc_server.open(port);
-
- REGISTER_LAYER(LayerImage);
- REGISTER_LAYER(LayerVideo);
- REGISTER_LAYER(LayerBox);
-
- osc_server.start();
-
- SDL_initFramerate(&fpsm);
- SDL_setFramerate(&fpsm, framerate);
-
- for (;;) {
- sdl_process_events();
-
- layers.render(screen);
-
- SDL_Flip(screen);
- SDL_framerateDelay(&fpsm);
- }
-
- /* never reached */
- return EXIT_FAILURE;
-}