128 using Factory = std::function<std::unique_ptr<WindowHost>(
207 damage_.restore(snapshot);
231 bool surface_preserves_outside_clip =
false);
394 std::function<
void(
const std::vector<std::string>&)> handler) {
484 (void)design_w; (void)design_h;
502 float window_w,
float window_h,
503 float design_w,
float design_h,
504 float& sx,
float& sy,
float& tx,
float& ty,
505 bool top_align =
false) {
506 if (design_w <= 0.0f || design_h <= 0.0f ||
507 window_w <= 0.0f || window_h <= 0.0f) {
510 const float s = std::min(window_w / design_w, window_h / design_h);
513 tx = (window_w - design_w *
s) * 0.5f;
514 ty = top_align ? 0.0f : (window_h - design_h *
s) * 0.5f;
535 float window_w,
float window_h,
536 float design_w,
float design_h,
537 bool top_align =
false) {
538 float sx, sy, tx, ty;
541 sx, sy, tx, ty, top_align)) {
544 if (sx <= 0.0f || sy <= 0.0f)
return pt;
545 return {(pt.
x - tx) / sx, (pt.
y - ty) / sy};
561 float& tx,
float& ty)
const {
562 (void)sx; (void)sy; (void)tx; (void)ty;
588 return {{{{0, 0, 1920, 1080}, 1.0f,
"Default"}}};
636 (void)ready_to_return();
687 return unsupported_features_logged_.count(method) > 0;
702 std::set<std::string> unsupported_features_logged_;
706 void schedule_repaint();
735 std::vector<NativeViewHost*> attached_native_views_;
Definition canvas.hpp:240
Abstract GPU surface — a presentable rendering target backed by a native window/view.
Definition gpu_surface.hpp:112
Definition render_loop.hpp:129
A Yoga-laid-out widget that embeds a single platform-native child view (a system WebView,...
Definition native_view_host.hpp:72
One frame's damage, taken atomically out of a PendingDamage.
Definition pending_damage.hpp:39
Accumulated repaint damage for one frame, in root/window coordinates.
Definition pending_damage.hpp:32
Definition window_host.hpp:113
void restore_pending_dirty(const PendingDamage::Snapshot &snapshot)
Definition window_host.hpp:206
virtual void request_close_deferred()
Schedule request_close() for a later native event-loop turn.
Definition window_host.hpp:612
static Point design_viewport_window_to_root(Point pt, float window_w, float window_h, float design_w, float design_h, bool top_align=false)
Inverse of compute_design_viewport_transform: map a HOST/window-space point back into ROOT (design) s...
Definition window_host.hpp:534
void paint_root(canvas::Canvas &canvas, View &root, bool surface_preserves_outside_clip=false)
virtual bool supports_deferred_close() const
True only when request_close_deferred() schedules close handling for a later native event-loop turn.
Definition window_host.hpp:606
virtual bool attach_native_child_view(void *child_view, float x, float y, float width, float height)
Definition window_host.hpp:283
virtual void * dawn_device_handle() const
Definition window_host.hpp:254
virtual void set_always_on_top(bool on_top)
Keep window above all others.
Definition window_host.hpp:429
virtual void set_close_callback(std::function< void()> cb)=0
static std::unique_ptr< WindowHost > create(View &root, const WindowOptions &options)
virtual bool last_frame_gpu_submission_observed() const
True when the most recent frame rendered by this host was submitted toward its intended output (a pre...
Definition window_host.hpp:664
virtual ContentSize get_content_size() const
float convert_to_native(float logical) const
Convert logical coordinates to physical pixels.
Definition window_host.hpp:577
virtual void * dawn_queue_handle() const
Definition window_host.hpp:255
virtual void request_close()
Definition window_host.hpp:361
virtual bool set_native_child_view_clip(void *child_view, bool has_clip, float x, float y, float width, float height)
Definition window_host.hpp:318
virtual void * dawn_instance_handle() const
Definition window_host.hpp:256
virtual float dpi_scale() const
Get the DPI scale factor for this window.
Definition window_host.hpp:568
virtual void * native_window_handle() const
Definition window_host.hpp:252
virtual bool event_loop_blocks_until_close() const
Browser hosts override this query because their page-owned loop returns immediately.
Definition window_host.hpp:622
virtual void detach_native_child_view(void *child_view)
Definition window_host.hpp:307
virtual void position_beside(WindowHost *other)
Position this window alongside another window.
Definition window_host.hpp:250
virtual ~WindowHost()
Out-of-line, and NOT trivial: it clears the back-pointer of every NativeViewHost still attached to th...
virtual void request_content_size(float w, float h)
Request the native window resize so its CONTENT area becomes (w × h), keeping the window's TOP-LEFT c...
Definition window_host.hpp:443
void mark_dirty(const Rect &root_rect)
void clear_pending_dirty()
Definition window_host.hpp:198
virtual render::GpuSurface * gpu_surface() const
Definition window_host.hpp:257
virtual void set_fixed_aspect_ratio(float ratio)
Constrain window resize to maintain aspect ratio.
Definition window_host.hpp:423
bool feature_marked_unsupported(const char *method) const
True once note_unsupported_feature(method) has fired for method on this host — i.e.
Definition window_host.hpp:686
Rect pending_dirty_bounds() const
Definition window_host.hpp:194
render::RenderLoop * render_loop() const
Definition window_host.hpp:241
void note_unsupported_feature(const char *method)
Log ONCE (per method, per host instance) that a window feature is a base-class no-op on this host,...
virtual std::vector< double > frame_time_samples_ms() const
Main-thread milliseconds spent on each host frame dispatched so far (idle pump + layout + paint + sub...
Definition window_host.hpp:673
bool pending_repaint_is_full() const
Definition window_host.hpp:188
virtual std::vector< uint8_t > capture_back_buffer_png()
Definition window_host.hpp:353
friend class NativeViewHost
Definition window_host.hpp:731
virtual bool supports_compositor_capture() const
True when capture_png() returns pixels from the visible compositor rather than a deterministic host-m...
Definition window_host.hpp:618
virtual void set_client_decoration(bool enabled)
Remove native title bar and let the app draw its own.
Definition window_host.hpp:408
virtual Size max_dimensions() const
Get the maximum available dimensions for this window's screen.
Definition window_host.hpp:571
virtual bool design_viewport_transform(float &sx, float &sy, float &tx, float &ty) const
Definition window_host.hpp:560
virtual std::vector< MonitorInfo > get_monitors() const
Get list of connected monitors. Default returns one virtual monitor.
Definition window_host.hpp:587
bool has_pending_dirty_bounds() const
Definition window_host.hpp:193
std::function< void(uint32_t width, uint32_t height)> ResizeCallback
Definition window_host.hpp:120
static bool has_factory()
PendingDamage::Snapshot take_pending_dirty()
Definition window_host.hpp:205
virtual void run_event_loop_until(std::function< bool()> ready_to_return)
Run the event loop, then keep dispatching main-thread work until ready_to_return reports that stack-b...
Definition window_host.hpp:633
virtual void invalidate_input_state()
Definition window_host.hpp:358
virtual void set_open_files_handler(std::function< void(const std::vector< std::string > &)> handler)
Definition window_host.hpp:393
static bool compute_design_viewport_transform(float window_w, float window_h, float design_w, float design_h, float &sx, float &sy, float &tx, float &ty, bool top_align=false)
Pure math behind set_design_viewport — used both by the platform host's paint_scene and by tests.
Definition window_host.hpp:501
void attach_render_loop(render::RenderLoop *loop)
Definition window_host.hpp:238
virtual void log_gpu_diagnostics_summary()
Log this host's GPU-diagnostics summary line(s) — whether the Skia log bridge is wired and what reach...
Definition window_host.hpp:679
virtual bool is_visible() const =0
virtual bool set_native_child_view_bounds(void *child_view, float x, float y, float width, float height)
Definition window_host.hpp:295
virtual void set_resize_callback(ResizeCallback cb)
static void clear_factory()
virtual void set_mouse_relative_mode(bool enabled)
Hide cursor and report relative deltas (infinite drag for knobs).
Definition window_host.hpp:593
virtual bool supports_back_buffer_capture() const
True when capture_back_buffer_png() is implemented by this host.
Definition window_host.hpp:643
virtual double gpu_render_time_ms() const
Most recent whole-recording GPU render time in milliseconds for the last presented frame,...
Definition window_host.hpp:268
virtual bool gpu_render_timing_available() const
Whether whole-recording GPU render timing is available this run — the host owns a SkiaSurface whose S...
Definition window_host.hpp:274
void request_frame()
Definition window_host.hpp:180
std::function< std::unique_ptr< WindowHost >( View &root, const WindowOptions &options)> Factory
Definition window_host.hpp:128
static void set_factory(Factory factory)
virtual void set_app_key_monitor(std::function< bool(const KeyEvent &)> handler)
Definition window_host.hpp:375
virtual void set_design_viewport(float design_w, float design_h)
Set a fixed "design viewport".
Definition window_host.hpp:483
virtual void * native_content_view_handle() const
Definition window_host.hpp:253
HitTestRegion
Hit-test region types for client-decorated windows.
Definition window_host.hpp:414
@ resize_ne
Definition window_host.hpp:417
@ resize_s
Definition window_host.hpp:416
@ resize_e
Definition window_host.hpp:416
@ none
Definition window_host.hpp:415
@ resize_sw
Definition window_host.hpp:417
@ client
Definition window_host.hpp:415
@ resize_nw
Definition window_host.hpp:417
@ close
Definition window_host.hpp:418
@ caption
Definition window_host.hpp:415
@ resize_n
Definition window_host.hpp:416
@ minimize
Definition window_host.hpp:418
@ resize_se
Definition window_host.hpp:417
@ resize_w
Definition window_host.hpp:416
@ maximize
Definition window_host.hpp:418
virtual void run_event_loop()=0
virtual bool event_loop_supports_exit_drain() const
True only when run_event_loop_until() continues dispatching accepted main-thread work after the nativ...
Definition window_host.hpp:626
virtual bool is_gpu_backed() const
Definition window_host.hpp:601
virtual void set_idle_callback(std::function< void()> cb)
Definition window_host.hpp:365
virtual std::vector< uint8_t > capture_png()
Definition window_host.hpp:339
virtual bool supports_gpu_submission_evidence() const
True when this host can report whether the last rendered frame's GPU work was submitted toward its in...
Definition window_host.hpp:648
float convert_to_logical(float px) const
Convert physical pixels to logical coordinates.
Definition window_host.hpp:574
Definition affine_transform.hpp:24
Definition gpu_fwd.hpp:31
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
WindowType
Definition window_manager.hpp:17
@ kModNone
Definition input_events.hpp:16
@ px
Absolute pixels.
Definition geometry.hpp:393
KeyCode
Definition input_events.hpp:35
@ s
Definition input_events.hpp:41
@ h
Definition input_events.hpp:39
@ y
Definition input_events.hpp:42
@ x
Definition input_events.hpp:41
@ unknown
Definition input_events.hpp:36
@ w
Definition input_events.hpp:41
@ height
Definition css_animation.hpp:128
@ width
Definition css_animation.hpp:127
Rich key event with key code, modifiers, and repeat state.
Definition input_events.hpp:193
Definition geometry.hpp:20
float x
Definition geometry.hpp:21
float y
Definition geometry.hpp:21
Axis-aligned rectangle in continuous (float) coordinates.
Definition geometry.hpp:52
Definition geometry.hpp:28
Definition window_host.hpp:115
uint32_t width
Definition window_host.hpp:116
uint32_t height
Definition window_host.hpp:117
Monitor information.
Definition window_host.hpp:580
float dpi_scale
Definition window_host.hpp:582
Rect bounds
Definition window_host.hpp:581
std::string name
Definition window_host.hpp:583
Definition window_host.hpp:30
AppMenuSection app_menu_section
Definition window_host.hpp:46
KeyCode key
Definition window_host.hpp:38
std::string title
Definition window_host.hpp:37
std::uint16_t modifiers
Definition window_host.hpp:39
std::string menu
Top-level menu to place this command under.
Definition window_host.hpp:36
AppMenuSection
Where an application-menu command (empty menu) sits.
Definition window_host.hpp:45
@ after_about
Definition window_host.hpp:45
@ commands
Definition window_host.hpp:45
std::function< void()> action
Definition window_host.hpp:40
Definition window_host.hpp:29
std::string title
Definition window_host.hpp:49
void * parent_native_handle
Parent window handle (HWND, NSWindow*).
Definition window_host.hpp:93
WindowType * window_type
Optional type hint for platform styling.
Definition window_host.hpp:92
bool use_gpu
Use GPU rendering (Dawn/Skia Graphite) instead of CoreGraphics.
Definition window_host.hpp:55
bool secondary_window
Explicit window role for the close policy.
Definition window_host.hpp:86
void * shared_gpu_device
Shared Dawn device for multi-window GPU.
Definition window_host.hpp:94
float min_width
Minimum window width (0 = no minimum).
Definition window_host.hpp:52
std::uint32_t background_rgb
The window's own background, 0xRRGGBB.
Definition window_host.hpp:65
bool initially_hidden
When true, the window is created and the run loop drives the bridge per-vsync as usual,...
Definition window_host.hpp:75
float width
Definition window_host.hpp:50
float height
Definition window_host.hpp:51
float min_height
Minimum window height (0 = no minimum).
Definition window_host.hpp:53
std::vector< MenuCommand > menu_commands
Commands exposed through the platform's native application menu bar.
Definition window_host.hpp:99
bool resizable
Definition window_host.hpp:54