/* -*- C++ -*- * Copyright ©2005 Hugo Mills * * This software is distributed under the terms of the GNU GPL * For more information on the GPL, see the file COPYING or * visit http://www.gnu.org/ * * This software is distributed without warranty */ #ifndef RAWCONTOURSET_H #define RAWCONTOURSET_H #include #include "magellan/vectors.h" class RawContourSet { public: RawContourSet(); virtual ~RawContourSet(); virtual ivec3 colour(size_t contour) const = 0; virtual size_t ncontours(void) const = 0; virtual size_t noutlines(size_t contour) const = 0; virtual size_t npoints(size_t contour, size_t outline) const = 0; virtual dvec2 point(size_t contour, size_t outline, size_t point) const = 0; private: }; // These are contoursets that load and store the data in RAM, rather // than loading them ad-hoc from an mmapped file. class RawContour_Inline; class RawContourSet_Inline : public RawContourSet { public: RawContourSet_Inline(); virtual ~RawContourSet_Inline(); virtual ivec3 colour(size_t contour) const; virtual size_t ncontours(void) const { return contours.size(); } virtual size_t noutlines(size_t contour) const; virtual size_t npoints(size_t contour, size_t outline) const; virtual dvec2 point(size_t contour, size_t outline, size_t point) const; private: std::vector contours; }; #endif