You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
1.9 KiB
C
65 lines
1.9 KiB
C
|
1 month ago
|
/*------------------------------------------------------------------------------
|
||
|
|
* Copyright (c) 2023 by Bai Bing (seread@163.com)
|
||
|
|
* See COPYING file for copying and redistribution conditions.
|
||
|
|
*
|
||
|
|
* Alians IT Studio.
|
||
|
|
*----------------------------------------------------------------------------*/
|
||
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <map>
|
||
|
|
#include <set>
|
||
|
|
#include <string>
|
||
|
|
#include <vector>
|
||
|
|
|
||
|
|
#include "_Define.h"
|
||
|
|
#include "ASPoint.h"
|
||
|
|
#include "ASDiscontinuity.h"
|
||
|
|
|
||
|
|
namespace ais
|
||
|
|
{
|
||
|
|
class AIS_EXPORT BreakLine : public Discontinuity<ais::PointXYZ>
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
BreakLine() = default;
|
||
|
|
BreakLine(const char *name_, std::vector<ais::PointXYZ> points_) : Discontinuity<ais::PointXYZ>(name_, points_) {}
|
||
|
|
BreakLine(std::vector<ais::PointXYZ> points_) : Discontinuity<ais::PointXYZ>(ais::uuid().c_str(), points_) {}
|
||
|
|
BreakLine(const char *contents) : Discontinuity<ais::PointXYZ>(contents){};
|
||
|
|
~BreakLine() = default;
|
||
|
|
|
||
|
|
inline std::string type() const { return "BreakLine"; }
|
||
|
|
|
||
|
|
friend std::ostream &operator<<(std::ostream &stream, const BreakLine &breakline)
|
||
|
|
{
|
||
|
|
stream << breakline.str();
|
||
|
|
return stream;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
class AIS_EXPORT BreakLineFile : public DiscontinuityFile<ais::PointXYZ>
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
BreakLineFile(const char *filename)
|
||
|
|
{
|
||
|
|
load(filename);
|
||
|
|
};
|
||
|
|
|
||
|
|
size_t load(const char *filename)
|
||
|
|
{
|
||
|
|
auto loaded = DiscontinuityFile::load(filename);
|
||
|
|
for (auto &kv : discontinuities)
|
||
|
|
{
|
||
|
|
auto points = kv.second.points;
|
||
|
|
lines[kv.first] = BreakLine(kv.first.c_str(), points);
|
||
|
|
}
|
||
|
|
return loaded;
|
||
|
|
}
|
||
|
|
|
||
|
|
inline void clear()
|
||
|
|
{
|
||
|
|
lines.clear();
|
||
|
|
DiscontinuityFile::clear();
|
||
|
|
};
|
||
|
|
|
||
|
|
std::map<std::string, BreakLine> lines;
|
||
|
|
};
|
||
|
|
}
|