lambda/render/
viewport.rs

1//! Viewport for rendering a frame within the RenderContext.
2
3use lambda_platform::gfx;
4
5#[derive(Debug, Clone, PartialEq)]
6pub struct Viewport {
7  viewport: gfx::viewport::ViewPort,
8}
9
10impl Viewport {
11  /// Convert the viewport into a gfx platform viewport.
12  // TODO(vmarcella): implement this using Into<PlatformViewPort>
13  pub(crate) fn clone_gfx_viewport(&self) -> gfx::viewport::ViewPort {
14    return self.viewport.clone();
15  }
16}
17
18/// Builder for viewports that are used to render a frame within the RenderContext.
19pub struct ViewportBuilder {
20  x: i16,
21  y: i16,
22}
23
24impl ViewportBuilder {
25  /// Creates a new viewport builder.
26  pub fn new() -> Self {
27    return Self { x: 0, y: 0 };
28  }
29
30  /// Builds a viewport that can be used for defining
31  pub fn build(self, width: u32, height: u32) -> Viewport {
32    let viewport = gfx::viewport::ViewPortBuilder::new()
33      .with_coordinates(self.x, self.y)
34      .build(width, height);
35
36    return Viewport { viewport };
37  }
38}