mirror of
https://github.com/slint-ui/slint.git
synced 2025-10-01 06:11:16 +00:00
Actually remove the GraphicsBackend completely
It is not longer in used for the abstraction between backend, we'll make a new trait for it later
This commit is contained in:
parent
7931896027
commit
aa7f362f10
3 changed files with 9 additions and 29 deletions
|
@ -11,10 +11,7 @@ LICENSE END */
|
|||
/*!
|
||||
Graphics Abstractions.
|
||||
|
||||
This module contains the abstractions and convenience types to allow the runtime
|
||||
library to instruct different graphics backends to render the tree of items.
|
||||
|
||||
The entry trait is [GraphicsBackend].
|
||||
This module contains the abstractions and convenience types used for rendering.
|
||||
|
||||
The run-time library also makes use of [RenderingCache] to store the rendering primitives
|
||||
created by the backend in a type-erased manner.
|
||||
|
@ -305,25 +302,6 @@ pub trait FontMetrics {
|
|||
fn height(&self) -> f32;
|
||||
}
|
||||
|
||||
/// GraphicsBackend is the trait that the the SixtyFPS run-time uses to convert [HighLevelRenderingPrimitive]
|
||||
/// to an internal representation that is optimal for the backend, in order to render it later. The internal
|
||||
/// representation is opaque but must be provided via the [GraphicsBackend::LowLevelRenderingPrimitive] associated type.
|
||||
///
|
||||
/// The backend operates in two modes:
|
||||
/// 1. It can be used to create new rendering primitives, by calling [GraphicsBackend::new_rendering_primitives_builder]. This is
|
||||
/// usually an expensive step, that involves uploading data to the GPU or performing other pre-calculations.
|
||||
///
|
||||
/// 1. A series of low-level rendering primitives can be rendered into a frame, that's started using [GraphicsBackend::new_frame].
|
||||
/// The low-level rendering primitives are intended to be fast and ready for rendering.
|
||||
pub trait GraphicsBackend: Sized {
|
||||
/// Returns a FontMetrics trait object that can be used to measure text and that matches the given font request as
|
||||
/// closely as possible.
|
||||
fn font_metrics(&mut self, request: FontRequest) -> Box<dyn FontMetrics>;
|
||||
|
||||
/// Returns the window that the backend is associated with.
|
||||
fn window(&self) -> &winit::window::Window;
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[derive(FieldOffsets, Default, SixtyFPSElement, Clone, Debug, PartialEq)]
|
||||
#[pin]
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
Please contact info@sixtyfps.io for more information.
|
||||
LICENSE END */
|
||||
//! This module contains the GraphicsWindow that used to be within corelib.
|
||||
//! FIXME The GraphicsWindow probably does not need to be generic
|
||||
|
||||
use core::cell::{Cell, RefCell};
|
||||
use core::pin::Pin;
|
||||
|
@ -25,6 +24,7 @@ use corelib::window::{ComponentWindow, GenericWindow};
|
|||
use corelib::Property;
|
||||
use sixtyfps_corelib as corelib;
|
||||
|
||||
/// FIXME! this is some remains from a time where the GLRenderer was called the backend
|
||||
type Backend = super::GLRenderer;
|
||||
|
||||
type WindowFactoryFn =
|
||||
|
|
|
@ -15,7 +15,7 @@ use std::{
|
|||
};
|
||||
|
||||
use sixtyfps_corelib::graphics::{
|
||||
Color, FontMetrics, FontRequest, GraphicsBackend, Point, Rect, RenderingCache, Resource,
|
||||
Color, FontMetrics, FontRequest, Point, Rect, RenderingCache, Resource,
|
||||
};
|
||||
use sixtyfps_corelib::item_rendering::{CachedRenderingData, ItemRenderer};
|
||||
use sixtyfps_corelib::items::ImageFit;
|
||||
|
@ -270,9 +270,9 @@ impl GLRenderer {
|
|||
loaded_fonts: Default::default(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl GLRenderer {
|
||||
/// Returns a new item renderer instance. At this point rendering begins and the backend ensures that the
|
||||
/// window background was cleared with the specified clear_color.
|
||||
fn new_renderer(&mut self, clear_color: &Color) -> GLItemRenderer {
|
||||
let (size, scale_factor) = {
|
||||
let window = self.window();
|
||||
|
@ -307,6 +307,8 @@ impl GLRenderer {
|
|||
}
|
||||
}
|
||||
|
||||
/// Complete the item rendering by calling this function. This will typically flush any remaining/pending
|
||||
/// commands to the underlying graphics subsystem.
|
||||
fn flush_renderer(&mut self, _renderer: GLItemRenderer) {
|
||||
self.canvas.borrow_mut().flush();
|
||||
|
||||
|
@ -324,9 +326,7 @@ impl GLRenderer {
|
|||
.map_or(false, |cached_image_rc| Rc::strong_count(&cached_image_rc) > 1)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
impl GraphicsBackend for GLRenderer {
|
||||
fn window(&self) -> &winit::window::Window {
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
return self.windowed_context.as_ref().unwrap().window();
|
||||
|
@ -334,6 +334,8 @@ impl GraphicsBackend for GLRenderer {
|
|||
return &self.window;
|
||||
}
|
||||
|
||||
/// Returns a FontMetrics trait object that can be used to measure text and that matches the given font request as
|
||||
/// closely as possible.
|
||||
fn font_metrics(&mut self, request: FontRequest) -> Box<dyn FontMetrics> {
|
||||
Box::new(GLFontMetrics {
|
||||
request,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue