Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
vadere
vadere
Commits
8962a443
Commit
8962a443
authored
Jul 12, 2018
by
Benedikt Kleinmeier
Browse files
Merge branch 'group_models' into develop
# Conflicts: # VadereSimulator/src/org/vadere/simulator/projects/ScenarioRun.java
parents
9cad2a18
b1c53536
Pipeline
#61709
passed with stage
in 51 seconds
Changes
77
Pipelines
1
Show whitespace changes
Inline
Side-by-side
.gitignore
View file @
8962a443
...
...
@@ -23,10 +23,12 @@ VadereSimulator/resources/current_commit_hash.txt
#model test output
VadereModelTests/TestOSM/output/*
VadereModelTests/TestOSM_Group/output/*
VadereModelTests/TestSFM/output/*
VadereModelTests/TestGNM/output/*
VadereModelTests/TestOVM/output/*
VadereModelTests/TestOSM/processed output/*
VadereModelTests/TestOSM_Group/processed output/*
VadereModelTests/TestSFM/processed output/*
VadereModelTests/TestGNM/processed output/*
VadereModelTests/TestOVM/processed output/*
...
...
VadereGui/resources/icons/camera.png
0 → 100644
View file @
8962a443
41.9 KB
VadereGui/resources/icons/group.png
0 → 100644
View file @
8962a443
8.72 KB
VadereGui/resources/messages.properties
View file @
8962a443
...
...
@@ -217,6 +217,7 @@ PostVis.chbShowObstacles.text=Show Obstacles
PostVis.chbShowTargets.text
=
Show Targets
PostVis.chbShowSources.text
=
Show Sources
PostVis.chbShowStairs.text
=
Show Stairs
PostVis.btnSnapshot.tooltip
=
Snapshot
PostVis.btnPNGSnapshot.tooltip
=
PNG Snapshot
PostVis.btnSVGSnapshot.tooltip
=
SVG Snapshot
PostVis.btnTikZSnapshot.tooltip
=
TikZ Snapshot
...
...
@@ -255,6 +256,7 @@ SettingsDialog.menuOpenFloorFieldFile.title=Add Floor Field File...
View.btnDrawVoronoiDiagram.tooltip
=
Draw and display a Voronoi Diagram
View.chbLogo.text
=
Show the Vadere logo
View.btnShowWalkingDirection.tooltip
=
Show the walking direction of all pedestrians
View.btnShowGroupInformation.tooltip
=
Draw pedestrians within one group with same shape and color
View.btnShowPedestrian.tooltip
=
Show Pedestrians
View.btnShowPotentialfield.tooltip
=
Show Potential Field (only possible after adding potential field file)
View.btnShowTrajectories.tooltip
=
Show Trajectories
...
...
VadereGui/resources/messages_de_DE.properties
View file @
8962a443
...
...
@@ -217,9 +217,10 @@ PostVis.chbShowObstacles.text=Hindernisse anzeigen
PostVis.chbShowTargets.text
=
Ziele anzeigen
PostVis.chbShowSources.text
=
Quellen anzeigen
PostVis.chbShowStairs.text
=
Treppen anzeigen
PostVis.btnSnapshot.tooltip
=
Snapshot
PostVis.btnPNGSnapshot.tooltip
=
PNG-Snapshot
PostVis.btnSVGSnapshot.tooltip
=
SVG-Snapshot
PostVis.btnTikZSnapshot.tooltip
=
TikZ
Snapshot
PostVis.btnTikZSnapshot.tooltip
=
TikZ
-
Snapshot
PostVis.menuFile.title
=
Datei
PostVis.menuSettings.title
=
Einstellungen
PostVis.menuRecentFiles.title
=
K
\u
00FCrzlich verwendete Dateien
...
...
@@ -255,6 +256,7 @@ SettingsDialog.menuOpenFloorFieldFile.title=Floor Field-Datei hinzuf\u00fcgen...
View.btnDrawVoronoiDiagram.tooltip
=
Voronoi-Diagramm zeichnen und anzeigen
View.chbLogo.text
=
VADERE-Logo anzeigen
View.btnShowWalkingDirection.tooltip
=
Gehrichtung aller Fu
\u
00dfg
\u
00e4nger anzeigen
View.btnShowGroupInformation.tooltip
=
Zeichne Fu
\u
00dfg
\u
00e4nger einer Gruppe mit denn selben Formen und Farben
View.btnShowPedestrian.tooltip
=
Fu
\u
00dfg
\u
00e4nger anzeigen
View.btnShowPotentialfield.tooltip
=
Potenzialfeld anzeigen (nur m
\u
00f6glich, nachdem eine Datei f
\u
00fcr das Potenzialfeld hinzugef
\u
00fcgt wurde)
View.btnShowTrajectories.tooltip
=
Trajektorien anzeigen
...
...
VadereGui/src/org/vadere/gui/components/model/DefaultSimulationConfig.java
View file @
8962a443
...
...
@@ -22,6 +22,7 @@ public class DefaultSimulationConfig extends DefaultConfig {
private
boolean
showTrajectories
=
false
;
private
boolean
showGrid
=
false
;
private
boolean
showDensity
=
false
;
private
boolean
showGroups
=
false
;
protected
final
Color
pedestrianDefaultColor
=
Color
.
BLUE
;
public
DefaultSimulationConfig
()
{
...
...
@@ -37,6 +38,15 @@ public class DefaultSimulationConfig extends DefaultConfig {
this
.
showPedestrians
=
config
.
showPedestrians
;
this
.
showLogo
=
config
.
showLogo
;
this
.
showStairs
=
config
.
showStairs
;
this
.
showGroups
=
config
.
showGroups
;
}
public
boolean
isShowGroups
()
{
return
showGroups
;
}
public
void
setShowGroups
(
boolean
showGroups
)
{
this
.
showGroups
=
showGroups
;
}
public
boolean
isShowLogo
()
{
...
...
VadereGui/src/org/vadere/gui/components/view/ScenarioElementView.java
View file @
8962a443
...
...
@@ -106,8 +106,7 @@ public class ScenarioElementView extends JPanel implements ISelectScenarioElemen
}
@Override
public
void
removeUpdate
(
DocumentEvent
e
)
{
public
void
removeUpdate
(
DocumentEvent
e
)
{
updateModel
();
}
...
...
VadereGui/src/org/vadere/gui/components/view/SimulationRenderer.java
View file @
8962a443
...
...
@@ -16,6 +16,7 @@ import org.vadere.gui.components.model.SimulationModel;
import
org.vadere.gui.components.utils.CLGaussianCalculator
;
import
org.vadere.gui.components.utils.ColorHelper
;
import
org.vadere.gui.components.utils.Resources
;
import
org.vadere.gui.renderer.agent.AgentRender
;
import
org.vadere.state.scenario.Agent
;
import
org.vadere.util.geometry.shapes.VPoint
;
import
org.vadere.util.geometry.shapes.VTriangle
;
...
...
@@ -35,12 +36,14 @@ public abstract class SimulationRenderer extends DefaultRenderer {
private
ColorHelper
colorHelper
;
private
Color
lastDensityColor
=
null
;
private
int
topographyId
;
private
AgentRender
agentRender
;
public
SimulationRenderer
(
final
SimulationModel
model
)
{
super
(
model
);
this
.
model
=
model
;
this
.
topographyId
=
-
1
;
this
.
colorHelper
=
new
ColorHelper
(
40
);
this
.
agentRender
=
new
AgentRender
(
model
);
}
@Override
...
...
@@ -205,4 +208,12 @@ public abstract class SimulationRenderer extends DefaultRenderer {
private
float
getGridLineWidth
()
{
return
(
float
)
(
0.5
/
model
.
getScaleFactor
());
}
public
AgentRender
getAgentRender
()
{
return
agentRender
;
}
public
void
setAgentRender
(
AgentRender
agentRender
)
{
this
.
agentRender
=
agentRender
;
}
}
\ No newline at end of file
VadereGui/src/org/vadere/gui/onlinevisualization/OnlineVisualization.java
View file @
8962a443
...
...
@@ -36,7 +36,8 @@ public class OnlineVisualization implements PassiveCallback {
private
OnlineVisualisationWindow
onlineVisualisationPanel
;
private
OnlineVisualizationModel
model
;
private
Topography
scenario
;
private
@Nullable
IPotentialFieldTarget
potentialFieldTarget
;
private
@Nullable
IPotentialFieldTarget
potentialFieldTarget
;
private
boolean
enableVisualization
;
public
OnlineVisualization
(
boolean
enableVisualization
)
{
...
...
VadereGui/src/org/vadere/gui/onlinevisualization/control/ActionGenerateTikz.java
View file @
8962a443
...
...
@@ -12,6 +12,7 @@ import org.vadere.gui.postvisualization.utils.SVGGenerator;
import
org.vadere.gui.postvisualization.utils.TikzGenerator
;
import
javax.swing.*
;
import
java.awt.event.ActionEvent
;
import
java.io.File
;
import
java.text.SimpleDateFormat
;
...
...
@@ -55,5 +56,6 @@ public class ActionGenerateTikz extends AbstractAction implements IRendererChang
}
@Override
public
void
update
(
SimulationRenderer
renderer
)
{}
public
void
update
(
SimulationRenderer
renderer
)
{
}
}
VadereGui/src/org/vadere/gui/onlinevisualization/control/ActionOnlineVisMenu.java
0 → 100644
View file @
8962a443
package
org.vadere.gui.onlinevisualization.control
;
import
org.vadere.gui.postvisualization.control.ActionVisualization
;
import
java.awt.*
;
import
java.awt.event.ActionEvent
;
import
java.util.List
;
import
javax.swing.*
;
public
class
ActionOnlineVisMenu
extends
AbstractAction
{
private
final
List
<
Action
>
actions
;
private
JPopupMenu
menu
;
private
Component
parent
;
public
ActionOnlineVisMenu
(
final
String
name
,
Icon
icon
,
final
List
<
Action
>
actions
)
{
super
(
name
,
icon
);
this
.
actions
=
actions
;
}
public
void
setParent
(
Component
parent
)
{
this
.
parent
=
parent
;
}
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
SwingUtilities
.
invokeLater
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
menu
==
null
)
{
menu
=
new
JPopupMenu
();
for
(
Action
action
:
actions
)
{
menu
.
add
(
action
);
}
}
menu
.
show
(
parent
,
0
,
parent
.
getHeight
());
}
});
}
}
VadereGui/src/org/vadere/gui/onlinevisualization/view/OnlineVisualisationWindow.java
View file @
8962a443
...
...
@@ -3,8 +3,6 @@ package org.vadere.gui.onlinevisualization.view;
import
com.jgoodies.forms.layout.CellConstraints
;
import
com.jgoodies.forms.layout.FormLayout
;
import
javax.swing.*
;
import
org.vadere.gui.components.control.IViewportChangeListener
;
import
org.vadere.gui.components.control.JViewportChangeListener
;
import
org.vadere.gui.components.control.PanelResizeListener
;
...
...
@@ -18,14 +16,18 @@ import org.vadere.gui.components.view.SimulationInfoPanel;
import
org.vadere.gui.onlinevisualization.control.ActionGeneratePNG
;
import
org.vadere.gui.onlinevisualization.control.ActionGenerateSVG
;
import
org.vadere.gui.onlinevisualization.control.ActionGenerateTikz
;
import
org.vadere.gui.onlinevisualization.control.ActionOnlineVisMenu
;
import
org.vadere.gui.onlinevisualization.control.ActionShowPotentialField
;
import
org.vadere.gui.onlinevisualization.model.OnlineVisualizationModel
;
import
java.awt.*
;
import
java.awt.event.ActionEvent
;
import
java.util.ArrayList
;
import
java.util.Observable
;
import
java.util.Observer
;
import
javax.swing.*
;
public
class
OnlineVisualisationWindow
extends
JPanel
implements
Observer
{
private
static
final
long
serialVersionUID
=
3522170593760789565L
;
...
...
@@ -102,6 +104,15 @@ public class OnlineVisualisationWindow extends JPanel implements Observer {
}
};
AbstractAction
showGroupInformationAction
=
new
AbstractAction
(
"showGroupInformationAction"
,
resources
.
getIcon
(
"group.png"
,
iconWidth
,
iconHeight
))
{
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
model
.
config
.
setShowGroups
(!
model
.
config
.
isShowGroups
());
model
.
notifyObservers
();
}
};
AbstractAction
paintGridAction
=
new
AbstractAction
(
"paintGridAction"
,
resources
.
getIcon
(
"grid.png"
,
iconWidth
,
iconHeight
))
{
...
...
@@ -139,20 +150,20 @@ public class OnlineVisualisationWindow extends JPanel implements Observer {
};
ActionGeneratePNG
generatePNG
=
new
ActionGeneratePNG
(
"generatePNG"
,
Messages
.
getString
(
"PostVis.btnPNGSnapshot.tooltip"
)
,
resources
.
getIcon
(
"camera_png.png"
,
iconWidth
,
iconHeight
),
new
OnlinevisualizationRenderer
(
model
),
model
);
ActionGenerateSVG
generateSVG
=
new
ActionGenerateSVG
(
"generateSVG"
,
Messages
.
getString
(
"PostVis.btnSVGSnapshot.tooltip"
)
,
resources
.
getIcon
(
"camera_svg.png"
,
iconWidth
,
iconHeight
),
new
OnlinevisualizationRenderer
(
model
),
model
);
ActionGenerateTikz
generateTikz
=
new
ActionGenerateTikz
(
"generateTikz"
,
Messages
.
getString
(
"PostVis.btnTikZSnapshot.tooltip"
)
,
resources
.
getIcon
(
"camera_tikz.png"
,
iconWidth
,
iconHeight
),
new
OnlinevisualizationRenderer
(
model
),
model
);
...
...
@@ -174,6 +185,8 @@ public class OnlineVisualisationWindow extends JPanel implements Observer {
Messages
.
getString
(
"View.btnShowTrajectories.tooltip"
));
SwingUtils
.
addActionToToolbar
(
toolbar
,
paintArrowAction
,
Messages
.
getString
(
"View.btnShowWalkingDirection.tooltip"
));
SwingUtils
.
addActionToToolbar
(
toolbar
,
showGroupInformationAction
,
Messages
.
getString
(
"View.btnShowGroupInformation.tooltip"
));
toolbar
.
addSeparator
();
...
...
@@ -182,9 +195,18 @@ public class OnlineVisualisationWindow extends JPanel implements Observer {
toolbar
.
addSeparator
();
SwingUtils
.
addActionToToolbar
(
toolbar
,
generatePNG
,
Messages
.
getString
(
"PostVis.btnPNGSnapshot.tooltip"
));
SwingUtils
.
addActionToToolbar
(
toolbar
,
generateSVG
,
Messages
.
getString
(
"PostVis.btnSVGSnapshot.tooltip"
));
SwingUtils
.
addActionToToolbar
(
toolbar
,
generateTikz
,
Messages
.
getString
(
"PostVis.btnTikzSnapshot.tooltip"
));
ArrayList
<
Action
>
imgOptions
=
new
ArrayList
<>();
imgOptions
.
add
(
generatePNG
);
imgOptions
.
add
(
generateSVG
);
imgOptions
.
add
(
generateTikz
);
ActionOnlineVisMenu
imgDialog
=
new
ActionOnlineVisMenu
(
"camera_menu"
,
resources
.
getIcon
(
"camera.png"
,
iconWidth
,
iconHeight
),
imgOptions
);
JButton
imgMenuBtn
=
SwingUtils
.
addActionToToolbar
(
toolbar
,
imgDialog
,
"PostVis.btnSnapshot.tooltip"
);
imgDialog
.
setParent
(
imgMenuBtn
);
SwingUtils
.
addActionToToolbar
(
toolbar
,
showPotentialField
,
Messages
.
getString
(
"OnlineVis.btnShowPotentialfield.tooltip"
));
add
(
toolbar
,
cc
.
xyw
(
2
,
2
,
3
));
...
...
@@ -192,6 +214,9 @@ public class OnlineVisualisationWindow extends JPanel implements Observer {
scrollPane
.
setPreferredSize
(
new
Dimension
(
1
,
windowHeight
));
add
(
jsonPanel
,
cc
.
xy
(
4
,
4
));
add
(
infoPanel
,
cc
.
xyw
(
2
,
6
,
3
));
repaint
();
revalidate
();
}
@Override
...
...
VadereGui/src/org/vadere/gui/onlinevisualization/view/OnlinevisualizationRenderer.java
View file @
8962a443
...
...
@@ -8,6 +8,7 @@ import java.util.Map;
import
org.vadere.gui.components.view.DefaultRenderer
;
import
org.vadere.gui.components.view.SimulationRenderer
;
import
org.vadere.gui.onlinevisualization.model.OnlineVisualizationModel
;
import
org.vadere.gui.renderer.agent.AgentRender
;
import
org.vadere.state.scenario.Agent
;
import
org.vadere.util.geometry.shapes.VPoint
;
...
...
@@ -55,10 +56,11 @@ public class OnlinevisualizationRenderer extends SimulationRenderer {
}
private
void
renderPedestrians
(
final
Graphics2D
g
)
{
AgentRender
agentRender
=
getAgentRender
();
g
.
setColor
(
model
.
config
.
getPedestrianDefaultColor
());
for
(
Agent
ped
:
model
.
getAgents
())
{
VPoint
position
=
ped
.
getPosition
();
g
.
fill
(
ped
.
getShape
()
);
agentRender
.
render
(
ped
,
g
);
if
(!
pedestrianPositions
.
containsKey
(
ped
.
getId
()))
{
pedestrianPositions
.
put
(
ped
.
getId
(),
new
LinkedList
());
...
...
VadereGui/src/org/vadere/gui/postvisualization/control/ActionGenerateTikz.java
View file @
8962a443
...
...
@@ -8,6 +8,7 @@ import org.vadere.gui.postvisualization.utils.TikzGenerator;
import
org.vadere.gui.postvisualization.view.PostvisualizationRenderer
;
import
javax.swing.*
;
import
java.awt.event.ActionEvent
;
import
java.io.File
;
import
java.text.SimpleDateFormat
;
...
...
VadereGui/src/org/vadere/gui/postvisualization/control/ActionVisualizationMenu.java
0 → 100644
View file @
8962a443
package
org.vadere.gui.postvisualization.control
;
import
org.vadere.gui.postvisualization.model.PostvisualizationModel
;
import
java.awt.*
;
import
java.awt.event.ActionEvent
;
import
java.util.List
;
import
javax.swing.*
;
public
class
ActionVisualizationMenu
extends
ActionVisualization
{
private
final
List
<
Action
>
actions
;
private
JPopupMenu
menu
;
private
Component
parent
;
private
final
ActionVisualization
action
;
public
ActionVisualizationMenu
(
String
name
,
Icon
icon
,
PostvisualizationModel
model
,
final
ActionVisualization
action
,
final
List
<
Action
>
actions
)
{
super
(
name
,
icon
,
model
);
this
.
action
=
action
;
this
.
actions
=
actions
;
}
public
ActionVisualizationMenu
(
String
name
,
PostvisualizationModel
model
,
final
ActionVisualization
action
,
final
List
<
Action
>
actions
)
{
super
(
name
,
model
);
this
.
action
=
action
;
this
.
actions
=
actions
;
}
public
void
setParent
(
Component
parent
)
{
this
.
parent
=
parent
;
}
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
SwingUtilities
.
invokeLater
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
menu
==
null
)
{
menu
=
new
JPopupMenu
();
for
(
Action
action
:
actions
)
{
menu
.
add
(
action
);
}
}
menu
.
show
(
parent
,
0
,
parent
.
getHeight
());
}
});
// action.actionPerformed(e);
}
}
VadereGui/src/org/vadere/gui/postvisualization/utils/TikzGenerator.java
View file @
8962a443
...
...
@@ -2,6 +2,7 @@ package org.vadere.gui.postvisualization.utils;
import
org.apache.log4j.LogManager
;
import
org.apache.log4j.Logger
;
import
org.jetbrains.annotations.NotNull
;
import
org.vadere.gui.components.model.DefaultSimulationConfig
;
import
org.vadere.gui.components.model.SimulationModel
;
import
org.vadere.gui.components.view.SimulationRenderer
;
...
...
@@ -22,12 +23,10 @@ import static java.awt.geom.PathIterator.*;
* @see PathIterator This PathSeparator must be converted into its TikZ
* representation.
*
* For example, traversing a Java path with PathIterator returns two
* segments:
* For example, traversing a Java path with PathIterator returns two segments:
*
*
* segment type= 0 (SEG_MOVETO) with coords: [1.0, 1.0, 0.0, 0.0, 0.0, 0.0]
* segment type= 3 (SEG_LINETO) with coords: [2.0, 2.0, 0.0, 0.0, 0.0, 0.0]
* segment type = 0 (SEG_MOVETO) with coords: [1.0, 1.0, 0.0, 0.0, 0.0, 0.0]
* segment type = 3 (SEG_LINETO) with coords: [2.0, 2.0, 0.0, 0.0, 0.0, 0.0]
*
* This must be transformed to TikZ:
*
...
...
@@ -75,7 +74,7 @@ public class TikzGenerator {
tikzCode
+=
generateTikzColorDefinitions
(
model
);
tikzCode
+=
convertScenarioElementsToTikz
();
String
output
=
(
generateCompleteDocument
)
?
String
.
format
(
texTemplate
,
tikzCode
)
:
tikzCode
;
String
output
=
(
generateCompleteDocument
)
?
String
.
format
(
texTemplate
,
tikzCode
)
:
tikzCode
;
// TODO: maybe uses Java's resources notation (in general, writing the file should be done by the caller not here).
try
{
...
...
@@ -167,15 +166,44 @@ public class TikzGenerator {
// TODO: maybe, draw also trajectories.
if
(
config
.
isShowPedestrians
())
{
generatedCode
+=
"% Agents\n"
;
generatedCode
+=
drawAgents
(
config
);
}
else
{
generatedCode
=
"% Agents (not enabled in config)\n"
;
}
return
generatedCode
;
}
@NotNull
private
String
drawAgents
(
DefaultSimulationConfig
config
)
{
String
generatedCode
=
""
;
for
(
Agent
agent
:
model
.
getAgents
())
{
if
(
model
.
getConfig
().
isShowGroups
())
{
try
{
Pedestrian
pedestrian
=
(
Pedestrian
)
agent
;
Color
pedestrianColor
=
renderer
.
getAgentRender
().
getColor
(
pedestrian
);
Shape
pedestrianShape
=
renderer
.
getAgentRender
().
getShape
(
pedestrian
);
String
colorString
=
String
.
format
(
"{rgb,255:red,%d; green,%d; blue,%d}"
,
pedestrianColor
.
getRed
(),
pedestrianColor
.
getGreen
(),
pedestrianColor
.
getBlue
());
generatedCode
+=
String
.
format
(
"\\fill[fill=%s] %s\n"
,
colorString
,
generatePathForShape
(
pedestrianShape
));
}
catch
(
ClassCastException
cce
)
{
logger
.
error
(
"Error casting to Pedestrian"
);
cce
.
printStackTrace
();
// TODO: render agent as circle!
}
}
else
{
String
agentTextPattern
=
"\\fill[AgentColor] (%f,%f) circle [radius=%fcm];\n"
;
generatedCode
+=
String
.
format
(
agentTextPattern
,
agent
.
getPosition
().
x
,
agent
.
getPosition
().
y
,
agent
.
getRadius
());
}
if
(
model
.
isElementSelected
()
&&
model
.
getSelectedElement
().
equals
(
agent
))
{
String
agentTextPattern
=
"\\draw[magenta] (%f,%f) circle [radius=%fcm];\n"
;
generatedCode
+=
String
.
format
(
agentTextPattern
,
agent
.
getPosition
().
x
,
agent
.
getPosition
().
y
,
agent
.
getRadius
());
}
// Do not draw agents as path for performance reasons. Usually, agents have a circular shape.
// generatedCode += String.format("\\fill[AgentColor] %s\n", generatePathForScenarioElement(agent));
}
}
else
{
generatedCode
+=
"% Agents (not enabled in config)\n"
;
}
return
generatedCode
;
}
...
...
@@ -197,6 +225,23 @@ public class TikzGenerator {
return
generatedPath
;
}
private
String
generatePathForShape
(
Shape
shape
)
{
String
generatedPath
=
""
;
AffineTransform
noTransformation
=
new
AffineTransform
();
PathIterator
pathIterator
=
shape
.
getPathIterator
(
noTransformation
);
while
(!
pathIterator
.
isDone
())
{
float
[]
coords
=
new
float
[
6
];
int
type
=
pathIterator
.
currentSegment
(
coords
);
generatedPath
+=
convertJavaToTikzPath
(
type
,
coords
);
pathIterator
.
next
();
}
return
generatedPath
;
}
private
String
convertJavaToTikzPath
(
int
type
,
float
[]
coords
)
{
if
(
type
<
SEG_MOVETO
||
type
>
SEG_CLOSE
)
{
throw
new
IllegalStateException
(
String
.
format
(
"Cannot process path segment type: %d (coordinates: %s)"
,
type
,
Arrays
.
toString
(
coords
)));
...
...
VadereGui/src/org/vadere/gui/postvisualization/view/PostvisualizationRenderer.java
View file @
8962a443
...
...
@@ -13,6 +13,7 @@ import org.vadere.gui.components.utils.ColorHelper;
import
org.vadere.gui.components.view.DefaultRenderer
;
import
org.vadere.gui.components.view.SimulationRenderer
;
import
org.vadere.gui.postvisualization.model.PostvisualizationModel
;
import
org.vadere.gui.renderer.agent.AgentRender
;
import
org.vadere.state.scenario.Agent
;
import
org.vadere.state.simulation.Step
;
import
org.vadere.state.simulation.Trajectory
;
...
...
@@ -70,6 +71,7 @@ public class PostvisualizationRenderer extends SimulationRenderer {
private
void
renderTrajectory
(
final
Graphics2D
g
,
final
Color
color
,
final
Trajectory
trajectory
,
final
Step
step
)
{
Optional
<
Agent
>
optionalPedestrian
=
trajectory
.
getAgent
(
step
);
AgentRender
agentRender
=
getAgentRender
();
if
(
optionalPedestrian
.
isPresent
())
{
Agent
pedestrian
=
optionalPedestrian
.
get
();
...
...
@@ -88,7 +90,7 @@ public class PostvisualizationRenderer extends SimulationRenderer {
// renderImage the pedestrian
if
(
model
.
config
.
isShowPedestrians
())
{
if
(
model
.
config
.
isShowFaydedPedestrians
()
||
!
trajectory
.
isPedestrianDisappeared
(
step
))
{
g
.
fill
(
pedestrian
.
getShape
()
);
agentRender
.
render
(
pedestrian
,
g
);
if
(
model
.
config
.
isShowPedestrianIds
())
{
DefaultRenderer
.
paintAgentId
(
g
,
pedestrian
);
}
...
...
VadereGui/src/org/vadere/gui/postvisualization/view/PostvisualizationWindow.java
View file @
8962a443
...
...
@@ -26,6 +26,7 @@ import java.awt.event.ActionEvent;
import
java.io.File
;
import
java.io.IOException
;
import
java.text.MessageFormat
;
import
java.util.ArrayList
;
import
java.util.Observer
;
import
java.util.prefs.Preferences
;
...
...
@@ -190,6 +191,17 @@ public class PostvisualizationWindow extends JPanel implements Observer {
},
"View.btnShowWalkingDirection.tooltip"
);
addActionToToolbar
(
toolbar
,
new
ActionVisualization
(
"show_groups"
,
resources
.
getIcon
(
"group.png"
,
iconWidth
,
iconHeight
),
model
)
{
@Override
public
void
actionPerformed
(
ActionEvent
e
)
{
model
.
config
.
setShowGroups
(!
model
.
config
.
isShowGroups
());
model
.
notifyObservers
();
}
},
"View.btnShowGroupInformation.tooltip"
);
addActionToToolbar
(
toolbar
,
new
ActionSwapSelectionMode
(
"draw_voronoi_diagram"
,
resources
.
getIcon
(
"voronoi.png"
,
iconWidth
,
iconHeight
),
model
),
...
...
@@ -236,21 +248,25 @@ public class PostvisualizationWindow extends JPanel implements Observer {
recordAction
.
setButton
(
recordButton
);
toolbar
.
addSeparator
(
new
Dimension
(
5
,
50
));
addActionToToolbar
(
toolbar
,
new
ActionGeneratePNG
(
"png_snapshot"
,
resources
.
getIcon
(
"camera_png.png"
,
iconWidth
,
iconHeight
),
renderer
),
"PostVis.btnPNGSnapshot.tooltip"
);
addActionToToolbar
(
toolbar
,
new
ActionGenerateSVG
(
"svg_snapshot"
,
resources
.
getIcon
(
"camera_svg.png"
,
iconWidth
,
iconHeight
),
renderer
),
"PostVis.btnSVGSnapshot.tooltip"
);
addActionToToolbar
(
toolbar
,
new
ActionGenerateTikz
(
"tikz_snapshot"
,
resources
.
getIcon
(
"camera_tikz.png"
,
iconWidth
,
iconHeight
),
renderer
),
"PostVis.btnTikZSnapshot.tooltip"
);
ArrayList
<
Action
>
imgOptions
=
new
ArrayList
<>();
ActionVisualization
pngImg
=
new
ActionGeneratePNG
(
Messages
.
getString
(
"PostVis.btnPNGSnapshot.tooltip"
),
resources
.
getIcon
(
"camera_png.png"
,
iconWidth
,
iconHeight
),
renderer
);
ActionVisualization
svgImg
=
new
ActionGenerateSVG
(
Messages
.
getString
(
"PostVis.btnSVGSnapshot.tooltip"
),
resources
.
getIcon
(
"camera_svg.png"
,
iconWidth
,
iconHeight
),
renderer
);
ActionVisualization
tikzImg
=
new
ActionGenerateTikz
(
Messages
.
getString
(
"PostVis.btnTikZSnapshot.tooltip"
),
resources
.
getIcon
(
"camera_tikz.png"
,
iconWidth
,
iconHeight
),
renderer
);
// add new ImageGenerator Action ...
imgOptions
.
add
(
pngImg
);
imgOptions
.
add
(
svgImg
);
imgOptions
.
add
(
tikzImg
);
// add Action to List ....