Struct rerun::external::eframe::egui::Painter

pub struct Painter {
    ctx: Context,
    layer_id: LayerId,
    clip_rect: Rect,
    fade_to_color: Option<Color32>,
    opacity_factor: f32,
}
Expand description

Helper to paint shapes and text to a specific region on a specific layer.

All coordinates are screen coordinates in the unit points (one point can consist of many physical pixels).

Fields§

§ctx: Context§layer_id: LayerId§clip_rect: Rect§fade_to_color: Option<Color32>§opacity_factor: f32

Implementations§

§

impl Painter

pub fn new(ctx: Context, layer_id: LayerId, clip_rect: Rect) -> Painter

Create a painter to a specific layer within a certain clip rectangle.

pub fn with_layer_id(self, layer_id: LayerId) -> Painter

Redirect where you are painting.

pub fn with_clip_rect(&self, rect: Rect) -> Painter

Create a painter for a sub-region of this Painter.

The clip-rect of the returned Painter will be the intersection of the given rectangle and the clip_rect() of the parent Painter.

pub fn set_layer_id(&mut self, layer_id: LayerId)

Redirect where you are painting.

pub fn set_opacity(&mut self, opacity: f32)

Set the opacity (alpha multiplier) of everything painted by this painter from this point forward.

opacity must be between 0.0 and 1.0, where 0.0 means fully transparent (i.e., invisible) and 1.0 means fully opaque.

See also: Self::opacity and Self::multiply_opacity.

pub fn multiply_opacity(&mut self, opacity: f32)

Like Self::set_opacity, but multiplies the given value with the current opacity.

See also: Self::set_opacity and Self::opacity.

pub fn opacity(&self) -> f32

Read the current opacity of the underlying painter.

See also: Self::set_opacity and Self::multiply_opacity.

§

impl Painter

§Accessors etc

pub fn ctx(&self) -> &Context

Get a reference to the parent Context.

pub fn fonts<R>(&self, reader: impl FnOnce(&Fonts) -> R) -> R

Read-only access to the shared Fonts.

See Context documentation for how locks work.

pub fn layer_id(&self) -> LayerId

Where we paint

pub fn clip_rect(&self) -> Rect

Everything painted in this Painter will be clipped against this. This means nothing outside of this rectangle will be visible on screen.

pub fn shrink_clip_rect(&mut self, new_clip_rect: Rect)

Constrain the rectangle in which we can paint.

Short for painter.set_clip_rect(painter.clip_rect().intersect(new_clip_rect)).

See also: Self::clip_rect and Self::set_clip_rect.

pub fn set_clip_rect(&mut self, clip_rect: Rect)

Everything painted in this Painter will be clipped against this. This means nothing outside of this rectangle will be visible on screen.

Warning: growing the clip rect might cause unexpected results! When in doubt, use Self::shrink_clip_rect instead.

pub fn round_to_pixel_center(&self, point: f32) -> f32

Useful for pixel-perfect rendering of lines that are one pixel wide (or any odd number of pixels).

pub fn round_pos_to_pixel_center(&self, pos: Pos2) -> Pos2

Useful for pixel-perfect rendering of lines that are one pixel wide (or any odd number of pixels).

pub fn round_to_pixel(&self, point: f32) -> f32

Useful for pixel-perfect rendering of filled shapes.

pub fn round_vec_to_pixels(&self, vec: Vec2) -> Vec2

Useful for pixel-perfect rendering.

pub fn round_pos_to_pixels(&self, pos: Pos2) -> Pos2

Useful for pixel-perfect rendering.

pub fn round_rect_to_pixels(&self, rect: Rect) -> Rect

Useful for pixel-perfect rendering.

§

impl Painter

§Low level

pub fn add(&self, shape: impl Into<Shape>) -> ShapeIdx

It is up to the caller to make sure there is room for this. Can be used for free painting. NOTE: all coordinates are screen coordinates!

pub fn extend<I>(&self, shapes: I)
where I: IntoIterator<Item = Shape>,

Add many shapes at once.

Calling this once is generally faster than calling Self::add multiple times.

pub fn set(&self, idx: ShapeIdx, shape: impl Into<Shape>)

Modify an existing Shape.

pub fn for_each_shape(&self, reader: impl FnMut(&ClippedShape))

Access all shapes added this frame.

§

impl Painter

§Debug painting

pub fn debug_rect(&self, rect: Rect, color: Color32, text: impl ToString)

