--- scribo/ChangeLog | 4 + scribo/scribo/core/document.hh | 162 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 166 insertions(+), 0 deletions(-) create mode 100644 scribo/scribo/core/document.hh
diff --git a/scribo/ChangeLog b/scribo/ChangeLog index 446ff89..9d47519 100644 --- a/scribo/ChangeLog +++ b/scribo/ChangeLog @@ -1,3 +1,7 @@ +2010-09-02 Guillaume Lazzara z@lrde.epita.fr + + * scribo/core/document.hh: Introduce new document structure. + 2010-11-15 Guillaume Lazzara z@lrde.epita.fr
* demo/viewer/Makefile.am: Remove deprecated dependencies. diff --git a/scribo/scribo/core/document.hh b/scribo/scribo/core/document.hh new file mode 100644 index 0000000..93d9348 --- /dev/null +++ b/scribo/scribo/core/document.hh @@ -0,0 +1,162 @@ +// Copyright (C) 2010 EPITA Research and Development Laboratory (LRDE) +// +// This file is part of Olena. +// +// Olena 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, version 2 of the License. +// +// Olena 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 Olena. If not, see http://www.gnu.org/licenses/. +// +// As a special exception, you may use this file as part of a free +// software project without restriction. Specifically, if other files +// instantiate templates or use macros or inline functions from this +// file, or you compile this file and link it with other files to produce +// an executable, this file does not by itself cause the resulting +// executable to be covered by the GNU General Public License. This +// exception does not however invalidate any other reasons why the +// executable file might be covered by the GNU General Public License. + +#ifndef SCRIBO_CORE_DOCUMENT_HH +# define SCRIBO_CORE_DOCUMENT_HH + +/// \file +/// +/// \brief Describes document content. + +# include <mln/core/image/image2d.hh> +# include <mln/value/rgb8.hh> +# include <mln/io/magick/load.hh> + +# include <scribo/core/component_set.hh> +# include <scribo/core/line_set.hh> + +namespace scribo +{ + + template <typename L> + struct document + { + public: + + document(); + document(const char *filename); + + const char * filename() const; + + bool is_valid() const; + + const line_set<L>& text() const; + void set_text(const line_set<L>& line); + + const component_set<L>& elements() const; + void set_elements(const component_set<L>& elements); + + const mln::image2dvalue::rgb8& image() const; + + private: + void open(); + + const char *filename_; + mln::image2dmln::value::rgb8 image_; + + line_set<L> lines_; + component_set<L> elements_; + }; + + + +# ifndef MLN_INCLUDE_ONLY + + + template <typename L> + document<L>::document() + { + } + + + template <typename L> + document<L>::document(const char *filename) + : filename_(filename) + { + open(); + } + + + template <typename L> + const char * + document<L>::filename() const + { + return filename_; + } + + + template <typename L> + void + document<L>::open() + { + mln::io::magick::load(image_, filename_); + } + + + template <typename L> + bool + document<L>::is_valid() const + { + return image_.is_valid(); + } + + + template <typename L> + const line_set<L>& + document<L>::text() const + { + return lines_; + } + + + template <typename L> + void + document<L>::set_text(const line_set<L>& line) + { + lines_ = line; + } + + + template <typename L> + const component_set<L>& + document<L>::elements() const + { + return elements_; + } + + + template <typename L> + void + document<L>::set_elements(const component_set<L>& elements) + { + elements_ = elements; + } + + + template <typename L> + const mln::image2dvalue::rgb8& + document<L>::image() const + { + return image_; + } + + +# endif // ! MLN_INCLUDE_ONLY + + +} // end of namespace scribo + + +#endif // ! SCRIBO_CORE_DOCUMENT_HH