1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
use crate::prelude::Color;
use super::{
BlendMode, ColorFilter, FilterQuality, ImageFilter, MaskFilter, PaintingStyle, Shader,
StrokeCap, StrokeJoin,
};
pub struct Paint {
// A blend mode to apply when a shape is drawn or a layer is composited.
pub blend_mode: BlendMode,
// The color to use when stroking or filling a shape.
pub color: Color,
// A color filter to apply when a shape is drawn or when a layer is composited.
pub color_filter: Option<ColorFilter>,
// Controls the performance vs quality trade-off to use when sampling bitmaps, as with an ImageShader,
// or when drawing images, as with Canvas.drawImage, Canvas.drawImageRect, Canvas.drawImageNine or Canvas.drawAtlas.
pub filter_quality: FilterQuality,
// The ImageFilter to use when drawing raster images.
pub image_filter: Option<ImageFilter>,
// Whether the colors of the image are inverted when drawn.
pub invert_colors: bool,
// Whether to apply anti-aliasing to lines and images drawn on the canvas.
pub is_antialias: bool,
// A mask filter (for example, a blur) to apply to a shape after it has been drawn but before it has been composited into the image.
pub mask_filter: Option<MaskFilter>,
// The shader to use when stroking or filling a shape.
pub shader: Option<Shader>,
// The kind of finish to place on the end of lines drawn when style is set to PaintingStyle.stroke.
pub stroke_cap: StrokeCap,
// The kind of finish to place on the joins between segments.
pub stroke_join: StrokeJoin,
// The limit for miters to be drawn on segments when the join is set to StrokeJoin.miter and
// the style is set to PaintingStyle.stroke. If this limit is exceeded,
// then a StrokeJoin.bevel join will be drawn instead. This may cause some 'popping' of the
// corners of a path if the angle between line segments is animated, as seen in the diagrams below.
pub stroke_miter_limit: f32,
// How wide to make edges drawn when style is set to PaintingStyle.stroke.
// The width is given in logical pixels measured in the direction orthogonal to the direction of the path.
pub stroke_width: f32,
// Whether to paint inside shapes, the edges of shapes, or both.
pub style: PaintingStyle,
}
impl Default for Paint {
fn default() -> Self {
Self {
blend_mode: Default::default(),
color: Default::default(),
color_filter: Default::default(),
filter_quality: Default::default(),
image_filter: Default::default(),
invert_colors: Default::default(),
is_antialias: Default::default(),
mask_filter: Default::default(),
shader: Default::default(),
stroke_cap: Default::default(),
stroke_join: Default::default(),
stroke_miter_limit: Default::default(),
stroke_width: Default::default(),
style: Default::default(),
}
}
}