From 7a87ac98381ad83d6276df2fc44c72a830606575 Mon Sep 17 00:00:00 2001 From: schodet Date: Sun, 2 May 2004 07:45:50 +0000 Subject: Ajout du raw loader. --- 2004/i/nono/src/image/Makefile.defs | 2 +- 2004/i/nono/src/image/raw_loader.cc | 52 +++++++++++++++++++++++++++++++++++ 2004/i/nono/src/image/raw_loader.h | 54 +++++++++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 2004/i/nono/src/image/raw_loader.cc create mode 100644 2004/i/nono/src/image/raw_loader.h (limited to '2004/i') diff --git a/2004/i/nono/src/image/Makefile.defs b/2004/i/nono/src/image/Makefile.defs index 67d428c..9d35812 100644 --- a/2004/i/nono/src/image/Makefile.defs +++ b/2004/i/nono/src/image/Makefile.defs @@ -1,5 +1,5 @@ LIBS += image.a -image_a_SOURCES = png_writer.cc +image_a_SOURCES = raw_loader.cc image.a: ${image_a_SOURCES:%.cc=image.a(%.o)} diff --git a/2004/i/nono/src/image/raw_loader.cc b/2004/i/nono/src/image/raw_loader.cc new file mode 100644 index 0000000..1a32327 --- /dev/null +++ b/2004/i/nono/src/image/raw_loader.cc @@ -0,0 +1,52 @@ +// raw_loader.cc +// nono - programme du robot 2004. {{{ +// +// Copyright (C) 2004 Nicolas Schodet +// +// Robot APB Team/Efrei 2004. +// 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_loader.h" +#include "utils/errno_exception.h" + +#include +#include + +/// Constructeur. +RawLoader::RawLoader (const std::string &file, int width, int height, + ImageLoader::ColorSpace colorSpace) + : file_ (file), width_ (width), height_ (height), colorSpace_ (colorSpace) +{ +} + +/// Lit une image, retourne le nombre d'octets lus. +int +RawLoader::read (void *buf, int size) const +{ + // Ouverture. + int fd = open (file_.c_str (), O_RDONLY, 0); + if (fd == -1) + throw errno_exception (errno); + // Lecture. + int r = ::read (fd, buf, size); + // Fermeture. + close (fd); + return r; +} + diff --git a/2004/i/nono/src/image/raw_loader.h b/2004/i/nono/src/image/raw_loader.h new file mode 100644 index 0000000..7e16bd0 --- /dev/null +++ b/2004/i/nono/src/image/raw_loader.h @@ -0,0 +1,54 @@ +#ifndef raw_loader_h +#define raw_loader_h +// raw_loader.h +// nono - programme du robot 2004. {{{ +// +// Copyright (C) 2004 Nicolas Schodet +// +// Robot APB Team/Efrei 2004. +// 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 "image/image_loader.h" + +#include + +/// Classe de chargement d'images crues. +class RawLoader : public ImageLoader +{ + std::string file_; + int width_, height_; + ImageLoader::ColorSpace colorSpace_; + public: + /// Constructeur. + RawLoader (const std::string &file, int width, int height, + ImageLoader::ColorSpace colorSpace); + /// Récupère la taille de l'image. + void getSize (int &width, int &height) const + { width = width_; height = height_; } + /// Récupère la taille du tampon. + int getBufSize (void) const + { return width_ * height_ * (colorSpace_ == ImageLoader::yuv422 ? 2 : 3); } + /// Récupère le format de l'image. + ImageLoader::ColorSpace getColorSpace (void) const + { return colorSpace_; } + /// Lit une image, retourne le nombre d'octets lus. + int read (void *buf, int size) const; +}; + +#endif // raw_loader_h -- cgit v1.2.3