| 81 | } |
| 82 | |
| 83 | fn getf(mut x: f32, mut y: f32, src: &[RGBA], wi: isize, hi: isize) -> RGBA { |
| 84 | let x0 = x as isize; |
| 85 | let x1 = x0 + 1; |
| 86 | let y0 = y as isize; |
| 87 | let y1 = y0 + 1; |
| 88 | |
| 89 | let fx = x - x0 as f32; |
| 90 | let fy = y - y0 as f32; |
| 91 | |
| 92 | let a = get(x0, y0, src, wi, hi); |
| 93 | let b = get(x1, y0, src, wi, hi); |
| 94 | let c = get(x1, y1, src, wi, hi); |
| 95 | let d = get(x0, y1, src, wi, hi); |
| 96 | |
| 97 | let ax = (1.0 - fx) * a + fx * b; |
| 98 | let ay = (1.0 - fx) * d + fx * c; |
| 99 | |
| 100 | let avg = ax * (1.0 - fy) + ay * fy; |
| 101 | RGBA { |
| 102 | r: avg.x as u8, |
| 103 | g: avg.y as u8, |
| 104 | b: avg.z as u8, |
| 105 | a: 0, |
| 106 | } |
| 107 | } |
| 108 | |
| 109 | fn pt_in_rect(px: usize, py: usize, x: usize, y: usize, x2: usize, y2: usize) -> bool { |
| 110 | px >= x && px <= x2 && py >= y && py <= y2 |