pinnacle_api/render.rs
1//! Rendering management.
2
3use pinnacle_api_defs::pinnacle::render::{
4 self,
5 v1::{SetDownscaleFilterRequest, SetUpscaleFilterRequest},
6};
7
8use crate::{client::Client, BlockOnTokio};
9
10/// What filter to use when scaling.
11pub enum ScalingFilter {
12 /// Use a bilinear filter.
13 ///
14 /// This will make up- and downscaling blurry.
15 Bilinear,
16 /// Use a nearest neighbor filter.
17 ///
18 /// This will cause scaling to look pixelated.
19 NearestNeighbor,
20}
21
22impl From<ScalingFilter> for render::v1::Filter {
23 fn from(value: ScalingFilter) -> Self {
24 match value {
25 ScalingFilter::Bilinear => render::v1::Filter::Bilinear,
26 ScalingFilter::NearestNeighbor => render::v1::Filter::NearestNeighbor,
27 }
28 }
29}
30
31/// Sets the upscaling filter that will be used for rendering.
32///
33/// # Examples
34///
35/// ```no_run
36/// # use pinnacle_api::render;
37/// # use pinnacle_api::render::ScalingFilter;
38/// render::set_upscale_filter(ScalingFilter::NearestNeighbor);
39/// ```
40pub fn set_upscale_filter(filter: ScalingFilter) {
41 Client::render()
42 .set_upscale_filter(SetUpscaleFilterRequest {
43 filter: render::v1::Filter::from(filter).into(),
44 })
45 .block_on_tokio()
46 .unwrap();
47}
48
49/// Sets the downscaling filter that will be used for rendering.
50///
51/// # Examples
52///
53/// ```no_run
54/// # use pinnacle_api::render;
55/// # use pinnacle_api::render::ScalingFilter;
56/// render::set_downscale_filter(ScalingFilter::NearestNeighbor);
57/// ```
58pub fn set_downscale_filter(filter: ScalingFilter) {
59 Client::render()
60 .set_downscale_filter(SetDownscaleFilterRequest {
61 filter: render::v1::Filter::from(filter).into(),
62 })
63 .block_on_tokio()
64 .unwrap();
65}