diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2016-03-03 00:07:17 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2016-03-03 00:07:17 +0000 |
| commit | fcdc7f1212f2b1cc44375f2764d2752dd257a40d (patch) | |
| tree | 43e3e903a1a55f082e10a66d25305b7dd90d8ee3 /src/drivers/SDL | |
| parent | 2d52a3494dcf1574287fed0c5ad89009de2b59e0 (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.H | 43 | ||||
| -rw-r--r-- | src/drivers/SDL/Fl_SDL_Screen_Driver.cxx | 195 | ||||
| -rw-r--r-- | src/drivers/SDL/Fl_SDL_Window_Driver.H | 42 | ||||
| -rw-r--r-- | src/drivers/SDL/Fl_SDL_Window_Driver.cxx | 42 |
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 |
