{"id":13542894,"url":"https://github.com/inkyblackness/imgui-go","last_synced_at":"2025-04-02T12:30:41.981Z","repository":{"id":38151151,"uuid":"134304653","full_name":"inkyblackness/imgui-go","owner":"inkyblackness","description":"Go wrapper library for \"Dear ImGui\" (https://github.com/ocornut/imgui) ","archived":true,"fork":false,"pushed_at":"2022-12-31T12:23:04.000Z","size":2358,"stargazers_count":810,"open_issues_count":0,"forks_count":101,"subscribers_count":18,"default_branch":"main","last_synced_at":"2024-11-03T09:33:32.649Z","etag":null,"topics":["dear-imgui","go","golang","gui","hacktoberfest","imgui","toolkit","ui","wrapper"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/inkyblackness.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-21T17:50:01.000Z","updated_at":"2024-11-02T03:00:54.000Z","dependencies_parsed_at":"2023-01-31T19:01:49.129Z","dependency_job_id":null,"html_url":"https://github.com/inkyblackness/imgui-go","commit_stats":null,"previous_names":[],"tags_count":42,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkyblackness%2Fimgui-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkyblackness%2Fimgui-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkyblackness%2Fimgui-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/inkyblackness%2Fimgui-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/inkyblackness","download_url":"https://codeload.github.com/inkyblackness/imgui-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246815261,"owners_count":20838413,"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":["dear-imgui","go","golang","gui","hacktoberfest","imgui","toolkit","ui","wrapper"],"created_at":"2024-08-01T11:00:19.430Z","updated_at":"2025-04-02T12:30:39.729Z","avatar_url":"https://github.com/inkyblackness.png","language":"C++","funding_links":[],"categories":["C++","Repositories"],"sub_categories":[],"readme":"# Dear ImGui for Go\n\n[![Go Doc](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go\u0026logoColor=white\u0026style=flat-square)](https://pkg.go.dev/github.com/inkyblackness/imgui-go/v2)\n[![Go Report Card](https://goreportcard.com/badge/github.com/inkyblackness/imgui-go)](https://goreportcard.com/report/github.com/inkyblackness/imgui-go)\n[![Lint Status](https://github.com/inkyblackness/imgui-go/workflows/golangci-lint/badge.svg)](https://github.com/inkyblackness/imgui-go/actions)\n\n## Discontinued\n**This repository is no longer maintained as per 2022-12-31.\nPlease consider using https://github.com/AllenDang/cimgui-go instead.\nThat project is an auto-generated wrapper and makes it easier to be at the latest version of *Dear ImGui*.**\n\n**You may also have a look at this fork https://github.com/eliasdaler/imgui-go , the owner intended to\ncontinue to support it.**\n\n---\n\nThis library is a [Go](https://www.golang.org) wrapper for **[Dear ImGui](https://github.com/ocornut/imgui)**.\n\nThis wrapper started as a special-purpose wrapper for use within InkyBlackness.\nHowever, it is self-contained and can be used for other purposes as well.\n\nThis wrapper is\n* hand-crafted, for Go\n* documented\n* versioned\n* with ported examples in a separate repository (see below)\n\n![Screenshot from example](assets/screenshot.png)\n\n## API naming\n\nNames of types and functions follow closely those of **Dear ImGui**.\n\nFor functions that have optional parameters, the following schema is applied:\n* There is the \"verbose\" variant, followed by the letter `V`, such as `ButtonV(id string, size Vec2) bool`\n* Next to it there is the \"idiomatic\" variant, without any optional parameter, such as `Button(id string) bool`.\n* The idiomatic variant calls the verbose variant with the default values for the optional parameters.\nFunctions that don't have optional parameters don't come in a verbose variant.\n\nThe **Dear ImGui** functions `IO()` and `Style()` have been renamed to be `CurrentIO()` and `CurrentStyle()`.\nThis was done because their returned types have the same name, causing a name clash.\nWith the `Current` prefix, they also better describe what they return.\n\n## API philosophy\nThis library does not intend to export all the functions of the wrapped **Dear ImGui**. The following filter applies as a rule of thumb:\n* Functions marked as \"obsolete\" are not available. (The corresponding C code isn't even compiled - disabled by define)\n* \"Shortcut\" Functions, which combine language features and/or other **Dear ImGui** functions, are not available. There may be exceptions for this if the shortcut exists in Dear ImGui code base (e.g. `ImGui::Text` which does printf style string formatting)\n* Functions that are not needed by InkyBlackness are ignored. This doesn't mean that they can't be in the wrapper, they are simply not a priority. Feel free to propose an implementation or make a pull request, respecting the previous points :)\n\n## Version philosophy\nThis library does not mirror the versions of the wrapped **Dear ImGui**. The semantic versioning of this wrapper is defined as:\n* Major changes: (Breaking) changes in API or behaviour. Typically done through changes in **Dear ImGui**.\n* Minor changes: Extensions in API. Typically done through small version increments of **Dear ImGui** and/or exposing further features in a compatible way.\n* Patch changes: Bug fixes - either in the wrapper or the wrapped **Dear ImGui**, given that the API \u0026 behaviour remains the same.\n\nAt the moment, this library uses version [1.85](https://github.com/ocornut/imgui/releases/tag/v1.85) of **Dear ImGui**.\n\n## Examples\nA separate repository was created to host ported examples and reference implementations.\nSee repository [inkyblackness/imgui-go-examples](https://github.com/inkyblackness/imgui-go-examples).\n\nIt contains reference implementations for libraries such as [GLFW3](https://github.com/go-gl/glfw) and [SDL2](https://github.com/veandco/go-sdl2), using [OpenGL](https://github.com/go-gl/gl).\n\nThe screenshot above was created with such an example.\n\n## Extras\n\n### FreeType font rendering\n\nIf the `FreeType` library is available for your platform, you can enable using it with the build tag `imguifreetype` - as in\n```\ngo build -tags=\"imguifreetype\"\n```\nThis extra is based on the reference implementation from **Dear ImGui**.\n\nIf you set the build tag, yet the corresponding support has not been added to the library, you will receive a build error.\nContributions to support more build environments are happily accepted. See file `FreeType.go`.\n\n\u003e If you are trying to do this on MS Windows with MinGW and receive an error like\n\u003e `pkg-config: exec: \"pkg-config\": executable file not found in %PATH%`,\n\u003e refer to [online guides](https://stackoverflow.com/questions/1710922/how-to-install-pkg-config-in-windows) on how to add this to your installation.\n\n## Alternatives\n\nSince 2022-08, there is https://github.com/AllenDang/cimgui-go , which is an auto-generated wrapper that\nmakes it easier to be at the latest version of **Dear ImGui**. It is recommended to use that one instead. \n\nBefore inkyblackness/imgui-go was created, the following alternatives were considered - and ignored:\n* `kdrag0n/go-imgui` (no longer available). Reasons for dismissal at time of decision:\n  * Auto-generated bloat, which doesn't help\n  * Was using old API (1.5x)\n  * Did not compile\n  * Project appeared to be abandoned\n* [Extrawurst/cimgui](https://github.com/Extrawurst/cimgui). Reasons for dismissal at time of decision:\n  * Was using old API (1.5x), 1.6x was attempted\n  * Apparently semi-exposed the C++ API, especially through the structures\n  * Adding this adds another dependency\n  * Note: `cimgui` has since switched to an auto-generated method. You can use that instead of this manually curated wrapper here.\n\n\n## License\n\nThe project is available under the terms of the **New BSD License** (see LICENSE file).\nThe licenses of included sources are stored in the **_licenses** folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finkyblackness%2Fimgui-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finkyblackness%2Fimgui-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finkyblackness%2Fimgui-go/lists"}