Put back code that makes the avatar rounded (#18799)
Follow-up to https://github.com/zed-industries/zed/pull/18768 --- Release Notes: - N/A
This commit is contained in:
parent
03c84466c2
commit
67fbdbbed6
1 changed files with 36 additions and 0 deletions
|
@ -2,6 +2,16 @@ use crate::prelude::*;
|
||||||
|
|
||||||
use gpui::{img, AnyElement, Hsla, ImageSource, Img, IntoElement, Styled};
|
use gpui::{img, AnyElement, Hsla, ImageSource, Img, IntoElement, Styled};
|
||||||
|
|
||||||
|
/// The shape of an [`Avatar`].
|
||||||
|
#[derive(Debug, Default, PartialEq, Clone)]
|
||||||
|
pub enum AvatarShape {
|
||||||
|
/// The avatar is shown in a circle.
|
||||||
|
#[default]
|
||||||
|
Circle,
|
||||||
|
/// The avatar is shown in a rectangle with rounded corners.
|
||||||
|
RoundedRectangle,
|
||||||
|
}
|
||||||
|
|
||||||
/// An element that renders a user avatar with customizable appearance options.
|
/// An element that renders a user avatar with customizable appearance options.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
@ -10,6 +20,7 @@ use gpui::{img, AnyElement, Hsla, ImageSource, Img, IntoElement, Styled};
|
||||||
/// use ui::{Avatar, AvatarShape};
|
/// use ui::{Avatar, AvatarShape};
|
||||||
///
|
///
|
||||||
/// Avatar::new("path/to/image.png")
|
/// Avatar::new("path/to/image.png")
|
||||||
|
/// .shape(AvatarShape::Circle)
|
||||||
/// .grayscale(true)
|
/// .grayscale(true)
|
||||||
/// .border_color(gpui::red());
|
/// .border_color(gpui::red());
|
||||||
/// ```
|
/// ```
|
||||||
|
@ -32,6 +43,27 @@ impl Avatar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Sets the shape of the avatar image.
|
||||||
|
///
|
||||||
|
/// This method allows the shape of the avatar to be specified using an [`AvatarShape`].
|
||||||
|
/// It modifies the corner radius of the image to match the specified shape.
|
||||||
|
///
|
||||||
|
/// # Examples
|
||||||
|
///
|
||||||
|
/// ```
|
||||||
|
/// use ui::{Avatar, AvatarShape};
|
||||||
|
///
|
||||||
|
/// Avatar::new("path/to/image.png").shape(AvatarShape::Circle);
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
pub fn shape(mut self, shape: AvatarShape) -> Self {
|
||||||
|
self.image = match shape {
|
||||||
|
AvatarShape::Circle => self.image.rounded_full(),
|
||||||
|
AvatarShape::RoundedRectangle => self.image.rounded_md(),
|
||||||
|
};
|
||||||
|
self
|
||||||
|
}
|
||||||
|
|
||||||
/// Applies a grayscale filter to the avatar image.
|
/// Applies a grayscale filter to the avatar image.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
@ -71,6 +103,10 @@ impl Avatar {
|
||||||
|
|
||||||
impl RenderOnce for Avatar {
|
impl RenderOnce for Avatar {
|
||||||
fn render(mut self, cx: &mut WindowContext) -> impl IntoElement {
|
fn render(mut self, cx: &mut WindowContext) -> impl IntoElement {
|
||||||
|
if self.image.style().corner_radii.top_left.is_none() {
|
||||||
|
self = self.shape(AvatarShape::Circle);
|
||||||
|
}
|
||||||
|
|
||||||
let border_width = if self.border_color.is_some() {
|
let border_width = if self.border_color.is_some() {
|
||||||
px(2.)
|
px(2.)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue