Cleanups, visibility fixes, add authors
This commit is contained in:
1 parent
71f1342236
commit
112492261f
5 files changed
+20
-15
No files matched your search
+8
-1
@@ -1,7 +1,14 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "tiff"
|
name = "tiff"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = []
|
authors = [
|
||||||
|
"ccgn",
|
||||||
|
"bvssvni <bvssvni@gmail.com>",
|
||||||
|
"nwin",
|
||||||
|
"TyOverby <ty@pre-alpha.com>",
|
||||||
|
"HeroicKatora",
|
||||||
|
"Calum",
|
||||||
|
"CensoredUsername <cens.username@gmail.com>"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
byteorder = "1.2.*"
|
byteorder = "1.2.*"
|
||||||
|
|||||||
+1
-1
@@ -148,7 +148,7 @@ impl Entry {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn val<R: Read + Seek>(&self, decoder: &mut super::TIFFDecoder<R>)
|
pub fn val<R: Read + Seek>(&self, decoder: &mut super::Decoder<R>)
|
||||||
-> TiffResult<Value> {
|
-> TiffResult<Value> {
|
||||||
let bo = decoder.byte_order();
|
let bo = decoder.byte_order();
|
||||||
match (self.type_, self.count) {
|
match (self.type_, self.count) {
|
||||||
|
|||||||
+9
-9
@@ -28,7 +28,7 @@ pub enum DecodingResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// A buffer for image decoding
|
// A buffer for image decoding
|
||||||
pub enum DecodingBuffer<'a> {
|
enum DecodingBuffer<'a> {
|
||||||
/// A slice of unsigned bytes
|
/// A slice of unsigned bytes
|
||||||
U8(&'a mut [u8]),
|
U8(&'a mut [u8]),
|
||||||
/// A slice of unsigned words
|
/// A slice of unsigned words
|
||||||
@@ -82,7 +82,7 @@ enum Predictor {
|
|||||||
///
|
///
|
||||||
/// Currently does not support decoding of interlaced images
|
/// Currently does not support decoding of interlaced images
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct TIFFDecoder<R> where R: Read + Seek {
|
pub struct Decoder<R> where R: Read + Seek {
|
||||||
reader: SmartReader<R>,
|
reader: SmartReader<R>,
|
||||||
byte_order: ByteOrder,
|
byte_order: ByteOrder,
|
||||||
next_ifd: Option<u32>,
|
next_ifd: Option<u32>,
|
||||||
@@ -147,10 +147,10 @@ fn rev_hpredict(image: DecodingResult, size: (u32, u32), color_type: ColorType)
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R: Read + Seek> TIFFDecoder<R> {
|
impl<R: Read + Seek> Decoder<R> {
|
||||||
/// Create a new decoder that decodes from the stream ```r```
|
/// Create a new decoder that decodes from the stream ```r```
|
||||||
pub fn new(r: R) -> TiffResult<TIFFDecoder<R>> {
|
pub fn new(r: R) -> TiffResult<Decoder<R>> {
|
||||||
TIFFDecoder {
|
Decoder {
|
||||||
reader: SmartReader::wrap(r, ByteOrder::LittleEndian),
|
reader: SmartReader::wrap(r, ByteOrder::LittleEndian),
|
||||||
byte_order: ByteOrder::LittleEndian,
|
byte_order: ByteOrder::LittleEndian,
|
||||||
next_ifd: None,
|
next_ifd: None,
|
||||||
@@ -164,11 +164,11 @@ impl<R: Read + Seek> TIFFDecoder<R> {
|
|||||||
}.init()
|
}.init()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn dimensions(&mut self) -> TiffResult<(u32, u32)> {
|
pub fn dimensions(&mut self) -> TiffResult<(u32, u32)> {
|
||||||
Ok((self.width, self.height))
|
Ok((self.width, self.height))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn colortype(&mut self) -> TiffResult<ColorType> {
|
pub fn colortype(&mut self) -> TiffResult<ColorType> {
|
||||||
match self.photometric_interpretation {
|
match self.photometric_interpretation {
|
||||||
// TODO: catch also [ 8, 8, 8, _] this does not work due to a bug in rust atm
|
// TODO: catch also [ 8, 8, 8, _] this does not work due to a bug in rust atm
|
||||||
PhotometricInterpretation::RGB if self.bits_per_sample == [8, 8, 8, 8] => Ok(ColorType::RGBA(8)),
|
PhotometricInterpretation::RGB if self.bits_per_sample == [8, 8, 8, 8] => Ok(ColorType::RGBA(8)),
|
||||||
@@ -209,7 +209,7 @@ impl<R: Read + Seek> TIFFDecoder<R> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Initializes the decoder.
|
/// Initializes the decoder.
|
||||||
pub fn init(mut self) -> TiffResult<TIFFDecoder<R>> {
|
pub fn init(mut self) -> TiffResult<Decoder<R>> {
|
||||||
try!(self.read_header());
|
try!(self.read_header());
|
||||||
self.next_image()
|
self.next_image()
|
||||||
}
|
}
|
||||||
@@ -217,7 +217,7 @@ impl<R: Read + Seek> TIFFDecoder<R> {
|
|||||||
/// Reads in the next image.
|
/// Reads in the next image.
|
||||||
/// If there is no further image in the TIFF file a format error is returned.
|
/// If there is no further image in the TIFF file a format error is returned.
|
||||||
/// To determine whether there are more images call `TIFFDecoder::more_images` instead.
|
/// To determine whether there are more images call `TIFFDecoder::more_images` instead.
|
||||||
pub fn next_image(mut self) -> TiffResult<TIFFDecoder<R>> {
|
pub fn next_image(mut self) -> TiffResult<Decoder<R>> {
|
||||||
self.ifd = Some(try!(self.read_ifd()));
|
self.ifd = Some(try!(self.read_ifd()));
|
||||||
self.width = try!(self.get_tag_u32(ifd::Tag::ImageWidth));
|
self.width = try!(self.get_tag_u32(ifd::Tag::ImageWidth));
|
||||||
self.height = try!(self.get_tag_u32(ifd::Tag::ImageLength));
|
self.height = try!(self.get_tag_u32(ifd::Tag::ImageLength));
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ use std::error::Error;
|
|||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
/// An enumeration of Tiff errors
|
/// Tiff error kinds.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum TiffError {
|
pub enum TiffError {
|
||||||
/// The Image is not formatted properly
|
/// The Image is not formatted properly
|
||||||
|
|||||||
+1
-3
@@ -11,9 +11,7 @@ extern crate lzw;
|
|||||||
extern crate num_traits;
|
extern crate num_traits;
|
||||||
#[macro_use] extern crate enum_primitive;
|
#[macro_use] extern crate enum_primitive;
|
||||||
|
|
||||||
pub use self::decoder::TIFFDecoder;
|
pub mod decoder;
|
||||||
|
|
||||||
mod decoder;
|
|
||||||
mod error;
|
mod error;
|
||||||
|
|
||||||
pub use self::error::{TiffError, TiffResult};
|
pub use self::error::{TiffError, TiffResult};
|
||||||
|
|||||||
Reference in new issue
Block a user