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/raw_loader.cc | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 2004/i/nono/src/image/raw_loader.cc (limited to '2004/i/nono/src/image/raw_loader.cc') 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; +} + -- cgit v1.2.3