Skip to content

Commit 8361330

Browse files
committed
Remove GenericImage<Pixel = Rgba<u8>> impl for DynamicImage
1 parent 3b10606 commit 8361330

File tree

6 files changed

+32
-152
lines changed

6 files changed

+32
-152
lines changed

examples/concat/main.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,15 @@ use image::{GenericImage, GenericImageView, ImageBuffer, Pixel, Primitive};
88
/// cargo run --release --example concat
99
fn main() {
1010
h_concat(&[
11-
image::open("examples/concat/200x300.png").unwrap(),
12-
image::open("examples/concat/300x300.png").unwrap(),
13-
image::open("examples/concat/400x300.png").unwrap(),
11+
image::open("examples/concat/200x300.png")
12+
.unwrap()
13+
.to_rgba8(),
14+
image::open("examples/concat/300x300.png")
15+
.unwrap()
16+
.to_rgba8(),
17+
image::open("examples/concat/400x300.png")
18+
.unwrap()
19+
.to_rgba8(),
1420
])
1521
.save("examples/concat/concatenated_900x300.png")
1622
.unwrap();

examples/opening.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::env;
55
use std::fs::File;
66
use std::path::Path;
77

8-
use image::{GenericImageView, ImageFormat};
8+
use image::ImageFormat;
99

1010
fn main() {
1111
let file = if env::args().count() == 2 {

examples/tile/main.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ use image::RgbaImage;
22

33
fn main() {
44
let mut img = RgbaImage::new(1920, 1080);
5-
let tile = image::open("examples/scaleup/tinycross.png").unwrap();
5+
let tile = image::open("examples/scaleup/tinycross.png")
6+
.unwrap()
7+
.to_rgba8();
68

79
image::imageops::tile(&mut img, &tile);
810
img.save("tiled_wallpaper.png").unwrap();

src/dynimage.rs

Lines changed: 7 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,12 @@ use crate::buffer_::{
1010
ConvertBuffer, Gray16Image, GrayAlpha16Image, GrayAlphaImage, GrayImage, ImageBuffer,
1111
Rgb16Image, RgbImage, Rgba16Image, RgbaImage,
1212
};
13-
use crate::color::{self, IntoColor};
13+
use crate::color::{self};
1414
use crate::error::{ImageError, ImageResult, ParameterError, ParameterErrorKind};
1515
use crate::flat::FlatSamples;
16-
use crate::image::{GenericImage, GenericImageView, ImageDecoder, ImageEncoder, ImageFormat};
16+
use crate::image::{ImageDecoder, ImageEncoder, ImageFormat};
1717
use crate::image_reader::free_functions;
1818
use crate::math::resize_dimensions;
19-
use crate::traits::Pixel;
2019
use crate::{image, Luma, LumaA};
2120
use crate::{imageops, ExtendedColorType};
2221
use crate::{ImageReader, Orientation};
@@ -703,6 +702,11 @@ impl DynamicImage {
703702
dynamic_map!(*self, ref p, { p.height() })
704703
}
705704

705+
/// Returns the dimensions of the underlying image
706+
pub fn dimensions(&self) -> (u32, u32) {
707+
(self.width(), self.height())
708+
}
709+
706710
/// Return a grayscale version of this image.
707711
/// Returns `Luma` images in most cases. However, for `f32` images,
708712
/// this will return a grayscale `Rgb/Rgba` image instead.
@@ -1120,66 +1124,6 @@ impl From<ImageBuffer<LumaA<f32>, Vec<f32>>> for DynamicImage {
11201124
DynamicImage::ImageRgba32F(image.convert())
11211125
}
11221126
}
1123-
1124-
#[allow(deprecated)]
1125-
impl GenericImageView for DynamicImage {
1126-
type Pixel = color::Rgba<u8>; // TODO use f32 as default for best precision and unbounded color?
1127-
1128-
fn dimensions(&self) -> (u32, u32) {
1129-
dynamic_map!(*self, ref p, p.dimensions())
1130-
}
1131-
1132-
fn get_pixel(&self, x: u32, y: u32) -> color::Rgba<u8> {
1133-
dynamic_map!(*self, ref p, p.get_pixel(x, y).to_rgba().into_color())
1134-
}
1135-
}
1136-
1137-
#[allow(deprecated)]
1138-
impl GenericImage for DynamicImage {
1139-
fn put_pixel(&mut self, x: u32, y: u32, pixel: color::Rgba<u8>) {
1140-
match *self {
1141-
DynamicImage::ImageLuma8(ref mut p) => p.put_pixel(x, y, pixel.to_luma()),
1142-
DynamicImage::ImageLumaA8(ref mut p) => p.put_pixel(x, y, pixel.to_luma_alpha()),
1143-
DynamicImage::ImageRgb8(ref mut p) => p.put_pixel(x, y, pixel.to_rgb()),
1144-
DynamicImage::ImageRgba8(ref mut p) => p.put_pixel(x, y, pixel),
1145-
DynamicImage::ImageLuma16(ref mut p) => p.put_pixel(x, y, pixel.to_luma().into_color()),
1146-
DynamicImage::ImageLumaA16(ref mut p) => {
1147-
p.put_pixel(x, y, pixel.to_luma_alpha().into_color());
1148-
}
1149-
DynamicImage::ImageRgb16(ref mut p) => p.put_pixel(x, y, pixel.to_rgb().into_color()),
1150-
DynamicImage::ImageRgba16(ref mut p) => p.put_pixel(x, y, pixel.into_color()),
1151-
DynamicImage::ImageRgb32F(ref mut p) => p.put_pixel(x, y, pixel.to_rgb().into_color()),
1152-
DynamicImage::ImageRgba32F(ref mut p) => p.put_pixel(x, y, pixel.into_color()),
1153-
}
1154-
}
1155-
1156-
fn blend_pixel(&mut self, x: u32, y: u32, pixel: color::Rgba<u8>) {
1157-
match *self {
1158-
DynamicImage::ImageLuma8(ref mut p) => p.blend_pixel(x, y, pixel.to_luma()),
1159-
DynamicImage::ImageLumaA8(ref mut p) => p.blend_pixel(x, y, pixel.to_luma_alpha()),
1160-
DynamicImage::ImageRgb8(ref mut p) => p.blend_pixel(x, y, pixel.to_rgb()),
1161-
DynamicImage::ImageRgba8(ref mut p) => p.blend_pixel(x, y, pixel),
1162-
DynamicImage::ImageLuma16(ref mut p) => {
1163-
p.blend_pixel(x, y, pixel.to_luma().into_color());
1164-
}
1165-
DynamicImage::ImageLumaA16(ref mut p) => {
1166-
p.blend_pixel(x, y, pixel.to_luma_alpha().into_color());
1167-
}
1168-
DynamicImage::ImageRgb16(ref mut p) => p.blend_pixel(x, y, pixel.to_rgb().into_color()),
1169-
DynamicImage::ImageRgba16(ref mut p) => p.blend_pixel(x, y, pixel.into_color()),
1170-
DynamicImage::ImageRgb32F(ref mut p) => {
1171-
p.blend_pixel(x, y, pixel.to_rgb().into_color());
1172-
}
1173-
DynamicImage::ImageRgba32F(ref mut p) => p.blend_pixel(x, y, pixel.into_color()),
1174-
}
1175-
}
1176-
1177-
/// Do not use is function: It is unimplemented!
1178-
fn get_pixel_mut(&mut self, _: u32, _: u32) -> &mut color::Rgba<u8> {
1179-
unimplemented!()
1180-
}
1181-
}
1182-
11831127
impl Default for DynamicImage {
11841128
fn default() -> Self {
11851129
Self::ImageRgba8(Default::default())
@@ -1400,84 +1344,6 @@ mod test {
14001344
assert_eq!(image.color(), ColorType::Rgba16);
14011345
}
14021346

1403-
fn test_grayscale(mut img: super::DynamicImage, alpha_discarded: bool) {
1404-
use crate::image::{GenericImage, GenericImageView};
1405-
img.put_pixel(0, 0, crate::color::Rgba([255, 0, 0, 100]));
1406-
let expected_alpha = if alpha_discarded { 255 } else { 100 };
1407-
assert_eq!(
1408-
img.grayscale().get_pixel(0, 0),
1409-
crate::color::Rgba([54, 54, 54, expected_alpha])
1410-
);
1411-
}
1412-
1413-
fn test_grayscale_alpha_discarded(img: super::DynamicImage) {
1414-
test_grayscale(img, true);
1415-
}
1416-
1417-
fn test_grayscale_alpha_preserved(img: super::DynamicImage) {
1418-
test_grayscale(img, false);
1419-
}
1420-
1421-
#[test]
1422-
fn test_grayscale_luma8() {
1423-
test_grayscale_alpha_discarded(super::DynamicImage::new_luma8(1, 1));
1424-
test_grayscale_alpha_discarded(super::DynamicImage::new(1, 1, ColorType::L8));
1425-
}
1426-
1427-
#[test]
1428-
fn test_grayscale_luma_a8() {
1429-
test_grayscale_alpha_preserved(super::DynamicImage::new_luma_a8(1, 1));
1430-
test_grayscale_alpha_preserved(super::DynamicImage::new(1, 1, ColorType::La8));
1431-
}
1432-
1433-
#[test]
1434-
fn test_grayscale_rgb8() {
1435-
test_grayscale_alpha_discarded(super::DynamicImage::new_rgb8(1, 1));
1436-
test_grayscale_alpha_discarded(super::DynamicImage::new(1, 1, ColorType::Rgb8));
1437-
}
1438-
1439-
#[test]
1440-
fn test_grayscale_rgba8() {
1441-
test_grayscale_alpha_preserved(super::DynamicImage::new_rgba8(1, 1));
1442-
test_grayscale_alpha_preserved(super::DynamicImage::new(1, 1, ColorType::Rgba8));
1443-
}
1444-
1445-
#[test]
1446-
fn test_grayscale_luma16() {
1447-
test_grayscale_alpha_discarded(super::DynamicImage::new_luma16(1, 1));
1448-
test_grayscale_alpha_discarded(super::DynamicImage::new(1, 1, ColorType::L16));
1449-
}
1450-
1451-
#[test]
1452-
fn test_grayscale_luma_a16() {
1453-
test_grayscale_alpha_preserved(super::DynamicImage::new_luma_a16(1, 1));
1454-
test_grayscale_alpha_preserved(super::DynamicImage::new(1, 1, ColorType::La16));
1455-
}
1456-
1457-
#[test]
1458-
fn test_grayscale_rgb16() {
1459-
test_grayscale_alpha_discarded(super::DynamicImage::new_rgb16(1, 1));
1460-
test_grayscale_alpha_discarded(super::DynamicImage::new(1, 1, ColorType::Rgb16));
1461-
}
1462-
1463-
#[test]
1464-
fn test_grayscale_rgba16() {
1465-
test_grayscale_alpha_preserved(super::DynamicImage::new_rgba16(1, 1));
1466-
test_grayscale_alpha_preserved(super::DynamicImage::new(1, 1, ColorType::Rgba16));
1467-
}
1468-
1469-
#[test]
1470-
fn test_grayscale_rgb32f() {
1471-
test_grayscale_alpha_discarded(super::DynamicImage::new_rgb32f(1, 1));
1472-
test_grayscale_alpha_discarded(super::DynamicImage::new(1, 1, ColorType::Rgb32F));
1473-
}
1474-
1475-
#[test]
1476-
fn test_grayscale_rgba32f() {
1477-
test_grayscale_alpha_preserved(super::DynamicImage::new_rgba32f(1, 1));
1478-
test_grayscale_alpha_preserved(super::DynamicImage::new(1, 1, ColorType::Rgba32F));
1479-
}
1480-
14811347
#[test]
14821348
fn test_dynamic_image_default_implementation() {
14831349
// Test that structs wrapping a DynamicImage are able to auto-derive the Default trait

src/imageops/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ where
249249
/// use image::{RgbaImage};
250250
///
251251
/// let mut img = RgbaImage::new(1920, 1080);
252-
/// let tile = image::open("tile.png").unwrap();
252+
/// let tile = image::open("tile.png").unwrap().to_rgba8();
253253
///
254254
/// image::imageops::tile(&mut img, &tile);
255255
/// img.save("tiled_wallpaper.png").unwrap();

src/imageops/sample.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ where
10601060
#[cfg(test)]
10611061
mod tests {
10621062
use super::{resize, sample_bilinear, sample_nearest, FilterType};
1063-
use crate::{GenericImageView, ImageBuffer, RgbImage};
1063+
use crate::{ImageBuffer, RgbImage};
10641064
#[cfg(feature = "benchmarks")]
10651065
use test;
10661066

@@ -1079,16 +1079,20 @@ mod tests {
10791079
#[cfg(feature = "png")]
10801080
fn test_resize_same_size() {
10811081
use std::path::Path;
1082-
let img = crate::open(Path::new("./examples/fractal.png")).unwrap();
1083-
let resize = img.resize(img.width(), img.height(), FilterType::Triangle);
1082+
let img = crate::open(Path::new("./examples/fractal.png"))
1083+
.unwrap()
1084+
.to_rgba8();
1085+
let resize = resize(&img, img.width(), img.height(), FilterType::Triangle);
10841086
assert!(img.pixels().eq(resize.pixels()))
10851087
}
10861088

10871089
#[test]
10881090
#[cfg(feature = "png")]
10891091
fn test_sample_bilinear() {
10901092
use std::path::Path;
1091-
let img = crate::open(Path::new("./examples/fractal.png")).unwrap();
1093+
let img = crate::open(Path::new("./examples/fractal.png"))
1094+
.unwrap()
1095+
.to_rgb8();
10921096
assert!(sample_bilinear(&img, 0., 0.).is_some());
10931097
assert!(sample_bilinear(&img, 1., 0.).is_some());
10941098
assert!(sample_bilinear(&img, 0., 1.).is_some());
@@ -1107,7 +1111,9 @@ mod tests {
11071111
#[cfg(feature = "png")]
11081112
fn test_sample_nearest() {
11091113
use std::path::Path;
1110-
let img = crate::open(Path::new("./examples/fractal.png")).unwrap();
1114+
let img = crate::open(Path::new("./examples/fractal.png"))
1115+
.unwrap()
1116+
.to_rgba8();
11111117
assert!(sample_nearest(&img, 0., 0.).is_some());
11121118
assert!(sample_nearest(&img, 1., 0.).is_some());
11131119
assert!(sample_nearest(&img, 0., 1.).is_some());

0 commit comments

Comments
 (0)