mirror of
https://github.com/penpot/penpot.git
synced 2026-08-01 19:06:18 +00:00
Merge pull request #7456 from penpot/elenatorro-12248-fix-shadows-order
🔧 Always return shadows in reverse order
This commit is contained in:
commit
90bfae3ec1
@ -13,7 +13,7 @@ pub fn render_fill_inner_shadows(
|
|||||||
surface_id: SurfaceId,
|
surface_id: SurfaceId,
|
||||||
) {
|
) {
|
||||||
if shape.has_fills() {
|
if shape.has_fills() {
|
||||||
for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
|
for shadow in shape.inner_shadows_visible() {
|
||||||
render_fill_inner_shadow(render_state, shape, shadow, antialias, surface_id);
|
render_fill_inner_shadow(render_state, shape, shadow, antialias, surface_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -38,7 +38,7 @@ pub fn render_stroke_inner_shadows(
|
|||||||
surface_id: SurfaceId,
|
surface_id: SurfaceId,
|
||||||
) {
|
) {
|
||||||
if !shape.has_fills() {
|
if !shape.has_fills() {
|
||||||
for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
|
for shadow in shape.inner_shadows_visible() {
|
||||||
let filter = shadow.get_inner_shadow_filter();
|
let filter = shadow.get_inner_shadow_filter();
|
||||||
strokes::render(
|
strokes::render(
|
||||||
render_state,
|
render_state,
|
||||||
@ -61,7 +61,7 @@ pub fn render_text_path_stroke_drop_shadows(
|
|||||||
stroke: &Stroke,
|
stroke: &Stroke,
|
||||||
antialias: bool,
|
antialias: bool,
|
||||||
) {
|
) {
|
||||||
for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) {
|
for shadow in shape.drop_shadows_visible() {
|
||||||
let stroke_shadow = shadow.get_drop_shadow_filter();
|
let stroke_shadow = shadow.get_drop_shadow_filter();
|
||||||
strokes::render_text_paths(
|
strokes::render_text_paths(
|
||||||
render_state,
|
render_state,
|
||||||
@ -84,7 +84,7 @@ pub fn render_text_path_stroke_inner_shadows(
|
|||||||
stroke: &Stroke,
|
stroke: &Stroke,
|
||||||
antialias: bool,
|
antialias: bool,
|
||||||
) {
|
) {
|
||||||
for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
|
for shadow in shape.inner_shadows_visible() {
|
||||||
let stroke_shadow = shadow.get_inner_shadow_filter();
|
let stroke_shadow = shadow.get_inner_shadow_filter();
|
||||||
strokes::render_text_paths(
|
strokes::render_text_paths(
|
||||||
render_state,
|
render_state,
|
||||||
|
|||||||
@ -1005,24 +1005,36 @@ impl Shape {
|
|||||||
self.shadows.clear();
|
self.shadows.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
pub fn drop_shadows(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
pub fn drop_shadows(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
||||||
self.shadows
|
self.shadows
|
||||||
.iter()
|
.iter()
|
||||||
|
.rev()
|
||||||
.filter(|shadow| shadow.style() == ShadowStyle::Drop)
|
.filter(|shadow| shadow.style() == ShadowStyle::Drop)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn drop_shadows_visible(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
pub fn drop_shadows_visible(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
||||||
self.shadows
|
self.shadows
|
||||||
.iter()
|
.iter()
|
||||||
|
.rev()
|
||||||
.filter(|shadow| shadow.style() == ShadowStyle::Drop && !shadow.hidden())
|
.filter(|shadow| shadow.style() == ShadowStyle::Drop && !shadow.hidden())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
pub fn inner_shadows(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
pub fn inner_shadows(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
||||||
self.shadows
|
self.shadows
|
||||||
.iter()
|
.iter()
|
||||||
|
.rev()
|
||||||
.filter(|shadow| shadow.style() == ShadowStyle::Inner)
|
.filter(|shadow| shadow.style() == ShadowStyle::Inner)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn inner_shadows_visible(&self) -> impl DoubleEndedIterator<Item = &Shadow> {
|
||||||
|
self.shadows
|
||||||
|
.iter()
|
||||||
|
.rev()
|
||||||
|
.filter(|shadow| shadow.style() == ShadowStyle::Inner && !shadow.hidden())
|
||||||
|
}
|
||||||
|
|
||||||
pub fn to_path_transform(&self) -> Option<Matrix> {
|
pub fn to_path_transform(&self) -> Option<Matrix> {
|
||||||
match self.shape_type {
|
match self.shape_type {
|
||||||
Type::Path(_) | Type::Bool(_) => {
|
Type::Path(_) | Type::Bool(_) => {
|
||||||
@ -1201,8 +1213,8 @@ impl Shape {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn drop_shadow_paints(&self) -> Vec<skia_safe::Paint> {
|
pub fn drop_shadow_paints(&self) -> Vec<skia_safe::Paint> {
|
||||||
let drop_shadows: Vec<&crate::shapes::shadows::Shadow> =
|
let drop_shadows: Vec<&Shadow> = self.drop_shadows_visible().collect();
|
||||||
self.drop_shadows().rev().filter(|s| !s.hidden()).collect();
|
|
||||||
drop_shadows
|
drop_shadows
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|shadow| {
|
.map(|shadow| {
|
||||||
@ -1215,8 +1227,8 @@ impl Shape {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn inner_shadow_paints(&self) -> Vec<skia_safe::Paint> {
|
pub fn inner_shadow_paints(&self) -> Vec<skia_safe::Paint> {
|
||||||
let inner_shadows: Vec<&crate::shapes::shadows::Shadow> =
|
let inner_shadows: Vec<&Shadow> = self.inner_shadows_visible().collect();
|
||||||
self.inner_shadows().rev().filter(|s| !s.hidden()).collect();
|
|
||||||
inner_shadows
|
inner_shadows
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|shadow| {
|
.map(|shadow| {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user