blob: b96ee45fb37f24b50ba431c1a4cbacacfa23535a [file] [log] [blame]
// Copyright 2021 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use crate::drawing::path_for_corner_knockouts;
use crate::render::{BlendMode, Context as RenderContext, FillRule, Layer, Raster};
use crate::{Coord, Rect, Size};
pub use crate::scene::scene::SceneOrder;
/// Individual bits of UI
pub mod facets;
/// Grouping of facets
pub mod group;
/// Layout of facet groups
pub mod layout;
/// Rendering facets
pub mod scene;
struct Rendering {
size: Size,
}
impl Rendering {
fn new() -> Rendering {
Rendering { size: Size::zero() }
}
}
fn raster_for_corner_knockouts(
bounds: &Rect,
corner_radius: Coord,
render_context: &mut RenderContext,
) -> Raster {
let path = path_for_corner_knockouts(bounds, corner_radius, render_context);
let mut raster_builder = render_context.raster_builder().expect("raster_builder");
raster_builder.add(&path, None);
raster_builder.build()
}
/// Trait used by facets to mutate layers.
pub trait LayerGroup {
/// Clears the group, removing all layers.
fn clear(&mut self);
/// Insert a order-layer pair into the group.
fn insert(&mut self, order: SceneOrder, layer: Layer);
/// Removes a layer from the group.
fn remove(&mut self, order: SceneOrder);
}