mirror of https://github.com/vitalif/openscad
41 lines
1.1 KiB
C
41 lines
1.1 KiB
C
![]() |
#ifndef CSGTEXTRENDERER_H_
|
||
|
#define CSGTEXTRENDERER_H_
|
||
|
|
||
![]() |
#include "visitor.h"
|
||
|
#include "CSGTextCache.h"
|
||
![]() |
|
||
![]() |
#include <map>
|
||
|
#include <list>
|
||
|
|
||
|
using std::string;
|
||
|
using std::map;
|
||
|
using std::list;
|
||
|
|
||
|
class CSGTextRenderer : public Visitor
|
||
|
{
|
||
|
public:
|
||
![]() |
CSGTextRenderer(CSGTextCache &cache) : cache(cache) {}
|
||
![]() |
virtual ~CSGTextRenderer() {}
|
||
|
|
||
![]() |
virtual Response visit(State &state, const AbstractNode &node);
|
||
|
virtual Response visit(State &state, const AbstractIntersectionNode &node);
|
||
|
virtual Response visit(State &state, const CsgNode &node);
|
||
|
virtual Response visit(State &state, const TransformNode &node);
|
||
|
virtual Response visit(State &state, const AbstractPolyNode &node);
|
||
![]() |
|
||
|
private:
|
||
![]() |
enum CsgOp {UNION, INTERSECTION, DIFFERENCE, MINKOWSKI};
|
||
![]() |
void addToParent(const State &state, const AbstractNode &node);
|
||
|
bool isCached(const AbstractNode &node);
|
||
|
void process(string &target, const string &src, CSGTextRenderer::CsgOp op);
|
||
|
void applyToChildren(const AbstractNode &node, CSGTextRenderer::CsgOp op);
|
||
|
|
||
|
string currindent;
|
||
![]() |
typedef list<const AbstractNode *> ChildList;
|
||
![]() |
map<int, ChildList> visitedchildren;
|
||
|
|
||
![]() |
CSGTextCache &cache;
|
||
![]() |
};
|
||
|
|
||
|
#endif
|