pub fn error(&self, pos: Pos2, text: impl Display) -> Rect

pub fn debug_text( &self, pos: Pos2, anchor: Align2, color: Color32, text: impl ToString ) -> Rect

Text with a background.

See also Context::debug_text.

§

impl Painter

§Paint different primitives

pub fn line_segment( &self, points: [Pos2; 2], stroke: impl Into<PathStroke> ) -> ShapeIdx

Paints a line from the first point to the second.

pub fn hline( &self, x: impl Into<Rangef>, y: f32, stroke: impl Into<PathStroke> ) -> ShapeIdx

Paints a horizontal line.

pub fn vline( &self, x: f32, y: impl Into<Rangef>, stroke: impl Into<PathStroke> ) -> ShapeIdx

Paints a vertical line.

pub fn circle( &self, center: Pos2, radius: f32, fill_color: impl Into<Color32>, stroke: impl Into<Stroke> ) -> ShapeIdx

pub fn circle_filled( &self, center: Pos2, radius: f32, fill_color: impl Into<Color32> ) -> ShapeIdx

pub fn circle_stroke( &self, center: Pos2, radius: f32, stroke: impl Into<Stroke> ) -> ShapeIdx

pub fn rect( &self, rect: Rect, rounding: impl Into<Rounding>, fill_color: impl Into<Color32>, stroke: impl Into<Stroke> ) -> ShapeIdx

pub fn rect_filled( &self, rect: Rect, rounding: impl Into<Rounding>, fill_color: impl Into<Color32> ) -> ShapeIdx

pub fn rect_stroke( &self, rect: Rect, rounding: impl Into<Rounding>, stroke: impl Into<Stroke> ) -> ShapeIdx

pub fn arrow(&self, origin: Pos2, vec: Vec2, stroke: impl Into<Stroke>)

Show an arrow starting at origin and going in the direction of vec, with the length vec.length().

pub fn image( &self, texture_id: TextureId, rect: Rect, uv: Rect, tint: Color32 ) -> ShapeIdx

An image at the given position.

uv should normally be Rect::from_min_max(pos2(0.0, 0.0), pos2(1.0, 1.0)) unless you want to crop or flip the image.

tint is a color multiplier. Use Color32::WHITE if you don’t want to tint the image.

Usually it is easier to use crate::Image::paint_at instead:

egui::Image::new(egui::include_image!("../assets/ferris.png"))
    .rounding(5.0)
    .tint(egui::Color32::LIGHT_BLUE)
    .paint_at(ui, rect);
§

impl Painter

§Text

pub fn text( &self, pos: Pos2, anchor: Align2, text: impl ToString, font_id: FontId, text_color: Color32 ) -> Rect

Lay out and paint some text.

To center the text at the given position, use Align2::CENTER_CENTER.

To find out the size of text before painting it, use Self::layout or Self::layout_no_wrap.

Returns where the text ended up.

pub fn layout( &self, text: String, font_id: FontId, color: Color32, wrap_width: f32 ) -> Arc<Galley>

Will wrap text at the given width and line break at \n.

Paint the results with Self::galley.

pub fn layout_no_wrap( &self, text: String, font_id: FontId, color: Color32 ) -> Arc<Galley>

Will line break at \n.

Paint the results with Self::galley.

pub fn layout_job(&self, layout_job: LayoutJob) -> Arc<Galley>

Lay out this text layut job in a galley.

Paint the results with Self::galley.

pub fn galley(&self, pos: Pos2, galley: Arc<Galley>, fallback_color: Color32)

Paint text that has already been laid out in a Galley.

You can create the Galley with Self::layout or Self::layout_job.

Any uncolored parts of the Galley (using Color32::PLACEHOLDER) will be replaced with the given color.

Any non-placeholder color in the galley takes precedence over this fallback color.

pub fn galley_with_override_text_color( &self, pos: Pos2, galley: Arc<Galley>, text_color: Color32 )

Paint text that has already been laid out in a Galley.

You can create the Galley with Self::layout.

All text color in the Galley will be replaced with the given color.

pub fn galley_with_color( &self, pos: Pos2, galley: Arc<Galley>, text_color: Color32 )

👎Deprecated: Use Painter::galley or Painter::galley_with_override_text_color instead

Trait Implementations§

§

impl Clone for Painter

§

fn clone(&self) -> Painter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for T
where T: Clone,

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> To for T
where T: ?Sized,

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Ungil for T
where T: Send,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T

§

impl<T> WasmNotSync for T
where T: Sync,