Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
c0b61e70
Commit
c0b61e70
authored
Oct 21, 2024
by
Riegel
Browse files
Add rendering of Tunnel
parent
81c9bcbd
Pipeline
#10272
passed with stage
in 1 minute and 25 seconds
Changes
5
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/Renderer.java
View file @
c0b61e70
...
...
@@ -251,7 +251,7 @@ public class Renderer {
refresher
.
run
();
}
p
ublic
Set
<
ConcretePolygon
>
setupRoomPolygons
(
AbstractRoom
room
)
{
p
rivate
Set
<
ConcretePolygon
>
setupRoomPolygons
(
AbstractRoom
room
)
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
addPolygons
(
room
,
polygons
);
for
(
BoundarySurface
bs
:
room
.
getBoundarySurfaceList
())
{
...
...
@@ -276,7 +276,7 @@ public class Renderer {
refresher
.
run
();
}
p
ublic
Set
<
ConcretePolygon
>
setupFurniturePolygons
(
AbstractFurniture
furniture
)
{
p
rivate
Set
<
ConcretePolygon
>
setupFurniturePolygons
(
AbstractFurniture
furniture
)
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
addPolygons
(
furniture
,
polygons
);
for
(
BoundarySurface
bs
:
furniture
.
getBoundarySurfaceList
())
{
...
...
@@ -301,7 +301,7 @@ public class Renderer {
refresher
.
run
();
}
p
ublic
Set
<
ConcretePolygon
>
setupStoreyPolygons
(
Storey
storey
)
{
p
rivate
Set
<
ConcretePolygon
>
setupStoreyPolygons
(
Storey
storey
)
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
addPolygons
(
storey
,
polygons
);
for
(
BoundarySurface
bs
:
storey
.
getBoundarySurfaces
())
{
...
...
@@ -326,7 +326,7 @@ public class Renderer {
refresher
.
run
();
}
p
ublic
Set
<
ConcretePolygon
>
setupBuildingUnitPolygons
(
BuildingUnit
buildingUnit
)
{
p
rivate
Set
<
ConcretePolygon
>
setupBuildingUnitPolygons
(
BuildingUnit
buildingUnit
)
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
addPolygons
(
buildingUnit
,
polygons
);
for
(
BoundarySurface
bs
:
buildingUnit
.
getBoundarySurfaces
())
{
...
...
@@ -338,6 +338,73 @@ public class Renderer {
return
polygons
;
}
public
void
render
(
Tunnel
tunnel
){
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupTunnelPolygons
=
setupTunnelPolygons
(
tunnel
);
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
setupTunnelPolygons
));
render
(
setupTunnelPolygons
);
Platform
.
runLater
(()
->
{
errorUpdater
=
()
->
displayErrors
(
tunnel
);
errorUpdater
.
run
();
});
};
refresher
.
run
();
}
private
Set
<
ConcretePolygon
>
setupTunnelPolygons
(
Tunnel
tunnel
)
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
addPolygons
(
tunnel
,
polygons
);
for
(
BoundarySurface
bs
:
tunnel
.
getBoundarySurfaces
())
{
addPolygons
(
bs
,
polygons
);
}
for
(
Installation
ti
:
tunnel
.
getTunnelInstallations
())
{
addPolygons
(
ti
,
polygons
);
for
(
BoundarySurface
bs
:
ti
.
getBoundarySurfaces
())
{
addPolygons
(
bs
,
polygons
);
for
(
Opening
op
:
bs
.
getOpenings
())
{
addPolygons
(
op
,
polygons
);
}
}
}
for
(
TunnelHollow
th
:
tunnel
.
getTunnelHollows
())
{
addPolygons
(
th
,
polygons
);
for
(
BoundarySurface
bs
:
th
.
getBoundarySurfaceList
()){
addPolygons
(
bs
,
polygons
);
}
}
for
(
TunnelFurniture
tf
:
tunnel
.
getTunnelFurnitureList
()){
addPolygons
(
tf
,
polygons
);
for
(
BoundarySurface
bs
:
tf
.
getBoundarySurfaceList
()){
addPolygons
(
bs
,
polygons
);
}
}
for
(
TunnelPart
tp
:
tunnel
.
getTunnelParts
())
{
polygons
.
addAll
(
setupTunnelPartPolygons
(
tp
));
}
return
polygons
;
}
private
Set
<
ConcretePolygon
>
setupTunnelPartPolygons
(
TunnelPart
tp
)
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
addPolygons
(
tp
,
polygons
);
for
(
BoundarySurface
bs
:
tp
.
getBoundarySurfaces
())
{
addPolygons
(
bs
,
polygons
);
for
(
Opening
op
:
bs
.
getOpenings
())
{
addPolygons
(
op
,
polygons
);
}
}
for
(
Installation
bi
:
tp
.
getTunnelInstallations
())
{
addPolygons
(
bi
,
polygons
);
for
(
BoundarySurface
bs
:
bi
.
getBoundarySurfaces
())
{
addPolygons
(
bs
,
polygons
);
for
(
Opening
op
:
bs
.
getOpenings
())
{
addPolygons
(
op
,
polygons
);
}
}
}
return
polygons
;
}
public
void
render
(
BridgeObject
bridge
)
{
refresher
=
()
->
{
Set
<
ConcretePolygon
>
setupBridgePolygons
=
setupBridgePolygons
(
bridge
);
...
...
@@ -655,9 +722,9 @@ public class Renderer {
Thread
t
=
new
Thread
(()
->
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
for
(
Building
b
:
objects
)
{
collectPolygons
(
polygons
,
b
);
collect
Building
Polygons
(
polygons
,
b
);
for
(
BuildingPart
bp
:
b
.
getBuildingParts
())
{
collectPolygons
(
polygons
,
bp
);
collect
Building
Polygons
(
polygons
,
bp
);
}
}
currentTriGeom
=
TriangulatedGeometry
.
of
(
polygons
);
...
...
@@ -810,7 +877,39 @@ public class Renderer {
refresher
.
run
();
}
private
void
collectPolygons
(
Set
<
ConcretePolygon
>
polygons
,
AbstractBuilding
ab
)
{
public
void
renderTunnels
(
List
<
Tunnel
>
objects
){
errorUpdater
=
null
;
refresher
=
()
->
{
Platform
.
runLater
(()
->
{
loadingDialog
.
show
();
clearGeometryTrees
();
});
Thread
t
=
new
Thread
(()
->
{
Set
<
ConcretePolygon
>
polygons
=
new
HashSet
<>();
for
(
Tunnel
tunnel
:
objects
)
{
collectTunnelPolygons
(
polygons
,
tunnel
);
for
(
TunnelPart
tp
:
tunnel
.
getTunnelParts
())
{
collectTunnelPolygons
(
polygons
,
tp
);
}
}
currentTriGeom
=
TriangulatedGeometry
.
of
(
polygons
);
errVisitor
.
setGeometry
(
currentTriGeom
);
Platform
.
runLater
(()
->
{
setupRenderState
();
mainWindow
.
zoomOutForBoundingBox
(
BoundingBox
.
of
(
polygons
));
loadingDialog
.
hide
();
});
});
t
.
setUncaughtExceptionHandler
((
thread
,
e
)
->
{
Platform
.
runLater
(()
->
loadingDialog
.
hide
());
logger
.
catching
(
e
);
});
t
.
start
();
};
refresher
.
run
();
}
private
void
collectBuildingPolygons
(
Set
<
ConcretePolygon
>
polygons
,
AbstractBuilding
ab
)
{
addPolygons
(
ab
,
polygons
);
for
(
Installation
bi
:
ab
.
getBuildingInstallations
())
{
addPolygons
(
bi
,
polygons
);
...
...
@@ -835,6 +934,8 @@ public class Renderer {
}
}
public
void
collectTunnelPolygons
(
Set
<
ConcretePolygon
>
polygons
,
AbstractTunnel
at
)
{}
private
void
collectCityFurniture
(
Set
<
ConcretePolygon
>
polygons
,
CityFurniture
cf
)
{
addPolygons
(
cf
,
polygons
);
}
...
...
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllTunnelPartsNode.java
0 → 100644
View file @
c0b61e70
package
de.hft.stuttgart.citydoctor2.gui.tree
;
import
de.hft.stuttgart.citydoctor2.datastructure.TunnelPart
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
java.util.List
;
public
class
AllTunnelPartsNode
extends
Renderable
{
private
final
List
<
TunnelPart
>
tunnelParts
;
public
AllTunnelPartsNode
(
List
<
TunnelPart
>
tunnelParts
)
{
this
.
tunnelParts
=
tunnelParts
;
}
@Override
public
String
getText
()
{
return
"Tunnel Parts"
;
}
@Override
public
void
visit
(
Renderer
renderer
)
{
renderer
.
clearCurrentRender
();
}
@Override
public
void
refreshTextColor
()
{
boolean
wasChecked
=
false
;
for
(
TunnelPart
tp
:
tunnelParts
)
{
if
(
tp
.
isValidated
())
{
wasChecked
=
true
;
if
(
tp
.
containsAnyError
())
{
setStatus
(
CheckStatus
.
ERROR
);
return
;
}
}
}
if
(
wasChecked
)
{
setStatus
(
CheckStatus
.
OK
);
}
else
{
setStatus
(
CheckStatus
.
NOT_CHECKED
);
}
}
}
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/AllTunnelsNode.java
0 → 100644
View file @
c0b61e70
package
de.hft.stuttgart.citydoctor2.gui.tree
;
import
de.hft.stuttgart.citydoctor2.datastructure.Tunnel
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
import
java.util.List
;
public
class
AllTunnelsNode
extends
Renderable
{
private
final
List
<
Tunnel
>
tunnels
;
public
AllTunnelsNode
(
List
<
Tunnel
>
tunnels
)
{
this
.
tunnels
=
tunnels
;
}
@Override
public
void
refreshTextColor
()
{
// no color changes
}
@Override
public
String
getText
()
{
return
"Tunnels"
;
}
@Override
public
void
visit
(
Renderer
renderer
)
{
renderer
.
renderTunnels
(
tunnels
);
}
}
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/TunnelNode.java
0 → 100644
View file @
c0b61e70
package
de.hft.stuttgart.citydoctor2.gui.tree
;
import
de.hft.stuttgart.citydoctor2.datastructure.Tunnel
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
public
class
TunnelNode
extends
Renderable
{
private
final
Tunnel
tunnel
;
public
TunnelNode
(
Tunnel
tunnel
)
{
this
.
tunnel
=
tunnel
;
}
@Override
public
String
getText
()
{
return
tunnel
.
getGmlId
().
getGmlString
();
}
public
Tunnel
getTunnel
()
{
return
tunnel
;
}
@Override
public
void
visit
(
Renderer
renderer
)
{
renderer
.
render
(
tunnel
);
}
@Override
public
void
refreshTextColor
()
{
if
(!
tunnel
.
isValidated
())
{
setStatus
(
CheckStatus
.
NOT_CHECKED
);
}
else
if
(
tunnel
.
containsAnyError
())
{
setStatus
(
CheckStatus
.
ERROR
);
}
else
{
setStatus
(
CheckStatus
.
OK
);
}
}
}
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/tree/TunnelPartNode.java
0 → 100644
View file @
c0b61e70
package
de.hft.stuttgart.citydoctor2.gui.tree
;
import
de.hft.stuttgart.citydoctor2.datastructure.TunnelPart
;
import
de.hft.stuttgart.citydoctor2.gui.CheckStatus
;
import
de.hft.stuttgart.citydoctor2.gui.Renderer
;
public
class
TunnelPartNode
extends
Renderable
{
private
final
TunnelPart
tp
;
public
TunnelPartNode
(
TunnelPart
tp
)
{
this
.
tp
=
tp
;
}
@Override
public
String
getText
()
{
return
tp
.
getGmlId
().
getGmlString
();
}
@Override
public
void
visit
(
Renderer
renderer
)
{
renderer
.
render
(
tp
);
}
@Override
public
void
refreshTextColor
()
{
if
(!
tp
.
isValidated
())
{
setStatus
(
CheckStatus
.
NOT_CHECKED
);
}
else
if
(
tp
.
containsAnyError
())
{
setStatus
(
CheckStatus
.
ERROR
);
}
else
{
setStatus
(
CheckStatus
.
OK
);
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment