mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-23 03:08:12 +08:00
Fix viewport culling with nested layers (#939)
* Fix viewport culling with nested layers * Clean up naming
This commit is contained in:
committed by
Keavon Chambers
parent
df44e8d978
commit
7cc1a192cb
@@ -6,7 +6,6 @@ use crate::{DocumentError, LayerId};
|
||||
|
||||
use glam::DVec2;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt::Write;
|
||||
|
||||
/// A layer that encapsulates other layers, including potentially more folders.
|
||||
/// The contained layers are rendered in the same order they are
|
||||
@@ -22,10 +21,14 @@ pub struct FolderLayer {
|
||||
}
|
||||
|
||||
impl LayerData for FolderLayer {
|
||||
fn render(&mut self, svg: &mut String, svg_defs: &mut String, transforms: &mut Vec<glam::DAffine2>, render_data: RenderData) {
|
||||
fn render(&mut self, svg: &mut String, svg_defs: &mut String, transforms: &mut Vec<glam::DAffine2>, render_data: RenderData) -> bool {
|
||||
let mut any_child_requires_refresh = false;
|
||||
for layer in &mut self.layers {
|
||||
let _ = writeln!(svg, "{}", layer.render(transforms, svg_defs, render_data));
|
||||
let (svg_value, requires_refresh) = layer.render(transforms, svg_defs, render_data);
|
||||
*svg += svg_value;
|
||||
any_child_requires_refresh = any_child_requires_refresh || requires_refresh;
|
||||
}
|
||||
!any_child_requires_refresh
|
||||
}
|
||||
|
||||
fn intersects_quad(&self, quad: Quad, path: &mut Vec<LayerId>, intersections: &mut Vec<Vec<LayerId>>, font_cache: &FontCache) {
|
||||
|
||||
Reference in New Issue
Block a user