cushy

Struct Graphics

source
pub struct Graphics<'clip, 'gfx, 'pass> { /* private fields */ }
Expand description

A 2d graphics context

Implementations§

source§

impl<'gfx, 'pass> Graphics<'_, 'gfx, 'pass>

source

pub fn new(renderer: Renderer<'gfx, 'pass>) -> Self

Returns a new graphics context for the given [Renderer].

source

pub fn translation(&self) -> Point<Px>

Returns the offset relative to the clipping rect that the graphics context renders at.

This is used when rendering controls that are partially offscreen to the left or top of the window’s origin.

In general, this is handled automatically. This function should only be needed when using inner_graphics().

source

pub fn inner_graphics(&mut self) -> &mut Renderer<'gfx, 'pass>

Returns the underlying renderer.

Note: Kludgine graphics contexts only support clipping. This type adds self.translation() to the offset of each drawing call. When using the underlying renderer, any drawing calls will need this offset as well, otherwise the widget that is being rendered will not render correctly when placed in a Scroll widget.

source

pub fn clipped_to(&mut self, clip: Rect<Px>) -> Graphics<'_, 'gfx, 'pass>

Returns a context that has been clipped to clip.

The new clipping rectangle is interpreted relative to the current clipping rectangle. As a side effect, this function can never expand the clipping rect beyond the current clipping rect.

The returned context will report the clipped size, and all drawing operations will be relative to the origin of clip.

source

pub fn clip_rect(&self) -> Rect<UPx>

Returns the current clipping rectangle.

The clipping rectangle is represented in unsigned pixels in the window’s coordinate system.

source

pub fn region(&self) -> Rect<Px>

Returns the current region being rendered to.

The rendering region utilizes signed pixels, which allows it to represent regions that are out of bounds of the window’s visible region.

source

pub fn visible_rect(&self) -> Option<Rect<UPx>>

Returns the visible region of the graphics context.

This is the intersection of Self::region() and Self::clip_rect().

source

pub fn size(&self) -> Size<UPx>

Returns the size of the current region.

This is self.region().size converted to unsigned pixels.

source

pub fn scale(&self) -> Fraction

Returns the current DPI scaling factor applied to the window this context is attached to.

source

pub fn fill(&mut self, color: Color)

Fills the entire context with color.

If the alpha channel of color is 0, this function does nothing.

source

pub fn draw_shape<'a, Unit>( &mut self, shape: impl Into<Drawable<&'a Shape<Unit, false>, Unit>>, )
where Unit: Zero + ShaderScalable + ScreenUnit + Copy,

Draws a shape at the origin, rotating and scaling as needed.

source

pub fn draw_texture<Unit>( &mut self, texture: &impl TextureSource, destination: Rect<Unit>, opacity: ZeroToOne, )
where Unit: ScreenUnit + ShaderScalable, i32: From<<Unit as IntoSigned>::Signed>,

Draws texture at destination, scaling as necessary.

source

pub fn draw_textured_shape<'shape, Unit, Shape>( &mut self, shape: impl Into<Drawable<&'shape Shape, Unit>>, texture: &impl TextureSource, opacity: ZeroToOne, )
where Unit: Zero + ShaderScalable + ScreenUnit + Copy, i32: From<<Unit as IntoSigned>::Signed>, Shape: ShapeSource<Unit, true> + 'shape,

Draws a shape that was created with texture coordinates, applying the provided texture.

source

pub fn measure_text<'a, Unit>( &mut self, text: impl Into<Text<'a, Unit>>, ) -> MeasuredText<Unit>
where Unit: ScreenUnit,

Measures text using the current text settings.

default_color does not affect the

source

pub fn draw_text<'a, Unit>( &mut self, text: impl Into<Drawable<Text<'a, Unit>, Unit>>, )
where Unit: ScreenUnit,

Draws text using the current text settings.

source

pub fn draw_text_buffer<'a, Unit>( &mut self, buffer: impl Into<Drawable<&'a Buffer, Unit>>, default_color: Color, origin: TextOrigin<Px>, )
where Unit: ScreenUnit,

Prepares the text layout contained in buffer to be rendered.

When the text in buffer has no color defined, default_color will be used.

origin allows controlling how the text will be drawn relative to the coordinate provided in render().

source

pub fn measure_text_buffer<Unit>( &mut self, buffer: &Buffer, default_color: Color, ) -> MeasuredText<Unit>
where Unit: ScreenUnit,

Measures buffer and caches the results using default_color when the buffer has no color associated with text.

source

pub fn draw_measured_text<'a, Unit>( &mut self, text: impl Into<Drawable<&'a MeasuredText<Unit>, Unit>>, origin: TextOrigin<Unit>, )
where Unit: ScreenUnit + Round,

Prepares the text layout contained in buffer to be rendered.

When the text in buffer has no color defined, default_color will be used.

origin allows controlling how the text will be drawn relative to the coordinate provided in render().

source

pub fn draw<Op: RenderOperation>(&mut self)
where Op::DrawInfo: Default,

Draws the custom rendering operation when this graphics is presented to the screen.

The rendering operation will be clipped automatically, but the rendering operation will need to position and size itself accordingly.

source

pub fn draw_with<Op: RenderOperation>(&mut self, context: Op::DrawInfo)

