srctree

Robin Linden parent f3c784cf e3729484
browser: Draw a placeholder navigation ui w/ imgui

.bazelrc added: 175, removed: 19, total 156
@@ -30,11 +30,16 @@ build:gnulike --per_file_copt='external/asio[:/]@-Wno-undef'
build:gnulike --per_file_copt='external/boringssl[:/]@-Wno-unused-parameter'
build:gnulike --per_file_copt='external/ftxui[:/]@-Wno-shadow'
build:gnulike --per_file_copt='external/fmt[:/]@-Wno-shadow' # Fixed in master, but not in 7.1.3
build:gnulike --per_file_copt='external/imgui-sfml[:/]@-Wno-implicit-fallthrough'
build:gnulike --per_file_copt='external/imgui-sfml[:/]@-Wno-undef'
build:gnulike --per_file_copt='external/imgui-sfml[:/]@-Wno-unused-parameter'
build:gnulike --per_file_copt='external/imgui[:/]@-Wno-double-promotion'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-double-promotion'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-implicit-fallthrough'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-missing-declarations'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-shadow'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-sign-compare'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-undef'
build:gnulike --per_file_copt='external/sfml[:/]@-Wno-unused-parameter'
 
build:msvc --cxxopt='/std:c++latest'
@@ -47,7 +52,9 @@ build:msvc --per_file_copt='external/boringssl[:/]@/wd4267' # C4267: '=': conver
build:msvc --per_file_copt='external/ftxui[:/]@/wd4005' # C4005: 'NOMINMAX': macro redefinition
build:msvc --per_file_copt='external/ftxui[:/]@/wd4244' # C4244: '=': conversion from 'int' to 'uint8_t', possible loss of data
build:msvc --per_file_copt='external/ftxui[:/]@/wd4267' # C4267: '=': conversion from 'size_t' to 'int', possible loss of data
build:msvc --per_file_copt='external/imgui-sfml[:/]@/wd4100' # C4100: 'bgColor': unreferenced formal parameter
build:msvc --per_file_copt='external/sfml[:/]@/wd4100' # C4100: 'visible': unreferenced formal parameter
build:msvc --per_file_copt='external/sfml[:/]@/wd4244' # C4244: 'initializing': conversion from 'sf::Uint32' to 'sf::Uint8', possible loss of data
build:msvc --per_file_copt='external/sfml[:/]@/wd4456' # C4456: declaration of 'i' hides previous local declaration
build:msvc --per_file_copt='external/sfml[:/]@/wd4701' # C4701: potentially uninitialized local variable 'shape' used
build:msvc --per_file_copt='external/sfml[:/]@/wd4703' # C4703: potentially uninitialized local pointer variable 'shape' used
 
.github/workflows/ci.yaml added: 175, removed: 19, total 156
@@ -6,7 +6,7 @@ jobs:
- uses: actions/checkout@v2
- name: Install
run: |
sudo apt install libxrandr-dev libgl-dev libudev-dev
sudo apt install libxrandr-dev libgl-dev libudev-dev libfreetype-dev
echo "CC=gcc-10" >> $GITHUB_ENV
echo "CXX=g++-10" >> $GITHUB_ENV
wget https://github.com/bazelbuild/bazelisk/releases/download/v1.7.5/bazelisk-linux-amd64 --output-document=bazel
 
WORKSPACE added: 175, removed: 19, total 156
@@ -43,6 +43,22 @@ http_archive(
urls = ["https://github.com/ArthurSonzogni/FTXUI/archive/73a3c24394621f31a59e6b1235dc5fd28f78d3d1.tar.gz"],
)
 
http_archive(
name = "imgui",
build_file = "//third_party:imgui.BUILD",
sha256 = "f7c619e03a06c0f25e8f47262dbc32d61fd033d2c91796812bf0f8c94fca78fb",
strip_prefix = "imgui-1.81",
url = "https://github.com/ocornut/imgui/archive/v1.81.tar.gz",
)
 
http_archive(
name = "imgui-sfml",
build_file = "//third_party:imgui-sfml.BUILD",
sha256 = "843536a6c558579ab57f749c4c6e1e67e0f7b033ab434e0f9cf1ad38726ac51e",
strip_prefix = "imgui-sfml-2.2",
url = "https://github.com/eliasdaler/imgui-sfml/archive/v2.2.tar.gz",
)
 
