ReUseX
0.0.5
3D Point Cloud Processing for Building Reuse
Toggle main menu visibility
Loading...
Searching...
No Matches
BuildingComponent.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2025 Povl Filip Sonne-Frederiksen
2
//
3
// SPDX-License-Identifier: GPL-3.0-or-later
4
5
#pragma once
6
7
#include "reusex/geometry/CoplanarPolygon.hpp"
8
9
#include <fmt/format.h>
10
#include <string>
11
#include <string_view>
12
#include <variant>
13
14
namespace
reusex::geometry
{
15
17
enum class
ComponentType
{
window
,
door
,
wall
};
18
19
std::string_view
to_string
(
ComponentType
type);
20
ComponentType
component_type_from_string
(std::string_view str);
21
22
struct
WindowData
{
23
std::string
style
;
// "casement", "sliding", "fixed", etc.
24
int
pane_count
= 0;
25
bool
operable
=
true
;
26
};
27
28
struct
DoorData
{
29
std::string
style
;
// "single", "double", "sliding"
30
std::string
swing
;
// "left", "right", "none"
31
};
32
33
struct
WallData
{};
// stub for future use
34
36
struct
BuildingComponent
{
37
std::string
name
;
38
ComponentType
type
=
ComponentType::window
;
39
CoplanarPolygon
boundary
;
40
int
parent_id
= -1;
// optional link to parent component
41
double
confidence
= -1.0;
// detection confidence, -1 if manual
42
std::string
notes
;
43
std::variant<WindowData, DoorData, WallData>
data
=
WindowData
{};
44
};
45
47
std::string
component_data_to_json
(
const
BuildingComponent
&c);
48
50
void
component_data_from_json
(
BuildingComponent
&c,
const
std::string &json);
51
52
}
// namespace reusex::geometry
53
54
template
<>
55
struct
fmt::formatter<
reusex
::geometry::BuildingComponent>
56
: fmt::formatter<std::string_view> {
57
auto
format
(
reusex::geometry::BuildingComponent
value,
58
format_context &ctx)
const
-> format_context::iterator {
59
return
fmt::format_to(ctx.out(),
"{} ({} vertices)"
, value.name,
60
value.boundary.vertices.size());
61
}
62
};
reusex::geometry
Definition
processing_observer.hpp:19
reusex::geometry::to_string
std::string_view to_string(ComponentType type)
reusex::geometry::ComponentType
ComponentType
Discriminator for building component types.
Definition
BuildingComponent.hpp:17
reusex::geometry::ComponentType::window
@ window
Definition
BuildingComponent.hpp:17
reusex::geometry::ComponentType::wall
@ wall
Definition
BuildingComponent.hpp:17
reusex::geometry::ComponentType::door
@ door
Definition
BuildingComponent.hpp:17
reusex::geometry::component_type_from_string
ComponentType component_type_from_string(std::string_view str)
reusex::geometry::component_data_from_json
void component_data_from_json(BuildingComponent &c, const std::string &json)
Deserialize JSON TEXT into the variant data on a BuildingComponent.
reusex::geometry::component_data_to_json
std::string component_data_to_json(const BuildingComponent &c)
Serialize the type-specific variant data to JSON TEXT.
reusex
Definition
filter_expression.hpp:12
fmt::formatter< reusex::geometry::BuildingComponent >::format
auto format(reusex::geometry::BuildingComponent value, format_context &ctx) const -> format_context::iterator
Definition
BuildingComponent.hpp:57
reusex::geometry::BuildingComponent
A detected or manual building component (window, door, wall, ...).
Definition
BuildingComponent.hpp:36
reusex::geometry::BuildingComponent::boundary
CoplanarPolygon boundary
Definition
BuildingComponent.hpp:39
reusex::geometry::BuildingComponent::confidence
double confidence
Definition
BuildingComponent.hpp:41
reusex::geometry::BuildingComponent::parent_id
int parent_id
Definition
BuildingComponent.hpp:40
reusex::geometry::BuildingComponent::notes
std::string notes
Definition
BuildingComponent.hpp:42
reusex::geometry::BuildingComponent::name
std::string name
Definition
BuildingComponent.hpp:37
reusex::geometry::BuildingComponent::type
ComponentType type
Definition
BuildingComponent.hpp:38
reusex::geometry::BuildingComponent::data
std::variant< WindowData, DoorData, WallData > data
Definition
BuildingComponent.hpp:43
reusex::geometry::CoplanarPolygon
A closed 3D polygon whose vertices are coplanar.
Definition
CoplanarPolygon.hpp:20
reusex::geometry::DoorData
Definition
BuildingComponent.hpp:28
reusex::geometry::DoorData::style
std::string style
Definition
BuildingComponent.hpp:29
reusex::geometry::DoorData::swing
std::string swing
Definition
BuildingComponent.hpp:30
reusex::geometry::WallData
Definition
BuildingComponent.hpp:33
reusex::geometry::WindowData
Definition
BuildingComponent.hpp:22
reusex::geometry::WindowData::pane_count
int pane_count
Definition
BuildingComponent.hpp:24
reusex::geometry::WindowData::style
std::string style
Definition
BuildingComponent.hpp:23
reusex::geometry::WindowData::operable
bool operable
Definition
BuildingComponent.hpp:25
libs
reusex
include
geometry
BuildingComponent.hpp
Generated by
1.17.0