{"id":27398927,"url":"https://github.com/streamlabs/streamlabs-overlay","last_synced_at":"2025-04-14T02:12:30.808Z","repository":{"id":37181038,"uuid":"157613451","full_name":"streamlabs/streamlabs-overlay","owner":"streamlabs","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-23T23:15:04.000Z","size":495,"stargazers_count":16,"open_issues_count":6,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-14T02:12:19.896Z","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":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/streamlabs.png","metadata":{"files":{"readme":"readme.md","changelog":"CHANGELOG.md","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":"2018-11-14T21:29:54.000Z","updated_at":"2025-04-09T10:13:35.000Z","dependencies_parsed_at":"2023-02-18T10:46:24.763Z","dependency_job_id":"1148c1b1-9427-4d96-9bdd-2d9d9a7fee89","html_url":"https://github.com/streamlabs/streamlabs-overlay","commit_stats":null,"previous_names":["streamlabs/streamlabs-overlay","stream-labs/streamlabs-overlay"],"tags_count":61,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlabs%2Fstreamlabs-overlay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlabs%2Fstreamlabs-overlay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlabs%2Fstreamlabs-overlay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streamlabs%2Fstreamlabs-overlay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/streamlabs","download_url":"https://codeload.github.com/streamlabs/streamlabs-overlay/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248809051,"owners_count":21164896,"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":"2025-04-14T02:12:30.166Z","updated_at":"2025-04-14T02:12:30.799Z","avatar_url":"https://github.com/streamlabs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Overlay\r\n`overlay` - it is a window what try to stay over any other windows( even fullscreen games ) and show content of some `source`. \r\n\r\n`source` - can be other window like chat or cpu monitor. \r\n\r\nIt should be build as nodejs module. \r\n\r\n## NodeJS Module \r\n### Build \r\n  There is cmake project file in repository what can be used to make node module. \r\n\r\nTo setup env \r\n```\r\nyarn install\r\n```\r\n\r\nTo configure a build\r\n```\r\nmkdir build\r\ncd build\r\ncmake -G \"Visual Studio 16 2019\" -A x64  ../ \r\n```\r\n\r\nAnd to make a build\r\n```\r\ncmake --build . --config Release\r\n```\r\n\r\n#### Requirements\r\n- node\r\n- yarn\r\n- msbuild (vs studio make tools )\r\n\r\n### Module use examples\r\n  Examples to show api usage for simple usecases. \r\n```\r\nyarn electron examples\\example_with_offscreen.js\t  \r\nyarn electron examples\\example_interactivity_console.js\r\nyarn electron examples\\example_interactivity_window.js\r\n```\r\n  \r\n\r\n### Module API\r\nEach overlay has ID by which it can be adressed in api.\r\n\r\nThread what control overlays have to be started and stoped explicitly by module user\r\n- `start()` \r\n- `stop()`\r\n\r\nFor now overlays can be shown and hidden all together\r\n- `show()`\r\n- `hide()`\r\n\r\nTo get basic info about overlays \r\n- `getCount()`\r\n- `getIds()` it return list of overlay ids. \r\n- `getInfo(overlay_id)`\r\n\r\nTo create, setup and remove overlay\r\n- `addHWND(hwnd)` return overlay id \r\n- `setPosition(overlay_id, x, y, width, height)`\r\n- `setTransparency(overlay_id, transparency)` from 0 to 255 like in SetLayeredWindowAttributes \r\n- `reload(overlay_id)` send web view a command to reload current page\r\n- `remove(overlay_id)`\r\n- `paintOverlay(overlay_id, width, height, bitmap)` \r\n\r\nFor interective mode set callbacks and switch on/off. See examples\\example_with_hwnd_node.js. \r\n- `setMouseCallback(callback)` \r\n- `setKeyabordCallback(callback)`\r\n- `switchInteractiveMode()` \r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamlabs%2Fstreamlabs-overlay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreamlabs%2Fstreamlabs-overlay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreamlabs%2Fstreamlabs-overlay/lists"}