September Morn Update
This commit is contained in:
parent
4e2d22a71d
commit
aac6731f2c
6856 changed files with 141342 additions and 21127 deletions
82
Task/Bitmap/Rust/bitmap.rust
Normal file
82
Task/Bitmap/Rust/bitmap.rust
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
|
||||
pub struct Rgb {
|
||||
pub r: u8,
|
||||
pub g: u8,
|
||||
pub b: u8,
|
||||
}
|
||||
|
||||
impl Rgb {
|
||||
pub fn new(r: u8, g: u8, b: u8) -> Self {
|
||||
Rgb { r, g, b }
|
||||
}
|
||||
|
||||
pub const BLACK: Rgb = Rgb { r: 0, g: 0, b: 0 };
|
||||
pub const RED: Rgb = Rgb { r: 255, g: 0, b: 0 };
|
||||
pub const GREEN: Rgb = Rgb { r: 0, g: 255, b: 0 };
|
||||
pub const BLUE: Rgb = Rgb { r: 0, g: 0, b: 255 };
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct Image {
|
||||
width: usize,
|
||||
height: usize,
|
||||
pixels: Vec<Rgb>,
|
||||
}
|
||||
|
||||
impl Image {
|
||||
pub fn new(width: usize, height: usize) -> Self {
|
||||
Image {
|
||||
width,
|
||||
height,
|
||||
pixels: vec![Rgb::BLACK; width * height],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn width(&self) -> usize {
|
||||
self.width
|
||||
}
|
||||
|
||||
pub fn height(&self) -> usize {
|
||||
self.height
|
||||
}
|
||||
|
||||
pub fn fill(&mut self, color: Rgb) {
|
||||
for pixel in &mut self.pixels {
|
||||
*pixel = color;
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get(&self, row: usize, col: usize) -> Option<&Rgb> {
|
||||
if row >= self.width {
|
||||
return None;
|
||||
}
|
||||
self.pixels.get(row * self.width + col)
|
||||
}
|
||||
|
||||
pub fn get_mut(&mut self, row: usize, col: usize) -> Option<&mut Rgb> {
|
||||
if row >= self.width {
|
||||
return None;
|
||||
}
|
||||
self.pixels.get_mut(row * self.width + col)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut image = Image::new(16, 9);
|
||||
assert_eq!(Some(&Rgb::BLACK), image.get(3, 4));
|
||||
assert!(image.get(22, 3).is_none());
|
||||
|
||||
image.fill(Rgb::RED);
|
||||
assert_eq!(Some(&Rgb::RED), image.get(3, 4));
|
||||
|
||||
if let Some(pixel) = image.get_mut(3, 4) {
|
||||
*pixel = Rgb::GREEN;
|
||||
}
|
||||
assert_eq!(Some(&Rgb::GREEN), image.get(3, 4));
|
||||
|
||||
if let Some(pixel) = image.get_mut(3, 4) {
|
||||
pixel.g -= 100;
|
||||
pixel.b = 20;
|
||||
}
|
||||
assert_eq!(Some(&Rgb::new(0, 155, 20)), image.get(3, 4));
|
||||
}
|
||||
16
Task/Bitmap/Xojo/bitmap.xojo
Normal file
16
Task/Bitmap/Xojo/bitmap.xojo
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
Function CreatePicture(width As Integer, height As Integer) As Picture
|
||||
Return New Picture(width, height)
|
||||
End Function
|
||||
|
||||
Sub FillPicture(ByRef p As Picture, FillColor As Color)
|
||||
p.Graphics.ForeColor = FillColor
|
||||
p.Graphics.FillRect(0, 0, p.Width, p.Height)
|
||||
End Sub
|
||||
|
||||
Function GetPixelColor(p As Picture, x As Integer, y As Integer) As Color
|
||||
Return p.RGBSurface.Pixel(x, y)
|
||||
End Function
|
||||
|
||||
Sub SetPixelColor(p As Picture, x As Integer, y As Integer, pColor As Color)
|
||||
p.RGBSurface.Pixel(x, y) = pColor
|
||||
End Sub
|
||||
Loading…
Add table
Add a link
Reference in a new issue