Removed static library in favor of shared libhydride

This commit is contained in:
Rebekah 2022-04-22 19:20:36 -04:00
parent 81d986c2ec
commit 631f3b931d
Signed by: oneechanhax
GPG Key ID: 183EB7902964DAE5
5 changed files with 16 additions and 85 deletions

View File

@ -155,7 +155,7 @@ if(PNG_FOUND AND GLEW_FOUND AND OPENGL_FOUND AND X11_FOUND AND FREETYPE_FOUND)
target_include_directories(example PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/include/") target_include_directories(example PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/" "${CMAKE_CURRENT_SOURCE_DIR}/include/")
target_link_libraries(example libpdw target_link_libraries(example libpdw
"${CMAKE_CURRENT_SOURCE_DIR}/example-src/lib/libxoverlay.a" hydride
glez glez
${PNG_LIBRARIES} GL GLU GLEW ${FREETYPE_LIBRARIES} ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xfixes_LIB}) ${PNG_LIBRARIES} GL GLU GLEW ${FREETYPE_LIBRARIES} ${X11_X11_LIB} ${X11_Xext_LIB} ${X11_Xfixes_LIB})
endif() endif()

View File

@ -17,9 +17,9 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
#include <hydride.h>
#include <iostream> #include <iostream>
#include "lib/xoverlay.h"
#include <embed_resources.hpp> #include <embed_resources.hpp>
#include <glez/detail/render.hpp> #include <glez/detail/render.hpp>
#include <glez/draw.hpp> #include <glez/draw.hpp>
@ -125,21 +125,21 @@ static const std::string menu_list = R"(
)"; )";
int main() { int main() {
xoverlay_init(); hydride_init();
glez::init(xoverlay_library.width, xoverlay_library.height); glez::init(hydride_library.width, hydride_library.height);
Canvas* canvas; Canvas* canvas;
{ {
input::RefreshInput(); input::RefreshInput();
xoverlay_draw_begin(); hydride_draw_begin();
glez::begin(); glez::begin();
canvas = new Canvas(); canvas = new Canvas();
canvas->Setup(); canvas->Setup();
glez::end(); glez::end();
xoverlay_draw_end(); hydride_draw_end();
} }
auto bounds = input::GetBounds(); auto bounds = input::GetBounds();
@ -178,11 +178,11 @@ int main() {
/*for (auto& i : ui::BaseVar::GetList()) /*for (auto& i : ui::BaseVar::GetList())
printf("ui::BaseVar: %s\n", i->command_name.c_str());*/ printf("ui::BaseVar: %s\n", i->command_name.c_str());*/
xoverlay_show(); hydride_show();
while (1) { while (1) {
input::RefreshInput(); input::RefreshInput();
// Must be called in that order. // Must be called in that order.
xoverlay_draw_begin(); hydride_draw_begin();
glez::begin(); glez::begin();
{ {
@ -205,7 +205,7 @@ int main() {
}*/ }*/
} }
glez::end(); glez::end();
xoverlay_draw_end(); hydride_draw_end();
} }
return 0; return 0;
} }

Binary file not shown.

View File

@ -1,69 +0,0 @@
/*
* Copyright (C) 2017 nullifiedcat
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#pragma once
#ifdef __cplusplus
extern "C"
{
#endif
#include <X11/Xlib.h>
#include <X11/XKBlib.h>
struct xoverlay_library
{
Display *display;
Window window;
Colormap colormap;
GC gc;
XGCValues gcvalues;
XFontStruct font;
int screen;
int width;
int height;
struct
{
int x;
int y;
} mouse;
char init;
char drawing;
char mapped;
};
extern struct xoverlay_library xoverlay_library;
int xoverlay_init();
void xoverlay_destroy();
void xoverlay_show();
void xoverlay_hide();
void xoverlay_draw_begin();
void xoverlay_draw_end();
#ifdef __cplusplus
}
#endif

View File

@ -19,10 +19,10 @@
#include <X11/Xutil.h> // For xlibs keycodes, window geometry #include <X11/Xutil.h> // For xlibs keycodes, window geometry
#include <bitset> // For caching pressed keys #include <bitset> // For caching pressed keys
#include <hydride.h>
#include "functional.hpp" #include "functional.hpp"
#include "../example-src/lib/xoverlay.h"
#include "input.hpp" #include "input.hpp"
namespace input { namespace input {
@ -159,12 +159,12 @@ static std::pair<int, int> bounds(-1, -1);
// Request this to update the input system on button, mouse, and window info // Request this to update the input system on button, mouse, and window info
void RefreshInput() { void RefreshInput() {
if (!xoverlay_library.display || !xoverlay_library.window) if (!hydride_library.display || !hydride_library.window)
return; return;
// Get window bounds // Get window bounds
if (xoverlay_library.width != bounds.first || xoverlay_library.height != bounds.second) { // Activate on change if (hydride_library.width != bounds.first || hydride_library.height != bounds.second) { // Activate on change
bounds = std::make_pair(xoverlay_library.width, xoverlay_library.height); bounds = std::make_pair(hydride_library.width, hydride_library.height);
input::bounds_event.Emit(bounds); input::bounds_event.Emit(bounds);
} }
@ -172,7 +172,7 @@ void RefreshInput() {
Window root_return, child_return; Window root_return, child_return;
int root_x, root_y, mousex, mousey; int root_x, root_y, mousex, mousey;
unsigned int mask_return; unsigned int mask_return;
if (XQueryPointer(xoverlay_library.display, xoverlay_library.window, &root_return, &child_return, &root_x, &root_y, &mousex, &mousey, &mask_return)) { // only update the cursor if this returns true if (XQueryPointer(hydride_library.display, hydride_library.window, &root_return, &child_return, &root_x, &root_y, &mousex, &mousey, &mask_return)) { // only update the cursor if this returns true
if ((mousex != mouse.first || mousey != mouse.second) // Activate on change if ((mousex != mouse.first || mousey != mouse.second) // Activate on change
&& (mousex >= 0 && mousey >= 0 && mousex <= bounds.first && mousey <= bounds.second)) { // Clamp positions to the window && (mousex >= 0 && mousey >= 0 && mousex <= bounds.first && mousey <= bounds.second)) { // Clamp positions to the window
mouse = std::make_pair(mousex, mousey); mouse = std::make_pair(mousex, mousey);
@ -199,12 +199,12 @@ void RefreshInput() {
// Find depressed keys and save them to the stored map // Find depressed keys and save them to the stored map
char keys[32]; char keys[32];
XQueryKeymap(xoverlay_library.display, keys); XQueryKeymap(hydride_library.display, keys);
// Recurse through the map looking for depressed keys // Recurse through the map looking for depressed keys
for (const auto& current : xlibToCatVar) { for (const auto& current : xlibToCatVar) {
// Get the keycode for the key we are looking for... // Get the keycode for the key we are looking for...
int current_key = XKeysymToKeycode(xoverlay_library.display, current.first); int current_key = XKeysymToKeycode(hydride_library.display, current.first);
// Use the keymap with bitwise logic to get state, oof this took forever to make // Use the keymap with bitwise logic to get state, oof this took forever to make
bool pressed = (keys[current_key / 8] & (1 << (current_key % 8))); bool pressed = (keys[current_key / 8] & (1 << (current_key % 8)));