Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/carve/include/carve/input.hpp')
-rw-r--r--extern/carve/include/carve/input.hpp304
1 files changed, 0 insertions, 304 deletions
diff --git a/extern/carve/include/carve/input.hpp b/extern/carve/include/carve/input.hpp
deleted file mode 100644
index cddf6456c05..00000000000
--- a/extern/carve/include/carve/input.hpp
+++ /dev/null
@@ -1,304 +0,0 @@
-// Begin License:
-// Copyright (C) 2006-2014 Tobias Sargeant (tobias.sargeant@gmail.com).
-// All rights reserved.
-//
-// This file is part of the Carve CSG Library (http://carve-csg.com/)
-//
-// This file may be used under the terms of either the GNU General
-// Public License version 2 or 3 (at your option) as published by the
-// Free Software Foundation and appearing in the files LICENSE.GPL2
-// and LICENSE.GPL3 included in the packaging of this file.
-//
-// This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
-// INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE.
-// End:
-
-
-#pragma once
-
-#include <map>
-#include <string>
-
-#include <carve/carve.hpp>
-#include <carve/poly.hpp>
-#include <carve/mesh.hpp>
-#include <carve/polyline.hpp>
-#include <carve/pointset.hpp>
-
-
-
-namespace carve {
- namespace input {
-
- typedef std::map<std::string, std::string> Options;
-
- static inline Options opts() {
- return Options();
- }
-
- static inline Options opts(const char **kv) {
- Options r;
- for (size_t i = 0; kv[i] != NULL; i += 2) {
- r[kv[i]] = kv[i+1];
- }
- return r;
- }
-
- static inline Options opts(const std::string &k1, const std::string &v1) {
- Options r;
- r[k1] = v1;
- return r;
- }
-
- static inline Options opts(const std::string &k1, const std::string &v1,
- const std::string &k2, const std::string &v2) {
- Options r;
- r[k1] = v1;
- r[k2] = v2;
- return r;
- }
-
- static inline Options opts(const std::string &k1, const std::string &v1,
- const std::string &k2, const std::string &v2,
- const std::string &k3, const std::string &v3) {
- Options r;
- r[k1] = v1;
- r[k2] = v2;
- r[k3] = v3;
- return r;
- }
-
- static inline bool _bool(const std::string &str, bool _default = false) {
- if (str == "true") return true;
- if (str == "false") return false;
- return _default;
- }
-
- struct Data {
- Data() {
- }
-
- virtual ~Data() {
- }
-
- virtual void transform(const carve::math::Matrix & /* transform */) {
- }
- };
-
-
-
- struct VertexData : public Data {
- std::vector<carve::geom3d::Vector> points;
-
- VertexData() : Data() {
- }
-
- virtual ~VertexData() {
- }
-
- virtual void transform(const carve::math::Matrix &transform) {
- for (size_t i = 0; i < points.size(); ++i) {
- points[i] *= transform;
- }
- }
-
- size_t addVertex(carve::geom3d::Vector point) {
- size_t index = points.size();
- points.push_back(point);
- return index;
- }
-
- inline void reserveVertices(int count) {
- points.reserve(count);
- }
-
- size_t getVertexCount() const {
- return points.size();
- }
-
- const carve::geom3d::Vector &getVertex(int index) const {
- return points[index];
- }
- };
-
-
-
- struct PolyhedronData : public VertexData {
- std::vector<int> faceIndices;
- int faceCount;
-
- PolyhedronData() : VertexData(), faceIndices(), faceCount(0) {
- }
-
- virtual ~PolyhedronData() {
- }
-
- void reserveFaces(int count, int avgFaceSize) {
- faceIndices.reserve(faceIndices.size() + count * (1 + avgFaceSize));
- }
-
- int getFaceCount() const {
- return faceCount;
- }
-
- template <typename Iter>
- void addFace(Iter begin, Iter end) {
- size_t n = std::distance(begin, end);
- faceIndices.reserve(faceIndices.size() + n + 1);
- faceIndices.push_back(n);
- std::copy(begin, end, std::back_inserter(faceIndices));
- ++faceCount;
- }
-
- void addFace(int a, int b, int c) {
- faceIndices.push_back(3);
- faceIndices.push_back(a);
- faceIndices.push_back(b);
- faceIndices.push_back(c);
- ++faceCount;
- }
-
- void addFace(int a, int b, int c, int d) {
- faceIndices.push_back(4);
- faceIndices.push_back(a);
- faceIndices.push_back(b);
- faceIndices.push_back(c);
- faceIndices.push_back(d);
- ++faceCount;
- }
-
- void clearFaces() {
- faceIndices.clear();
- faceCount = 0;
- }
-
- carve::poly::Polyhedron *create(const Options &options) const {
- return new carve::poly::Polyhedron(points, faceCount, faceIndices);
- }
-
- carve::mesh::MeshSet<3> *createMesh(const Options &options) const {
- Options::const_iterator i;
- carve::mesh::MeshOptions opts;
- i = options.find("avoid_cavities");
- if (i != options.end()) {
- opts.avoid_cavities(_bool((*i).second));
- }
- return new carve::mesh::MeshSet<3>(points, faceCount, faceIndices, opts);
- }
- };
-
-
-
- struct PolylineSetData : public VertexData {
- typedef std::pair<bool, std::vector<int> > polyline_data_t;
- std::list<polyline_data_t> polylines;
-
- PolylineSetData() : VertexData(), polylines() {
- }
-
- virtual ~PolylineSetData() {
- }
-
- void beginPolyline(bool closed = false) {
- polylines.push_back(std::make_pair(closed, std::vector<int>()));
- }
-
- void reservePolyline(size_t len) {
- polylines.back().second.reserve(len);
- }
-
- void addPolylineIndex(int idx) {
- polylines.back().second.push_back(idx);
- }
-
- carve::line::PolylineSet *create(const Options &options) const {
- carve::line::PolylineSet *p = new carve::line::PolylineSet(points);
-
- for (std::list<polyline_data_t>::const_iterator i = polylines.begin();
- i != polylines.end();
- ++i) {
- p->addPolyline((*i).first, (*i).second.begin(), (*i).second.end());
- }
- return p;
- }
- };
-
-
-
- struct PointSetData : public VertexData {
-
- PointSetData() : VertexData() {
- }
-
- virtual ~PointSetData() {
- }
-
- carve::point::PointSet *create(const Options &options) const {
- carve::point::PointSet *p = new carve::point::PointSet(points);
- return p;
- }
- };
-
-
-
- class Input {
- public:
- std::list<Data *> input;
-
- Input() {
- }
-
- ~Input() {
- for (std::list<Data *>::iterator i = input.begin(); i != input.end(); ++i) {
- delete (*i);
- }
- }
-
- void addDataBlock(Data *data) {
- input.push_back(data);
- }
-
- void transform(const carve::math::Matrix &transform) {
- if (transform == carve::math::Matrix::IDENT()) return;
- for (std::list<Data *>::iterator i = input.begin(); i != input.end(); ++i) {
- (*i)->transform(transform);
- }
- }
-
- template<typename T>
- static inline T *create(Data *d, const Options &options = Options()) {
- return NULL;
- }
- };
-
- template<>
- inline carve::mesh::MeshSet<3> *Input::create(Data *d, const Options &options) {
- PolyhedronData *p = dynamic_cast<PolyhedronData *>(d);
- if (p == NULL) return NULL;
- return p->createMesh(options);
- }
-
- template<>
- inline carve::poly::Polyhedron *Input::create(Data *d, const Options &options) {
- PolyhedronData *p = dynamic_cast<PolyhedronData *>(d);
- if (p == NULL) return NULL;
- return p->create(options);
- }
-
- template<>
- inline carve::line::PolylineSet *Input::create(Data *d, const Options &options) {
- PolylineSetData *p = dynamic_cast<PolylineSetData *>(d);
- if (p == NULL) return NULL;
- return p->create(options);
- }
-
- template<>
- inline carve::point::PointSet *Input::create(Data *d, const Options &options) {
- PointSetData *p = dynamic_cast<PointSetData *>(d);
- if (p == NULL) return NULL;
- return p->create(options);
- }
-
- }
-}