Open arctic-alpaca opened 4 years ago
Nice work. Thank you I will check that.
I've created an issue also on the raqote repo: https://github.com/jrmuizel/raqote/issues/162
Thank you.
I forgot to include the modified version of the plotters_backend crate in the repository, this should be fixed now. This doesn't impact the original problem.
I could implement the plotters backend in raqote without issues. I didn't deal with the text portion of the backend, but that doesn't cause the panic issue in OrbTK either (but it probably does cause the clipped text in the top left).
I suspect, that the issue lies in the interaction of OrbTk and raqote or I'm not using the OrbTk drawing API correctly.
The panic seems to have changed location since I posted this issue. Maybe this is related to your commit d274938.
```
thread 'main' panicked at 'attempt to add with overflow', C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\sw-composite-0.7.13\src\lib.rs:806:7
stack backtrace:
0: 0xfcb5ab - backtrace::backtrace::dbghelp::trace::ha09940ef4b8fd9a2
at C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace/dbghelp.rs:88
1: 0xfcb5ab - backtrace::backtrace::trace_unsynchronized::h19d7d1b30f96fe6c
at C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace/mod.rs:66
2: 0xfcb5ab - std::sys_common::backtrace::_print_fmt::hf038dfff95c497df
at src\libstd\sys_common/backtrace.rs:78
3: 0xfcb5ab -
Disregard my last post, I think I found the problem. The application only panics when using rgba and it seems like using rgb and set_alpha
on the RenderContext2D
works. I guess the alpha is used twice when using rgba colors and that's what causes the overflow.
The bars not getting drawn at all was my fault, I screwed up the transform for the text and I think this might have caused it.
Edit: I updated my code, so far everything seems to be working as expected.
Great, I'm happy you found the source. It's a really great work!
Hello
Describe the bug I'm working on creating an OrbTk backend for plotters. This is working alright, but I encountered a problem. When trying to create this example, a component of raqote panics with
thread 'main' panicked at 'attempt to add with overflow', C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\sw-composite-0.7.13\src\lib.rs:893:7
. When usingcargo run --release
, the code doesn't panic but the plot isn't displayed properly.I'm not sure what or why this is happening and my attemps at creating a minimal example failed.
To Reproduce Steps to reproduce the behavior:
https://github.com/arctic-alpaca/plotters_in_orbtk.git
cargo run
to see the panic orcargo run --release
to see the broken plotExpected behavior The code shouldn't panic and the plot should be displayed correctly.
Screenshots How the plot should look like:
How it does look like:
Desktop (please complete the following information):
Cargo.toml of the project:
[dev-dependencies] plotters = {version = "^0.3.0"}
Additional context
Backtrace
``` Running `target\debug\plotters_in_orbtk.exe` thread 'main' panicked at 'attempt to add with overflow', C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\sw-composite-0.7.13\src\lib.rs:893:7 stack backtrace: 0: 0x101afeb - backtrace::backtrace::dbghelp::trace::ha09940ef4b8fd9a2 at C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace/dbghelp.rs:88 1: 0x101afeb - backtrace::backtrace::trace_unsynchronized::h19d7d1b30f96fe6c at C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\backtrace-0.3.46\src\backtrace/mod.rs:66 2: 0x101afeb - std::sys_common::backtrace::_print_fmt::hf038dfff95c497df at src\libstd\sys_common/backtrace.rs:78 3: 0x101afeb -::fmt::he2295693089d2e8c
at src\libstd\sys_common/backtrace.rs:59
4: 0x104698c - core::fmt::write::h2e7468e40976ea37
at src\libcore\fmt/mod.rs:1076
5: 0x100c689 - std::io::Write::write_fmt::hef3158223e737cb6
at src\libstd\io/mod.rs:1537
6: 0x101f820 - std::sys_common::backtrace::_print::he4a39cb956ba394d
at src\libstd\sys_common/backtrace.rs:62
7: 0x101f820 - std::sys_common::backtrace::print::h38d45a7d7a4d1f02
at src\libstd\sys_common/backtrace.rs:49
8: 0x101f820 - std::panicking::default_hook::{{closure}}::hfcc0d2f90e4d71be
at src\libstd/panicking.rs:198
9: 0x101f4a9 - std::panicking::default_hook::h7e61c8ee936a661d
at src\libstd/panicking.rs:217
10: 0x101ff5d - std::panicking::rust_panic_with_hook::h8b0608bd552a3d13
at src\libstd/panicking.rs:526
11: 0x101fb74 - rust_begin_unwind
at src\libstd/panicking.rs:437
12: 0x10432d0 - core::panicking::panic_fmt::h858651244c7bf662
at src\libcore/panicking.rs:85
13: 0x104321c - core::panicking::panic::h3d3bbc55f27215e0
at src\libcore/panicking.rs:50
14: 0xb60982 - sw_composite::over_in::h282ad0b132fae7c7
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\sw-composite-0.7.13\src/lib.rs:893
15: 0xb53f70 - ::blit_span::h8f738c757f051f98
at C:\Users\xyz\.cargo\git\checkouts\raqote-b0d3fc5b6a6a3416\d21bcda\src/blitter.rs:468
16: 0xb4cbc3 - raqote::draw_target::DrawTarget::composite::he707b14ced8549ea
at C:\Users\xyz\.cargo\git\checkouts\raqote-b0d3fc5b6a6a3416\d21bcda\src/draw_target.rs:949
17: 0xb4b119 - raqote::draw_target::DrawTarget::fill::h14f30db3bc3dd4f3
at C:\Users\xyz\.cargo\git\checkouts\raqote-b0d3fc5b6a6a3416\d21bcda\src/draw_target.rs:704
18: 0xb4a604 - raqote::draw_target::DrawTarget::stroke::hc98438d58da12c7b
at C:\Users\xyz\.cargo\git\checkouts\raqote-b0d3fc5b6a6a3416\d21bcda\src/draw_target.rs:655
19: 0xb1b157 - orbtk_render::platform::RenderContext2D::stroke::hd3dcae43aff925ab
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\render\src\raqote/mod.rs:183
20: 0x43a4fc - ::draw_line::h7db47e4a05807778
at C:\Users\xyz\CLionProjects\plotters_in_orbtk\orbtk_backend\src/backend.rs:94
21: 0x42a767 - plotters::coord::ranged2d::cartesian::MeshLine::draw::h3e367523dbc112a0
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\coord\ranged2d/cartesian.rs:150
22: 0x433b91 - plotters::chart::context::ChartContext>::draw_mesh_lines::{{closure}}::h6434ff939ca339eb
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\chart/context.rs:188
23: 0x440474 - plotters::drawing::area::DrawingArea>::draw_mesh::{{closure}}::{{closure}}::he23379c00076231e
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\drawing/area.rs:200
24: 0x42b032 - plotters::coord::ranged2d::cartesian::Cartesian2d::draw_mesh::h0d8cb2f67db42bb7
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\coord\ranged2d/cartesian.rs:72
25: 0x440307 - plotters::drawing::area::DrawingArea>::draw_mesh::{{closure}}::haedd2c20c591ddaa
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\drawing/area.rs:199
26: 0x43cc14 - plotters::drawing::area::DrawingArea::backend_ops::h69a138dce0fda22d
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\drawing/area.rs:277
27: 0x440139 - plotters::drawing::area::DrawingArea>::draw_mesh::h113aae9e0537bae4
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\drawing/area.rs:198
28: 0x43368e - plotters::chart::context::ChartContext>::draw_mesh_lines::ha0b5f09dc6e6bcfb
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\chart/context.rs:170
29: 0x437cb9 - plotters::chart::context::ChartContext>::draw_mesh::h47dcb03886dff824
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\chart/context.rs:481
30: 0x449b10 - plotters::chart::mesh::MeshStyle::draw::had68e67be7a163a1
at C:\Users\xyz\.cargo\registry\src\github.com-1ecc6299db9ec823\plotters-0.3.0\src\chart/mesh.rs:463
31: 0x41e4fc - ::draw::hfb7bc0e79fcac0aa
at src/main.rs:36
32: 0x42bf33 - orbtk_render::PipelineTrait::draw_pipeline::h0f3b61e835f8c6b6
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\render\src/lib.rs:122
33: 0xb1ca27 - orbtk_render::platform::RenderContext2D::draw_pipeline::hf944ae1c1abb44d2
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\render\src\raqote/mod.rs:352
34: 0x996d36 - ::render_self::h5bf0bcaf5f18fb91
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/pipeline.rs:15
35: 0x997f31 - orbtk_api::render_object::RenderObject::render::h73f17b5c511777e9
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:80
36: 0xa4a973 - orbtk_api::render_object::RenderObject::render_children::h19ea94a6fd62e58b
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:151
37: 0xa4a5be - orbtk_api::render_object::RenderObject::render::hffc8267db4da09a4
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:103
38: 0x9d3c43 - orbtk_api::render_object::RenderObject::render_children::h4add76e8cda2515d
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:151
39: 0x9d386e - orbtk_api::render_object::RenderObject::render::h98b5b9302dceef47
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:103
40: 0xa4a973 - orbtk_api::render_object::RenderObject::render_children::h19ea94a6fd62e58b
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:151
41: 0xa4a5be - orbtk_api::render_object::RenderObject::render::hffc8267db4da09a4
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\render_object/mod.rs:103
42: 0x98e8ca - >::run_with_context::h4167becef8e66cee
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\systems/render_system.rs:64
43: 0x9e2caa - dces::world::World::run_with_context::h43c0298dd70b869f
at C:\Users\xyz\.cargo\git\checkouts\dces-rust-0e90bfa1cf1cf6e4\df014f1\src/world.rs:144
44: 0x9c5993 - ::run::hdbae44ff593edccb
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\application/window_adapter.rs:181
45: 0x9909b3 - orbtk_shell::platform::window::Window::update::h57ce978b6bf83053
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\shell\src\orbclient/window.rs:333
46: 0x9f8efc - orbtk_shell::platform::Shell::run::ha38887c8120f1ff9
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\shell\src\orbclient/mod.rs:81
47: 0xa54998 - orbtk_api::application::Application::run::h184b95337e81f035
at C:\Users\xyz\.cargo\git\checkouts\orbtk-90d798f349c2ab56\eb4492c\crates\api\src\application/mod.rs:96
48: 0x41ecb5 - plotters_in_orbtk::main::hc261195bf5854dbf
at src/main.rs:100
49: 0x42c44b - std::rt::lang_start::{{closure}}::h2e091574df4ad394
at C:\Users\xyz\.rustup\toolchains\stable-x86_64-pc-windows-gnu\lib/rustlib/src/rust\src\libstd/rt.rs:67
50: 0x102021c - std::rt::lang_start_internal::{{closure}}::hcfe58f53feea7233
at src\libstd/rt.rs:52
51: 0x102021c - std::panicking::try::do_call::hc4163588b8559d85
at src\libstd/panicking.rs:348
52: 0x102021c - std::panicking::try::h310a3be58418d841
at src\libstd/panicking.rs:325
53: 0x102021c - std::panic::catch_unwind::h52728a6ebc96df5e
at src\libstd/panic.rs:394
54: 0x102021c - std::rt::lang_start_internal::ha1701ac7d300255b
at src\libstd/rt.rs:51
55: 0x42c423 - std::rt::lang_start::h1bcb8ae6d7ac1b31
at C:\Users\xyz\.rustup\toolchains\stable-x86_64-pc-windows-gnu\lib/rustlib/src/rust\src\libstd/rt.rs:67
56: 0x42180c - main
57: 0x4013c7 - _tmainCRTStartup
58: 0x4014fb - mainCRTStartup
59: 0x7fffbec47bd4 - _report_error
60: 0x7fffbf3ece51 - _report_error
error: process didn't exit successfully: `target\debug\plotters_in_orbtk.exe` (exit code: 101)
```
I tried a different example with success, so I hope my backend isn't the cause.