Draws Op with the given context.

source

pub fn font_system(&mut self) -> &mut FontSystem

Returns a reference to the font system used to render.

source

pub fn as_plot_area( &mut self, ) -> DrawingArea<PlotterBackend<'_, 'gfx, 'pass>, Shift>

Returns this renderer as a DrawingArea compatible with the plotters crate.

Methods from Deref<Target = Kludgine>§

pub fn font_system(&mut self) -> &mut FontSystem

Returns a mutable reference to the [cosmic_text::FontSystem] used when rendering text.

pub fn rebuild_font_system(&mut self)

Rebuilds the font system, invalidating font database caches.

This function can be invoked after loading fonts into the font database to ensure that all future text rendering considers the newly loaded fonts.

pub fn set_font_size(&mut self, size: impl ScreenScale<Lp = Lp>)

Sets the font size.

pub fn font_size(&self) -> Lp

Returns the current font size.

pub fn set_line_height(&mut self, size: impl ScreenScale<Lp = Lp>)

Sets the line height for multi-line layout.

pub fn line_height(&self) -> Lp

Returns the current line height.

pub fn set_font_family(&mut self, family: FamilyOwned)

Sets the current font family.

pub fn font_family(&self) -> Family<'_>

Returns the current font family.

pub fn set_font_style(&mut self, style: Style)

Sets the current font style.

pub fn font_style(&self) -> Style

Returns the current font style.

pub fn set_font_weight(&mut self, weight: Weight)

Sets the current font weight.

pub fn font_weight(&self) -> Weight

Returns the current font weight.

pub fn set_text_stretch(&mut self, width: Width)

Sets the current text stretching.

pub fn text_stretch(&self) -> Width

Returns the current text stretch.

pub fn text_attrs(&self) -> Attrs<'_>

Returns the current text attributes.

pub fn set_text_attributes(&mut self, attrs: Attrs<'_>)

Sets the current text attributes.

pub fn reset_text_attributes(&mut self)

Resets all of the text related properties to their default settings.

pub const REQURED_FEATURES: Features = wgpu::Features::PUSH_CONSTANTS

pub fn texture_format(&self) -> TextureFormat

Returns the texture format this instance was initialized with.

pub fn multisample_state(&self) -> MultisampleState

Returns the multisample state this instance was initialized with.

pub fn id(&self) -> KludgineId

Returns the unique id of this instance.

pub fn resize( &mut self, new_size: Size<UPx>, new_scale: impl Into<Fraction>, new_zoom: impl Into<Fraction>, queue: &Queue, )

Updates the size and scale of this Kludgine instance.

This function updates data stored in the GPU that affects how graphics are rendered. It should be called before calling next_frame() if the size or scale of the underlying surface has changed.

pub fn set_zoom(&mut self, new_zoom: impl Into<Fraction>, queue: &Queue)

Sets the current zoom level.

Zoom and DPI scale are multiplied to create an effective scale for all DPI-scaled operations.

pub fn set_dpi_scale(&mut self, new_scale: impl Into<Fraction>, queue: &Queue)

Sets the current DPI scale.

This scaling factor should come from the window server when possible.

pub fn next_frame(&mut self) -> Frame<'_>

Begins rendering a new frame.

pub fn size(&self) -> Size<UPx>

Returns the currently configured size to render.

pub fn scale(&self) -> Fraction

Returns the effective scale to apply to graphics contexts.

pub fn dpi_scale(&self) -> Fraction

Returns the DPI scale of the underlying context.

pub fn zoom(&self) -> Fraction

Returns the current zoom applied.

Trait Implementations§

source§

impl Deref for Graphics<'_, '_, '_>

source§

type Target = Kludgine

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl DerefMut for Graphics<'_, '_, '_>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.

Auto Trait Implementations§

§

impl<'clip, 'gfx, 'pass> Freeze for Graphics<'clip, 'gfx, 'pass>

§

impl<'clip, 'gfx, 'pass> !RefUnwindSafe for Graphics<'clip, 'gfx, 'pass>

§

impl<'clip, 'gfx, 'pass> Send for Graphics<'clip, 'gfx, 'pass>

§

impl<'clip, 'gfx, 'pass> Sync for Graphics<'clip, 'gfx, 'pass>

§

impl<'clip, 'gfx, 'pass> Unpin for Graphics<'clip, 'gfx, 'pass>

§

impl<'clip, 'gfx, 'pass> !UnwindSafe for Graphics<'clip, 'gfx, 'pass>

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
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, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
§

impl<A> Cast for A

§

fn cast<To>(self) -> To
where To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
§

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, U> IntoAngle<U> for T
where U: FromAngle<T>,

source§

fn into_angle(self) -> U

Performs a conversion into T.
source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
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> IntoReadOnly<T> for T

source§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
source§

impl<T> IntoStimulus<T> for T

source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
source§

impl<T> IntoValue<Option<T>> for T

source§

fn into_value(self) -> Value<Option<T>>

Returns this type as a Value.
source§

impl<T> IntoValue<T> for T

source§

fn into_value(self) -> Value<T>

Returns this type as a 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, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
source§

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

source§

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>,

source§

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, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

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
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T

§

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

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

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