root/src/libs/icon/transformer/PathSource.h
/*
 * Copyright 2006-2007, Haiku.
 * Distributed under the terms of the MIT License.
 *
 * Authors:
 *              Stephan Aßmus <superstippi@gmx.de>
 */
#ifndef PATH_SOURCE_H
#define PATH_SOURCE_H


#include "IconBuild.h"
#include "Transformer.h"

#include "agg_path_storage.h"
#include "agg_conv_curve.h"


_BEGIN_ICON_NAMESPACE


template <class Type> class Container;
class VectorPath;

typedef agg::path_storage                                       AGGPath;
typedef agg::conv_curve<AGGPath>                        AGGCurvedPath;

class PathSource : public VertexSource {
 public:
                                                                        PathSource(Container<VectorPath>* paths);
        virtual                                                 ~PathSource();

    virtual     void                                    rewind(unsigned path_id);
    virtual     unsigned                                vertex(double* x, double* y);

        virtual bool                                    WantsOpenPaths() const;
        virtual double                                  ApproximationScale() const;

        // PathSource
                        void                                    Update(bool leavePathsOpen,
                                                                                double approximationScale);

                        void                                    SetGlobalScale(double scale);

 private:
                        Container<VectorPath>*  fPaths;
                        AGGPath                                 fAGGPath;
                        AGGCurvedPath                   fAGGCurvedPath;

                        double                                  fGlobalScale;
                        double                                  fLastTransformerScale;
};


_END_ICON_NAMESPACE


#endif  // PATH_SOURCE_H