1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
//! Rendering system for Dear ImGui.
//!
//! Synchronous rendering moves from [`PendingFrame`] to [`ReconciledFrame`] while borrowing its
//! owning Context. Detached
//! rendering uses [`FrameSnapshot`], which contains no native draw pointers and carries
//! exactly one renderer-completion ticket.
//!
//! The provisional pseudo-owned draw-data types are intentionally unavailable:
//!
//! ```compile_fail
//! use dear_imgui_rs::render::OwnedDrawData;
//! ```
//!
//! ```compile_fail
//! use dear_imgui_rs::render::OwnedDrawList;
//! ```
//!
//! Renderer implementations are supplied by backend crates rather than a compatibility
//! module in the core crate:
//!
//! ```compile_fail
//! use dear_imgui_rs::render::renderer;
//! ```
//!
//! The provisional frame and consumer names are also intentionally unavailable:
//!
//! ```compile_fail
//! use dear_imgui_rs::render::RenderedFrame;
//! ```
//!
//! ```compile_fail
//! use dear_imgui_rs::render::RendererConsumer;
//! ```
//!
//! Pending frames expose request and capability metadata, but never native draw data:
//!
//! ```compile_fail
//! fn inspect(frame: &dear_imgui_rs::render::PendingFrame<'_>) {
//! let _ = frame.draw_data();
//! }
//! ```
//!
//! ```compile_fail
//! fn draw(_: &dear_imgui_rs::render::DrawData) {}
//! fn draw_pending(frame: &dear_imgui_rs::render::PendingFrame<'_>) {
//! draw(frame);
//! }
//! ```
//!
//! Reconciliation consumes the pending capability, so it cannot be reused:
//!
//! ```compile_fail
//! fn reconcile_twice(frame: dear_imgui_rs::render::PendingFrame<'_>) {
//! let _ = frame.reconcile_texture_feedback(std::iter::empty());
//! let _ = frame.epoch();
//! }
//! ```
//!
//! A reconciled frame cannot outlive the Context borrow that owns its draw data:
//!
//! ```compile_fail
//! fn escape(
//! frame: dear_imgui_rs::render::ReconciledFrame<'_>,
//! ) -> dear_imgui_rs::render::ReconciledFrame<'static> {
//! frame
//! }
//! ```
//!
//! Consumer kind is fixed at creation rather than claimed by first use:
//!
//! ```compile_fail
//! fn wrong(
//! context: &mut dear_imgui_rs::Context,
//! consumer: &dear_imgui_rs::render::DetachedRendererConsumer,
//! ) {
//! let _ = context.render(consumer);
//! }
//! ```
//!
//! ```compile_fail
//! fn wrong(
//! context: &mut dear_imgui_rs::Context,
//! consumer: &dear_imgui_rs::render::SynchronousRendererConsumer,
//! ) {
//! let _ = context.render_snapshot(consumer);
//! }
//! ```
//!
//! Live draw commands are linear and cannot be detached or cloned:
//!
//! ```compile_fail
//! fn require_clone<T: Clone>() {}
//! require_clone::<dear_imgui_rs::render::DrawCmd<'static>>();
//! ```
// Re-export commonly used types
pub use ;
pub use *;
pub use ;
pub use *;