http_archive(
name = "sfml",
build_file = "//third_party:sfml.BUILD",
@@ -58,3 +74,11 @@ http_archive(
strip_prefix = "spdlog-1.8.2",
urls = ["https://github.com/gabime/spdlog/archive/v1.8.2.tar.gz"],
)
 
http_archive(
name = "stb",
build_file = "//third_party:stb.BUILD",
sha256 = "13a99ad430e930907f5611325ec384168a958bf7610e63e60e2fd8e7b7379610",
strip_prefix = "stb-b42009b3b9d4ca35bc703f5310eedc74f584be58",
url = "https://github.com/nothings/stb/archive/b42009b3b9d4ca35bc703f5310eedc74f584be58.tar.gz",
)
 
browser/BUILD added: 175, removed: 19, total 156
@@ -23,5 +23,9 @@ cc_binary(
cc_binary(
name = "gui",
srcs = ["gui.cpp"],
deps = ["@sfml//:window"],
deps = [
"@imgui",
"@imgui-sfml",
"@sfml//:graphics",
],
)
 
browser/gui.cpp added: 175, removed: 19, total 156
@@ -1,14 +1,38 @@
#include <SFML/Window.hpp>
#include <imgui.h>
#include <imgui-SFML.h>
#include <SFML/Graphics/RenderWindow.hpp>
#include <SFML/System/Clock.hpp>
#include <SFML/Window/Event.hpp>
 
int main() {
sf::Window window(sf::VideoMode(640, 480), "gui", sf::Style::Default);
sf::RenderWindow window{sf::VideoMode(640, 480), "gui"};
window.setFramerateLimit(60);
ImGui::SFML::Init(window);
 
char url_buf[255];
sf::Clock clock;
 
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
ImGui::SFML::ProcessEvent(event);
 
if (event.type == sf::Event::Closed) {
window.close();
}
}
 
ImGui::SFML::Update(window, clock.restart());
 
ImGui::Begin("Navigation");
ImGui::InputText("Url", url_buf, sizeof(url_buf));
ImGui::Button("Go");
ImGui::End();
 
window.clear();
ImGui::SFML::Render(window);
window.display();
}
 
ImGui::SFML::Shutdown();
}
 
filename was Deleted added: 175, removed: 19, total 156
@@ -0,0 +1,19 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
 
cc_library(
name = "imgui-sfml",
srcs = ["imgui-SFML.cpp"],
hdrs = glob(["*.h"]),
includes = ["."],
linkopts = select({
"@platforms//os:linux": ["-lGL"],
"@platforms//os:windows": ["-DEFAULTLIB:opengl32"],
}),
visibility = ["//visibility:public"],
deps = [
"@imgui",
"@sfml//:graphics",
"@sfml//:system",
"@sfml//:window",
],
)
 
filename was Deleted added: 175, removed: 19, total 156
@@ -0,0 +1,9 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
 
cc_library(
name = "imgui",
srcs = glob(["*.cpp"]),
hdrs = glob(["*.h"]),
includes = ["."],
visibility = ["//visibility:public"],
)
 
third_party/sfml.BUILD added: 175, removed: 19, total 156
@@ -1,5 +1,11 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
 
SFML_DEFINES = [
"SFML_STATIC",
"UNICODE",
"_UNICODE",
]
 
cc_library(
name = "system",
srcs = glob([
@@ -20,7 +26,7 @@ cc_library(
"include/SFML/System/*",
]),
copts = ["-Iexternal/sfml/src/"],
defines = ["SFML_STATIC"],
defines = SFML_DEFINES,
linkopts = select({
"@platforms//os:linux": [
"-ludev",
@@ -59,11 +65,7 @@ cc_library(
}),
hdrs = glob(["include/SFML/Window/*"]),
copts = ["-Iexternal/sfml/src/"],
defines = [
"SFML_STATIC",
"UNICODE",
"_UNICODE",
],
defines = SFML_DEFINES,
linkopts = select({
"@platforms//os:linux": [
"-lGL",
@@ -83,3 +85,55 @@ cc_library(
visibility = ["//visibility:public"],
deps = [":system"],
)
 
# TODO(robinlinden): Don't use checked-in libraries.
cc_library(
name = "freetype2",
srcs = select({
"@platforms//os:linux": [],
"@platforms//os:windows": ["extlibs/libs-msvc/x64/freetype.lib"],
}),
hdrs = glob(["extlibs/headers/freetype2/**/*.h"]),
linkopts = select({
"@platforms//os:linux": ["-lfreetype"],
"@platforms//os:windows": [],
}),
strip_include_prefix = "extlibs/headers/freetype2/",
)
 
cc_library(
name = "graphics",
srcs = glob(
include = [
"src/SFML/Graphics/*.cpp",
"src/SFML/Graphics/*.hpp",
],
) + select({
"@platforms//os:linux": glob([
"src/SFML/Graphics/Unix/*.cpp",
"src/SFML/Graphics/Unix/*.hpp",
]),
"@platforms//os:windows": glob([
"src/SFML/Graphics/Win32/*.cpp",
"src/SFML/Graphics/Win32/*.hpp",
]),
}),
hdrs = glob(["include/SFML/Graphics/*"]),
copts = ["-Iexternal/sfml/src/"],
defines = SFML_DEFINES,
linkopts = select({
"@platforms//os:linux": [
"-lGL",
"-lX11",
],
"@platforms//os:windows": [],
}),
strip_include_prefix = "include/",
visibility = ["//visibility:public"],
deps = [
":freetype2",
":window",
"@stb//:image",
"@stb//:image_write",
],
)
 
filename was Deleted added: 175, removed: 19, total 156
@@ -0,0 +1,15 @@
load("@rules_cc//cc:defs.bzl", "cc_library")
 
cc_library(
name = "image",
hdrs = ["stb_image.h"],
includes = ["."],
visibility = ["//visibility:public"],
)
 
cc_library(
name = "image_write",
hdrs = ["stb_image_write.h"],
includes = ["."],
visibility = ["//visibility:public"],
)