Package org.jzy3d.plot3d.rendering.view
Class View
- java.lang.Object
-
- org.jzy3d.plot3d.rendering.view.View
-
- Direct Known Subclasses:
ChartView
,SelectableView
public class View extends Object
AView
holds aScene
, aLightSet
, anICanvas
to render into. It is the responsability to layout a set of concreteAbstractViewportManager
s such as the rendering the scene or anAWTImageViewport
for displaying an image in the same window. On can control theCamera
with a and get notifyed by aIViewPointChangedListener
that the view point has changed. The control is relative to the center of theScene
and is defined using polar coordinates. TheView
supports post rendering through the addition ofRenderer2d
s whose implementation can define Java2d calls to render on top on OpenGL2. Last, theView
offers the ability to get anAxisBox
for embedding theScene
and getting values along axes.- Author:
- Martin Pernollet
-
-
Field Summary
Fields Modifier and Type Field Description protected Scene
annotations
protected IAxis
axis
protected boolean
axisDisplayed
protected Color
backgroundColor
protected ViewBoundMode
boundsMode
protected Camera
cam
protected CameraMode
cameraMode
protected float
cameraRenderingSphereRadiusFactor
protected ICanvas
canvas
protected Coord3d
center
protected Chart
chart
protected boolean
dimensionDirty
protected boolean
displayAxisWholeBounds
display a magenta parallelepiped around the "whole bounds" of the axis (box + labels) for debugging purpose.static float
DISTANCE_DEFAULT
protected float
factorViewPointDistance
Applies a factor to the default camera distance which is set to the radius of the scene bounds.protected boolean
first
protected HiDPI
hidpi
protected boolean
initialized
protected static org.apache.logging.log4j.Logger
LOGGER
protected boolean
maintainAllObjectsInView
force to have all object maintained in screen, meaning axebox won't always keep the same size.protected IPainter
painter
static float
PI_div2
protected Coord2d
pixelScale
protected Quality
quality
protected Coord3d
scaling
protected Scene
scene
protected boolean
slave
A slave view won't clear its color and depth buffer before renderingprotected SpaceTransformer
spaceTransformer
protected boolean
squared
protected View2DLayout
view2DLayout
Settings for the layout of a 2D chartprotected View2DProcessing
view2DProcessing
protected BoundingBox3d
viewBounds
protected boolean
viewDirty
can be set to true by the Renderer3d so that the View knows it is rendering due to a canvas size changeprotected List<IViewEventListener>
viewEventListeners
protected List<IViewLifecycleEventListener>
viewLifecycleListeners
protected ViewPositionMode
viewMode
protected IViewOverlay
viewOverlay
protected Coord3d
viewpoint
static Coord3d
VIEWPOINT_AXIS_CORNER_TOUCH_BORDER
A viewpoint where two corners of the axis box touch top and bottom lines of the canvas.static Coord3d
VIEWPOINT_DEFAULT
A nice viewpoint to start the chartstatic Coord3d
VIEWPOINT_DEFAULT_OLD
A nice viewpoint to start the chartstatic Coord3d
VIEWPOINT_X_Y_MIN_NEAR_VIEWER
A viewpoint allowing to have min X and Y values near viewer, growing toward horizon.protected List<IViewPointChangedListener>
viewPointChangedListeners
protected boolean
wasOnTopAtLastRendering
-
Constructor Summary
Constructors Constructor Description View(IChartFactory factory, Scene scene, ICanvas canvas, Quality quality)
Create a view attached to a Scene, with its own Camera and Axe.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
addViewEventListener(IViewEventListener listener)
boolean
addViewLifecycleChangedListener(IViewLifecycleEventListener listener)
boolean
addViewPointChangedListener(IViewPointChangedListener listener)
void
clear()
Clear the color and depth buffer.protected void
computeCamera2D_RenderingSquare(Camera cam, ViewportConfiguration viewport, BoundingBox3d bounds)
Camera clipping planes configuration for a rendering plane (2D)protected void
computeCamera3D_RenderingSphere(Camera cam, ViewportConfiguration viewport, BoundingBox3d bounds)
Camera clipping planes configuration for a rendering sphere (3D) Assume that axis labels are positioned accordingly (AxisLabelProcessor#axisLabelPosition_3D()
protected Coord3d
computeCameraEye(Coord3d target)
protected Coord3d
computeCameraEye(Coord3d target, ViewPositionMode viewmode, Coord3d viewpoint)
protected Coord3d
computeCameraEyeFree(Coord3d viewpoint, Coord3d target)
protected Coord3d
computeCameraEyeProfile(Coord3d viewpoint, Coord3d target)
protected Coord3d
computeCameraEyeTop(Coord3d viewpoint, Coord3d target)
protected void
computeCameraRenderingVolume(Camera cam, ViewportConfiguration viewport, BoundingBox3d bounds)
Configure the camera so that it will capture a given volume in the scene.protected Coord3d
computeCameraTarget()
protected Coord3d
computeCameraTarget(Coord3d center, Coord3d scaling)
protected Coord3d
computeCameraUp(Coord3d viewpoint)
BoundingBox3d
computeScaledViewBounds()
Coord3d
computeSceneScaling()
Coord3d
computeSceneScaling(Scene scene, boolean squared, ViewBoundMode boundmode, BoundingBox3d manualViewBounds, SpaceTransformer spaceTransformer)
float
computeViewpointDistance(BoundingBox3d bounds, float sceneRadiusScaled, float factorViewPointDistance)
protected void
configureHiDPIListener(ICanvas canvas)
Upon pixel scale change, either at startup or during execution of the program, the listener will reconfigure the default font according to current HiDPI settings.protected void
correctCameraPositionForIncludingTextLabels(IPainter painter, ViewportConfiguration viewport)
Deprecated.void
dispose()
protected void
fireViewFirstRenderStarts()
protected void
fireViewLifecycleHasInit(ViewLifecycleEvent e)
protected void
fireViewLifecycleWillRender(ViewLifecycleEvent e)
protected void
fireViewOnTopEvent(boolean isOnTop)
protected void
fireViewPointChangedEvent(ViewPointChangedEvent e)
View2DLayout
get2DLayout()
Return the configuration of a 2D layoutView2DProcessing
get2DProcessing()
Return the result of processing a 2D layout using the layout configured with the instance returned byget2DLayout()
Graph
getAnnotations()
IAxis
getAxis()
AxisLayout
getAxisLayout()
Color
getBackgroundColor()
BoundingBox3d
getBounds()
Get theAxisBox
'sBoundingBox3d
ViewBoundMode
getBoundsMode()
Camera
getCamera()
CameraMode
getCameraMode()
Get the projection of this view, either CameraMode.ORTHOGONAL or CameraMode.PERSPECTIVE.float
getCameraRenderingSphereRadiusFactor()
ICanvas
getCanvas()
Coord3d
getCenter()
Return the central point of the view scene, that is the last bounding box center set bylookToBox(org.jzy3d.maths.BoundingBox3d)
Chart
getChart()
HiDPI
getHiDPI()
Return HiDPI status as ACTUALLY possible by the ICanvas on the current screen and computer, regardless of the {@link Quality#setHiDPIEnabled(true)}.Coord3d
getLastViewScaling()
Return the last used view scaling that was set according to thesetSquared(boolean)
status.IPainter
getPainter()
Coord2d
getPixelScale()
Return a copy of the currently known pixel scale as notified by the canvas.Scale
getScale()
Coord3d
getScaling()
Return the stretch ratio applied to the viewScene
getScene()
BoundingBox3d
getSceneGraphBounds()
protected BoundingBox3d
getSceneGraphBounds(Scene scene)
Rectangle
getSceneViewportRectangle()
SpaceTransformer
getSpaceTransformer()
boolean
getSquared()
ISquarifier
getSquarifier()
ViewPositionMode
getViewMode()
Return theViewPositionMode
applied to this view.Coord3d
getViewPoint()
Get the viewpoint.void
init()
The initialization function: specifies general GL settings that impact the rendering quality and performance (computation speed).protected void
initBounds()
void
initInstance(IChartFactory factory, Scene scene, ICanvas canvas, Quality quality)
Initialize a view object.void
initLights()
void
initLights(Scene scene)
void
initQuality()
void
initResources()
boolean
is2D()
boolean
is3D()
boolean
isAxisDisplayed()
boolean
isDisplayAxisWholeBounds()
boolean
isInitialized()
boolean
isMaintainAllObjectsInView()
boolean
isMaximized()
boolean
isSlave()
void
lookToBox(BoundingBox3d box)
void
markDimensionDirty()
Might be invoked by aIScreenCanvas
to indicate that dimension changed and that elements should be reprocessed at next rendering, e.g. 2d projections.void
project()
Perform the 2d projection of allSelectable
objects of the scene.Coord3d
projectMouse(int x, int y)
Perform the 3d projection of a 2d coordinate.boolean
removeViewLifecycleChangedListener(IViewLifecycleEventListener listener)
boolean
removeViewOnTopEventListener(IViewEventListener listener)
boolean
removeViewPointChangedListener(IViewPointChangedListener listener)
void
render()
void
renderAnnotations(Camera camera)
protected void
renderAxeBox()
protected void
renderAxeBox(IAxis axe, Scene scene, Camera camera, Coord3d scaling, boolean axeBoxDisplayed)
void
renderBackground(float left, float right)
To be implemented (see AWTView)void
renderBackground(ViewportConfiguration backgroundViewPort)
To be implemented (see AWTView)void
renderOverlay()
void
renderOverlay(ViewportConfiguration viewportConfiguration)
void
renderScene()
void
renderScene(float left, float right)
void
renderScene(ViewportConfiguration viewport)
void
renderSceneGraph()
void
renderSceneGraph(boolean light)
void
renderSceneGraph(boolean light, Camera camera, Scene scene, Coord3d scaling)
void
rotate(Coord2d move)
GENERAL DISPLAY CONTROLSvoid
rotate(Coord2d move, boolean updateView)
void
setAxis(IAxis axis)
void
setAxisDisplayed(boolean axisDisplayed)
void
setBackgroundColor(Color color)
void
setBoundManual(BoundingBox3d bounds)
Set a manual bounding box and switch the bounding mode to {ViewBoundMode.MANUAL}, meaning that any call toupdateBounds()
will update view bounds to the current bounds.void
setBoundMode(ViewBoundMode mode)
Select between an automatic bounding (that allows fitting the entire scene graph), or a custom bounding.void
setCameraMode(CameraMode mode)
Set the projection of this view, either Camera.ORTHOGONAL or Camera.PERSPECTIVE.void
setCameraRenderingSphereRadiusFactor(float cameraRenderingSphereRadiusFactor)
This allows zooming the 3d scene by editing the camera rendering sphere.void
setChart(Chart chart)
void
setDisplayAxisWholeBounds(boolean displayAxisWholeBounds)
void
setMaintainAllObjectsInView(boolean maintainAllObjectsInView)
void
setMaximized(boolean status)
void
setScale(Scale scale)
Z scale.void
setScale(Scale scale, boolean notify)
Z scale.void
setScaleX(Scale scale)
void
setScaleX(Scale scale, boolean notify)
void
setScaleY(Scale scale)
void
setScaleY(Scale scale, boolean notify)
void
setScaleZ(Scale scale)
void
setScaleZ(Scale scale, boolean notify)
void
setSlave(boolean slave)
void
setSpaceTransformer(SpaceTransformer transformer)
void
setSquared(boolean status)
void
setSquarifier(ISquarifier squarifier)
void
setViewPoint(Coord3d polar)
Set the viewpoint and query a view update.void
setViewPoint(Coord3d polar, boolean updateView)
Set the viewpoint using polar coordinates relative to the target (i.e. the center of the scene).void
setViewPositionMode(ViewPositionMode mode)
Set theViewPositionMode
applied to this view.void
shift(float factor)
void
shift(float factor, boolean updateView)
void
shoot()
Current view selection into the mother Scene, and call to target canvas rendering.protected Coord3d
squarify()
protected Coord3d
squarify(Scene scene, ViewBoundMode boundmode, BoundingBox3d manualViewBounds, SpaceTransformer spaceTransformer)
Return a 3d scaling factor that allows scaling the scene into a square box, according to the current ViewBoundMode.protected Coord3d
squarifyComputeBoundsRanges(BoundingBox3d bounds)
protected BoundingBox3d
squarifyGetSceneGraphBounds(Scene scene)
protected void
triggerCameraUpEvents(Coord3d viewpoint)
void
updateBounds()
Set the bounds of the view according to the currentViewBoundMode
, and orders a {@link Camera.shoot()}.void
updateBoundsForceUpdate(boolean refresh)
Update the bounds according to the scene graph whatever is the currentViewBoundMode
, and orders a {@link Camera.shoot()}void
updateCamera(ViewportConfiguration viewport, BoundingBox3d boundsScaled)
void
updateCamera(ViewportConfiguration viewport, BoundingBox3d bounds, float sceneRadiusScaled)
void
updateCamera(ViewportConfiguration viewport, BoundingBox3d bounds, float sceneRadiusScaled, ViewPositionMode viewmode, Coord3d viewpoint, Camera cam, CameraMode cameraMode, float factorViewPointDistance, Coord3d center, Coord3d scaling)
void
updateCameraWithoutShooting(ViewportConfiguration viewport, BoundingBox3d bounds, float sceneRadiusScaled, ViewPositionMode viewmode, Coord3d viewpoint, Camera cam, float factorViewPointDistance, Coord3d center, Coord3d scaling)
Update the camera configuration without triggering theCamera.shoot(IPainter, CameraMode)
method.void
updateQuality()
Deprecated.void
zoom(float factor)
void
zoom(float factor, boolean updateView)
void
zoomX(float factor)
void
zoomX(float factor, boolean updateView)
void
zoomY(float factor)
void
zoomY(float factor, boolean updateView)
void
zoomZ(float factor)
void
zoomZ(float factor, boolean updateView)
-
-
-
Field Detail
-
LOGGER
protected static org.apache.logging.log4j.Logger LOGGER
-
cameraMode
protected CameraMode cameraMode
-
viewMode
protected ViewPositionMode viewMode
-
boundsMode
protected ViewBoundMode boundsMode
-
backgroundColor
protected Color backgroundColor
-
axisDisplayed
protected boolean axisDisplayed
-
squared
protected boolean squared
-
view2DLayout
protected View2DLayout view2DLayout
Settings for the layout of a 2D chart
-
view2DProcessing
protected View2DProcessing view2DProcessing
-
cameraRenderingSphereRadiusFactor
protected float cameraRenderingSphereRadiusFactor
-
maintainAllObjectsInView
protected boolean maintainAllObjectsInView
force to have all object maintained in screen, meaning axebox won't always keep the same size.
-
displayAxisWholeBounds
protected boolean displayAxisWholeBounds
display a magenta parallelepiped around the "whole bounds" of the axis (box + labels) for debugging purpose.
-
cam
protected Camera cam
-
axis
protected IAxis axis
-
quality
protected Quality quality
-
scene
protected Scene scene
-
canvas
protected ICanvas canvas
-
painter
protected IPainter painter
-
annotations
protected Scene annotations
-
viewpoint
protected Coord3d viewpoint
-
center
protected Coord3d center
-
scaling
protected Coord3d scaling
-
viewBounds
protected BoundingBox3d viewBounds
-
chart
protected Chart chart
-
viewPointChangedListeners
protected List<IViewPointChangedListener> viewPointChangedListeners
-
viewEventListeners
protected List<IViewEventListener> viewEventListeners
-
viewLifecycleListeners
protected List<IViewLifecycleEventListener> viewLifecycleListeners
-
wasOnTopAtLastRendering
protected boolean wasOnTopAtLastRendering
-
first
protected boolean first
-
hidpi
protected HiDPI hidpi
-
pixelScale
protected Coord2d pixelScale
-
initialized
protected boolean initialized
-
PI_div2
public static final float PI_div2
- See Also:
- Constant Field Values
-
DISTANCE_DEFAULT
public static final float DISTANCE_DEFAULT
- See Also:
- Constant Field Values
-
VIEWPOINT_X_Y_MIN_NEAR_VIEWER
public static final Coord3d VIEWPOINT_X_Y_MIN_NEAR_VIEWER
A viewpoint allowing to have min X and Y values near viewer, growing toward horizon.
-
VIEWPOINT_AXIS_CORNER_TOUCH_BORDER
public static final Coord3d VIEWPOINT_AXIS_CORNER_TOUCH_BORDER
A viewpoint where two corners of the axis box touch top and bottom lines of the canvas.
-
VIEWPOINT_DEFAULT
public static final Coord3d VIEWPOINT_DEFAULT
A nice viewpoint to start the chart
-
VIEWPOINT_DEFAULT_OLD
public static final Coord3d VIEWPOINT_DEFAULT_OLD
A nice viewpoint to start the chart
-
dimensionDirty
protected boolean dimensionDirty
-
viewDirty
protected boolean viewDirty
can be set to true by the Renderer3d so that the View knows it is rendering due to a canvas size change
-
factorViewPointDistance
protected float factorViewPointDistance
Applies a factor to the default camera distance which is set to the radius of the scene bounds. Changing this value also change the camera clipping planes.
-
slave
protected boolean slave
A slave view won't clear its color and depth buffer before rendering
-
spaceTransformer
protected SpaceTransformer spaceTransformer
-
viewOverlay
protected IViewOverlay viewOverlay
-
-
Constructor Detail
-
View
public View(IChartFactory factory, Scene scene, ICanvas canvas, Quality quality)
Create a view attached to a Scene, with its own Camera and Axe. The initial view point is set atView.DEFAULT_VIEW
. TheQuality
allows setting the rendering capabilities that are set one time by the init() method.
-
-
Method Detail
-
initInstance
public void initInstance(IChartFactory factory, Scene scene, ICanvas canvas, Quality quality)
Initialize a view object. Invoked by constructor Method name is made clear to avoid confusion withinit()
which initialize open GL context.- Parameters:
factory
-scene
-canvas
-quality
-
-
configureHiDPIListener
protected void configureHiDPIListener(ICanvas canvas)
Upon pixel scale change, either at startup or during execution of the program, the listener will reconfigure the default font according to current HiDPI settings. This will reconfigure anything that draws based onAxisLayout.getFont()
, hence:- the font of the axis text renderer
- the font of the colorbar
-
getPixelScale
public Coord2d getPixelScale()
Return a copy of the currently known pixel scale as notified by the canvas. If the View received no pixel scale change event, the pixel scale will be 0.
-
getHiDPI
public HiDPI getHiDPI()
Return HiDPI status as ACTUALLY possible by the ICanvas on the current screen and computer, regardless of the {@link Quality#setHiDPIEnabled(true)}. Will always returnHiDPI.OFF
is chart is set to {@link Quality#setHiDPIEnabled(false)} as this forces the canvas to NOT make use of HiDPI.- Returns:
-
get2DLayout
public View2DLayout get2DLayout()
Return the configuration of a 2D layout
-
get2DProcessing
public View2DProcessing get2DProcessing()
Return the result of processing a 2D layout using the layout configured with the instance returned byget2DLayout()
-
getPainter
public IPainter getPainter()
-
getChart
public Chart getChart()
-
setChart
public void setChart(Chart chart)
-
isSlave
public boolean isSlave()
-
setSlave
public void setSlave(boolean slave)
-
dispose
public void dispose()
-
shoot
public void shoot()
Current view selection into the mother Scene, and call to target canvas rendering.
-
project
public void project()
Perform the 2d projection of allSelectable
objects of the scene. The result of the projection can be retrieved on the objects's instances.
-
projectMouse
public Coord3d projectMouse(int x, int y)
Perform the 3d projection of a 2d coordinate.
-
markDimensionDirty
public void markDimensionDirty()
Might be invoked by aIScreenCanvas
to indicate that dimension changed and that elements should be reprocessed at next rendering, e.g. 2d projections.
-
rotate
public void rotate(Coord2d move)
GENERAL DISPLAY CONTROLS
-
rotate
public void rotate(Coord2d move, boolean updateView)
-
shift
public void shift(float factor)
-
shift
public void shift(float factor, boolean updateView)
-
zoom
public void zoom(float factor)
-
zoom
public void zoom(float factor, boolean updateView)
-
zoomX
public void zoomX(float factor)
-
zoomX
public void zoomX(float factor, boolean updateView)
-
zoomY
public void zoomY(float factor)
-
zoomY
public void zoomY(float factor, boolean updateView)
-
zoomZ
public void zoomZ(float factor)
-
zoomZ
public void zoomZ(float factor, boolean updateView)
-
setScale
public void setScale(Scale scale)
Z scale.
-
setScale
public void setScale(Scale scale, boolean notify)
Z scale.
-
setScaleX
public void setScaleX(Scale scale)
-
setScaleX
public void setScaleX(Scale scale, boolean notify)
-
setScaleY
public void setScaleY(Scale scale)
-
setScaleY
public void setScaleY(Scale scale, boolean notify)
-
setScaleZ
public void setScaleZ(Scale scale)
-
setScaleZ
public void setScaleZ(Scale scale, boolean notify)
-
getScale
public Scale getScale()
-
lookToBox
public void lookToBox(BoundingBox3d box)
-
getCenter
public Coord3d getCenter()
Return the central point of the view scene, that is the last bounding box center set bylookToBox(org.jzy3d.maths.BoundingBox3d)
-
getBounds
public BoundingBox3d getBounds()
Get theAxisBox
'sBoundingBox3d
-
getBoundsMode
public ViewBoundMode getBoundsMode()
-
setViewPositionMode
public void setViewPositionMode(ViewPositionMode mode)
Set theViewPositionMode
applied to this view.
-
getViewMode
public ViewPositionMode getViewMode()
Return theViewPositionMode
applied to this view.
-
is2D
public boolean is2D()
-
is3D
public boolean is3D()
-
getScaling
public Coord3d getScaling()
Return the stretch ratio applied to the view
-
setViewPoint
public void setViewPoint(Coord3d polar, boolean updateView)
Set the viewpoint using polar coordinates relative to the target (i.e. the center of the scene). Only X and Y dimensions are required, as the distance to center will be computed automatically byupdateCamera()
. The input coordinate is polar and considers- x is azimuth in [0;2xPI]
- y is elevation in [-PI/2;+PI/2]. Will be clamped if out of bounds
- z is range (distance to center) but ignored there as it is processed automatically
-
setViewPoint
public void setViewPoint(Coord3d polar)
Set the viewpoint and query a view update.
-
getViewPoint
public Coord3d getViewPoint()
Get the viewpoint. The Z dimension is the one defined byupdateCamera()
, which depends on the view scaling.
-
getLastViewScaling
public Coord3d getLastViewScaling()
Return the last used view scaling that was set according to thesetSquared(boolean)
status.
-
setAxis
public void setAxis(IAxis axis)
-
getAxis
public IAxis getAxis()
-
getAxisLayout
public AxisLayout getAxisLayout()
-
getSquared
public boolean getSquared()
-
setSquared
public void setSquared(boolean status)
-
isAxisDisplayed
public boolean isAxisDisplayed()
-
setAxisDisplayed
public void setAxisDisplayed(boolean axisDisplayed)
-
setBackgroundColor
public void setBackgroundColor(Color color)
-
getBackgroundColor
public Color getBackgroundColor()
-
getCamera
public Camera getCamera()
-
setCameraMode
public void setCameraMode(CameraMode mode)
Set the projection of this view, either Camera.ORTHOGONAL or Camera.PERSPECTIVE.
-
getCameraMode
public CameraMode getCameraMode()
Get the projection of this view, either CameraMode.ORTHOGONAL or CameraMode.PERSPECTIVE.
-
setMaximized
public void setMaximized(boolean status)
-
isMaximized
public boolean isMaximized()
-
getCameraRenderingSphereRadiusFactor
public float getCameraRenderingSphereRadiusFactor()
- See Also:
setter
-
setCameraRenderingSphereRadiusFactor
public void setCameraRenderingSphereRadiusFactor(float cameraRenderingSphereRadiusFactor)
This allows zooming the 3d scene by editing the camera rendering sphere.- A value of 1 allows having an AxisBox with corners touching the top/bottom part of the canvas.
- A value greater than 1 makes the rendering sphere bigger, hence the AxisBox appears smaller.
-
isMaintainAllObjectsInView
public boolean isMaintainAllObjectsInView()
-
setMaintainAllObjectsInView
public void setMaintainAllObjectsInView(boolean maintainAllObjectsInView)
-
isDisplayAxisWholeBounds
public boolean isDisplayAxisWholeBounds()
-
setDisplayAxisWholeBounds
public void setDisplayAxisWholeBounds(boolean displayAxisWholeBounds)
-
getScene
public Scene getScene()
-
getSceneViewportRectangle
public Rectangle getSceneViewportRectangle()
-
getCanvas
public ICanvas getCanvas()
-
getAnnotations
public Graph getAnnotations()
-
addViewEventListener
public boolean addViewEventListener(IViewEventListener listener)
-
removeViewOnTopEventListener
public boolean removeViewOnTopEventListener(IViewEventListener listener)
-
fireViewOnTopEvent
protected void fireViewOnTopEvent(boolean isOnTop)
-
fireViewFirstRenderStarts
protected void fireViewFirstRenderStarts()
-
addViewPointChangedListener
public boolean addViewPointChangedListener(IViewPointChangedListener listener)
-
removeViewPointChangedListener
public boolean removeViewPointChangedListener(IViewPointChangedListener listener)
-
fireViewPointChangedEvent
protected void fireViewPointChangedEvent(ViewPointChangedEvent e)
-
addViewLifecycleChangedListener
public boolean addViewLifecycleChangedListener(IViewLifecycleEventListener listener)
-
removeViewLifecycleChangedListener
public boolean removeViewLifecycleChangedListener(IViewLifecycleEventListener listener)
-
fireViewLifecycleHasInit
protected void fireViewLifecycleHasInit(ViewLifecycleEvent e)
-
fireViewLifecycleWillRender
protected void fireViewLifecycleWillRender(ViewLifecycleEvent e)
-
setBoundMode
public void setBoundMode(ViewBoundMode mode)
Select between an automatic bounding (that allows fitting the entire scene graph), or a custom bounding.
-
updateBounds
public void updateBounds()
Set the bounds of the view according to the currentViewBoundMode
, and orders a {@link Camera.shoot()}.
-
getSceneGraphBounds
public BoundingBox3d getSceneGraphBounds()
-
getSceneGraphBounds
protected BoundingBox3d getSceneGraphBounds(Scene scene)
-
updateBoundsForceUpdate
public void updateBoundsForceUpdate(boolean refresh)
Update the bounds according to the scene graph whatever is the currentViewBoundMode
, and orders a {@link Camera.shoot()}
-
setBoundManual
public void setBoundManual(BoundingBox3d bounds)
Set a manual bounding box and switch the bounding mode to {ViewBoundMode.MANUAL}, meaning that any call toupdateBounds()
will update view bounds to the current bounds.
-
init
public void init()
The initialization function:- specifies general GL settings that impact the rendering quality and performance (computation speed).
- enable light management
- load all required texture resources
- fix the current view bounds to the whole scene graph bounds
Quality
given in the constructor parameters.
-
initBounds
protected void initBounds()
-
initQuality
public void initQuality()
-
initLights
public void initLights()
-
initLights
public void initLights(Scene scene)
-
initResources
public void initResources()
-
clear
public void clear()
Clear the color and depth buffer.
-
render
public void render()
-
renderBackground
public void renderBackground(float left, float right)
To be implemented (see AWTView)
-
renderBackground
public void renderBackground(ViewportConfiguration backgroundViewPort)
To be implemented (see AWTView)
-
renderScene
public void renderScene()
-
renderScene
public void renderScene(float left, float right)
-
renderScene
public void renderScene(ViewportConfiguration viewport)
-
updateQuality
@Deprecated public void updateQuality()
Deprecated.Not called anymore as alpha and blending setting are not supposed to change during lifetime of a chart. If this should change, then the entireinitQuality()
method should be invoked
-
squarify
protected Coord3d squarify()
-
squarify
protected Coord3d squarify(Scene scene, ViewBoundMode boundmode, BoundingBox3d manualViewBounds, SpaceTransformer spaceTransformer)
Return a 3d scaling factor that allows scaling the scene into a square box, according to the current ViewBoundMode. If the scene bounds are Infinite, NaN or zero, for a given dimension, the scaler will be set to 1 on the given dimension.- Returns:
- a scaling factor for each dimension.
-
squarifyGetSceneGraphBounds
protected BoundingBox3d squarifyGetSceneGraphBounds(Scene scene)
-
squarifyComputeBoundsRanges
protected Coord3d squarifyComputeBoundsRanges(BoundingBox3d bounds)
-
computeScaledViewBounds
public BoundingBox3d computeScaledViewBounds()
-
computeSceneScaling
public Coord3d computeSceneScaling()
-
computeSceneScaling
public Coord3d computeSceneScaling(Scene scene, boolean squared, ViewBoundMode boundmode, BoundingBox3d manualViewBounds, SpaceTransformer spaceTransformer)
-
updateCamera
public void updateCamera(ViewportConfiguration viewport, BoundingBox3d boundsScaled)
-
updateCamera
public void updateCamera(ViewportConfiguration viewport, BoundingBox3d bounds, float sceneRadiusScaled)
-
updateCamera
public void updateCamera(ViewportConfiguration viewport, BoundingBox3d bounds, float sceneRadiusScaled, ViewPositionMode viewmode, Coord3d viewpoint, Camera cam, CameraMode cameraMode, float factorViewPointDistance, Coord3d center, Coord3d scaling)
-
updateCameraWithoutShooting
public void updateCameraWithoutShooting(ViewportConfiguration viewport, BoundingBox3d bounds, float sceneRadiusScaled, ViewPositionMode viewmode, Coord3d viewpoint, Camera cam, float factorViewPointDistance, Coord3d center, Coord3d scaling)
Update the camera configuration without triggering theCamera.shoot(IPainter, CameraMode)
method. This is useful in rare case where one need to manually invoke only a subset of OpenGL methods that are invoked by shoot method.
-
computeViewpointDistance
public float computeViewpointDistance(BoundingBox3d bounds, float sceneRadiusScaled, float factorViewPointDistance)
-
computeCameraTarget
protected Coord3d computeCameraTarget()
-
computeCameraEye
protected Coord3d computeCameraEye(Coord3d target, ViewPositionMode viewmode, Coord3d viewpoint)
-
computeCameraEyeProfile
protected Coord3d computeCameraEyeProfile(Coord3d viewpoint, Coord3d target)
- Parameters:
viewpoint
-target
-
-
triggerCameraUpEvents
protected void triggerCameraUpEvents(Coord3d viewpoint)
-
computeCameraRenderingVolume
protected void computeCameraRenderingVolume(Camera cam, ViewportConfiguration viewport, BoundingBox3d bounds)
Configure the camera so that it will capture a given volume in the scene. Rendering in 3D requires capturing a sphere defined by the bounding box radius. Rendering in 2D requires capturing a square defined by the bounding box with additional white space for labels and margins.
-
computeCamera3D_RenderingSphere
protected void computeCamera3D_RenderingSphere(Camera cam, ViewportConfiguration viewport, BoundingBox3d bounds)
Camera clipping planes configuration for a rendering sphere (3D) Assume that axis labels are positioned accordingly (AxisLabelProcessor#axisLabelPosition_3D()
-
computeCamera2D_RenderingSquare
protected void computeCamera2D_RenderingSquare(Camera cam, ViewportConfiguration viewport, BoundingBox3d bounds)
Camera clipping planes configuration for a rendering plane (2D)
-
correctCameraPositionForIncludingTextLabels
@Deprecated protected void correctCameraPositionForIncludingTextLabels(IPainter painter, ViewportConfiguration viewport)
Deprecated.Only used for top/2D views. Performs a rendering to get the whole bounds occupied by the Axis Box and its text labels. Then edit the camera position to fit within this new bounds AND modify the clipping planes.- Parameters:
painter
-viewport
-
-
renderAxeBox
protected void renderAxeBox()
-
renderAxeBox
protected void renderAxeBox(IAxis axe, Scene scene, Camera camera, Coord3d scaling, boolean axeBoxDisplayed)
-
renderSceneGraph
public void renderSceneGraph()
-
renderSceneGraph
public void renderSceneGraph(boolean light)
-
renderSceneGraph
public void renderSceneGraph(boolean light, Camera camera, Scene scene, Coord3d scaling)
-
renderOverlay
public void renderOverlay()
-
renderOverlay
public void renderOverlay(ViewportConfiguration viewportConfiguration)
-
renderAnnotations
public void renderAnnotations(Camera camera)
-
getSpaceTransformer
public SpaceTransformer getSpaceTransformer()
-
setSpaceTransformer
public void setSpaceTransformer(SpaceTransformer transformer)
-
setSquarifier
public void setSquarifier(ISquarifier squarifier)
-
getSquarifier
public ISquarifier getSquarifier()
-
isInitialized
public boolean isInitialized()
-
-