mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 18:30:06 +00:00
Placefile image statement
This commit is contained in:
parent
26a326b450
commit
ca6f55d712
2 changed files with 82 additions and 1 deletions
|
|
@ -142,6 +142,25 @@ public:
|
||||||
std::vector<Element> elements_ {};
|
std::vector<Element> elements_ {};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ImageDrawItem : DrawItem
|
||||||
|
{
|
||||||
|
ImageDrawItem() { itemType_ = ItemType::Image; }
|
||||||
|
|
||||||
|
std::string imageFile_ {};
|
||||||
|
|
||||||
|
struct Element
|
||||||
|
{
|
||||||
|
double latitude_ {};
|
||||||
|
double longitude_ {};
|
||||||
|
double x_ {};
|
||||||
|
double y_ {};
|
||||||
|
double tu_ {};
|
||||||
|
double tv_ {};
|
||||||
|
};
|
||||||
|
|
||||||
|
std::vector<Element> elements_ {};
|
||||||
|
};
|
||||||
|
|
||||||
struct PolygonDrawItem : DrawItem
|
struct PolygonDrawItem : DrawItem
|
||||||
{
|
{
|
||||||
PolygonDrawItem() { itemType_ = ItemType::Polygon; }
|
PolygonDrawItem() { itemType_ = ItemType::Polygon; }
|
||||||
|
|
|
||||||
|
|
@ -570,9 +570,29 @@ void Placefile::Impl::ProcessLine(const std::string& line)
|
||||||
// lat, lon, Tu [, Tv ]
|
// lat, lon, Tu [, Tv ]
|
||||||
// ...
|
// ...
|
||||||
// End:
|
// End:
|
||||||
|
std::vector<std::string> tokenList =
|
||||||
|
util::ParseTokens(line, {" "}, imageKey_.size());
|
||||||
|
|
||||||
currentStatement_ = DrawingStatement::Image;
|
currentStatement_ = DrawingStatement::Image;
|
||||||
|
|
||||||
// TODO
|
std::shared_ptr<ImageDrawItem> di = nullptr;
|
||||||
|
|
||||||
|
if (tokenList.size() >= 1)
|
||||||
|
{
|
||||||
|
di = std::make_shared<ImageDrawItem>();
|
||||||
|
|
||||||
|
di->threshold_ = threshold_;
|
||||||
|
|
||||||
|
TrimQuotes(tokenList[0]);
|
||||||
|
di->imageFile_.swap(tokenList[0]);
|
||||||
|
|
||||||
|
currentDrawItem_ = di;
|
||||||
|
drawItems_.emplace_back(std::move(di));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger_->warn("Image statement malformed: {}", line);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (boost::istarts_with(line, polygonKey_))
|
else if (boost::istarts_with(line, polygonKey_))
|
||||||
{
|
{
|
||||||
|
|
@ -664,6 +684,48 @@ void Placefile::Impl::ProcessElement(const std::string& line)
|
||||||
logger_->warn("Triangles sub-statement malformed: {}", line);
|
logger_->warn("Triangles sub-statement malformed: {}", line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (currentStatement_ == DrawingStatement::Image)
|
||||||
|
{
|
||||||
|
// Image: image_file
|
||||||
|
// lat, lon, Tu [, Tv ]
|
||||||
|
// ...
|
||||||
|
// End:
|
||||||
|
std::vector<std::string> tokenList =
|
||||||
|
util::ParseTokens(line, {",", ",", ",", ","});
|
||||||
|
|
||||||
|
ImageDrawItem::Element element;
|
||||||
|
|
||||||
|
if (tokenList.size() >= 3)
|
||||||
|
{
|
||||||
|
ParseLocation(tokenList[0],
|
||||||
|
tokenList[1],
|
||||||
|
element.latitude_,
|
||||||
|
element.longitude_,
|
||||||
|
element.x_,
|
||||||
|
element.y_);
|
||||||
|
|
||||||
|
element.tu_ = std::stod(tokenList[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tokenList.size() >= 4)
|
||||||
|
{
|
||||||
|
element.tv_ = std::stod(tokenList[3]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
element.tv_ = element.tu_;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tokenList.size() >= 3)
|
||||||
|
{
|
||||||
|
std::static_pointer_cast<ImageDrawItem>(currentDrawItem_)
|
||||||
|
->elements_.emplace_back(std::move(element));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger_->warn("Image sub-statement malformed: {}", line);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (currentStatement_ == DrawingStatement::Polygon)
|
else if (currentStatement_ == DrawingStatement::Polygon)
|
||||||
{
|
{
|
||||||
// Polygon:
|
// Polygon:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue