ogl_editor: initial SDL window code

graphics visible!
This commit is contained in:
Konsta 'sooda' Hölttä 2013-06-23 00:20:35 +03:00
parent 0c26a67f8c
commit a083256fbf
3 changed files with 118 additions and 5 deletions

2
ogl_editor/komp Normal file
View File

@ -0,0 +1,2 @@
gcc -c `sdl-config --cflags` src/linux/*.c -I emgui/include/ -DEMGUI_UNIX
gcc *.o -lSDL -lGL -lm

View File

@ -1,5 +1,6 @@
gcc -c external/mxml/*.c -D_THREAD_SAFE -D_REENTRANT
gcc -c emgui/src/*.c emgui/src/*/*.c -DEMGUI_UNIX -I emgui/include -I emgui/src/
gcc ../sync/*.c -c
gcc -c src/*.c -DEMGUI_UNIX -I emgui/include -I external/mxml/ -I src/
gcc *.o -lGL -lm
gcc $CFLAGS -c external/mxml/*.c -D_THREAD_SAFE -D_REENTRANT
gcc $CFLAGS -c emgui/src/*.c emgui/src/*/*.c -DEMGUI_UNIX -I emgui/include -I emgui/src/
gcc $CFLAGS ../sync/*.c -c
gcc $CFLAGS -c src/*.c -DEMGUI_UNIX -I emgui/include -I external/mxml/ -I src/
gcc $CFLAGS -c `sdl-config --cflags` src/linux/*.c -I emgui/include/ -DEMGUI_UNIX
gcc $CFLAGS *.o -lSDL -lGL -lm

110
ogl_editor/src/linux/main.c Normal file
View File

@ -0,0 +1,110 @@
#include "SDL.h"
#include <stdio.h>
#include <emgui/Emgui.h>
void swapBuffers()
{
SDL_GL_SwapBuffers();
printf("swap\n");
}
void Window_populateRecentList(text_t** files)
{
int i;
for (i = 0; i < 4; i++)
if (wcscmp(files[i], "") != 0)
wprintf(L"recent: %s\n", files[i]);
}
void Window_setTitle(const wchar_t *title)
{
char mbyte[32];
if (wcstombs(mbyte, title, sizeof(mbyte)) >= sizeof(mbyte))
mbyte[sizeof(mbyte) - 1] = 0;
SDL_WM_SetCaption(mbyte, NULL);
}
int Dialog_open(wchar_t* path, int pathSize)
{
printf("dialog_open() not implemented\n");
return 0;
#warning TODO retval
}
int Dialog_save(wchar_t* path)
{
printf("dialog_save() not implemented\n");
return 0;
#warning TODO retval
}
void Dialog_showColorPicker(unsigned int* color)
{
*color = 0;
printf("dialog_save() not implemented\n");
}
int handleKey(SDLKey key)
{
switch (key) {
case SDLK_ESCAPE:
return 1;
}
return 0;
}
int handleEvent(SDL_Event *ev)
{
switch (ev->type) {
case SDL_QUIT:
return 1;
case SDL_KEYDOWN:
return handleKey(ev->key.keysym.sym);
}
return 0;
}
int doEvents()
{
SDL_Event ev;
int quit = 0;
while (SDL_PollEvent(&ev)) // SDL_WaitEvent()
quit |= handleEvent(&ev);
return quit;
}
void run(SDL_Surface *screen)
{
for (;;) {
if (doEvents())
break;
Editor_timedUpdate();
printf("frame\n");
SDL_Delay(160);
}
}
int main(int argc, char *argv[])
{
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
fprintf(stderr, "SDL_Init(): %s\n", SDL_GetError());
return 1;
}
SDL_Surface *screen = SDL_SetVideoMode(800, 600, 32, SDL_OPENGL | SDL_GL_DOUBLEBUFFER);
EMGFXBackend_create();
Editor_create();
// TODO: Editor_getRecentFiles()
EMGFXBackend_updateViewPort(800, 600);
Editor_setWindowSize(800, 600);
Editor_update();
run(screen);
SDL_Quit();
return 0;
}