Newer
Older
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
77
78
79
80
#![allow(dead_code)]
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
pub struct FloatRGB {
pub r: f32,
pub g: f32,
pub b: f32,
}
impl FloatRGB {
pub fn new(r: f32, g: f32, b: f32) -> Self {
Self { r, g, b }
}
}
#[derive(Debug, Clone)]
pub struct FloatBmp {
buffer: Vec<f32>,
w: usize,
h: usize,
}
impl FloatBmp {
pub fn new(w: usize, h: usize) -> Self {
Self {
buffer: Vec::with_capacity(w * h),
w,
h,
}
}
pub fn width(&self) -> usize {
self.w
}
pub fn height(&self) -> usize {
self.h
}
pub fn set_pixel(&mut self, x: usize, y: usize, value: f32) {
self.buffer[x + (y * self.w)] = value;
}
pub fn get_pixel(&self, x: usize, y: usize) -> f32 {
self.buffer[x + (y * self.w)]
}
}
#[derive(Debug, Clone)]
pub struct FloatRGBBmp {
pub buffer: Vec<FloatRGB>,
w: usize,
h: usize,
}
impl FloatRGBBmp {
pub fn new(w: usize, h: usize) -> Self {
Self {
buffer: vec![FloatRGB::new(0.0, 0.0, 0.0); w * h],
w,
h,
}
}
pub fn width(&self) -> usize {
self.w
}
pub fn height(&self) -> usize {
self.h
}
pub fn set_pixel(&mut self, x: usize, y: usize, value: FloatRGB) {
self.buffer[x + (y * self.w)] = value;
}
pub fn get_pixel(&self, x: usize, y: usize) -> FloatRGB {
self.buffer[x + (y * self.w)]
}
}