Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pass HtmlCanvasElement element directly in WebRunner::start #4780

Merged
merged 4 commits into from
Jul 15, 2024

Conversation

jprochazk
Copy link
Collaborator

@jprochazk jprochazk commented Jul 4, 2024

Migration guide

WebRunner::start now accepts a web_sys::HtmlCanvasElement instead of its ID.

If you are responsible for creating a canvas and assigning it an ID, you no longer need to assign it an ID, and can instead directly pass the canvas to WebRunner:

let canvas = document.createElement("canvas");
body.appendChild(canvas);

let handle = new WebHandle();
handle.start(canvas);

If you already have a canvas in your HTML, you are no longer forced to assign it an ID. You can now use any method you prefer to retrieve it from the DOM.

<canvas id="the_canvas"></canvas>
<script>
let handle = new WebHandle();
handle.start(the_canvas);
</script>

@jprochazk jprochazk mentioned this pull request Jul 4, 2024
5 tasks
@emilk
Copy link
Owner

emilk commented Jul 15, 2024

I think we should get this over the finish line.

Let's not bother with backwards compatibility (i.e. handling either an id or an element).

@emilk emilk added this to the Next Major Release milestone Jul 15, 2024
@jprochazk jprochazk added web Related to running Egui on the web eframe Relates to epi and eframe labels Jul 15, 2024
@jprochazk jprochazk marked this pull request as ready for review July 15, 2024 09:41
@jprochazk
Copy link
Collaborator Author

CI failure seems to be coming from main

crates/eframe/src/web/mod.rs Outdated Show resolved Hide resolved
@jprochazk jprochazk merged commit 0d89e31 into master Jul 15, 2024
35 checks passed
@jprochazk jprochazk deleted the jan/use-canvas-directly branch July 15, 2024 16:59
lucasmerlin pushed a commit to lucasmerlin/egui that referenced this pull request Jul 30, 2024
emilk added a commit to rerun-io/rerun that referenced this pull request Sep 2, 2024
### What
* Tracks egui `master` branch
* Tracks rerun-io/egui_tiles#78

~This changes the interface between HTML/JS and WASM from passing a
canvas id, to passing the canvas element directly
(emilk/egui#4780). This means the preview of
this PR is broken, and merging this PR will likely break it for all
subsequent PRs. @jprochazk do you have a good idea how we can fix this?~

### TODO
* [x] The `re_renderer` example needs a winit update
* [x] Fix uses of deprecated functions.

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested `pixi run rerun-web`
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/7218?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/7218?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!
* [x] If have noted any breaking changes to the log API in
`CHANGELOG.md` and the migration guide

- [PR Build Summary](https://build.rerun.io/pr/7218)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.
@emilk emilk changed the title Use canvas directly Use HtmlCanvasElement element directly to WebRunner::start Sep 26, 2024
@emilk emilk changed the title Use HtmlCanvasElement element directly to WebRunner::start Pass HtmlCanvasElement element directly in WebRunner::start Sep 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
eframe Relates to epi and eframe web Related to running Egui on the web
Projects
None yet
Development

Successfully merging this pull request may close these issues.

WebRunner::start should accept canvas object
2 participants