diff --git a/CMakeLists.txt b/CMakeLists.txt index 5f96e165..85e66f5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,10 +6,8 @@ SET(PROJECT_WX melonDS) PROJECT(${PROJECT_WX}) SET(SOURCES - src/wx/main.cpp - src/wx/EmuConfig.cpp - src/wx/InputConfig.cpp - src/wx/Platform.cpp + src/libui_sdl/main.cpp + src/libui_sdl/Platform.cpp src/ARM.cpp src/ARMInterpreter.cpp src/ARMInterpreter_ALU.cpp @@ -27,16 +25,64 @@ SET(SOURCES src/RTC.cpp src/SPI.cpp src/SPU.cpp - src/Wifi.cpp) + src/Wifi.cpp + src/libui_sdl/libui/common/areaevents.c + src/libui_sdl/libui/common/control.c + src/libui_sdl/libui/common/debug.c + src/libui_sdl/libui/common/matrix.c + src/libui_sdl/libui/common/shouldquit.c + src/libui_sdl/libui/common/userbugs.c + src/libui_sdl/libui/unix/alloc.c + src/libui_sdl/libui/unix/area.c + src/libui_sdl/libui/unix/box.c + src/libui_sdl/libui/unix/button.c + src/libui_sdl/libui/unix/cellrendererbutton.c + src/libui_sdl/libui/unix/checkbox.c + src/libui_sdl/libui/unix/child.c + src/libui_sdl/libui/unix/colorbutton.c + src/libui_sdl/libui/unix/combobox.c + src/libui_sdl/libui/unix/control.c + src/libui_sdl/libui/unix/datetimepicker.c + src/libui_sdl/libui/unix/debug.c + src/libui_sdl/libui/unix/draw.c + src/libui_sdl/libui/unix/drawmatrix.c + src/libui_sdl/libui/unix/drawpath.c + src/libui_sdl/libui/unix/drawtext.c + src/libui_sdl/libui/unix/editablecombo.c + src/libui_sdl/libui/unix/entry.c + src/libui_sdl/libui/unix/fontbutton.c + src/libui_sdl/libui/unix/form.c + src/libui_sdl/libui/unix/future.c + src/libui_sdl/libui/unix/graphemes.c + src/libui_sdl/libui/unix/grid.c + src/libui_sdl/libui/unix/group.c + src/libui_sdl/libui/unix/image.c + src/libui_sdl/libui/unix/label.c + src/libui_sdl/libui/unix/main.c + src/libui_sdl/libui/unix/menu.c + src/libui_sdl/libui/unix/multilineentry.c + src/libui_sdl/libui/unix/progressbar.c + src/libui_sdl/libui/unix/radiobuttons.c + src/libui_sdl/libui/unix/separator.c + src/libui_sdl/libui/unix/slider.c + src/libui_sdl/libui/unix/spinbox.c + src/libui_sdl/libui/unix/stddialogs.c + src/libui_sdl/libui/unix/tab.c + src/libui_sdl/libui/unix/text.c + src/libui_sdl/libui/unix/util.c + src/libui_sdl/libui/unix/window.c) if (UNIX) -find_package(GTK2 2.0 REQUIRED) -include_directories(${GTK2_INCLUDE_DIRS}) -endif (UNIX) + FIND_PACKAGE(PkgConfig REQUIRED) + PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0) -find_package(wxWidgets REQUIRED) -include(${wxWidgets_USE_FILE}) -link_libraries(${wxWidgets_LIBRARIES}) + INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS}) + LINK_LIBRARIES(${GTK3_LIBRARIES}) + + ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER}) + + LINK_LIBRARIES("dl") +endif (UNIX) find_package(SDL2 REQUIRED) include_directories(${SDL2_INCLUDE_DIR}) @@ -45,6 +91,15 @@ link_libraries(${SDL2_LIBRARIES}) add_executable(${PROJECT_WX} ${SOURCES}) target_link_libraries(${PROJECT_WX}) -set(CMAKE_BUILD_TYPE Release) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() + +if(CMAKE_BUILD_TYPE EQUAL Debug) +set(CMAKE_CXX_FLAGS "-g") +endif() +if(CMAKE_BUILD_TYPE EQUAL Release) +set(CMAKE_CXX_FLAGS "-O3 -flto") +endif() install(TARGETS ${PROJECT_WX} RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) diff --git a/src/libui_sdl/libui/unix/draw.c b/src/libui_sdl/libui/unix/draw.c index 2d7a6367..16ff986a 100644 --- a/src/libui_sdl/libui/unix/draw.c +++ b/src/libui_sdl/libui/unix/draw.c @@ -139,3 +139,56 @@ void uiDrawRestore(uiDrawContext *c) { cairo_restore(c->cr); } + + +// bitmap API + +uiDrawBitmap* uiDrawNewBitmap(uiDrawContext* c, int width, int height) +{ + /*uiDrawBitmap* bmp; + HRESULT hr; + + bmp = uiNew(uiDrawBitmap); + + D2D1_BITMAP_PROPERTIES bp2 = D2D1::BitmapProperties(); + bp2.dpiX = 0; + bp2.dpiY = 0; + bp2.pixelFormat = D2D1::PixelFormat(DXGI_FORMAT_R8G8B8A8_UNORM, D2D1_ALPHA_MODE_IGNORE); + //bp2.pixelFormat = D2D1::PixelFormat(DXGI_FORMAT_B8G8R8A8_UNORM, D2D1_ALPHA_MODE_IGNORE); + // TODO: fallback: convert to BGRA if needed (RGBA only works in hardware mode) + + c->rt->BeginDraw(); + + hr = c->rt->CreateBitmap(D2D1::SizeU(width,height), NULL, 0, &bp2, &bmp->bmp); + if (hr != S_OK) + logHRESULT(L"error creating bitmap", hr); + + c->rt->EndDraw(); + + bmp->Width = width; + bmp->Height = height; + bmp->Stride = width*4; + + return bmp;*/ + return NULL; +} + +void uiDrawBitmapUpdate(uiDrawBitmap* bmp, const void* data) +{ + //D2D1_RECT_U rekt = D2D1::RectU(0, 0, bmp->Width, bmp->Height); + //bmp->bmp->CopyFromMemory(&rekt, data, bmp->Stride); +} + +void uiDrawBitmapDraw(uiDrawContext* c, uiDrawBitmap* bmp, uiRect* srcrect, uiRect* dstrect) +{ + /*D2D_RECT_F _srcrect = D2D1::RectF(srcrect->X, srcrect->Y, srcrect->X+srcrect->Width, srcrect->Y+srcrect->Height); + D2D_RECT_F _dstrect = D2D1::RectF(dstrect->X, dstrect->Y, dstrect->X+dstrect->Width, dstrect->Y+dstrect->Height); + + c->rt->DrawBitmap(bmp->bmp, &_dstrect, 1.0f, D2D1_BITMAP_INTERPOLATION_MODE_LINEAR, &_srcrect);*/ +} + +void uiDrawFreeBitmap(uiDrawBitmap* bmp) +{ + //bmp->bmp->Release(); + //uiFree(bmp); +} diff --git a/src/libui_sdl/libui/unix/draw.h b/src/libui_sdl/libui/unix/draw.h index dbd82ff5..db4612cc 100644 --- a/src/libui_sdl/libui/unix/draw.h +++ b/src/libui_sdl/libui/unix/draw.h @@ -5,6 +5,14 @@ struct uiDrawContext { cairo_t *cr; }; +struct uiDrawBitmap { + int Width; + int Height; + int Stride; + + // add cairo shit here +}; + // drawpath.c extern void runPath(uiDrawPath *p, cairo_t *cr); extern uiDrawFillMode pathFillMode(uiDrawPath *path); diff --git a/src/libui_sdl/libui/unix/stddialogs.c b/src/libui_sdl/libui/unix/stddialogs.c index edce7739..9d7b62a9 100644 --- a/src/libui_sdl/libui/unix/stddialogs.c +++ b/src/libui_sdl/libui/unix/stddialogs.c @@ -38,6 +38,7 @@ static char *filedialog(GtkWindow *parent, GtkFileChooserAction mode, const gcha { if (*j == ';') { + *j = '\0'; gtk_file_filter_add_pattern(filter, fp); fp = j+1; } @@ -47,7 +48,7 @@ static char *filedialog(GtkWindow *parent, GtkFileChooserAction mode, const gcha break; } } - + printf("add filter\n"); gtk_file_chooser_add_filter(fc, filter); } else