Allegro 5 example: main.cpp matches other examples. added window title.

docking
ocornut 10 years ago
parent 1845ff4690
commit 489e28ec11

@ -4,11 +4,10 @@ I choose to provide Visual Studio 10 .sln files and Makefile for Linux/OSX.
Please let me know if they don't work with your setup! Please let me know if they don't work with your setup!
You can probably just import the .cpp files into your own system and figure out the linkage from there. You can probably just import the .cpp files into your own system and figure out the linkage from there.
opengl_example/ opengl_example/
OpenGL example, using GLFW + fixed pipeline. OpenGL example, using GLFW + fixed pipeline.
This is simple and should work for all OpenGL enabled applications. This is simple and should work for all OpenGL enabled applications.
Prefer following this example since it is the shortest one! Prefer following this example to learn how ImGui works, because it is the simplest shortest one!
opengl3_example/ opengl3_example/
OpenGL example, using GLFW/GL3W + programmable pipeline. OpenGL example, using GLFW/GL3W + programmable pipeline.
@ -28,3 +27,6 @@ ios_example/
sdl_opengl_example/ sdl_opengl_example/
SDL2 + OpenGL example. SDL2 + OpenGL example.
allegro5_example/
Allegro 5 example.

@ -1,7 +1,6 @@
// ImGui Allegro 5 bindings // ImGui Allegro 5 bindings
// by @birthggd
// public domain
// https://github.com/ocornut/imgui // https://github.com/ocornut/imgui
// by @birthggd, public domain
#include <stdint.h> // uint64_t #include <stdint.h> // uint64_t
#include <cstring> // memcpy #include <cstring> // memcpy

@ -1,16 +1,18 @@
// public domain // ImGui Allegro 5 bindings
// https://github.com/ocornut/imgui
// by @birthggd, public domain
#pragma once #pragma once
struct ALLEGRO_DISPLAY; struct ALLEGRO_DISPLAY;
union ALLEGRO_EVENT; union ALLEGRO_EVENT;
bool ImGui_ImplA5_Init(ALLEGRO_DISPLAY *disp); bool ImGui_ImplA5_Init(ALLEGRO_DISPLAY* display);
void ImGui_ImplA5_ProcessEvent(ALLEGRO_EVENT *ev); void ImGui_ImplA5_Shutdown();
void ImGui_ImplA5_Shutdown(); void ImGui_ImplA5_NewFrame();
void ImGui_ImplA5_NewFrame(); void ImGui_ImplA5_ProcessEvent(ALLEGRO_EVENT* event);
bool Imgui_ImplA5_CreateDeviceObjects();
void ImGui_ImplA5_InvalidateDeviceObjects();
// Use if you want to reset your rendering device without losing ImGui state.
bool Imgui_ImplA5_CreateDeviceObjects();
void ImGui_ImplA5_InvalidateDeviceObjects();

