From 6d40a5d17f21ecac61d8b41e030cac2560b87511 Mon Sep 17 00:00:00 2001 From: schodet Date: Tue, 29 Mar 2005 10:32:02 +0000 Subject: Ajout du RawReader. --- 2005/i/robert/src/image/image_reader.hh | 2 +- 2005/i/robert/src/image/raw_reader.cc | 55 +++++++++++++++++++++++++++++++++ 2005/i/robert/src/image/raw_reader.hh | 11 +++++-- 3 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 2005/i/robert/src/image/raw_reader.cc (limited to '2005/i/robert/src/image') diff --git a/2005/i/robert/src/image/image_reader.hh b/2005/i/robert/src/image/image_reader.hh index fd6d308..81020bd 100644 --- a/2005/i/robert/src/image/image_reader.hh +++ b/2005/i/robert/src/image/image_reader.hh @@ -34,7 +34,7 @@ class ImageReader virtual ~ImageReader (void) { } /// Récupère les paramètres de l'image. virtual void getParam (int &width, int &height, - Image::PixelFormat &pixelFormat) const = 0; + Image::PixelFormat &pixelFormat) = 0; /// Lit une image, lance une exception en cas d'erreur. virtual void read (uint8_t *buf, unsigned size) = 0; }; diff --git a/2005/i/robert/src/image/raw_reader.cc b/2005/i/robert/src/image/raw_reader.cc new file mode 100644 index 0000000..8adacca --- /dev/null +++ b/2005/i/robert/src/image/raw_reader.cc @@ -0,0 +1,55 @@ +// raw_reader.cc +// robert - programme du robot 2005. {{{ +// +// Copyright (C) 2005 Nicolas Schodet +// +// Robot APB Team/Efrei 2005. +// Web: http://assos.efrei.fr/robot/ +// Email: robot AT efrei DOT fr +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// +// }}} +#include "raw_reader.hh" +#include "data/data_input.hh" + +/// Constructeur, les paramètres doivent être précisés car non présents +/// dans le binaire. +RawReader::RawReader (DataInput &data, int width, int height, + Image::PixelFormat pixelFormat) + : data_ (data), width_ (width), height_ (height), + pixelFormat_ (pixelFormat_) +{ +} + +/// Récupère les paramètres de l'image. +void +RawReader::getParam (int &width, int &height, + Image::PixelFormat &pixelFormat) +{ + width = width_; + height = height_; + pixelFormat = pixelFormat_; +} + +/// Lit une image, lance une exception en cas d'erreur. +void +RawReader::read (uint8_t *buf, unsigned size) +{ + unsigned r = data_.read (buf, size); + if (r != size) + throw std::runtime_error ("Raw file too short"); +} + diff --git a/2005/i/robert/src/image/raw_reader.hh b/2005/i/robert/src/image/raw_reader.hh index 8f401f2..b5ecd78 100644 --- a/2005/i/robert/src/image/raw_reader.hh +++ b/2005/i/robert/src/image/raw_reader.hh @@ -26,17 +26,22 @@ // }}} #include "image_reader.hh" +class DataInput; + /// Classe de lecture d'images crues. class RawReader : public ImageReader { + DataInput &data_; int width_, height_; Image::PixelFormat pixelFormat_; public: - /// Destructeur. - ~ImageReader (void) { } + /// Constructeur, les paramètres doivent être précisés car non présents + /// dans le binaire. + RawReader (DataInput &data, int width, int height, + Image::PixelFormat pixelFormat); /// Récupère les paramètres de l'image. void getParam (int &width, int &height, - Image::PixelFormat &pixelFormat) const; + Image::PixelFormat &pixelFormat); /// Lit une image, lance une exception en cas d'erreur. void read (uint8_t *buf, unsigned size); }; -- cgit v1.2.3