use crate::renderer::{HydroNativeView, HydroState, graphics_dimensions_from_proposal};
use waterui_core::layout::Size as LayoutSize;
use waterui_core::layout::{ProposalSize, ViewDimensions};
use waterui_core::{Environment, Native};
use waterui_graphics::color::{Color, ResolvedColor};
use waterui_graphics::view_effect::ViewEffectErased;
use waterui_graphics::{GpuSurface, ResolvedGradient, SceneView};
use waterui_shape::{ResolvedMorphShape, ResolvedShape};
impl HydroNativeView for Native<GpuSurface> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}
impl HydroNativeView for Native<SceneView> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}
impl HydroNativeView for Native<ViewEffectErased> {
fn intrinsic(state: &mut HydroState, view: &Self, env: &Environment) -> LayoutSize {
crate::renderer::measure_view_intrinsic(view.as_inner().content(), state, env)
}
}
impl HydroNativeView for Native<Color> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}
impl HydroNativeView for Native<ResolvedColor> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}
impl HydroNativeView for Native<ResolvedGradient> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}
impl HydroNativeView for Native<ResolvedShape> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}
impl HydroNativeView for Native<ResolvedMorphShape> {
fn intrinsic(_state: &mut HydroState, _view: &Self, _env: &Environment) -> LayoutSize {
LayoutSize::zero()
}
fn dimensions(
_state: &mut HydroState,
_view: &Self,
_env: &Environment,
proposal: ProposalSize,
) -> ViewDimensions {
graphics_dimensions_from_proposal(proposal)
}
}