@ -1,3 +1,4 @@
// ImGui - standalone example application for Allegro 5
// public domain // public domain
#include <stdint.h> #include <stdint.h>
@ -6,75 +7,85 @@
#include <imgui.h> #include <imgui.h>
#include "imgui_impl_a5.h" #include "imgui_impl_a5.h"
int main(int argc, char **argv) int main(int, char**)
{ {
ALLEGRO_DISPLAY *disp; // Setup Allegro
ALLEGRO_EVENT_QUEUE *queue; al_init();
al_install_keyboard();
al_init(); al_install_mouse();
al_install_keyboard(); al_init_primitives_addon();
al_install_mouse(); ALLEGRO_DISPLAY* display = al_create_display(1280, 720);
al_set_window_title(display, "ImGui Allegro 5 example");
al_init_primitives_addon(); ALLEGRO_EVENT_QUEUE* queue = al_create_event_queue();
al_register_event_source(queue, al_get_display_event_source(display));
//al_set_new_display_option(ALLEGRO_VSYNC, 1, ALLEGRO_DONTCARE); al_register_event_source(queue, al_get_keyboard_event_source());
disp = al_create_display(1280, 800); al_register_event_source(queue, al_get_mouse_event_source());
queue = al_create_event_queue(); // Setup ImGui binding
al_register_event_source(queue, al_get_display_event_source(disp)); ImGui_ImplA5_Init(display);
al_register_event_source(queue, al_get_keyboard_event_source()); //ImGuiIO& io = ImGui::GetIO();
al_register_event_source(queue, al_get_mouse_event_source()); //ImFont* my_font0 = io.Fonts->AddFontDefault();
//ImFont* my_font1 = io.Fonts->AddFontFromFileTTF("../../extra_fonts/DroidSans.ttf", 16.0f);
ImGui_ImplA5_Init(disp); //ImFont* my_font2 = io.Fonts->AddFontFromFileTTF("../../extra_fonts/Karla-Regular.ttf", 16.0f);
//ImFont* my_font3 = io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyClean.ttf", 13.0f); my_font3->DisplayOffset.y += 1;
bool show_test_window = true; //ImFont* my_font4 = io.Fonts->AddFontFromFileTTF("../../extra_fonts/ProggyTiny.ttf", 10.0f); my_font4->DisplayOffset.y += 1;
bool show_another_window = false; //ImFont* my_font5 = io.Fonts->AddFontFromFileTTF("c:\\Windows\\Fonts\\ArialUni.ttf", 18.0f, io.Fonts->GetGlyphRangesJapanese());
ImVec4 clear_color = ImColor(114, 144, 154);
bool show_test_window = true;
bool running = true; bool show_another_window = false;
while (running) { ImVec4 clear_color = ImColor(114, 144, 154);
ALLEGRO_EVENT ev; // Main loop
while (al_get_next_event(queue, &ev)) { bool running = true;
ImGui_ImplA5_ProcessEvent(&ev); while (running)
if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) running = false;
}
ImGui_ImplA5_NewFrame();
{ {
static float f; ALLEGRO_EVENT ev;
ImGui::Text("Hello, world!"); while (al_get_next_event(queue, &ev))
ImGui::SliderFloat("float", &f, 0.0f, 1.0f); {
ImGui::ColorEdit3("clear color", (float*)&clear_color); ImGui_ImplA5_ProcessEvent(&ev);
if (ImGui::Button("Test Window")) show_test_window ^= 1; if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE) running = false;
if (ImGui::Button("Another Window")) show_another_window ^= 1; }
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f/ImGui::GetIO().Framerate, ImGui::GetIO().Framerate); ImGui_ImplA5_NewFrame();
// 1. Show a simple window
// Tip: if we don't call ImGui::Begin()/ImGui::End() the widgets appears in a window automatically called "Debug"
{
static float f;
ImGui::Text("Hello, world!");
ImGui::SliderFloat("float", &f, 0.0f, 1.0f);
ImGui::ColorEdit3("clear color", (float*)&clear_color);
if (ImGui::Button("Test Window")) show_test_window ^= 1;
if (ImGui::Button("Another Window")) show_another_window ^= 1;
ImGui::Text("Application average %.3f ms/frame (%.1f FPS)", 1000.0f/ImGui::GetIO().Framerate, ImGui::GetIO().Framerate);
}
// 2. Show another simple window, this time using an explicit Begin/End pair
if (show_another_window)
{
ImGui::SetNextWindowSize(ImVec2(200, 100), ImGuiSetCond_FirstUseEver);
ImGui::Begin("Another Window", &show_another_window);
ImGui::Text("Hello");
ImGui::End();
}
// 3. Show the ImGui test window. Most of the sample code is in ImGui::ShowTestWindow()
if (show_test_window)
{
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiSetCond_FirstUseEver);
ImGui::ShowTestWindow(&show_test_window);
}
// Rendering
al_clear_to_color(al_map_rgba_f(clear_color.x, clear_color.y, clear_color.z, clear_color.w));
ImGui::Render();
al_flip_display();
} }
if (show_another_window) { // Cleanup
ImGui::SetNextWindowSize(ImVec2(200, 100), ImGuiSetCond_FirstUseEver); ImGui_ImplA5_Shutdown();
ImGui::Begin("Another Window", &show_another_window); al_destroy_event_queue(queue);
ImGui::Text("Hello"); al_destroy_display(display);
ImGui::End();
}
if (show_test_window) { return 0;
ImGui::SetNextWindowPos(ImVec2(650, 20), ImGuiSetCond_FirstUseEver);
ImGui::ShowTestWindow(&show_test_window);
}
al_clear_to_color(al_map_rgba_f(clear_color.x, clear_color.y, clear_color.z, clear_color.w));
ImGui::Render();
al_flip_display();
}
ImGui_ImplA5_Shutdown();
al_destroy_event_queue(queue);
al_destroy_display(disp);
return 0;
} }

Loading…
Cancel
Save