mirror of
https://github.com/penpot/penpot.git
synced 2025-05-29 04:06:11 +02:00
🐛 Fix Fill Inner Shadows
This commit is contained in:
parent
e60e36a0e2
commit
91d15ea221
5 changed files with 149 additions and 49 deletions
|
@ -216,6 +216,9 @@ impl RenderState {
|
|||
self.surfaces
|
||||
.flush_and_submit(&mut self.gpu_state, SurfaceId::DropShadows);
|
||||
|
||||
self.surfaces
|
||||
.flush_and_submit(&mut self.gpu_state, SurfaceId::InnerShadows);
|
||||
|
||||
self.surfaces.draw_into(
|
||||
SurfaceId::DropShadows,
|
||||
SurfaceId::Current,
|
||||
|
@ -228,6 +231,12 @@ impl RenderState {
|
|||
Some(&skia::Paint::default()),
|
||||
);
|
||||
|
||||
self.surfaces.draw_into(
|
||||
SurfaceId::InnerShadows,
|
||||
SurfaceId::Current,
|
||||
Some(&skia::Paint::default()),
|
||||
);
|
||||
|
||||
let mut render_overlay_below_strokes = false;
|
||||
if let Some(shape) = shape {
|
||||
render_overlay_below_strokes = shape.fills().len() > 0;
|
||||
|
@ -269,6 +278,7 @@ impl RenderState {
|
|||
self.surfaces.apply_mut(
|
||||
&[
|
||||
SurfaceId::Shadow,
|
||||
SurfaceId::InnerShadows,
|
||||
SurfaceId::DropShadows,
|
||||
SurfaceId::Overlay,
|
||||
SurfaceId::Fills,
|
||||
|
@ -286,7 +296,12 @@ impl RenderState {
|
|||
modifiers: Option<&Matrix>,
|
||||
clip_bounds: Option<(Rect, Option<Corners>, Matrix)>,
|
||||
) {
|
||||
let surface_ids = &[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows];
|
||||
let surface_ids = &[
|
||||
SurfaceId::Fills,
|
||||
SurfaceId::Strokes,
|
||||
SurfaceId::DropShadows,
|
||||
SurfaceId::InnerShadows,
|
||||
];
|
||||
self.surfaces.apply_mut(surface_ids, |s| {
|
||||
s.canvas().save();
|
||||
});
|
||||
|
@ -365,7 +380,12 @@ impl RenderState {
|
|||
}
|
||||
_ => {
|
||||
self.surfaces.apply_mut(
|
||||
&[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
|
||||
&[
|
||||
SurfaceId::Fills,
|
||||
SurfaceId::Strokes,
|
||||
SurfaceId::DropShadows,
|
||||
SurfaceId::InnerShadows,
|
||||
],
|
||||
|s| {
|
||||
s.canvas().concat(&matrix);
|
||||
},
|
||||
|
@ -378,19 +398,20 @@ impl RenderState {
|
|||
for stroke in shape.strokes().rev() {
|
||||
strokes::render(self, &shape, stroke);
|
||||
}
|
||||
let scale = self.get_scale();
|
||||
|
||||
for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
|
||||
shadows::render_inner_shadow(self, shadow, scale, shape.fills().len() > 0);
|
||||
}
|
||||
|
||||
shadows::render_inner_shadows(self, &shape);
|
||||
shadows::render_drop_shadows(self, &shape);
|
||||
}
|
||||
};
|
||||
|
||||
self.apply_drawing_to_render_canvas(Some(&shape));
|
||||
self.surfaces.apply_mut(
|
||||
&[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
|
||||
&[
|
||||
SurfaceId::Fills,
|
||||
SurfaceId::Strokes,
|
||||
SurfaceId::DropShadows,
|
||||
SurfaceId::InnerShadows,
|
||||
],
|
||||
|s| {
|
||||
s.canvas().restore();
|
||||
},
|
||||
|
@ -418,7 +439,12 @@ impl RenderState {
|
|||
let scale = self.get_scale();
|
||||
self.reset_canvas();
|
||||
self.surfaces.apply_mut(
|
||||
&[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
|
||||
&[
|
||||
SurfaceId::Fills,
|
||||
SurfaceId::Strokes,
|
||||
SurfaceId::DropShadows,
|
||||
SurfaceId::InnerShadows,
|
||||
],
|
||||
|s| {
|
||||
s.canvas().scale((scale, scale));
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue