use crate::color::RgbaF32;
use crate::tile::TilePixels;
#[derive(Debug, Clone, Copy)]
pub struct Dab {
pub x: f32,
pub y: f32,
pub radius: f32,
pub color: RgbaF32, pub opaque: f32,
pub hardness: f32,
pub alpha_eraser: f32,
pub aspect_ratio: f32,
pub angle: f32, pub lock_alpha: f32,
pub colorize: f32,
pub posterize: f32,
pub posterize_num: f32,
pub paint: f32,
pub anti_aliasing: f32,
}
pub trait TiledSurface {
fn tile_request_start(&mut self, tx: i32, ty: i32) -> &mut TilePixels;
fn tile_request_end(&mut self, tx: i32, ty: i32);
fn begin_atomic(&mut self) {}
fn end_atomic(&mut self) -> Vec<(i32, i32)> {
Vec::new()
}
fn draw_dab(&mut self, dab: &Dab) -> bool {
crate::brushmodes::draw_dab_default(self, dab)
}
fn tile_lookup(&self, _tx: i32, _ty: i32) -> Option<&TilePixels> {
None
}
fn get_color(&self, x: f32, y: f32, radius: f32) -> RgbaF32 {
crate::brushmodes::get_color_default(self, x, y, radius)
}
fn get_color_pigment(&self, x: f32, y: f32, radius: f32, paint: f32) -> RgbaF32 {
if paint < 0.0 {
self.get_color(x, y, radius)
} else {
crate::brushmodes::get_color_pigment_default(self, x, y, radius, paint)
}
}
}