summaryrefslogtreecommitdiff
path: root/src/drivers/SDL
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2016-03-03 00:07:17 +0000
committerMatthias Melcher <fltk@matthiasm.com>2016-03-03 00:07:17 +0000
commitfcdc7f1212f2b1cc44375f2764d2752dd257a40d (patch)
tree43e3e903a1a55f082e10a66d25305b7dd90d8ee3 /src/drivers/SDL
parent2d52a3494dcf1574287fed0c5ad89009de2b59e0 (diff)
Made Pico/SDL setup compile and run some minimal code.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11274 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers/SDL')
-rw-r--r--src/drivers/SDL/Fl_SDL_Screen_Driver.H43
-rw-r--r--src/drivers/SDL/Fl_SDL_Screen_Driver.cxx195
-rw-r--r--src/drivers/SDL/Fl_SDL_Window_Driver.H42
-rw-r--r--src/drivers/SDL/Fl_SDL_Window_Driver.cxx42
4 files changed, 322 insertions, 0 deletions
diff --git a/src/drivers/SDL/Fl_SDL_Screen_Driver.H b/src/drivers/SDL/Fl_SDL_Screen_Driver.H
index 8b1378917..ef2c3b1da 100644
--- a/src/drivers/SDL/Fl_SDL_Screen_Driver.H
+++ b/src/drivers/SDL/Fl_SDL_Screen_Driver.H
@@ -1 +1,44 @@
+//
+// "$Id: Fl_SDL_Screen_Driver.H 11017 2016-01-20 21:40:12Z matt $"
+//
+// Definition of SDL Screen interface based on Pico
+// for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2010-2016 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+/**
+ \file Fl_SDL_Screen_Driver.H
+ \brief Definition of SDL Screen interface based on Pico.
+ */
+
+#ifndef FL_SDL_SCREEN_DRIVER_H
+#define FL_SDL_SCREEN_DRIVER_H
+
+#include "../Pico/Fl_Pico_Screen_Driver.H"
+
+
+class FL_EXPORT Fl_SDL_Screen_Driver : public Fl_Pico_Screen_Driver
+{
+public:
+ Fl_SDL_Screen_Driver();
+ virtual ~Fl_SDL_Screen_Driver();
+ virtual double wait(double time_to_wait);
+};
+
+
+#endif // FL_SDL_SCREEN_DRIVER_H
+
+//
+// End of "$Id: quartz.H 11017 2016-01-20 21:40:12Z matt $".
+//
diff --git a/src/drivers/SDL/Fl_SDL_Screen_Driver.cxx b/src/drivers/SDL/Fl_SDL_Screen_Driver.cxx
index 8b1378917..feed9458e 100644
--- a/src/drivers/SDL/Fl_SDL_Screen_Driver.cxx
+++ b/src/drivers/SDL/Fl_SDL_Screen_Driver.cxx
@@ -1 +1,196 @@
+//
+// "$Id: Fl_SDL_Screen_Driver.cxx 11253 2016-03-01 00:54:21Z matt $"
+//
+// Definition of SDL Screen interface based on Pico
+//
+// Copyright 1998-2016 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+
+#include "../../config_lib.h"
+#include "Fl_SDL_Screen_Driver.H"
+
+#include <FL/Fl_Window_Driver.H>
+
+#define __APPLE__
+#include <SDL2/SDL.h>
+#undef __APPLE__
+
+
+Fl_Screen_Driver* Fl_Screen_Driver::newScreenDriver()
+{
+ return new Fl_SDL_Screen_Driver();
+}
+
+
+Fl_SDL_Screen_Driver::Fl_SDL_Screen_Driver()
+{
+}
+
+Fl_SDL_Screen_Driver::~Fl_SDL_Screen_Driver()
+{
+}
+
+
+double Fl_SDL_Screen_Driver::wait(double time_to_wait)
+{
+ SDL_Event e;
+ if (SDL_PollEvent(&e)) {
+ if (e.type == SDL_QUIT) {
+ exit(0);
+ // TODO: do something
+ }
+ }
+ return 0.0;
+}
+
+
+
+#include <FL/x.H>
+#include <FL/Fl.H>
+#include <FL/Fl_Image_Surface.H>
+#include <FL/Fl_Double_Window.H>
+#include <FL/Fl_Graphics_Driver.H>
+
+/*
+ * The following code should not be here!
+ * All this must be refactored into the driver system!
+ */
+
+/*
+
+ The following symbols are not found if we naively compile the core modules and
+ no specific platform implementations. This list is a hint at all the functions
+ and methods that probably need to be refactored into the driver system.
+
+ Undefined symbols for architecture x86_64:
+ */
+
+void fl_set_spot(int, int, int, int, int, int, Fl_Window*) { }
+void fl_reset_spot() { }
+const char *fl_filename_name(char const*) { return 0; }
+void fl_clipboard_notify_change() { }
+
+//Fl_Screen_Driver *Fl_Screen_Driver::newScreenDriver() { return 0; }
+Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() { return 0; }
+void Fl_Graphics_Driver::global_gc() { }
+int Fl::dnd() { return 0; }
+void Fl::copy(char const*, int, int, char const*) { }
+void Fl::paste(Fl_Widget&, int, char const*) { }
+void Fl::get_mouse(int&, int&) { }
+void Fl::set_color(unsigned int, unsigned int) { }
+int Fl_X::set_cursor(Fl_Cursor) { return 0; }
+int Fl_X::set_cursor(Fl_RGB_Image const*, int, int) { return 0; }
+void Fl_X::set_default_icons(Fl_RGB_Image const**, int) { }
+void Fl_X::flush() { }
+void Fl_X::set_icons() { }
+void Fl_Window::size_range_() { }
+void Fl_Window::fullscreen_x() { }
+void Fl_Window::make_current() { }
+void Fl_Window::fullscreen_off_x(int, int, int, int) { }
+
+Window fl_xid(const Fl_Window* w)
+{
+ Fl_X *temp = Fl_X::i(w);
+ return temp ? temp->xid : 0;
+}
+
+void Fl_Window::show() {
+ if (!shown()) {
+ Fl_X::make(this);
+ }
+}
+
+Fl_X* Fl_X::make(Fl_Window *w)
+{
+ Fl_Group::current(0);
+ if (w->parent() && !Fl_X::i(w->window())) {
+ w->set_visible();
+ return 0L;
+ }
+ Window parent;
+ if (w->parent()) {
+ parent = fl_xid(w->window());
+ } else {
+ parent = 0;
+ }
+ Fl_Window_Driver *x = Fl_Window_Driver::newWindowDriver(w);
+ x->other_xid = 0;
+ x->w = w;
+ x->region = 0;
+ if (!w->force_position()) {
+ x->xid = SDL_CreateWindow(w->label(), w->x(), w->y(), w->w(), w->h(), 0);
+ } else {
+ x->xid = SDL_CreateWindow(w->label(), 100, 100, w->w(), w->h(), 0);
+ }
+ x->next = Fl_X::first;
+ Fl_X::first = x;
+ return x;
+}
+
+void Fl_Window::label(char const*, char const*) { }
+void Fl_Window::resize(int, int, int, int) { }
+Fl_Window *Fl_Window::current_;
+char fl_show_iconic;
+Window fl_window;
+void Fl_Image_Surface::translate(int x, int y) { }
+void Fl_Image_Surface::untranslate() { }
+
+/*
+ #define __APPLE__
+ #include <SDL2/SDL.h>
+ #undef __APPLE__
+
+ SDL_Window *win = NULL;
+ SDL_Renderer *renderer = NULL;
+ SDL_Texture *bitmapTex = NULL;
+ SDL_Surface *bitmapSurface = NULL;
+ int posX = 100, posY = 100, width = 320, height = 240;
+
+ SDL_Init(SDL_INIT_VIDEO);
+
+ win = SDL_CreateWindow("Hello World", posX, posY, width, height, 0);
+
+ renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
+
+ bitmapSurface = SDL_LoadBMP("img/hello.bmp");
+ bitmapTex = SDL_CreateTextureFromSurface(renderer, bitmapSurface);
+ SDL_FreeSurface(bitmapSurface);
+
+ while (1) {
+ SDL_Event e;
+ if (SDL_PollEvent(&e)) {
+ if (e.type == SDL_QUIT) {
+ break;
+ }
+ }
+
+ SDL_RenderClear(renderer);
+ SDL_RenderCopy(renderer, bitmapTex, NULL, NULL);
+ SDL_RenderPresent(renderer);
+ }
+
+ SDL_DestroyTexture(bitmapTex);
+ SDL_DestroyRenderer(renderer);
+ SDL_DestroyWindow(win);
+
+ SDL_Quit();
+
+ return 0;
+*/
+
+
+//
+// End of "$Id: Fl_SDL_Screen_Driver.cxx 11253 2016-03-01 00:54:21Z matt $".
+//
diff --git a/src/drivers/SDL/Fl_SDL_Window_Driver.H b/src/drivers/SDL/Fl_SDL_Window_Driver.H
index 8b1378917..740616a64 100644
--- a/src/drivers/SDL/Fl_SDL_Window_Driver.H
+++ b/src/drivers/SDL/Fl_SDL_Window_Driver.H
@@ -1 +1,43 @@
+//
+// "$Id: Fl_SDL_Window_Driver.H 11017 2016-01-20 21:40:12Z matt $"
+//
+// Definition of SDL Window interface
+// for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2010-2016 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+/**
+ \file Fl_SDL_Window_Driver.H
+ \brief Definition of SDL Window interface.
+ */
+
+#ifndef FL_SDL_WINDOW_DRIVER_H
+#define FL_SDL_WINDOW_DRIVER_H
+
+#include "../Pico/Fl_Pico_Window_Driver.H"
+
+
+class FL_EXPORT Fl_SDL_Window_Driver : public Fl_Pico_Window_Driver
+{
+public:
+ Fl_SDL_Window_Driver(Fl_Window *win);
+ virtual ~Fl_SDL_Window_Driver();
+};
+
+
+#endif // FL_SDL_WINDOW_DRIVER_H
+
+//
+// End of "$Id: Fl_SDL_Window_Driver.H 11017 2016-01-20 21:40:12Z matt $".
+//
diff --git a/src/drivers/SDL/Fl_SDL_Window_Driver.cxx b/src/drivers/SDL/Fl_SDL_Window_Driver.cxx
index 8b1378917..b251ad2c2 100644
--- a/src/drivers/SDL/Fl_SDL_Window_Driver.cxx
+++ b/src/drivers/SDL/Fl_SDL_Window_Driver.cxx
@@ -1 +1,43 @@
+//
+// "$Id: Fl_SDL_Window_Driver.cxx 11253 2016-03-01 00:54:21Z matt $"
+//
+// Definition of SDL Window interface based on SDL
+//
+// Copyright 1998-2016 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems on the following page:
+//
+// http://www.fltk.org/str.php
+//
+
+#include "../../config_lib.h"
+#include "Fl_SDL_Window_Driver.H"
+
+
+Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *win)
+{
+ return new Fl_SDL_Window_Driver(win);
+}
+
+
+Fl_SDL_Window_Driver::Fl_SDL_Window_Driver(Fl_Window *win)
+: Fl_Pico_Window_Driver(win)
+{
+}
+
+
+Fl_SDL_Window_Driver::~Fl_SDL_Window_Driver()
+{
+}
+
+
+//
+// End of "$Id: Fl_SDL_Window_Driver.cxx 11253 2016-03-01 00:54:21Z matt $".
+// \ No newline at end of file