{"id":22058990,"url":"https://github.com/bonezone2001/prism","last_synced_at":"2025-03-23T16:47:52.648Z","repository":{"id":252162220,"uuid":"839616394","full_name":"bonezone2001/prism","owner":"bonezone2001","description":"A C++ application framework for building GUIs","archived":false,"fork":false,"pushed_at":"2024-09-15T01:56:06.000Z","size":1005,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-28T23:09:13.202Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bonezone2001.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-08T01:36:19.000Z","updated_at":"2024-09-15T01:56:09.000Z","dependencies_parsed_at":"2024-08-08T03:43:11.502Z","dependency_job_id":"2c0b8e71-6f92-4328-b8a0-15bf1405340d","html_url":"https://github.com/bonezone2001/prism","commit_stats":null,"previous_names":["bonezone2001/prism"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonezone2001%2Fprism","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonezone2001%2Fprism/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonezone2001%2Fprism/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bonezone2001%2Fprism/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bonezone2001","download_url":"https://codeload.github.com/bonezone2001/prism/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245136355,"owners_count":20566586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-30T17:26:37.572Z","updated_at":"2025-03-23T16:47:52.604Z","avatar_url":"https://github.com/bonezone2001.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/images/logo.png\" alt=\"Logo\" width=\"110\" height=\"100\"\u003e\n\n  \u003ch3 align=\"center\"\u003eC++ GUI Application Framework\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Removing the headache of creating modern native GUIs\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003c!-- \u003ca href=\"https://github.com/bonezone2001/prism/blob/master/example.cpp\"\u003eView Example\u003c/a\u003e\n    · --\u003e\n    \u003ca href=\"https://github.com/bonezone2001/prism/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/bonezone2001/prism/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage-and-examples\"\u003eUsage and Examples\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003cbr\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\nCreating native C++ GUI apps is cumbersome when all the mature options seem to look samesy and stifle creativity. Leveraging the power and flexibility of ImGUI, this issue is averted but getting that running adds unneeded friction. That's what this library attempts to solve.\n\n\u003e NOTE: The project is still fairly young so it's missing some vital features but for most it should suffice. If you need a particular feature implemented just create a feature request in the issues section.\n\n\u003cbr\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n## Usage and Examples\n\nHere is how you create the application entry point, this is optional and you can instead create an application instance yourself. [Check here](https://github.com/bonezone2001/prism/blob/master/include/prism/entry_point.h)\n```cpp\n#include \"windows/main_window.h\"\n#include \"prism/entry_point.h\"\n\nPrism::Application* Prism::AppCreate(int argc, char** argv)\n{\n    Prism::Application* app = new Prism::Application(\"Prism App\");\n    app-\u003eaddWindow\u003cMainWindow\u003e();\n\n    return app;\n}\n```\n\nFor each window you create, simply create a class and override it's methods.\n```cpp\n#pragma once\n#include \"prism/prism.h\"\n\nclass MainWindow : public Prism::Window\n{\npublic:\n    MainWindow();\n    MainWindow(Prism::WindowSettings settings);\n    ~MainWindow();\n\n    void onUpdate() override;\n    void onRender() override;\n};\n```\n\nHere is an example implementation\n```cpp\n#include \"main_window.h\"\n\n// Here is just a sample of a window that can be created with Prism.\nMainWindow::MainWindow(int test)\n    : Prism::Window({\n        .width = 1000,\n        .height = 1000,\n        .title = \"Prism Window\",\n        .resizable = false,\n        .fullscreen = false,\n        .useCustomTitlebar = false,\n        .showOnCreate = true,\n        .parent = nullptr\n    }),\n    test(test)\n{}\n\n// \nMainWindow::MainWindow(Prism::WindowSettings settings)\n    : Prism::Window(settings)\n{}\n\nMainWindow::~MainWindow()\n{\n    // The deconstructor is called when the window is destroyed.\n}\n\nvoid MainWindow::onUpdate()\n{\n    // Any code you want to run before rendering goes here.\n}\n\nvoid MainWindow::onRender()\n{\n    // Any code related to rendering goes here.\n\n    ImGui::Begin(\"Test Window\");\n    ImGui::Text(\"Test: %d\", test);\n    ImGui::End();\n}\n```\nNote: the constructor here is slightly different (a test number being passed for the sake of example)\n\n\u003cbr\u003e\n\n\u003c!-- CONTRIBUTING --\u003e\n## Contributing\n\nAny contributions you can make are **super appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Mwah!\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003cbr\u003e\n\n\n\u003c!-- LICENSE --\u003e\n## License\n\nDistributed under the MIT License. See [LICENSE](https://github.com/bonezone2001/prism/blob/master/LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonezone2001%2Fprism","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbonezone2001%2Fprism","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbonezone2001%2Fprism/lists"}